Workspaces named for what they are, capitalised; Reply gains a task panel; Project settings and limits; icon test row
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
---
|
||||
type: observation
|
||||
id: observation.paperclip-harness.paperclip-harness-tui-editor-pitfall-illegal-rune-literal-af
|
||||
title: paperclip-harness TUI editor pitfall: illegal rune literal after patching Go files
|
||||
status: active
|
||||
source_of_truth: false
|
||||
freshness: current
|
||||
last_reviewed: 2026-11-10
|
||||
tags:
|
||||
- pack/paperclip-harness
|
||||
- agent-memory/observation
|
||||
- paperclip-harness
|
||||
- tui
|
||||
- go
|
||||
- build-errors
|
||||
- rune-literal
|
||||
---
|
||||
|
||||
# paperclip-harness TUI editor pitfall: illegal rune literal after patching Go files
|
||||
|
||||
While adding help overlays across TUI files, the patch step produced many Go compile errors in `project.go`, `repair.go`, `reply.go`, `work.go` around lines ~200–260: `illegal rune literal` / `more than one character in rune literal` — i.e., multi-character box-drawing fragments ended up inside single-quoted rune literals instead of double-quoted strings. A follow-up error was `m.showHelp undefined (type replyModel has no field or method showHelp)` because the overlay flag was added to some models but not `replyModel`.
|
||||
|
||||
Practical takeaways for this repo: after bulk-editing box-drawing/help overlay code, run `go build ./...` immediately and check both (a) that box-drawing lines use string literals not rune literals, and (b) that every model receiving a `showHelp` key binding actually has a `showHelp` field. The build was green after fixing both.
|
||||
|
||||
## Detailed observations from completed turn
|
||||
|
||||
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: 85%
|
||||
- Reason: Concrete recurring build errors and their causes discovered during implementation.; enriched with final-answer detail because persistence should be reusable
|
||||
|
||||
## 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]]
|
||||
@@ -651,3 +651,130 @@ Committed as `972d4c0`. Ready for you to poke at: the four things I would test f
|
||||
- session: [[packs/paperclip-harness/80-sessions/rich-discovery-tmp-2026-11-10-03-34-34|Rich discovery: tmp 2026-11-10 03:34:34]]
|
||||
- context: [[packs/paperclip-harness/20-context/tmp|tmp]]
|
||||
- observation: [[packs/paperclip-harness/60-observations/tmp-repository-structure-and-configuration-patterns|tmp repository structure and configuration patterns]]
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Update (2026-11-10 05:00:01)
|
||||
|
||||
Observed while debugging blank icons in the paperclip-harness TUI: the server-side panes were fine; the rendering host `.27` was the problem.
|
||||
|
||||
- `.27` has 98 Nerd Font files installed, but `~/.config/ghostty/config` contained only `term = xterm-256color`.
|
||||
- With no `font-family`, Ghostty used its bundled plain JetBrains Mono, which has no Nerd Font private-use codepoints, so icons rendered blank.
|
||||
- The checkmark `✓` still appeared because it is an ordinary Unicode character present in plain fonts.
|
||||
|
||||
Diagnostic rule: if ordinary glyphs render but Nerd icons are blank, inspect the *terminal emulator's* font config on the display host before touching the TUI rendering code.
|
||||
|
||||
Fix: append `font-family = "JetBrainsMono Nerd Font"` and `font-size = 12` to `~/.config/ghostty/config` (backup `config.bak-icons`); reopen the terminal or reload config.
|
||||
|
||||
## Detailed observations from completed turn
|
||||
|
||||
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: 90%
|
||||
- Reason: Evidence-backed RCA and reusable diagnostic rule.; enriched with final-answer detail because persistence should be reusable
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Update (2026-11-10 05:00:01)
|
||||
|
||||
## Structural/configuration observations (2026-11-10 05:00:01)
|
||||
|
||||
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.
|
||||
|
||||
## 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`
|
||||
|
||||
## Evidence
|
||||
|
||||
- Confidence: 82%
|
||||
- Reason: Captured factual repo structure/configuration patterns from rich discovery
|
||||
|
||||
## 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]]
|
||||
|
||||
Reference in New Issue
Block a user