feat(pi-workflow): improve workflow usability and recovery
This commit is contained in:
+244
-111
@@ -1,151 +1,284 @@
|
||||
# pi-workflow dashboard mocks
|
||||
# pi-workflow popup prototypes
|
||||
|
||||
These are static TUI direction mocks for `/workflow`. They are not implementation screenshots.
|
||||
**Status:** Direction C accepted
|
||||
|
||||
## A. Split workspace
|
||||
These static terminal frames compare popup directions for `/workflow`. They are prototype evidence, not production screenshots or manual validation of the implemented extension. All variants use Pi theme tokens, keyboard-visible focus, one border at most, and no animation.
|
||||
|
||||
Best for comparing Stage progress and Assignment detail without navigation.
|
||||
Representative run: `pi-workflow-usability-resume`, waiting at Plan Approval after Discover and Design.
|
||||
|
||||
## A. Centered compact modal
|
||||
|
||||
A small modal preserves the surrounding conversation and keeps one decision in focus.
|
||||
|
||||
```text
|
||||
pi-workflow 118 cols
|
||||
|
||||
Runs feature/search-page · waiting
|
||||
> search-page waiting plan-approval · revision 12
|
||||
auth-cleanup running Worktree .worktrees/pi-workflow-search-page-r1
|
||||
cache-audit done Branch feature/search-page
|
||||
Plan artifacts/plan-11-a31f.md
|
||||
Stages Report pending
|
||||
✓ Discover
|
||||
✓ Design Open Gate · Plan Approval
|
||||
· Prototype UI impact: non-trivial
|
||||
· Implement Review the plan and UI evidence before deciding.
|
||||
· Verify
|
||||
· Review [a] approve [r] revise [o] open plan
|
||||
|
||||
↑↓ run tab pane enter action esc close
|
||||
┌──────────────────────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ ╭─ pi-workflow ──────────────────────────────╮ │
|
||||
│ │ pi-workflow-usability-resume │ │
|
||||
│ │ WAITING · Plan Approval · revision 12 │ │
|
||||
│ │ │ │
|
||||
│ │ ✓ Discover ✓ Design · Prototype │ │
|
||||
│ │ · Implement · Verify · Review │ │
|
||||
│ │ │ │
|
||||
│ │ > Review plan │ │
|
||||
│ │ Approve plan │ │
|
||||
│ │ Request revision │ │
|
||||
│ │ Close │ │
|
||||
│ │ │ │
|
||||
│ │ ↑↓ navigate enter select esc close │ │
|
||||
│ ╰─────────────────────────────────────────────╯ │
|
||||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
Narrow terminal:
|
||||
Strengths:
|
||||
|
||||
- Minimal visual interruption.
|
||||
- Familiar one-step prompt behavior.
|
||||
- Low chrome and clear focus.
|
||||
|
||||
Weaknesses:
|
||||
|
||||
- Long plans and detailed run state require repeated modal replacement.
|
||||
- Context disappears quickly as the interaction deepens.
|
||||
- Poor fit for browsing artifacts or transcripts.
|
||||
|
||||
### A at 60 columns
|
||||
|
||||
```text
|
||||
pi-workflow · search-page
|
||||
waiting · plan-approval · r12
|
||||
|
||||
✓ Discover ✓ Design · Prototype
|
||||
· Implement · Verify · Review
|
||||
|
||||
Plan Approval
|
||||
UI impact: non-trivial
|
||||
[o] plan [enter] actions
|
||||
╭─ pi-workflow ───────────────────────╮
|
||||
│ usability-resume · WAITING │
|
||||
│ Plan Approval · r12 │
|
||||
│ │
|
||||
│ > Review plan │
|
||||
│ Approve plan │
|
||||
│ Request revision │
|
||||
│ Close │
|
||||
│ │
|
||||
│ ↑↓ enter esc │
|
||||
╰─────────────────────────────────────╯
|
||||
```
|
||||
|
||||
## B. Focused run cards
|
||||
## B. Near-full-screen workspace
|
||||
|
||||
Minimal chrome. The list stays compact; selecting a run opens one vertically ordered detail card.
|
||||
A stable workspace keeps the run list, selected run, progress, and actions visible together.
|
||||
|
||||
```text
|
||||
pi-workflow
|
||||
|
||||
> search-page WAITING Plan Approval r12
|
||||
auth-cleanup RUNNING Implement r31
|
||||
cache-audit DONE report available r18
|
||||
|
||||
────────────────────────────────────────────────────────────
|
||||
search-page
|
||||
feature/search-page
|
||||
|
||||
Progress Discover ✓ Design ✓ Prototype · Implement ·
|
||||
Verify · Review ·
|
||||
|
||||
Gate Plan Approval
|
||||
non-trivial UI · 3 prototype candidates required
|
||||
|
||||
Artifacts plan-11-a31f.md
|
||||
Worktree .worktrees/pi-workflow-search-page-r1
|
||||
|
||||
[enter] actions [o] artifact [esc] close
|
||||
╭─ pi-workflow ────────────────────────────────────────────────────────────────╮
|
||||
│ Runs │ pi-workflow-usability-resume WAITING │
|
||||
│ │ feature/pi-workflow-usability-resume · r12 │
|
||||
│ > usability-resume │ │
|
||||
│ auth-cleanup │ Progress │
|
||||
│ cache-audit │ ✓ Discover ✓ Design · Prototype · Implement │
|
||||
│ │ · Verify · Review │
|
||||
│ │ │
|
||||
│ │ Open Gate │
|
||||
│ │ Plan Approval │
|
||||
│ │ Review the implementation plan before work begins. │
|
||||
│ │ │
|
||||
│ │ > Review plan │
|
||||
│ │ Approve plan │
|
||||
│ │ Request revision │
|
||||
│ │ Browse artifacts │
|
||||
│ │ Close │
|
||||
│ │ │
|
||||
│ ↑↓ run tab focus │ ↑↓ action enter select esc back │
|
||||
╰──────────────────────────────────────────────────────────────────────────────╯
|
||||
```
|
||||
|
||||
Action sheet:
|
||||
Strengths:
|
||||
|
||||
- High information density with stable spatial context.
|
||||
- Fast comparison between several active runs.
|
||||
- Actions and state remain visible together.
|
||||
|
||||
Weaknesses:
|
||||
|
||||
- The permanent left pane spends space on uncommon multi-run comparison.
|
||||
- Focus management and responsive collapse are more complex.
|
||||
- At 80 columns the content pane becomes cramped; below 80 it must become a different UI.
|
||||
|
||||
### B at 80x24
|
||||
|
||||
```text
|
||||
search-page · Plan Approval
|
||||
|
||||
> Inspect plan
|
||||
Record approval
|
||||
Request revision
|
||||
Copy worktree path
|
||||
Close
|
||||
╭─ pi-workflow ────────────────────────────────────────────────────────────────╮
|
||||
│ Runs │ usability-resume · WAITING · r12 │
|
||||
│ > usability │ ✓ Discover ✓ Design · Prototype │
|
||||
│ auth-cleanup │ · Implement · Verify · Review │
|
||||
│ cache-audit │ │
|
||||
│ │ Plan Approval │
|
||||
│ │ > Review plan │
|
||||
│ │ Approve plan │
|
||||
│ │ Request revision │
|
||||
│ │ Browse artifacts │
|
||||
│ │ │
|
||||
│ tab focus │ ↑↓ action enter select esc back │
|
||||
╰──────────────────────────────────────────────────────────────────────────────╯
|
||||
```
|
||||
|
||||
Prototype Gate:
|
||||
### B at 60 columns
|
||||
|
||||
The workspace must collapse to a single run-detail pane. The run list becomes a prior drill-down view, effectively converging on direction C.
|
||||
|
||||
## C. Drill-down overlays with dedicated readers
|
||||
|
||||
Direction C uses shallow browser-style navigation. Each overlay does one job. Escape always returns one level.
|
||||
|
||||
### C1. Run list popup
|
||||
|
||||
```text
|
||||
search-page · Prototype Acceptance
|
||||
|
||||
1 Sidebar navigation /prototype?variant=1
|
||||
mobile ✓ desktop ✓ browser evidence retained
|
||||
2 Command palette /prototype?variant=2
|
||||
mobile ✓ desktop ✓ browser evidence retained
|
||||
3 Inline workspace /prototype?variant=3
|
||||
mobile ✓ desktop ✓ browser evidence retained
|
||||
|
||||
> Open candidate 1
|
||||
Accept candidate 1
|
||||
Request refinement
|
||||
Abort run
|
||||
╭─ pi-workflow ─────────────────────────────╮
|
||||
│ > usability-resume WAITING Plan Approval│
|
||||
│ auth-cleanup RUNNING Implement │
|
||||
│ cache-audit DONE report ready │
|
||||
│ │
|
||||
│ ↑↓ navigate enter open esc close │
|
||||
╰────────────────────────────────────────────╯
|
||||
```
|
||||
|
||||
Narrow terminal uses the same vertical card and hides paths until `o`.
|
||||
|
||||
## C. Event timeline
|
||||
|
||||
Best for recovery and auditability. The primary view is an immutable history; actions belong to the current event.
|
||||
### C2. Run detail popup
|
||||
|
||||
```text
|
||||
pi-workflow · search-page WAITING
|
||||
|
||||
12:04 ✓ Discover 2 assignments
|
||||
12:09 ✓ Questions decision recorded
|
||||
12:15 ✓ Design plan revision 11
|
||||
12:16 ● Plan Approval waiting for Decision
|
||||
|
||||
Current
|
||||
UI impact non-trivial
|
||||
Plan plan-11-a31f.md
|
||||
Worktree feature/search-page
|
||||
|
||||
[enter] current actions [p] prototypes [r] report [esc]
|
||||
╭─ usability-resume ───────────────────────────────────╮
|
||||
│ WAITING · Plan Approval · revision 12 │
|
||||
│ │
|
||||
│ ✓ Discover ✓ Design · Prototype · Implement │
|
||||
│ · Verify · Review │
|
||||
│ │
|
||||
│ > Review plan │
|
||||
│ Record Gate Decision │
|
||||
│ Browse prototype evidence │
|
||||
│ Browse Assignment transcripts │
|
||||
│ Show worktree path │
|
||||
│ │
|
||||
│ ↑↓ navigate enter select esc runs │
|
||||
╰──────────────────────────────────────────────────────╯
|
||||
```
|
||||
|
||||
Run list:
|
||||
### C3. Plan reader at wide width
|
||||
|
||||
The reader uses the whole overlay. The terminal edge is the outer frame, so there is no decorative full-screen border. The left outline tracks the heading containing the top visible document line.
|
||||
|
||||
```text
|
||||
Recent workflow events
|
||||
pi-workflow plan · usability-resume line 42/216
|
||||
|
||||
> search-page Plan Approval 2m
|
||||
auth-cleanup Implement 8m
|
||||
cache-audit Completed 31m
|
||||
Outline Plan
|
||||
───────────────────────────── ─────────────────────────────────────────────
|
||||
pi-workflow usability update # pi-workflow usability update plan
|
||||
Locked decisions
|
||||
> Implementation phases ## Implementation phases
|
||||
Prototype overlays
|
||||
Session lifecycle ### 2. Session lifecycle and recovery
|
||||
Worktree safety
|
||||
Popup TUI - Route the dashboard's fresh-session action
|
||||
Progress widget through the existing continuation path.
|
||||
Design regression
|
||||
Acceptance criteria - Atomically rotate lease and context owners
|
||||
during absent/dead adoption.
|
||||
|
||||
Primary files: dashboard.ts,
|
||||
context-transition.ts, continuation.ts,
|
||||
engine.ts, and focused tests.
|
||||
|
||||
↑↓ scroll pgup/pgdn page home/end document esc back
|
||||
```
|
||||
|
||||
If labels collide in this available list, only the duplicates gain the shortest unique run-ID prefix (at least eight characters):
|
||||
### C3 at 80x24
|
||||
|
||||
```text
|
||||
> search-page · 12345678a Plan Approval
|
||||
search-page · 12345678b Implement
|
||||
cache-audit Completed
|
||||
pi-workflow plan · usability-resume row 42/216
|
||||
|
||||
Outline Plan
|
||||
────────────────────── ─────────────────────────────────────────────
|
||||
Locked decisions ## Implementation phases
|
||||
> Implementation
|
||||
Prototype overlays ### 2. Session lifecycle and recovery
|
||||
Session lifecycle - Route the dashboard's fresh-session action
|
||||
Worktree safety through the existing continuation path.
|
||||
Popup TUI
|
||||
Progress widget - Atomically rotate lease and context owners
|
||||
Acceptance criteria during absent/dead adoption.
|
||||
|
||||
↑↓ scroll pgup/pgdn page home/end document esc back
|
||||
```
|
||||
|
||||
Narrow terminals preserve the same timeline and omit timestamps first.
|
||||
### C3 at 60 columns
|
||||
|
||||
## Direction criteria
|
||||
The outline hides and the document becomes the only pane. The current heading remains visible in the header.
|
||||
|
||||
The implementation should:
|
||||
```text
|
||||
pi-workflow plan · Implementation phases · row 42/216
|
||||
|
||||
- Start dark-mode friendly through Pi theme tokens.
|
||||
- Keep the default view compact and reveal paths, evidence, and transcripts on demand.
|
||||
- Show only valid actions for the current persisted Gate or continuation intent.
|
||||
- Use feature-name-first presentation labels, with bounded request fallbacks and collision suffixes only when needed.
|
||||
- Keep the full run ID out of ordinary prose while retaining it in copyable commands, structured details, and report metadata.
|
||||
- Keep run status, revision, branch, worktree, plan, report, and prototype evidence discoverable.
|
||||
- Remain usable from narrow terminals through 4K-width terminals without continuous animation.
|
||||
## Implementation phases
|
||||
|
||||
### 2. Session lifecycle and recovery
|
||||
|
||||
- Route the dashboard's fresh-session action through the
|
||||
existing continuation path.
|
||||
|
||||
- Atomically rotate lease and context owners during
|
||||
absent/dead adoption.
|
||||
|
||||
↑↓ scroll pgup/pgdn page home/end document esc back
|
||||
```
|
||||
|
||||
### C3 at 47x11
|
||||
|
||||
```text
|
||||
|
||||
terminal too small
|
||||
|
||||
pi-workflow plan needs 48x12
|
||||
current terminal is 47x11
|
||||
|
||||
resize the terminal or press esc
|
||||
|
||||
```
|
||||
|
||||
Strengths:
|
||||
|
||||
- Each screen has one dominant task and a complete local keymap.
|
||||
- Best responsive behavior because narrow layouts remain single-pane.
|
||||
- Long plans and transcripts get dedicated virtualized readers.
|
||||
- The shallow stack preserves context without permanent side-panel cost.
|
||||
|
||||
Weaknesses:
|
||||
|
||||
- Comparing several runs takes more navigation than direction B.
|
||||
- Back-stack state and overlay focus/disposal require careful implementation.
|
||||
|
||||
## Persistent progress widget
|
||||
|
||||
The widget is independent of the selected popup direction and stays above Pi's editor while the newest attached run is active.
|
||||
|
||||
Standard:
|
||||
|
||||
```text
|
||||
workflow usability-resume DESIGN 2/6 Gate: Plan Approval
|
||||
```
|
||||
|
||||
Narrow:
|
||||
|
||||
```text
|
||||
workflow usability-resume DESIGN 2/6
|
||||
```
|
||||
|
||||
Terminal runs disappear rather than leaving a stale receipt above the editor.
|
||||
|
||||
## Recommendation
|
||||
|
||||
Use direction C. It has one border only on bounded popup cards, no redundant frame around the full-screen reader, keyboard-visible selection, and the most truthful 80-column and 60-column degradation. Direction B spends too much space on multi-run comparison, while direction A does not provide enough stable space for plans and evidence.
|
||||
|
||||
## Production mapping
|
||||
|
||||
The accepted direction maps to `extensions/pi-workflow/tui.ts` and `dashboard.ts`. The implementation uses popup overlays for bounded selections and text entry, then switches to the full-screen reader for verified plans and retained evidence. `progress.ts` owns the separate one-line widget. Pure renderer tests cover the wide, 80-column, 60-column, and below-48x12 contracts; interactive Pi validation remains a separate manual step.
|
||||
|
||||
## Interaction contract
|
||||
|
||||
- Arrow keys navigate every selection surface; Enter selects; Escape cancels or returns one level.
|
||||
- Page Up/Page Down and Home/End apply only to long-document readers.
|
||||
- Text inputs use Pi's `Input` or `Editor` components and propagate focus for IME positioning.
|
||||
- The current selection uses position plus selected background or reverse video, never color alone.
|
||||
- TUI overlays are never opened in RPC, print, or JSON mode.
|
||||
- Every rendered line is truncated or wrapped by terminal cell width rather than JavaScript string length.
|
||||
- No continuously repainting animation is used.
|
||||
|
||||
Reference in New Issue
Block a user