diff --git a/deploy/2026.08.29.03.md b/deploy/2026.08.29.03.md new file mode 100644 index 00000000..5a512d9e --- /dev/null +++ b/deploy/2026.08.29.03.md @@ -0,0 +1,85 @@ +# 2026.08.29.03 — the todo board leaves, and a plugin can claim a file type + +**No schema change and no dependency change.** Verified rather than assumed: + +```bash +git diff --name-only deploy/2026.08.29.02..deploy/2026.08.29.03 | grep -iE 'schema|/db/|databases' # nothing +git diff --stat deploy/2026.08.29.02..deploy/2026.08.29.03 -- package.json bun.lock # nothing +``` + +So **no `bun db:push` and no `bun install` step exist in this plan, and neither should be improvised.** +Ten commits, all code. + +## What is in it + +- **`/todos` is gone from the platform.** It is now the `kanban` plugin, in the marketplace. The + `todos` permission, the route, the screen and the board were all removed. +- **A plugin can claim a file type.** A manifest may declare `fileTypes`; the file browser then offers + thumbnails and a full-size render for formats the platform itself cannot read. av-club claims + `heic`/`heif`, so on a host with av-club installed, iPhone photographs get pictures instead of file + icons and open in the viewer. +- Thumbnails retry rather than giving up, and list and grid ask for the same size. +- The directory picker moved into the platform so more than one plugin can use it. + +## A behaviour change to expect, and it is deliberate + +**`/todos` now 404s.** Anyone with it bookmarked gets nothing. The board is the `kanban` plugin, which +is in the marketplace and installed nowhere by default — that is the intended state, not an oversight. + +`role_permissions` rows naming `todos` are now orphaned. Harmless: absence denies, and the registry no +longer has the key. **Do not clean them up as part of this rollout** — it is a data edit nobody asked +for, and a row naming a permission that does not exist grants nothing. + +## Every host — the commands + +The standard steps in `prompts/deploy-commander.md` are the whole rollout this time (dirty check, +`git fetch origin --tags`, `git merge --ff-only deploy/2026.08.29.03`, `bun run plugins:update`), plus: + +```bash +pm2 restart officer +``` + +`officer` only — `plugins:update` has already restarted the plugin sidecars. + +### Verify it came back + +`pm2 jlist`: `officer` online and `restart_time` moved, then `/api/health` on the host's own port +(9010 on `macbookpro` and `production-pertento-bridge`, 9000 elsewhere). `200` or `401` are healthy. + +### And check the file browser still lists + +This release touched the listing route, so one call per host is worth it: + +```bash +bun -e " +const { sign } = await import('./src/servers/jwt'); +const t = await sign({ id: 1, email: '' }, '2m'); +const r = await fetch('http://127.0.0.1:/api/file-browser/ls?root=home&path=/', { headers: { Authorization: 'Bearer ' + t } }); +const b = await r.json(); console.log(r.status, (b.entries ?? []).length + ' entries'); +process.exit(0)" +``` + +A `200` with a plausible count. **A 500 here is a failed host** — report it and move on. + +## Per host + +Surveyed 2026-08-29 while writing this. + +| Host | Note | +| --- | --- | +| `officer-dev` | **SKIP ENTIRELY.** The rollout runs here and it is already at this code. Name it as skipped. | +| `alpha` | No av-club, so no HEIC support — expected, not a fault. | +| `fofos` | **The only host with av-club installed**, and already at this commit and verified: 6 HEICs thumbnail and one renders at full size. Bring it to the tag so its HEAD matches the fleet. | +| `macbookpro` | macOS, port **9010**, a laptop. Unreachable is a SKIP with a note. | +| `macbruno` | macOS, login `brunoalcadapadezmonteirodaconceicao`. | +| `production-pertento-bridge` | Port **9010**. Its `pg_dump` is older than its server — irrelevant here, since this release takes no backup and touches no schema. | +| `edge-pertento-bridge` | Did not answer the survey while this plan was written. It may simply have been busy; treat it as an ordinary target and report what you find. | +| `deadpool-rezio-bridge` | Login **`br`**, checkout `/home/br/officerdev/platform`. | + +## What "done" looks like + +Per host: HEAD before and after, `plugins:update` result, `officer` back online with a moved +`restart_time`, and the `ls` check's output. + +Nothing in this release needs a database query, a backup or an install. If you find yourself running +one, stop — the plan is wrong and that is worth reporting rather than working around. diff --git a/package.json b/package.json index f809b015..b49bb22f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "officer", - "version": "2026.08.29.02", + "version": "2026.08.29.03", "private": true, "type": "module", "workspaces": [