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>
한글 / 일본어 / 중국어 입력 + 출력이 깨지지 않게. 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 사용 권장)