diff --git a/deploy/2026.08.29.04.md b/deploy/2026.08.29.04.md new file mode 100644 index 00000000..bb8d7985 --- /dev/null +++ b/deploy/2026.08.29.04.md @@ -0,0 +1,90 @@ +# 2026.08.29.04 — the file preview becomes a carousel, and zoom starts working again + +**No schema change and no dependency change.** Verified rather than assumed: + +```bash +git diff --name-only deploy/2026.08.29.03..deploy/2026.08.29.04 | grep -iE 'schema|/db/|databases' # nothing +git diff --name-only deploy/2026.08.29.03..deploy/2026.08.29.04 -- package.json bun.lock # nothing +``` + +So **no `bun db:push` and no `bun install` step exist in this plan, and neither should be improvised.** +Sixteen commits; two of them are notes and one is the previous release's report. + +## What is in it + +- **The file preview is a carousel.** It lists the folder it was opened from, shows thumbnails along the + bottom, and steps with the arrow keys or the carets. Escape closes it. +- **Zoom works on plugin screens, `/bots` and `/plugins` again.** `useAuthoredLayout` grafts back only + what the user owns, and it knew about sizes and not about zoom — so every click was collected by + nothing, compared equal, and dropped. The control rendered, took the click, and did nothing. +- **An image no longer sticks.** Stepping to a new picture showed the previous one until the new one + decoded, and the first fix for that lost a race against cached images and left the spinner up forever. + Both are gone: loaded state is derived from which `src` actually loaded. +- **A platform event bus**, and thumbnails warmed the moment files arrive. `files:uploaded`, + `files:placed` and `archive:extracted` are emitted; a plugin may subscribe through its manifest. No + plugin subscribes yet, so the dispatch path is unexercised in production — worth knowing if something + odd appears near an upload. +- **An embedded file browser can put its folder in a query parameter**, keep its own root crumb, and + Back and Forward move between folders. +- Shift+Enter renders as a line break in chat. Grid tiles have their gap back and the picture fills the + tile. The download card's title stops escaping it. + +## Nothing here changes behaviour anyone has to be warned about + +No route is removed, no permission changes, nothing 404s that did not before. If a host comes back and +something is missing, that is a fault rather than an intention — report it. + +## Every host — the commands + +The standard steps in `prompts/deploy-commander.md` are the whole rollout (dirty check, +`git fetch origin --tags`, `git merge --ff-only deploy/2026.08.29.04`, `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 file browser and the viewer heavily, so one call per host: + +```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. Every host was clean (`--untracked-files=no`) and six of the +seven sit exactly on `deploy/2026.08.29.03` (`03fbb118`). + +| Host | Note | +| --- | --- | +| `officer-dev` | **SKIP ENTIRELY.** The rollout runs here and it is already at this code. Name it as skipped. | +| `alpha` | On `03fbb118`, clean. Ordinary target. | +| `fofos` | **On `2738f799`, not on the tag** — it has been hand-pulled all day while this work was written against it. That commit is an ancestor of the tag, so the fast-forward is ordinary; it simply has fewer commits to travel. It is also the only host with `av-club` and `fofos-admin` installed, so `plugins:update` moves more here than anywhere else. | +| `macbookpro` | macOS, port **9010**, a laptop. Unreachable is a SKIP with a note, not a failure. | +| `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` | Answered the survey this time, on `03fbb118` and clean. Ordinary target. | +| `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 b49bb22f..3d5fb0a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "officer", - "version": "2026.08.29.03", + "version": "2026.08.29.04", "private": true, "type": "module", "workspaces": [