Skip to content

Annotation Hand 책임을 정본 모듈로 수렴한다 #588

Description

@developer-1px

Goal Anchor

  • Outcome: Annotation을 생태계의 정본 API만으로 구성하고 Demo에는 fixture, copy, layout, 제품 정책과 조합만 남긴다.
  • Done: Editing의 selector geometry API와 하나의 @interactive-os/json-document-annotation 공개 패키지로 Annotation Hand를 제공하고, Demo의 재사용 UI·gesture·projection·serialization 구현을 제거한다. 공개 API, 소유 패키지 API 문서, site Usage, source registration, owner 테스트와 실제 Demo 검증을 갖추며 영향 범위 production source LOC를 현재 1,168 LOC보다 줄인다.
  • Don't: 현재 6개 도구, comment/reaction, move/resize, undo/cancel, raster 동작과 minimalist 시각 결과를 바꾸지 않는다. Host의 fixture, createId, 활성 도구, 문구, 스타일 토큰, 배치, output 조합 정책을 package가 소유하지 않는다. json-document-react에 Annotation 도메인 책임을 추가하지 않는다. merge는 이 이슈 범위가 아니다.

확정한 정본 경계

  • @interactive-os/json-document-editing: selector 변환, annotation bounds, resize-handle geometry의 정본.
  • @interactive-os/json-document-affordance: gesture lifecycle 정본을 유지한다.
  • @interactive-os/json-document-web: pointer capture, SVG 좌표 변환, raster decode/rendering 정본을 유지한다.
  • 신규 @interactive-os/json-document-annotation: tool descriptor, gesture→Intent orchestration, SVG shape projection, transient preview, resize handles, comment composer/preview, 접근 가능한 기본 Annotation Hand UI를 소유한다.
  • Demo: fixture, createId, 활성 도구, 제품 문구, 스타일 토큰, layout, output 조합만 주입한다.
  • Structured output은 정확한 AnnotationDocument를 표시하고 selection을 document serialization에 합치지 않는다.
  • headless/React 패키지를 둘로 나누지 않고 신규 패키지 하나로 닫는다.

구현 순서

  1. Editing geometry 공개 API와 owner 테스트
  2. Annotation Hand 패키지와 contract 테스트
  3. 소유 패키지 API reference, site Usage, source registration
  4. Demo consumer migration과 route-local 중복 삭제
  5. production source LOC, package 검증, site typecheck/test/build, 실제 Demo 상호작용 검증

실패 및 재계획 조건

  • Demo에 shape, gesture, comment 동작 구현이 남는다.
  • preview와 commit이 서로 다른 selector 계산을 사용한다.
  • json-document-react가 Annotation 도메인 타입이나 동작을 알게 된다.
  • 영향 범위 production source LOC가 1,168 LOC 미만이 되지 않는다.
  • 기존 도구와 편집·취소·raster 동작 또는 minimalist 시각 결과가 달라진다.

제외

  • W3C JSON-LD 모델 도입
  • 네트워크 저장·협업 기능
  • Database 또는 다른 Demo 변경
  • PR merge와 worktree 정리

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions