From 774acc5c0d1e3fe9b4caa511c809e64e77e8cc28 Mon Sep 17 00:00:00 2001 From: altair823 Date: Mon, 4 May 2026 17:17:49 +0000 Subject: [PATCH] =?UTF-8?q?review(p9-fb-24):=20=ED=9A=8C=EC=B0=A8=201=20ni?= =?UTF-8?q?t=20=EB=B0=98=EC=98=81=20=E2=80=94=20=EC=A4=91=EB=B3=B5=20inspe?= =?UTF-8?q?ct=20test,=20=EC=B9=B4=EC=9A=B4=ED=8A=B8,=20sep=20=EC=83=81?= =?UTF-8?q?=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 회차 1 review (PR #97 회차 1) 의 4 건 actionable nit 모두 수렴. - `crates/kebab-tui/tests/inspect.rs`: pre-fb-24 의 `page_keys_scroll_by_ten` 이 신규 `page_down_scrolls_by_ten_in_inspect` + `page_up_rewinds_by_ten_saturating_in_inspect` 와 중복 커버리지였음. 신규 두 테스트가 더 정밀 (PgUp 의 25→15→ 그 다음 3→0 saturating 명시) 이라 기존을 삭제하고 신규로 대체. inspect 테스트 -1 (14 → 13). - `tasks/HOTFIXES.md`, `tasks/p9/p9-fb-24-tui-affordances.md`: 테스트 카운트 `기존 720+` → `기존 695개 (cargo test --workspace -j 1 기준 716 passed)` 정확화. 영속 기록. - `crates/kebab-tui/src/run.rs`: status bar 의 magic string `" │ "` 를 `const STATUS_SEPARATOR: &str` 로 추출. docstring 의 rendered shape 과 sync 보장 코멘트 추가. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/kebab-tui/src/run.rs | 8 +++++++- crates/kebab-tui/tests/inspect.rs | 18 ++---------------- tasks/HOTFIXES.md | 2 +- tasks/p9/p9-fb-24-tui-affordances.md | 2 +- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/crates/kebab-tui/src/run.rs b/crates/kebab-tui/src/run.rs index 453bf86..cc2db24 100644 --- a/crates/kebab-tui/src/run.rs +++ b/crates/kebab-tui/src/run.rs @@ -288,6 +288,12 @@ fn render_header(f: &mut Frame, area: Rect, app: &App) { f.render_widget(Paragraph::new(line), area); } +/// p9-fb-24: separator between status bar fragments. Two spaces + +/// box-drawings light vertical (U+2502) + two spaces. Single source +/// — the docstring of `render_status_bar` references the rendered +/// shape, so any change here MUST update that docstring too. +const STATUS_SEPARATOR: &str = " │ "; + /// p9-fb-24: always-visible status bar. Layout (left → right): /// /// ```text @@ -315,7 +321,7 @@ pub fn render_status_bar(f: &mut Frame, area: Rect, app: &App) { let doc_count = app.library.inner.docs.len(); let dynamic = dynamic_status(app); - let sep = " │ "; + let sep = STATUS_SEPARATOR; let mut line_text = format!( "kebab v{}{sep}{}{sep}{} docs{sep}", env!("CARGO_PKG_VERSION"), diff --git a/crates/kebab-tui/tests/inspect.rs b/crates/kebab-tui/tests/inspect.rs index 3667731..472eb76 100644 --- a/crates/kebab-tui/tests/inspect.rs +++ b/crates/kebab-tui/tests/inspect.rs @@ -173,24 +173,10 @@ fn j_k_scroll_within_bounds_no_panic() { assert_eq!(app.inspect.as_ref().unwrap().scroll, 0); } -#[test] -fn page_keys_scroll_by_ten() { - let mut app = fresh_app(); - handle_key_inspect( - &mut app, - KeyEvent::new(KeyCode::PageDown, KeyModifiers::NONE), - ); - assert_eq!(app.inspect.as_ref().unwrap().scroll, 10); - handle_key_inspect( - &mut app, - KeyEvent::new(KeyCode::PageUp, KeyModifiers::NONE), - ); - assert_eq!(app.inspect.as_ref().unwrap().scroll, 0); -} - /// p9-fb-24 task 2: PageDown advances scroll by `PAGE_STEP` (= 10). /// Pins the constant so a future viewport-aware refactor surfaces -/// here, not silently in user-visible behaviour. +/// here, not silently in user-visible behaviour. Replaces the +/// pre-fb-24 `page_keys_scroll_by_ten` (deleted as duplicate). #[test] fn page_down_scrolls_by_ten_in_inspect() { let mut app = fresh_app(); diff --git a/tasks/HOTFIXES.md b/tasks/HOTFIXES.md index b0bdb1f..1b35c67 100644 --- a/tasks/HOTFIXES.md +++ b/tasks/HOTFIXES.md @@ -29,7 +29,7 @@ git history. **Spec contract impact**: p9-fb-13 follow-up (footer 단행 row) + p9-fb-03 (ingest dedicated row) frozen spec 들과 layout 충돌. frozen 텍스트 보존, 본 HOTFIXES 항목 + spec `tasks/p9/p9-fb-24-tui-affordances.md` + design `docs/superpowers/specs/2026-05-04-p9-fb-24-tui-affordances-design.md` 가 live source of truth. -**Tests added**: 약 21 신규 (status_bar 통합 10 + library 헤더 1 + Ask PgUp/PgDn 3 + Inspect PgUp/PgDn 회귀 2 + format_doc_header 단위 1, 잔여는 cascade branch 별). 기존 720+ 워크스페이스 테스트 무수정 통과. +**Tests added**: 약 21 신규 (status_bar 통합 10 + library 헤더 1 + Ask PgUp/PgDn 3 + Inspect PgUp/PgDn 회귀 2 + format_doc_header 단위 1, 잔여는 cascade branch 별). 기존 695개 워크스페이스 테스트 무수정 통과 (`cargo test --workspace -j 1` 기준 716 passed). **Known limitation (deferred)**: `PAGE_STEP = 10` 은 viewport-aware 가 아님 — 24 row 작은 터미널에서 한 페이지 > viewport, 80 row 큰 터미널에서 한 페이지 < viewport. 후속 task 에서 viewport-aware 로 업그레이드 가능. diff --git a/tasks/p9/p9-fb-24-tui-affordances.md b/tasks/p9/p9-fb-24-tui-affordances.md index a2ba5f8..930bddd 100644 --- a/tasks/p9/p9-fb-24-tui-affordances.md +++ b/tasks/p9/p9-fb-24-tui-affordances.md @@ -39,7 +39,7 @@ source_feedback: 사용자 도그푸딩 2026-05-04 — Library 컬럼 의미 부 - Ask 통합 3 (PgDn / PgUp / PgUp saturating + freeze follow_tail / PgDn from Insert). - Inspect 통합 2 (PAGE_STEP regression). - format_doc_header 단위 1. -- 기존 720+ 테스트 무수정 통과. +- 기존 695개 테스트 무수정 통과 (`cargo test --workspace -j 1` 기준 716 passed). ## Risks / notes