Skip to content

편집 문법의 하이라키와 기본 Profile 계약을 구체화한다 - #726

Merged
developer-1px merged 32 commits into
mainfrom
issue-725-editing-grammar-derivation
Sep 10, 2026
Merged

편집 문법의 하이라키와 기본 Profile 계약을 구체화한다#726
developer-1px merged 32 commits into
mainfrom
issue-725-editing-grammar-derivation

Conversation

@developer-1px

@developer-1px developer-1px commented Sep 7, 2026

Copy link
Copy Markdown
Owner

여러 editor가 같은 API 이름을 제공해도 대상·후속 선택·Undo 단위와 기본 입력의 의미는 달랐다. standards/editing-grammar.md에 11개 앱 사례와 역사적·현재 공식 자료를 연결하고, 공통 규칙·대상별 계약·입력 계약을 조합하는 Hands profile의 하이라키와 기본 동작을 구체화한다.

단축키로 드러난 작업부터 비교해 탐색·선택·전체 선택·편집·교환·복원·내부 편집 등 12개 기본 동작을 계약표로 정리한다. Text·Document·Tree·Sheet·Object의 작업 대상과 후속 선택을 비교하며, 근육기억으로 익힌 조작과 설정을 생략한 기본 동작도 호환성 계약에 포함한다.

설계와 최소 변경안

  • 기존 EG 규칙 9개와 canonical owner를 유지한다. 역사적 반례와 적용 조건을 명시하고, 의미 분류·계약의 조합·실제 구현 책임을 구별한다.
  • AlphaphX로 교체한 뒤 Undo/Redo하는 공개 API 실행에서 내용·선택 범위·방향·History가 기대와 일치했다. 이 범위에는 Core·History API 확장을 제안하지 않는다.
  • 기본 전체 선택은 반복해도 선택을 유지하도록 정한다. 현재 Affordance의 토글 호출을 보존하면서 반복 정책을 선택하는 경로, 구조 editor에서 전체 선택을 한 전이로 적용하는 작업을 제안한다.
  • 유효한 대상의 draft가 검증 거절되면 유지하고 재시도할 수 있도록 정한다. 현재 rename session은 editor 거절 후에도 draft를 종료하므로, 기존 void callback을 보존하는 성공 확인 경로의 API 초안과 완료 조건을 적는다.
  • Rich Text Web과 구조 입력의 공통 Undo 해석을 Web resolver에 연결하는 변경안을 제시한다. 기존 modifier 수용 범위와 native lifecycle은 호환성 검증 대상으로 남긴다.
  • 중첩·Toolbar 대상·여러 view의 History·native Cut·IME 등 12개 조합 검증 질문에서 기존 suite, 임시 공개 API 확인, 아직 검증하지 않은 입력 경로를 구별한다.

검증

  • 커밋 97405f78CI: Plan·Package·Site 통과, External kit은 계획에 따라 skipped
  • 현재 source의 관련 package 빌드: npm exec tsc -- -b packages/json-document-rich-text packages/json-document-affordance 통과
  • 관련 기존 테스트: 10 files / 166 tests 통과 — grammar binding, select-all, History, Tree·Object·Sheet, Affordance·Web adapter
  • 임시 공개 API 확인: 방향 2 × Undo 후 선택 이동 여부 2 × 직접 호출·metaKey·ctrlKey 해석 3 = 12개 사례 통과
  • 현재 전체 선택 토글과 rename 거절 후 draft 종료를 별도로 재현. 제안한 기본 계약의 통과로 집계하지 않음
  • npm run docs:evaluate, git diff --check 통과
  • 내부 Markdown 링크 46개 참조 / 38개 대상 존재 확인
  • GitHub GFM 렌더링: 표 16개 열 구조, code block 6개, 중복 없는 anchor 확인
  • 기존 EG 규칙 9개와 canonical owner 표 보존, 전체 diff 검토 완료

변경 파일은 설계 문서 하나다. API 초안과 최소 변경안은 아직 runtime에 적용하지 않았다. 임시 실행의 재현 코드는 이슈에 보관하며 영구 conformance suite의 새 테스트로 집계하지 않는다. DOM/native 입력 전체, 모든 Hands의 구현 완료, Stable admission 또는 독립 구현 간 상호운용을 인증하는 결과가 아니다. show-me는 UI 변경이 없어 해당하지 않는다.

