Workspaces named for what they are, capitalised; Reply gains a task panel; Project settings and limits; icon test row

This commit is contained in:
Sam
2026-11-10 16:12:54 +11:00
parent 09e32da046
commit 2640049f1f
15 changed files with 575 additions and 31 deletions

View File

@@ -0,0 +1,64 @@
---
type: session
id: session.paperclip-harness.paperclip-harness-tui-icon-font-fix-help-filter-unblock-safe
title: paperclip-harness TUI: icon font fix, help/filter/unblock, safe rebuild (commit 09e32da)
status: active
source_of_truth: false
freshness: current
last_reviewed: 2026-11-10
tags:
- pack/paperclip-harness
- agent-memory/session
- paperclip-harness
- tui
- nerd-fonts
- ghostty
- help-overlay
- task-filter
- unblock
- repair-pane
---
# paperclip-harness TUI: icon font fix, help/filter/unblock, safe rebuild (commit 09e32da)
Discovery snapshot for the `paperclip-harness` repo, TUI component (Go module `paperclip-harness/tui`, plus `paperclip-harness/tui/paperclip` subpackage with no tests).
Main symptom investigated: Nerd Font icons rendered as blanks in the terminal, but panes were fine on the server side. Root cause was the terminal host `.27`, not `.13`: `.27` had 98 Nerd Font entries installed but its Ghostty config (`~/.config/ghostty/config`) contained only `term = xterm-256color` — no `font-family` — so Ghostty fell back to plain JetBrains Mono, which lacks private-use icon codepoints. `✓` still rendered because it is an ordinary character.
Fix applied on `.27`: appended
```
font-family = "JetBrainsMono Nerd Font"
font-size = 12
```
to `~/.config/ghostty/config`, backup at `config.bak-icons`. Requires reopening the terminal window or reloading Ghostty config. Fallback plan if icons still missing: switch panels back to plain characters by default.
Features built this turn (committed as `09e32da Help on every panel, task filter, unblock key, mouse zones, safe add-only rebuild`):
- `?` overlay on every panel listing only the keys valid there; `esc` or `?` closes.
- `/` filter on the board: narrows by identifier, title, or assignee; count and chosen task follow the filter; header shows `filter: …▌` while typing.
- `u` unblock: for a task whose blocker finished but still says blocked, one key sets it to todo with a comment.
- Mouse clicks on task rows: a single click-zone manager created once and the whole view scanned through it; clicking a row selects it and loads detail. Untested interactively from the agent side.
- `B` on Repair: adds only missing panes, never closes any; safe to press from inside a pane (unlike `R` which rebuilds every pane).
Validation: all seven panes rebuilt cleanly and every screen drew; `go test ./...` for `paperclip-harness/tui` passed (tui 0.4–0.6s). Screenshots refreshed in `/tmp/mockups/`.
Environment/tool paths confirmed by the Repair pane checks: harness binary `/home/sam/paseo/projects/paperclip-harness/bin/harness`, git `/run/current-system/sw/bin/git`, go `/home/sam/.nix-profile/bin/go`, ocr `/home/sam/.local/bin/ocr`, tuios `/etc/profiles/per-user/sam/bin/tuios`, lazygit `/run/current-system/sw/bin/lazygit`, hunk `/etc/profiles/per-user/sam/bin/hunk`, 384 Nerd Font files.
Proposed next work, in the user-facing order: (1) needs-you cards that act directly (unblock/assign/open conversation), (2) a settings tab that writes the per-project verify command, (3) diff beside the conversation on wide screens, (4) cross-project search over tasks/comments/activity.
## Evidence
- Confidence: 85%
- Reason: Rich sanitized discovery snapshot with root cause, exact config fix, feature list, commit, validation, and proposed roadmap.
## Related
- [[packs/paperclip-harness/00-system/pi-agent/memory-manifest|Memory Manifest]]
## Related learned memories <!-- same-turn-2026-11-10 05:00:01 -->
- observation: [[packs/paperclip-harness/60-observations/tmp-repository-structure-and-configuration-patterns|Blank Nerd Font icons: missing font-family in Ghostty config on host .27]]
- observation: [[packs/paperclip-harness/60-observations/paperclip-harness-tui-editor-pitfall-illegal-rune-literal-af|paperclip-harness TUI editor pitfall: illegal rune literal after patching Go files]]
- action: [[packs/paperclip-harness/40-actions/2026-11-10-implemented-help-overlay-board-filter-unblock-key-row-mouse-|Implemented help overlay, board filter, unblock key, row mouse zones, safe add-only Repair rebuild]]
- session: [[packs/paperclip-harness/80-sessions/paperclip-harness-tui-icon-font-fix-help-filter-unblock-safe|paperclip-harness TUI: icon font fix, help/filter/unblock, safe rebuild (commit 09e32da)]]
- session: [[packs/paperclip-harness/80-sessions/rich-discovery-config-2026-11-10-05-00-01|Rich discovery: .config 2026-11-10 05:00:01]]
- context: [[packs/paperclip-harness/20-context/tmp|.config]]

