Files
kebab/tasks/p9/p9-fb-10-tui-cjk-input.md
altair823 5428412688 docs(p9): decompose dogfooding feedback into 20 task specs + reset plan
P9-1~P9-4 머지 후 사용자가 직접 도그푸딩 하며 수집한 16 항목 UX
피드백을 20 개 single-PR 사이즈 task spec 으로 분해. 각 spec 은
frontmatter (depends_on / unblocks / source_feedback), Goal,
Allowed deps, Public surface, Behavior contract, Test plan, DoD,
Out of scope 절 포함.

추가:
- p9-fb-01 ~ 20-*.md: 분해된 task spec 20 개
- p9-dogfooding-feedback.md: master index + 우선순위 + 권장 실행 순서
  + spec PR vs impl PR 절
- INDEX.md: p9-fb-01 ~ 20 link 추가
- docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md:
  첫 후속 작업 (kebab reset 명령) 의 6-task 구현 plan
- .gitignore: .worktrees/ 추가 (superpowers worktree skill 용)

피드백 항목 → task spec 매핑은 p9-dogfooding-feedback.md 의 표 참조.
실행 시작 task: p9-fb-06 (reset 명령) — 도그푸딩 막힘 강도 1위.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 17:54:15 +00:00

2.0 KiB

phase, component, task_id, title, status, depends_on, unblocks, contract_source, contract_sections, source_feedback
phase component task_id title status depends_on unblocks contract_source contract_sections source_feedback
P9 kebab-tui p9-fb-10 CJK input + wide-char rendering audit planned
p9-fb-12
../../docs/superpowers/specs/2026-04-27-kebab-final-form-design.md
§10 UX
p9-dogfooding-feedback.md item 8

p9-fb-10 — CJK input

Goal

한글 / 일본어 / 중국어 입력 + 출력이 깨지지 않게. mode machine (p9-fb-12) 위에 IME safe 입력 흐름.

Allowed dependencies

  • unicode-width = "0.2" (이미 워크스페이스에 있는지 확인 후 도입).

Public surface

kebab-tui::input::InputBuffer — String + cursor (column 단위 wide-char width 인지). ratatui Span 렌더링 시 unicode-width::UnicodeWidthStr 로 정확한 width.

Behavior contract

  • IME composing event: crossterm 은 native IME composing surface X — 자모 단위 KeyCode::Char(c) 로 도착. mode machine (p9-fb-12) 에서 INSERT 모드면 모든 Char 가 buffer push, NORMAL 모드면 single-key command.
  • wide char width: c.width() 로 cursor column 진행. ASCII=1, CJK=2.
  • buffer 의 byte index vs char index 구분 — backspace 는 마지막 char (pop_char) 단위 삭제, byte slice 금지.
  • 한글 fixture 추가: fixtures/markdown/한글-테스트.md, query 러스트 비동기, 답변 streaming 테스트 답변 등.

Test plan

kind description
unit InputBuffer 한글 5 자 push → display_width = 10
unit backspace 가 자모 1 단위가 아닌 완성형 글자 1 단위 (utf-8 char boundary)
unit 한글 query → SQLite FTS5 정상 검색 (이미 NFC 정규화)
integration TUI run-loop 모의로 한글 query 입력 → status bar 글자 깨짐 X

DoD

  • cargo test -p kebab-tui 통과
  • 한글 fixture 추가
  • README — CJK 입력 동작 정상 명시

Out of scope

  • macOS IME (Korean composing 시 system level) 회피 — fallback 안내 (외부 editor 사용 권장)
  • emoji surrogate pair (현재 pulldown-cmark 가 처리)