From 68d60e409b8e035e8b2b1be9ef62cff49286da86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sat, 22 Aug 2026 16:10:51 +0000 Subject: [PATCH] =?UTF-8?q?2026.08.22.02=20=E2=80=94=20theme=20favourites,?= =?UTF-8?q?=20ctrl+=3F=20shortcuts,=20command=20hq=20in=20two=20columns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Schema change this time: theme_favorites is new, and without the push the theme dropdown fails on a missing relation the first time it reads a starred list. The plan names db:push as a step rather than leaving it to be inferred from a diff. Two things the plan states that a reader could not infer. Command HQ MIGRATES a saved layout on load, so anyone who has opened that screen sees their arrangement replaced once — deliberate, and the screen is locked so the only loss is column sizes. And the email plugin's multi-account work arrives through plugins:update from another repository, affecting only hosts where that plugin is installed. Co-Authored-By: Claude Opus 5 --- deploy/2026.08.22.02.md | 57 +++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 deploy/2026.08.22.02.md diff --git a/deploy/2026.08.22.02.md b/deploy/2026.08.22.02.md new file mode 100644 index 00000000..a043d293 --- /dev/null +++ b/deploy/2026.08.22.02.md @@ -0,0 +1,57 @@ +# 2026.08.22.02 + +Theme favourites, a shortcuts modal on `Ctrl+?`, Command HQ rebuilt into two columns, 27 tests on the +authorization resolver, and the email plugin's multi-account backend. + +**SCHEMA CHANGE.** `theme_favorites` is new, so `bun db:push` is a step. Without it, opening the theme +dropdown fails on a missing relation the first time it reads a starred list. + +**No dependency change** — nothing in `deploy/2026.08.22.01..HEAD` touches `package.json` dependencies or +`bun.lock`. Do not run `bun install`. + +## What is in it + +- **Theme favourites**, per account, in `theme_favorites`. Star from the dropdown, from the browser + (`f`), or from anywhere (`Ctrl+Shift+F`). The lists rotate to the theme you are wearing rather than + sorting it to the top, so neighbours survive. +- **`Ctrl+?`** renders every shell shortcut from a registry — `state/shortcuts.ts` — ported in shape from + the owner's `vimazing`. +- **Spotlight is on `Shift+Space`.** It was `alt-space` in the last release. `Ctrl+Space` cannot work: + Brave claims it at the browser level and the key never reaches the page. +- **Command HQ is two columns** — navigation stacked into one 24% rail, transcript at 76%. **It migrates a + saved layout on load**, so anyone who has opened that screen will see their arrangement replaced once. + That is deliberate; the screen is `locked` and the only user contribution was column sizes. +- **27 tests on `permissions/authorize.ts`**, which had none. Its decisions are now pure functions, split + from the database calls. No behaviour change. +- **`assertPermissionTotality` reads the sockets that are served**, generated from one `WS_ROUTES` + declaration, instead of a parallel list of handlers. +- **The email plugin's multi-account backend**, via `plugins:update` — `?account=` names a mailbox, + `?account=all` spans them, absent is unchanged. Only hosts with that plugin installed are affected. + +## Every host + +1. `git pull --ff-only` +2. **`bun db:push`** — new this release +3. `bun run plugins:update` +4. `pm2 restart officer` + +`officer` only. Step 3 restarts each plugin's own sidecar; that is the script's behaviour and belongs in the +report rather than being omitted. + +**`macbookpro`:** append `/opt/homebrew/bin` to PATH for the `bun` commands, run `pm2` separately. See +`docs/servers.md`. + +## `officer-dev` — skip it, and it is already current + +The commander runs there and skips its own host. That host was restarted repeatedly through the day as this +work landed, so it is running this tree rather than lagging. Report it as skipped and current. + +## Then check + +`pm2 jlist`: `officer` is `online` and `restart_time` moved; nothing `errored`. + +`theme_favorites` exists — `to_regclass('theme_favorites')` is not null. This is the one step whose absence +shows up as a broken dropdown rather than a failed boot, so verify it directly where `psql` is available and +say where it is not. + +`scripts/deploy-claim.sh state 2026.08.22.02` says `done`. diff --git a/package.json b/package.json index d8aef864..8f9ffd55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "officer", - "version": "2026.08.22.01", + "version": "2026.08.22.02", "private": true, "type": "module", "workspaces": [