Files
kebab/tasks/p9/p9-fb-13-tui-cheatsheet.md
altair823 a48f4be5c3 feat(kebab-tui): p9-fb-13 follow-up — verb-form hint line redesign
`pub fn footer_hints(focus: Pane, mode: Mode, filter_open: bool) -> &'static str`
신규 (run.rs). 기존 `render_footer` 의 영문 `key=action` 형식이 한국어
동사구로 — `"위로"` / `"아래로"` / `"필터"` / `"타이핑 검색어"` /
`"Esc 로 NORMAL 모드"` 등 — 변경되고 (pane, mode, filter_open) 조합에
따라 자동 분기. NORMAL 모드는 navigation verbs, INSERT 모드는
typing + Esc reminder. Library filter overlay 는 overlay-only key 3
개로 override.

8 unit tests pin: 모든 (pane, mode, filter) 조합 non-empty exhaustive
+ Library Normal/filter, Search Normal/Insert, Ask Normal/Insert,
Inspect Normal 별 verb fragment 존재 검증.

spec status `in_progress` → `completed` — p9-fb-13 partial 의 deferred
verb-form 항목이 닫힘.
2026-05-03 11:13:14 +00:00

65 lines
2.6 KiB
Markdown

---
phase: P9
component: kebab-tui + README
task_id: p9-fb-13
title: "Cheatsheet popup (?) + README keymap table + verb hint line"
status: completed
depends_on: [p9-fb-12]
unblocks: []
contract_source: ../../docs/superpowers/specs/2026-04-27-kebab-final-form-design.md
contract_sections: [§10 UX]
source_feedback: p9-dogfooding-feedback.md item 11
---
# p9-fb-13 — Cheatsheet
## Goal
vim 비익숙 사용자도 TUI 조작 가능. `?` modal popup + 동사구 hint line + README keymap 표.
## Allowed dependencies
- 기존 kebab-tui deps.
## Public surface
`kebab-tui::cheatsheet::Cheatsheet` widget. mode + 현재 pane 별 분기.
## Behavior contract
- `?` 키 (NORMAL 만) → modal popup. 화면 중앙 70% box, 키 + 동사구 설명 표.
- popup 안에서 `?` 또는 `Esc` → close.
- pane 별 cheatsheet 분리 — Library / Search / Ask / Inspect 각각 다른 키. 공통 키 (Tab pane 이동, q quit) 는 footer 영역.
- hint line (status bar 위 1 줄) — 동사구로:
- 기존: `j/k=move`
- 신규: `↑/k 위로 ↓/j 아래로 Enter 선택 Esc 취소`
- mode 따라 hint line 다름 (p9-fb-12 와 wire). NORMAL = navigation, INSERT = `Esc 로 명령모드`.
README 갱신:
- **TUI 키 매핑** 표 (전역 + pane 별).
- vim 비유 안내 한 줄 ("vim 처럼 i 로 입력, Esc 로 명령").
## Test plan
| kind | description |
|------|-------------|
| unit | `?` press → cheatsheet visible flag |
| unit | mode + pane 변경 시 hint line 텍스트 변화 |
| snapshot | popup 의 키 표 snapshot (Library / Search / Ask / Inspect) |
## DoD
- [x] `cargo test -p kebab-tui` 통과
- [x] README **TUI** 절에 키 매핑 표 + cheatsheet 안내
- [x] 도그푸딩: 첫 사용자가 `?` 만 알면 나머지 발견 가능
## Out of scope
- 사용자 정의 keymap 파일 (P+)
- popup 의 검색 (`/` 로 키 찾기) — 우선 skip
## Notes
- 2026-05-03 partial: `?` rebound to `F1` (HOTFIXES — Library `?` 가 quick-Ask binding 과 충돌). cheatsheet popup + 기존 `render_footer` 의 pane-별 hint 시작 (영문 `key=action` 형식).
- 2026-05-03 follow-up: verb-form hint line 재구성. `pub fn footer_hints(focus, mode, filter_open) -> &'static str` 신규 — 한국어 동사구 (`"위로"`, `"아래로"`, `"필터"`, `"타이핑 검색어"`, `"Esc 로 NORMAL 모드"`) + mode-aware (NORMAL = navigation, INSERT = typing + Esc reminder) + filter overlay 별 분기. 8 unit tests pin 한다 (Library Normal/Insert/filter, Search Normal/Insert, Ask Normal/Insert, Inspect Normal/Insert + 모든 (pane,mode,filter) 조합 non-empty exhaustive). spec status `in_progress``completed`.