View File

@@ -0,0 +1,88 @@
---
type: session
id: session.paperclip-harness.rich-discovery-config-2026-11-10-05-00-01
title: Rich discovery: .config 2026-11-10 05:00:01
status: active
source_of_truth: false
freshness: current
last_reviewed: 2026-11-10
tags:
- pack/paperclip-harness
- agent-memory/session
- autolearn
- rich-discovery
- repo/config
---
# Rich discovery: .config 2026-11-10 05:00:01
Sanitized rich discovery snapshot captured automatically from the completed turn.
## Source paths observed
- `paperclip-harness/tui/paperclip`
- `home/sam/paseo/projects/paperclip-harness/bin/harness`
- `run/current-system/sw/bin/git`
- `home/sam/.nix-profile/bin/go`
- `home/sam/.local/bin/ocr`
- `etc/profiles/per-user/sam/bin/tuios`
- `run/current-system/sw/bin/lazygit`
- `etc/profiles/per-user/sam/bin/hunk`
- `.config/ghostty/config`
## Final answer snapshot
Found the real reason you see no icons, and it was not the server.
## Icons: the font was missing on `.27`, not `.13`
Your terminal on `.27` is what draws the characters. `.27` had 98 Nerd Font entries installed but its Ghostty config contained only `term = xterm-256color` — no `font-family`, so Ghostty used its own **plain** JetBrains Mono, which has no icon glyphs. The tick shows because `✓` is an ordinary character; the Nerd icons are private-use codepoints that a plain font simply does not have.
I appended to `~/.config/ghostty/config` on `.27` (backup at `config.bak-icons`):
```
font-family = "JetBrainsMono Nerd Font"
font-size = 12
```
Reopen the terminal window on `.27` (or reload Ghostty's config) and the icons should appear. If they still do not, say so and I will switch the panels back to plain characters by default.
## Built since you left
- **`?` on every panel** — an overlay listing the keys that work there, and nothing else. `esc` or `?` closes it.
- **`/` filter on the board** — type part of an identifier, a title or an assignee and the list narrows; the count and the chosen task follow the filter, so what is highlighted is always what would be acted on. The header shows `filter: CHANGE▌` while you type.
- **`u` unblock** — on a task whose blocker has finished but which still says blocked, one key sets it to todo with a comment. That is the state you had to hand-fix earlier.
- **Mouse clicks on task rows** — one click-zone manager created once and the whole view scanned through it, as the rules require. Clicking a row selects it and loads its detail. I cannot verify a click from here, so treat it as untested until you try it.
- **`B` on Repair** — add only the panes that are missing, never closing any. Safe to press from inside a pane, unlike `R`.
All seven panes rebuilt cleanly afterwards, and every screen drew.
Screenshots refreshed in `/tmp/mockups/`. Committed as `09e32da`.
## What I would build next, in this order
1. **Needs-you cards that act** — each card gets its own key: unblock, assign, open the conversation. Right now the panel tells you what needs you but you act in another panel.
2. **A settings tab that writes** — the verify command per project, edited in place, which is the one thing the Author form cannot express today.
3. **Diff beside the conversation** — the wide-screen arrangement from the spec: tree, thread, diff on one workspace, so a claim and its code sit together.
4. **Search across the project** — one key that filters tasks, comments and activity together, for when you remember a phrase but not the task.
Tell me which of those you want first, and whether the icons appear after reopening the terminal.
## Evidence
- Confidence: 86%
- Reason: Preserve full sanitized discovery detail from a rich investigation turn
## Related
- [[packs/paperclip-harness/00-system/pi-agent/memory-manifest|Memory Manifest]]
## Related learned memories <!-- same-turn-2026-11-10 05:00:01 -->
- observation: [[packs/paperclip-harness/60-observations/tmp-repository-structure-and-configuration-patterns|Blank Nerd Font icons: missing font-family in Ghostty config on host .27]]
- observation: [[packs/paperclip-harness/60-observations/paperclip-harness-tui-editor-pitfall-illegal-rune-literal-af|paperclip-harness TUI editor pitfall: illegal rune literal after patching Go files]]
- action: [[packs/paperclip-harness/40-actions/2026-11-10-implemented-help-overlay-board-filter-unblock-key-row-mouse-|Implemented help overlay, board filter, unblock key, row mouse zones, safe add-only Repair rebuild]]
- session: [[packs/paperclip-harness/80-sessions/paperclip-harness-tui-icon-font-fix-help-filter-unblock-safe|paperclip-harness TUI: icon font fix, help/filter/unblock, safe rebuild (commit 09e32da)]]
- session: [[packs/paperclip-harness/80-sessions/rich-discovery-config-2026-11-10-05-00-01|Rich discovery: .config 2026-11-10 05:00:01]]
- context: [[packs/paperclip-harness/20-context/tmp|.config]]