Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions Project_Roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,24 @@ WPF `RichTextBox`/`FlowDocument`를 **순수 C# + Avalonia `TextLayout`**로 바

---

## ✅ 현재 상태 (2026-09-19)
## ✅ 현재 상태 (2026-09-20)

- **게시**: `v1.2.1`(2026-09-08) — nuget.org. 이력: 0.9.0(07-12) → 1.0.0(07-31, API 동결) → 1.1.0(08-08) → 1.2.0/1.2.1(09-08).
- **미릴리스**: 09-09 이후 라운드(대체 텍스트 ~ 라운드32) 전부 `CHANGELOG.md` `[Unreleased]`. 공개 API **추가만 24건**
(`PublicAPI.Unshipped.txt`, 제거·시그니처 변경 없음) → 다음은 **minor(1.3.0)**.
- **검증**: 빌드 0 warn · unit **1111** + render **41** 그린 · 3-OS CI(Windows/Linux/macOS) 그린.
- **미릴리스**: 09-09 이후 라운드(대체 텍스트 ~ 라운드33)와 **호스트 API 3건**이 전부 `CHANGELOG.md` `[Unreleased]`.
공개 API **추가만**(`PublicAPI.Unshipped.txt`, 제거·시그니처 변경 없음) → 다음은 **minor(1.3.0)**.
- **검증**: 빌드 0 warn · unit **1151** + render **41** 그린 · 3-OS CI(Windows/Linux/macOS) 그린.
- **의존성**: Avalonia **12.1** 이상(12.0.x는 Shift+Enter 2회로 `TextLayout` 무한 루프 — 엔진 버그라 상향이 유일한 수정).

**기능 (전부 동작·테스트 그린)**
- 인라인 서식(굵게/기울임/밑줄/취소선·글꼴·크기·색·형광펜·하이퍼링크), 문단(정렬·줄간격(HWP식 %)·들여쓰기·제목·목록·인용)
- **표**: 병합, 열/행 리사이즈, Tab 내비, 셀=블록 컨테이너(다중 문단·그림·구분선·**중첩 표**), **인라인 표**(HWP식 글자처럼),
드래그 크기 지정 삽입, 셀 세로 정렬, F5 셀 블록 선택, 표·그림 끌어 옮기기(Ctrl=복사)
드래그 크기 지정 삽입, 셀 세로 정렬, F5 셀 블록 선택, 표·그림 끌어 옮기기(Ctrl=복사), 행·열 공개 API
- **그림**: 블록/인라인, 모서리·가로·세로 손잡이, 교체·저장, 대체 텍스트, 표시 크기 디코드
- 찾기/바꾸기(찾기 막대·Ctrl+F/H·F3), undo/redo(64MB 예산), 우클릭 메뉴(HWP식), Word 표준 단축키
- 클립보드(내부 리치·CF_HTML·외부 HTML/RTF·이미지·Excel/TSV→표), **HTML/JSON/RTF/.flow** 입출력
- CJK **IME**, 페이지 보기, 인쇄, **벡터 PDF**(Skia + HarfBuzz 글꼴 추리기, 불가 시 래스터)
- 드롭인 `RichEditorView`(에디터+툴바+찾기 막대+상태바), `ToolbarLevel`, `IsReadOnly`+`Allow*`, 현지화(ko/en)
- CJK **IME**, 페이지 보기(용지·방향·**여백 네 변**·머리글/바닥글/쪽번호), 인쇄, **벡터 PDF**(Skia + HarfBuzz 글꼴 추리기, 불가 시 래스터)
- 드롭인 `RichEditorView`(에디터+툴바+찾기 막대+상태바), `ToolbarLevel`, `IsReadOnly`+`Allow*`, 현지화(ko/en),
호스트가 읽는 **단축키 표**(`RichEditorShortcuts`)

**완료된 마일스톤**: Phase 1~6 · P(페이지/인쇄) · N0~N6(NuGet) · A(셀 안 블록) · B(인라인 표) · G1(기하 워커 통합) ·
G2(문단 순회 워커 재귀화) · 1.0 준비 P1~P5(상호작용 테스트 인프라 · 렌더 픽셀 · 상호운용 · 성능 실측 · API 리뷰).
Expand All @@ -35,14 +36,16 @@ G2(문단 순회 워커 재귀화) · 1.0 준비 P1~P5(상호작용 테스트

## 🎯 남은 일

**1. 다음 릴리스(1.3.0) 경계 결정** — 두 안 중 택일(미결):
- (a) 지금 쌓인 미릴리스분만으로 1.3.0 게시
- (b) 원래 계획한 호스트 API 3건(아래 백로그 위 3줄, 위험 순: 표 API → 단축키 공개 → 페이지 여백)까지 넣고 게시
**1. 1.3.0 게시** — 계획했던 호스트 API 3건이 2026-09-20에 전부 들어왔다(표 행·열 · 단축키 표 공개 · 페이지 여백,
PR #48·#49·#50). 경계 결정은 끝났고 남은 것은 게시 작업뿐이다.

게시 절차: `<Version>` → Unshipped를 Shipped로 이관 → CHANGELOG `[Unreleased]` → 버전 → README 배지(en/ko) → PR로 3-OS CI →
`v1.3.0` 태그 push(**사람이 실행**, Trusted Publishing) → **nuget.org 패키지 페이지 육안 확인**.

**2. 포트(WinUIRichEditor)로 넘길 것** (포트 쪽 반영 여부 확인 필요)
**2. 실기 확인 대기** — 페이지 여백(PR #50): 여백을 바꿨을 때 머리글·바닥글·쪽번호가 띠 안에 앉는지, 인쇄·PDF의
여백이 화면과 같은지. 헤드리스는 위치를 재기만 하고 눈으로는 못 본다.

**3. 포트(WinUIRichEditor)로 넘길 것** (포트 쪽 반영 여부 확인 필요)
- 그림 손잡이 vs 열 경계 우선순위: **선택된 그림 손잡이 우선**(여기 방식)으로 포트를 맞춘다 (사용자 결정 2026-09-19)
- 테스트 `CtrlU_AtALinksEnd_LeavesTheLinkAlone`(라운드19에서 여기만 추가)

Expand Down Expand Up @@ -93,9 +96,6 @@ G2(문단 순회 워커 재귀화) · 1.0 준비 P1~P5(상호작용 테스트

## 🔵 백로그 (착수 미정)

- **표 행/열 조작 공개 API** — `TableInsertRow`/`TableDeleteColumn` 등이 private. 모델 직접 조작은 undo·캐시 무효화를 건너뛴다. 추가성.
- **`RichEditorShortcuts` 공개** — 자체 툴바를 만드는 호스트가 제스처 표를 읽을 수 없다. 추가성.
- **페이지 여백 API**
- **문서 암호화(`.flow`)** — 설계 완료(07-31): 매직 헤더 + AES-256-GCM + PBKDF2-SHA256 600k, 암호화 파일은 zip이 아니게.
무의존성(PBKDF2 600k = 124ms). **미결**: Argon2id용 의존성 1개 수용 여부.
- 단락 경계 넘는 Find(줄바꿈 포함 검색어만, 실사용 극저) · HWP/XLS(구) 붙여넣기 · blockquote/중첩 목록 깊이 정밀화
Expand Down
Loading