Skip to content

캘린더 편집·반복·입력 경로를 정본 프로토콜로 통합한다 - #744

Merged
developer-1px merged 1 commit into
mainfrom
issue-743-calendar-protocol
Sep 9, 2026
Merged

캘린더 편집·반복·입력 경로를 정본 프로토콜로 통합한다#744
developer-1px merged 1 commit into
mainfrom
issue-743-calendar-protocol

Conversation

@developer-1px

Copy link
Copy Markdown
Owner

목적

Closes #743

Calendar 구조·프로토콜 감사에서 확인한 편집 의미의 분기, 오래된 입력의 덮어쓰기, clipboard 대상 불일치, 반복 조회 누락을 정본 소유자에서 해결합니다. Host에는 조합과 제품 피드백만 남깁니다.

구현

  • Editing의 calendar-event-plan.ts로 생성·수정·발생분 편집·preview·그룹 이동의 event/series 계산을 통합했습니다. 입력 경로가 달라도 동일한 범위와 구간을 계산합니다.
  • unknown Intent, 잘못된 구간·소속·반복 간격·clipboard를 거절합니다. 생성자와 편집이 같은 유효성 규칙을 사용합니다.
  • drag capture의 현재 발생분 존재와 start/end를 재검증합니다. Cut은 clipboard에 쓴 대상을 사용하며 writer 재진입 중 선택 변경이나 캡처 이후 내용 변경으로 다른 데이터를 삭제하지 않습니다.
  • 그룹 이동은 this에서 발생분별 분리, all / this-and-following에서 시리즈별 한 번의 편집을 수행합니다. following은 선택 순서와 무관한 가장 이른 발생분을 기준으로 하며, 유한한 종료·제외 날짜를 보존합니다.
  • 월말·윤년은 발생 시작을 constrain하고 구간의 local duration을 보존합니다. 재기준화한 시리즈에 요청한 발생 구간을 표현할 수 없으면 단일·그룹 전체 편집을 거절합니다.
  • 반복 projection의 400회 수명 제한을 제거하고 요청 구간 근처로 이동합니다. ID 충돌 반복은 기존 createEditingIdAllocator로 유한하게 종료합니다.
  • Calendar Hands가 commitIntent 성공 후처리를 사용하고, 각 surface의 rootRef 안에서 hit test와 너비 측정을 수행합니다. 여러 날 일정의 grab offset 및 원점 복귀 시 gesture/preview 취소도 보호합니다.
  • onResult로 거절을 제품에 전달하고, Temporal 직접 의존성과 README의 공개 API 예제를 수정했습니다.
  • owner의 docs/calendar-profile.md를 패키지에 포함하고 Editing API·Calendar API·Usage Source에 연결했습니다. API index가 하위 패키지 페이지를 가리던 라우팅도 index route로 수정했습니다.

Editing·Calendar의 src 합계는 새 정본 모듈을 포함해 338줄 순감입니다. 새 행동 회귀 55건과 사이트 문서·Source 회귀 2건을 추가했습니다. Core API, 전역 command registry, 새로운 wire envelope는 도입하지 않았습니다.

계약과 지원 범위

검증

실행 결과
npm run test:projects -- --project json-document --project json-document-editing --project json-document-selection --project json-document-affordance --project json-document-web --project json-document-calendar --maxWorkers=4 70개 파일, 981건 통과, 기존 4건 skip
npm run test -w site -- --maxWorkers=3 25개 파일, 143건 통과
npm run typecheck -w packages/json-document-editing, npm run typecheck -w packages/json-document-calendar, npm run typecheck -w site 타입 및 기존 사이트 guard 통과
npm run build, npm run build -w site 통과
npm run workspace:check, npm run docs:api:check, npm run docs:evaluate 30개 패키지·1,050개 export 및 문서 검사 통과
로컬 9개 패키지 tarball을 workspace 밖에 설치, public import 및 npm ls --all Temporal 직접 의존성, Calendar 42 cells, 월말 duration, 분리 일정 metadata, owner profile 포함 확인
git diff --cached --check 통과

기존 Chrome 프로필에서 실제 Calendar 경로의 반복 일정 선택 → All Inspector → 잘못된 end 거절 → 정상 end로 5개 발생분 resize → 한 번의 undo/redo를 확인했습니다. 실패 시 알림 표시와 문서 유지, 성공 시 선택 발생 날짜 유지도 확인했습니다. Editing profile의 실제 heading/anchor, Calendar API 링크와 Usage Source의 정본 구현 연결을 확인했습니다.

추가 조회 smoke는 Node 24에서 1,000개 daily series, 8회 중 warm-up 2회를 제외한 중앙값입니다. index 1과 index 100,000에서 각각 1,000건을 반환했고 약 53ms / 83ms였습니다. 이전 구현은 먼 구간 결과를 누락하므로 전후 속도 비율로 주장하지 않습니다.

미실행·제약

  • 자동 전체 CI와 수동 full CI/장시간 soak를 실행하지 않았습니다. 원격 check 부재는 통과가 아닙니다.
  • OS 화면 캡처가 검은 프레임을 반환하여 픽셀 검증은 완료로 기록하지 않습니다. 실제 Chrome DOM·입력 동작은 검증했습니다.
  • 네이티브 포인터 E2E는 미실행이며, 포인터·두 인스턴스·grab offset·원점 복귀는 Calendar Hands DOM 회귀 테스트로 검증했습니다.
  • 이번 인계의 종료점은 PR 생성이며 merge는 수행하지 않습니다.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

캘린더 정본 프로토콜의 안전성과 편집 경로 일관성을 완성한다

1 participant