docs: finalize TUI nav + archiving spec and implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -48,11 +48,13 @@ Archiving is a **recoverable delete**: it kills the session's tmux window/harnes
|
||||
|
||||
| Key | View | Action |
|
||||
|-----|-----------|----------------------------------------------------------------|
|
||||
| `x` | active | Archive selected session — gated behind the same confirm dialog as delete |
|
||||
| `x` | active | Archive selected session — **instant, no confirmation** (non-destructive: row + worktree kept, harness resumable) |
|
||||
| `A` | both | Toggle the Sessions column between **active** and **archived** |
|
||||
| `u` | archived | Restore (unarchive) the selected session |
|
||||
| `d` | both | Hard delete (unchanged; in archived view the window is already gone) |
|
||||
|
||||
Archive is instant because it loses nothing: it kills the live tmux window (a resumable process) but keeps the DB row, `harness_session_id`, and any worktree on disk. Restore is equally instant. Hard `delete` retains its existing confirmation flow (worktree sessions still prompt via `ConfirmDeleteScreen`).
|
||||
|
||||
### View toggle
|
||||
|
||||
- A `_show_archived: bool` flag on the app. `action_toggle_archived` flips it and refreshes the Sessions list for the currently-selected project.
|
||||
@@ -77,7 +79,7 @@ Archived sessions always render as `dead` (their window was killed). No pane cap
|
||||
- `unarchive_session` makes the row reappear in the active list.
|
||||
- `list_sessions(project_id, archived=True)` returns only archived rows.
|
||||
|
||||
**TUI tests (`tests/test_tui*.py`, following existing patterns):**
|
||||
- `x` triggers archive (with confirm), `A` toggles the view and header text, `u` restores.
|
||||
**TUI tests (`tests/test_tui.py`, following existing patterns):**
|
||||
- `x` triggers archive (instant, no dialog), `A` toggles the view and header text, `u` restores.
|
||||
- `h`/`l` move focus to the projects/sessions lists respectively.
|
||||
- Footer/`check_action` adaptation: `x` hidden in archived view, `u` hidden in active view.
|
||||
|
||||
Reference in New Issue
Block a user