학습 기록

Closes #725

@developer-1px developer-1px self-assigned this Sep 7, 2026
@developer-1px developer-1px changed the title 편집 관습에서 최소 의미와 조합 하이라키를 도출한다 편집 문법의 하이라키와 기본 Profile 계약을 구체화한다 Sep 8, 2026
유용태 and others added 2 commits September 8, 2026 09:38
* feat(editing): 기본 전체 선택과 확정 결과 계약을 보강한다 (#727)

* feat(site): 기본 편집 동작을 Usage와 브라우저 검증에 연결한다 (#727)

---------

Co-authored-by: 유용태 <teo.v@navercorp.com>
유용태 and others added 2 commits September 8, 2026 16:40
Annotation의 선택·gesture·geometry·출력 책임을 정본 모듈로 연결합니다. 기존 선택 순서와 Undo/Redo 복원, 도구·댓글·raster 동작을 유지하고 Host에는 정책과 화면 조합을 남깁니다.

최신 HEAD ba163a3f의 Plan, Package, Site, External kit 검증이 모두 통과했습니다.

Closes #588
developer-1px and others added 3 commits September 8, 2026 23:44
EditingSession의 공통 계약과 현재 binding 정책을 분리하고, UI 구독 유무에 따른 local History 무효화 차이를 수정한다.

전체 30개 library typecheck·build 및 1,351개 테스트 통과. unmount 이후 외부 값 왕복 회귀를 포함한다.

Closes #735
* fix: JSON 주소와 값 검증을 Core 정본으로 통일한다

* test(site): include canonical JSON validator in source tabs

---------

Co-authored-by: 유용태 <teo.v@navercorp.com>
* Core의 중복 patch 경로와 배열 fast path를 축소한다

* 편집 주변의 중복 복사와 배치 재탐색을 줄인다

---------

Co-authored-by: 유용태 <teo.v@navercorp.com>
Co-authored-by: 유용태 <teo.v@navercorp.com>
Co-authored-by: 유용태 <teo.v@navercorp.com>
developer-1px and others added 8 commits September 9, 2026 15:18
Calendar 문서 모델·검증·의미 연산·projection을 독립 정본으로 옮기고 선택 회차·붙여넣기·입력 검증을 보강한다. 기존 Editing API 호환 경로, 공통 Editing Grammar, 소유자 문서와 Usage/Source를 연결한다.

관련 테스트 796개와 타입·빌드·외부 tarball 소비·기존 Chrome 검증을 확인했다. Core와 자동 PR CI 정책은 변경하지 않는다.

Closes #745
한 장의 Canvas를 Object Document Type, 기존 Editing, Canvas Hand로 구성하고 두 Host를 정본 소비로 통일한다. 공통 아이콘·툴팁 툴바와 문서·Usage·Source 등록 및 회귀 검증을 포함한다. Closes #747.
developer-1px and others added 12 commits September 10, 2026 01:23
선택 박스의 모양을 유지하면서 네 변·네 모서리 resize, 반대편 고정, Shift 비율 유지, Alt 중심 기준과 최소 크기 고정을 정본 Affordance에 연결한다.

Canvas의 modifier·취소·no-op·Undo 연결과 owner 문서, Usage/Source, 회귀 검증을 포함한다. Closes #757.
재사용 가능한 평면 Select와 복제·외부 Clipboard 기본기를 연결한다
Paste·Image 기본기 TBD 계약과 Composer 이미지 첨부를 연결한다
feat(clipboard): HTML 이미지와 순서 있는 혼합 입력을 연결한다
fix(canvas): 생성 기본 크기가 드래그 전에 노출되는 문제를 고친다
feat(canvas): 선택 스타일 편집을 정본 Object 계약으로 연결한다
기본 단축키 해석을 정본 키맵과 chord로 통일한다
@developer-1px

Copy link
Copy Markdown
Owner Author

최신 main과 통합하면서 독립적으로 추가된 Paste × Image TBD와 편집 문법 조합 검증 질문을 모두 보존했습니다. runtime 변경 없이 docs:evaluate, git diff --check, pre-push build가 통과했습니다.

@developer-1px
developer-1px merged commit f92466f into main Sep 10, 2026
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