UNPKG

task-pigeon

Version:

Small SQLite task queue CLI for people and coding agents.

95 lines (67 loc) 3.67 kB
--- artifact_contract: ce-unified-plan/v1 artifact_readiness: implementation-ready execution: code created: 2026-08-16 product_contract_source: ce-plan-bootstrap --- # Pigeon Monitor UX Polish Plan ## Problem Frame Pigeon's Ink monitor is already the right shape for the product, but the operator experience is still too easy to miss: detail mode does not obviously advertise how to get back out, section controls are subtle, and the help surface is not yet strong enough to make the dashboard feel self-explanatory. The core product stays the same: CLI -> command functions -> Drizzle/SQL -> SQLite This plan focuses on making the monitor feel like a production-ready control surface without changing the underlying architecture. ## Product Contract ### Requirements - R1: Keep the monitor on Ink. Do not replace it with a heavier or different TUI framework. - R2: Make detail mode obviously recoverable. Esc, Backspace, and left arrow should back out of detail consistently, and the UI should tell the operator that plainly. - R3: Make section and pane state obvious. The footer, section headers, and selected-item labels should show what is active and what actions are available. - R4: Keep the composer and detail copy concise, context-aware, and readable in narrow terminals. - R5: Preserve existing task and message actions, refresh behavior, and non-interactive command output. - R6: Improve README/operator guidance so the keyboard model matches the runtime behavior. - R7: Keep the codebase schema-first and test-driven. Use zod-defined state and update tests alongside behavior changes. ### Scope Boundaries - In scope: monitor navigation clarity, help text, footer hints, detail exit behavior, composer copy, README updates, and regression tests. - Out of scope: backend sync, remote replication redesign, a new auth model, changing the publish pipeline, or swapping away from SQLite. ## Key Technical Decisions - KTD1: Ink remains the monitor rendering layer. - KTD2: Navigation state stays small and explicit, with no new application layer. - KTD3: Detail mode exits on Esc, Backspace, and left arrow. - KTD4: Help text should be context-sensitive rather than a static wall of shortcuts. - KTD5: Keep one-off command output plain and readable; the monitor is the interactive surface. - KTD6: Use zod-first types for monitor state and transitions, then infer the TypeScript shapes from those schemas. ## Implementation Units ### U1: Navigation and Help Model Files: - `src/monitor-tui.tsx` - `src/monitor-tui.test.tsx` Work: - Tighten detail-mode exit behavior. - Make the footer and monitor hints reflect current mode. - Ensure the operator can always tell how to go back from detail/composer states. Tests: - keyboard-path tests for enter/detail/back/cancel flows - regression coverage for the monitor footer/help text behavior ### U2: Panel and Copy Polish Files: - `src/monitor-tui.tsx` Work: - Refine composer and detail-panel copy so it reads clearly in narrow terminals. - Keep active state visible without crowding the dashboard. - Preserve the current task/message actions while making them easier to discover. Tests: - exercised indirectly through monitor render tests ### U3: Docs and Operator Guidance Files: - `README.md` - `skills/pigeon/SKILL.md` Work: - Update monitor shortcut documentation to match the runtime model. - Make the operator guidance shorter and more direct. - Keep the published docs aligned with the actual monitor behavior. Tests: - `bun run ci` - package verification via `npm pack --dry-run` ## Verification - `bun test src/monitor-tui.test.tsx src/cli.test.ts` - `bun run ci` - `npm pack --dry-run`