`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 항목이 닫힘.
65 lines
2.6 KiB
Markdown
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`.
|