Files
paperclip-harness/.pi/memory-vault/packs/paperclip-harness/20-context/paperclip-harness-tui-office-project-components.md

5.9 KiB

type, id, title, status, source_of_truth, freshness, last_reviewed, tags
type id title status source_of_truth freshness last_reviewed tags
context context.paperclip-harness.paperclip-harness-tui-office-project-components paperclip-harness TUI office/project components active false current 2026-11-11
pack/paperclip-harness
agent-memory/context
paperclip-harness
office
projectModel
projects.toml
tui

paperclip-harness TUI office/project components

The paperclip-harness is a Go TUI (project model with tabs) plus a bin/office launcher script, driving TUIOS panes.

Key structure discovered in the Go code:

  • projectModel renders tabs; switch m.tab in the View selects body: case 0 = overviewLines, case 1 = factLines, case 2 = costLines, default = settingLines. A projects/cleanup style tab renders via projectListLines(width int) (near line 481), used to list every adopted project and where it lives.
  • Project tab follows a table pattern: columns project / machine / session / folder, with a "(this machine)" marker.

bin/office behavior:

  • Adopts projects and records each in ~/.config/paperclip-harness/projects.toml (keyed by paperclip UUID, name, folder, host, session).
  • Creates TUIOS workspaces/panes for: project, New task, Repair (e.g. "workspaces in use: 8").
  • Header comment in that TOML: adopted projects are one folder, one machine, one session each; Paperclip owns the project itself, the file only records where it lives.
  • A project on another machine can be listed but not opened locally; opening requires attaching to its session or running bin/office <folder> on that machine.

This overview should be the anchor for future changes to the office/project tab, cleanup tab, and project registry.

Detailed context from completed turn

Five of the six are in, and one has a caveat I want to be straight about.

Built

1. Repair>repair → cleanup tab. Sessions with pane count and last use; space ticks, x closes the ticked ones after asking. Protected and attached sessions are refused, and the screen says so:

session                          panes last used    state
paperclip-harness                    9 11 Nov 14:14 this project's session
tuios coding harness                 4 11 Nov 14:09 attached, or on another machine
office                              32 10 Nov 13:57 attached, or on another machine
office-test-1                       26 10 Nov 11:24
office-test-1-card-t3-cover-image…   1  9 Nov 19:50

space ticks a session, x closes the ticked ones after asking.
closing a TUIOS session ends its panes. It does not delete anything in
~/.pi/paperclips, where every Pi conversation is kept.

2. Pi sessions in t — two new entries: pi sessions opens ~/.pi/paperclips in Yazi, pi resume gives Pi's own session list ready to open.

4. v in Work>review — starts bin/review <task> --post and the tab shows the review running, then the verdict, which is also written on the task.

6. Board>board needs-you — enter on a card now selects that task and switches you to the Reply workspace, so the answer is one key away.

3. Project>project → projects tab — bin/office now records each adopted project in ~/.config/paperclip-harness/projects.toml, and the tab lists them:

project            machine      session        folder
spike-2026-11-10   nixos-desktop paperclip-har… /tmp/pc-sandbox-2026-…  (this machine)

a project on another machine can be listed here but not opened from this one.
to open one: attach to its session, or run bin/office <folder> there.

Caveat: that is a list, not a switch. Switching would mean tearing down these panes and building another project's — and a project on .27 cannot be opened from .13 at all. I would rather show you the truth than a button that half-works.

Not done: 7 (the spend chart)

Project>overview already has a runs sparkline. Spend-per-day needs cost per run, and the only cheap source is company runs, which cost 8 seconds to read. I did not put an 8-second read behind a tab without asking you first.

A finding that changes the key map

While testing the cleanup tab I found why tabs would not switch: TUIOS binds [, ], Tab, ,, ., =, ; and the digits in its own key map, and they never reached the program in that pane. Tabs are now switched with ( and ), which TUIOS leaves alone; [ and ] still work where the pane is in terminal mode, so both are accepted.

If a pane ever stops responding to letters, press i or Enter first — that is TUIOS's window mode, not a broken program.

Committed as 3ec960e; docs/NEXT.md updated with what is done and what remains (spend chart, the office scaffold, memory per agent, MOUSE-1).

Evidence

  • Confidence: 85%
  • Reason: Evidence-backed architecture of the Go TUI tabs and bin/office registry from grep output and rendered UI.; enriched with final-answer detail because persistence should be reusable