Gabriel Brown
27acbe7a95
Test: Add installer provenance boundary
2026-08-27 05:43:26 -04:00
Gabriel Brown
fc8f226747
Fix: Complete SSH bootstrap hardening
2026-08-27 05:19:58 -04:00
Gabriel Brown
98e29eb8f3
Test: Strengthen SSH bootstrap documentation contract
2026-08-27 04:35:45 -04:00
Gabriel Brown
00e11e0b8d
Docs: Explain transactional SSH hardening
2026-08-27 04:25:05 -04:00
Gabriel Brown
ac25fd776c
Fix: Clean interrupted SSH candidates
2026-08-27 04:12:45 -04:00
Gabriel Brown
51e2c8418a
Fix: Complete SSH hardening recovery
2026-08-27 04:06:54 -04:00
Gabriel Brown
d267da58ad
Fix: Roll back failed SSH hardening
2026-08-27 03:44:57 -04:00
Gabriel Brown
20b41c3976
Fix: Gate SSH hardening on a verified key
2026-08-27 03:28:42 -04:00
Gabriel Brown
bfb37afd69
Plan secure bootstrap and privileged installation
2026-08-27 03:11:00 -04:00
Gabriel Brown
b361db8486
Design secure bootstrap and privileged installation
2026-08-27 02:23:55 -04:00
Gabriel Brown
12b858371e
Fix: Close verification gate review findings
2026-08-27 00:21:45 -04:00
Gabriel Brown
77f625d7bb
Docs: Clarify contract output handling
2026-08-26 23:38:09 -04:00
Gabriel Brown
34e295d184
Docs: Explain contract capability gates
2026-08-26 23:32:38 -04:00
Gabriel Brown
e19fb00276
Test: Harden dock fixture cleanup
2026-08-26 23:22:26 -04:00
Gabriel Brown
37688f702a
Test: Isolate dock geometry fixtures
2026-08-26 23:12:14 -04:00
Gabriel Brown
71f4f0d24b
Test: Guard settings docs contract cleanup
2026-08-26 23:05:14 -04:00
Gabriel Brown
3839183401
Test: Isolate generated docs and settings fixtures
2026-08-26 22:59:28 -04:00
Gabriel Brown
68b6664111
Test: Propagate update fixture failures
2026-08-26 22:53:39 -04:00
Gabriel Brown
803362ebad
Test: Exercise updates through the real command
2026-08-26 22:46:46 -04:00
Gabriel Brown
6a7bdcb835
Test: Harden compose secret fixtures
2026-08-26 22:38:00 -04:00
Gabriel Brown
37fd5e890e
Test: Scan compose secrets by data shape
2026-08-26 22:31:22 -04:00
Gabriel Brown
a19c6dc3ef
Test: Make agent usage fixtures date independent
2026-08-26 22:26:19 -04:00
Gabriel Brown
6d71a77798
Test: Cover contract runner consent
2026-08-26 22:22:57 -04:00
Gabriel Brown
d8144a66c1
Fix: Make contract execution safe and diagnostic
2026-08-26 22:11:56 -04:00
Gabriel Brown
43d1e15858
Test: Harden manifest validation
2026-08-26 22:00:52 -04:00
Gabriel Brown
1192ad64dc
Test: Classify every contract capability
2026-08-26 21:52:16 -04:00
Gabriel Brown
044139ed63
Plan verification gate remediation
2026-08-26 21:11:25 -04:00
Gabriel Brown
0d894afe3e
Plan repository audit remediation
2026-08-26 20:42:59 -04:00
Gabriel Brown
54dfa977ee
The notification menu learns what every other popover already knew
...
Popover's container is a plain Item and never measures its children, so
the three-dots menu on a notification card opened as a 240x28 sliver
with its one row clipped out of existence. TrayMenu and AgentUsagePanel
both carry the antidote — implicit sizes on the Popover itself, taken
from the content column — and now the notification settings menu does
too, with rows filling the window width so the hover reaches the edges.
Claude-Session: https://claude.ai/code/session_01W8icivxZcmFTR2g6DkYhjT
2026-08-26 19:50:31 -04:00
Gabriel Brown
5f09c5ee38
The document portal may not claim started until its mount exists
...
Third recurrence of the stale-mount bug: the ExecStartPre cleanup ran on
clean ground and the portal still came up mountless, sitting active while
every fresh flatpak sandbox failed to build. Add an ExecStartPost that
polls for the fuse mount and fails the start after five seconds without
one, so a mountless portal shows up failed in the journal and the next
bus activation retries from the cleanup instead of lingering broken.
Claude-Session: https://claude.ai/code/session_01CTL7G5u3iDf1NCM6rTyCES
2026-08-26 10:48:47 -04:00
Gabriel Brown
f33da41cc6
Panama learns what a server is: from a root login to running containers
...
A machine's role is now the interview's first question and the one answer
Panama records. Servers get the same shell minus the screen: core packages,
nvm, Bun, Claude Code and Codex (desktops get Codex too), linger, rootless
ports from 80, firewalld, the nginx-bridge network, and a nightly image
updater that replaced watchtower for cause.
server/containers/ carries junior's 23 compose services -- secrets moved to
per-machine .env files that never enter this public repo, every transformed
compose proven to render byte-identical to what is live. 'panama server'
enables, disables and relinks them; nothing here restarts a running service.
'boot --server' walks a fresh VPS from its root login to a normal install.
Five new contracts pin the secrets rule, the catalog's shape, panama-server's
behavior, the role plumbing, and the dotfile classification.
Claude-Session: https://claude.ai/code/session_01NU5JGiN3JfzqrLQB6wmJ1E
2026-08-25 23:11:49 -04:00
Gabriel Brown
9b338608ef
Center the usage pill like every other tenant of the bar
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 13:15:42 -04:00
Gabriel Brown
cc7d91d09c
No error is a dead end: crash, click, and your agent is already looking
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 12:50:09 -04:00
Gabriel Brown
ada0faf1d1
Let the sidebar breathe: fourteen categories deserve legible names
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 11:20:34 -04:00
Gabriel Brown
045a774847
The machine now carries its own manual for AI hands
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 10:09:38 -04:00
Gabriel Brown
beed44dd87
panama update: one command, no questions, and no gap it cannot see
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 07:22:12 -04:00
Gabriel Brown
8105849151
The last two stale needles the great respelling left behind
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 02:31:59 -04:00
Gabriel Brown
bd2fd12de2
Coherence: one component per idea, one spelling per word, one truth per claim
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 02:21:45 -04:00
Gabriel Brown
06c53d6c21
Shortcuts you invent, rules you write, gestures you own - all still just data
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 01:51:59 -04:00
Gabriel Brown
f9e5d3f470
No forgetting, deleting or clearing on a single press, anywhere
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 00:41:39 -04:00
Gabriel Brown
88371d19f0
The safety layer: two presses for anything you cannot take back
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 00:39:07 -04:00
Gabriel Brown
8b1205e4b8
Tier 0: render what the services already decided, honestly
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-25 00:24:30 -04:00
Gabriel Brown
be0e55214b
Finish the wonderland: System told truthfully, in eight tabs instead of ten
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 23:31:52 -04:00
Gabriel Brown
9ffaf45a4d
Make every settings row reachable, and every accessibility switch honest
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 21:03:36 -04:00
Gabriel Brown
e1ff25fc66
Draw idle as one timeline, and let the power button answer to its owner
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 20:33:44 -04:00
Gabriel Brown
6f0ce639d9
Show every answer the portal remembers, and give SSH keys their missing half
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 19:26:56 -04:00
Gabriel Brown
4ec8bd94d9
Give identity its due: native enrollment, honest deletion, and sign-in that stays home
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 18:55:38 -04:00
Gabriel Brown
5a0643357f
Make Applications a real app manager, and clean up storage without the racket
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 17:18:14 -04:00
Gabriel Brown
b30bf40407
Own the network: details, VPN, enterprise Wi-Fi, and a firewall that can also allow
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 16:31:52 -04:00
Gabriel Brown
aba2d16ffa
Give Input keycaps, a shortcut search, and the missing pointer basics
...
Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 15:21:01 -04:00