캘린더 편집·반복·입력 경로를 정본 프로토콜로 통합한다 - #744
Merged
Merged
Conversation
14 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
목적
Closes #743
Calendar 구조·프로토콜 감사에서 확인한 편집 의미의 분기, 오래된 입력의 덮어쓰기, clipboard 대상 불일치, 반복 조회 누락을 정본 소유자에서 해결합니다. Host에는 조합과 제품 피드백만 남깁니다.
구현
calendar-event-plan.ts로 생성·수정·발생분 편집·preview·그룹 이동의 event/series 계산을 통합했습니다. 입력 경로가 달라도 동일한 범위와 구간을 계산합니다.this에서 발생분별 분리,all/this-and-following에서 시리즈별 한 번의 편집을 수행합니다. following은 선택 순서와 무관한 가장 이른 발생분을 기준으로 하며, 유한한 종료·제외 날짜를 보존합니다.createEditingIdAllocator로 유한하게 종료합니다.commitIntent성공 후처리를 사용하고, 각 surface의rootRef안에서 hit test와 너비 측정을 수행합니다. 여러 날 일정의 grab offset 및 원점 복귀 시 gesture/preview 취소도 보호합니다.onResult로 거절을 제품에 전달하고, Temporal 직접 의존성과 README의 공개 API 예제를 수정했습니다.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는 도입하지 않았습니다.계약과 지원 범위
calendarId를 기본 거절합니다. 명시적editor.paste(clipboard, target, { calendarId })로 대상 소속을 지정할 수 있습니다. 생략된 calendars/선택적 필드를 읽던 기존 호환 경로는 유지합니다.검증
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=4npm run test -w site -- --maxWorkers=3npm run typecheck -w packages/json-document-editing,npm run typecheck -w packages/json-document-calendar,npm run typecheck -w sitenpm run build,npm run build -w sitenpm run workspace:check,npm run docs:api:check,npm run docs:evaluatenpm ls --allgit 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였습니다. 이전 구현은 먼 구간 결과를 누락하므로 전후 속도 비율로 주장하지 않습니다.
미실행·제약