Files
platform/deploy/2026.08.21.01.md
T
pastilhasandClaude Opus 5 eee73e777c DEPLOY_NOW 2026.08.21.01 — the night's work, to all six
First release under yyyy.mm.dd.NN, and the first deploy of the plugin extractions, the regenerated
themes, Spotlight, and the chat fixes.

The plan is deploy/2026.08.21.01.md. Two steps in it are required rather than optional and both would
be easy to skip: bun install, because bun.lock changed and sharp left the platform's dependencies for
atelier's; and db:push, because users.username becomes NOT NULL with a case-insensitive unique index.

That second one can refuse — on a null username, or two names differing only in case. Checked on all
six hosts before writing this rather than discovering it mid-rollout: 12 users, zero nulls, zero
collisions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 17:29:02 +00:00

2.1 KiB

2026.08.21.01

The first release under this scheme, and the first deploy of the night's work. Everything since 0.1.0, which is to say everything.

What is in it

  • Two plugins extracted: desktop (VNC) and browser (the relay, its extension and its panels), with the platform losing the VNC vocabulary it should never have had.
  • Themes regenerated — all 22 from Omarchy, 84 tokens each, contrast-checked. The eleven that shipped with 34 of an 84-token contract are replaced.
  • Spotlight, on shift-space.
  • Chat fixes: a turn waiting on a person is no longer killed as stalled, and an answer that goes nowhere now says so.
  • Plugin infrastructure: importFresh (a reinstalled plugin was being read from the deleted one), ownerOnly paths, dependency scope, extensions published unauthenticated, plugins:update.
  • An Update button in maintenance, and the sub-agent budget guard.

Steps, in order, on every host

Same on all six — nothing here is host-specific.

  1. git pull --ff-only
  2. bun install — required. bun.lock changed and sharp was removed from the platform's dependencies (it moved into atelier's npmDependencies). Without this the lockfile and the tree disagree, and the frozen-lockfile rule turns that into a failed install later rather than now.
  3. bun run plugins:update
  4. bun db:push — required. users.username becomes NOT NULL and gains a case-insensitive unique index.
  5. pm2 restart officer
  6. Then, and only for hosts that have them: pm2 restart officer-claude-code officer-pty — both load changed sidecar code. Not the whole ecosystem, ever.

The one thing that could have gone wrong, and did not

db:push refuses if any account has a null username, or if two differ only by case. Checked on all six before writing this: 12 users across the fleet, zero nulls, zero case-collisions. If a future host fails here, that is why, and the fix is data rather than schema.

Post-deploy check

pm2 jlist — every restarted process online with a moved restart_time, and the platform's own domain answering 200. docs/servers.md has the domain per host.