Files
kebab/tasks/p9/p9-fb-03-tui-ingest-background.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-03 TUI ingest as background worker + status bar planned
p9-fb-01
../../docs/superpowers/specs/2026-04-27-kebab-final-form-design.md
§7 ingest
§10 UX
p9-dogfooding-feedback.md item 1

p9-fb-03 — TUI ingest background + status bar

Goal

TUI 에서 :ingest (또는 r 키) 누르면 ingest 가 background thread 에서 돌고, status bar 가 progress 그리기. blocking 하지 않음.

Allowed dependencies

  • 기존 kebab-tui deps (ratatui, crossterm, kebab-app, kebab-config).
  • 신규 X.

Public surface

kebab-tui::Appingest_state: Option<IngestState> slot. p9-3/4 와 동일 parallel-safe pattern.

pub(crate) struct IngestState {
    rx: Receiver<IngestEvent>,
    counts: AggregateCounts,
    current_path: Option<String>,
    started_at: Instant,
    cancel_tx: Sender<()>, // p9-fb-04 와 wiring
}

Behavior contract

  • ingest worker thread 는 kebab_app::ingest_with_config_progress(cfg, scope, false, Some(tx)) 호출.
  • main loop 가 매 frame 마다 rx.try_recv() drain → counts 갱신 + status bar 라인 갱신.
  • status bar 위치: 화면 하단 1 줄. 형식: ingest: 142/1024 (14%) parsing notes/foo.md [0:42].
  • 완료/abort 시 status bar 가 final line (✓ ingest: 1024 docs, 4521 chunks, 12.3s 또는 ✗ aborted at 142/1024) 잠시 유지 후 자동 hide.
  • ingest 중 다른 pane 이동 자유 — Library / Search 등은 그대로 동작 (DB 는 read 가능, partial 결과 surface).

Test plan

kind description
unit IngestState event drain 이 counts 누적
integration TUI run-loop 모의 + IngestEvent stream → status line 텍스트 snapshot

DoD

  • cargo test -p kebab-tui 통과
  • README TUI 절에 background ingest + status bar 동작 명시
  • 키 cheatsheet 에 r (refresh/ingest) 추가

Out of scope

  • desktop (P9-5) progress 표시
  • ingest cancel UI (p9-fb-04)