Problem
The current mailrag wizard is a thin questionary + rich runner: a sequence of line-by-line prompts that scroll down the terminal (persona pick → model → per-folder scope picker → calibrate gate → prune confirm → spend confirm → index). It works and is unit-testable (questionary is injected), but it does not look or feel like a cohesive TUI.
Fred's feedback (2026-06-07), after running ./mailrag wizard --profile … --limit 50 end-to-end: did not like the UI — expected something nicer-looking and simpler, a proper TUI, not the scrolling prompt flow.
Goal
A cohesive, full-screen TUI for the guided pipeline that:
- shows the persona recipe / funnel as a single coherent view (where you are in the ladder),
- keeps the two real interaction points clean: the calibrate gate (proceed / re-tune / abort) and confirm-before-spend,
- presents the folder
scope picker as a navigable tree rather than one yes/no prompt per folder,
- stays unit-testable (the current design injects
questionary; preserve an equivalent seam so the flow can be driven headlessly in tests).
Candidate approach
Likely Textual (same ecosystem as rich, already a dep) for a real app surface. Keep the headless run verb as-is; this is purely the interactive layer.
Out of scope / sequencing
Refs: src/persona/wizard.py, src/pipeline/select.py, docs/VERBS.md, docs/GUIDE.md.
Problem
The current
mailrag wizardis a thinquestionary+richrunner: a sequence of line-by-line prompts that scroll down the terminal (persona pick → model → per-folder scope picker → calibrate gate → prune confirm → spend confirm → index). It works and is unit-testable (questionary is injected), but it does not look or feel like a cohesive TUI.Fred's feedback (2026-06-07), after running
./mailrag wizard --profile … --limit 50end-to-end: did not like the UI — expected something nicer-looking and simpler, a proper TUI, not the scrolling prompt flow.Goal
A cohesive, full-screen TUI for the guided pipeline that:
scopepicker as a navigable tree rather than one yes/no prompt per folder,questionary; preserve an equivalent seam so the flow can be driven headlessly in tests).Candidate approach
Likely Textual (same ecosystem as
rich, already a dep) for a real app surface. Keep the headlessrunverb as-is; this is purely the interactive layer.Out of scope / sequencing
Refs:
src/persona/wizard.py,src/pipeline/select.py, docs/VERBS.md, docs/GUIDE.md.