From f855f2b09fed12762be8f29b823a3a658e6762cf Mon Sep 17 00:00:00 2001 From: Ben Vinegar Date: Mon, 7 Sep 2026 09:55:56 -0400 Subject: [PATCH] chore(release): 0.14.0 --- .changeset/brave-pianos-film.md | 2 - .changeset/bright-homes-gather.md | 5 -- .changeset/cache-social-previews.md | 5 -- .changeset/calm-benchmarks-order.md | 5 -- .changeset/clean-caches-settle.md | 2 - .changeset/curly-pans-shave.md | 12 ----- .changeset/fresh-menus-share.md | 16 ------ .changeset/lazy-rich-render-imports.md | 10 ---- .changeset/perf-benchmark-suite.md | 5 -- .changeset/single-theme-highlighting.md | 11 ---- .changeset/tidy-authors-rest.md | 5 -- .changeset/typed-mermaid-validation-errors.md | 8 --- .changeset/whole-needles-remain.md | 2 - CHANGELOG.md | 50 +++++++++++++++++++ package-lock.json | 4 +- package.json | 2 +- 16 files changed, 53 insertions(+), 91 deletions(-) delete mode 100644 .changeset/brave-pianos-film.md delete mode 100644 .changeset/bright-homes-gather.md delete mode 100644 .changeset/cache-social-previews.md delete mode 100644 .changeset/calm-benchmarks-order.md delete mode 100644 .changeset/clean-caches-settle.md delete mode 100644 .changeset/curly-pans-shave.md delete mode 100644 .changeset/fresh-menus-share.md delete mode 100644 .changeset/lazy-rich-render-imports.md delete mode 100644 .changeset/perf-benchmark-suite.md delete mode 100644 .changeset/single-theme-highlighting.md delete mode 100644 .changeset/tidy-authors-rest.md delete mode 100644 .changeset/typed-mermaid-validation-errors.md delete mode 100644 .changeset/whole-needles-remain.md diff --git a/.changeset/brave-pianos-film.md b/.changeset/brave-pianos-film.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/brave-pianos-film.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/.changeset/bright-homes-gather.md b/.changeset/bright-homes-gather.md deleted file mode 100644 index 4c17ebf4..00000000 --- a/.changeset/bright-homes-gather.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"sideshow": patch ---- - -Show a recent-posts Home view for first-time visitors to multi-session workspaces, with live updates and safe themed previews. diff --git a/.changeset/cache-social-previews.md b/.changeset/cache-social-previews.md deleted file mode 100644 index ffe26b96..00000000 --- a/.changeset/cache-social-previews.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"sideshow": patch ---- - -Cache fully pinned social-preview screenshots at the Cloudflare edge so repeated link unfurls avoid redundant Browser Rendering calls. Access, post existence, and revision are revalidated on every edge request, and token-protected boards keep private client cache headers. diff --git a/.changeset/calm-benchmarks-order.md b/.changeset/calm-benchmarks-order.md deleted file mode 100644 index a9fa9f77..00000000 --- a/.changeset/calm-benchmarks-order.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"sideshow": patch ---- - -Make recent-post ordering deterministic when multiple writes share the same millisecond timestamp, preventing different SQLite versions from selecting different posts at the result limit. diff --git a/.changeset/clean-caches-settle.md b/.changeset/clean-caches-settle.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/clean-caches-settle.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/.changeset/curly-pans-shave.md b/.changeset/curly-pans-shave.md deleted file mode 100644 index 5795d3d7..00000000 --- a/.changeset/curly-pans-shave.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"sideshow": minor ---- - -serve: add `--host` / `SIDESHOW_HOST` to bind one address - -`serve` listened on every interface with no way to restrict it, and printed -`listening on http://localhost:PORT` regardless — so a server sharing a host or -a network with anything else was reachable from it, and the startup line said -otherwise. The default is unchanged (every interface, which is what containers -and LAN-shared instances need); `--host 127.0.0.1` now keeps it off the network -entirely, and the startup line reports the address actually bound. diff --git a/.changeset/fresh-menus-share.md b/.changeset/fresh-menus-share.md deleted file mode 100644 index 95b16315..00000000 --- a/.changeset/fresh-menus-share.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"sideshow": minor ---- - -viewer: fold the card's export actions into one share menu, with copy-as-markdown - -A card's footer carried three separate icons that all meant "take this -elsewhere" — copy link, open in a new tab, open as a PNG — and no room for a -fourth. They are now rows in a single **Share** menu, joined by **Copy as -markdown**: the whole post as portable markdown, with prose kept as prose, -code/diffs/terminal output/JSON/mermaid as fenced blocks, images as image links, -and an html surface degraded to a link back to it rather than a dump of its -markup. - -The flattening is served, not derived in the browser, so every tier can have it: -`GET /api/posts/:id/markdown` returns the same text for `curl` and the CLI. diff --git a/.changeset/lazy-rich-render-imports.md b/.changeset/lazy-rich-render-imports.md deleted file mode 100644 index 11c95899..00000000 --- a/.changeset/lazy-rich-render-imports.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"sideshow": patch ---- - -Load the rich-surface renderers and publish-time parsers on first use instead of -at boot. shiki, `@pierre/diffs`, markdown-it and `@mermaid-js/parser` are now -imported when a markdown/code/diff/terminal surface is rendered or a diff/mermaid -surface is published, rather than by every server at startup. Idle memory drops -from ~132 MB to ~102 MB and boot time from ~486 ms to ~275 ms; a workspace that -only ever uses html surfaces never loads them at all. No behavior change. diff --git a/.changeset/perf-benchmark-suite.md b/.changeset/perf-benchmark-suite.md deleted file mode 100644 index 0c6893a8..00000000 --- a/.changeset/perf-benchmark-suite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- ---- - -Add a repeatable performance benchmark suite (`bench/`). Tooling only — no -runtime behavior changes. diff --git a/.changeset/single-theme-highlighting.md b/.changeset/single-theme-highlighting.md deleted file mode 100644 index 586a4523..00000000 --- a/.changeset/single-theme-highlighting.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"sideshow": patch ---- - -Highlight code against one theme instead of two when the color scheme is already -known. shiki tokenizes once per theme, so asking for a light/dark pair costs -exactly twice as much — and the viewer always tells the server which scheme it -resolved, so half that work was being discarded with CSS. Rendering a -1400-line code surface drops from 1.14s to 543ms and its document from 751KB to -529KB; markdown with fenced code improves by roughly the same proportion. An -unpinned direct load of `/s/:id` still gets both themes and follows the OS. diff --git a/.changeset/tidy-authors-rest.md b/.changeset/tidy-authors-rest.md deleted file mode 100644 index 4e68f196..00000000 --- a/.changeset/tidy-authors-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"sideshow": patch ---- - -Comment authors are now derived from the session agent for CLI, MCP, and other programmatic writes. The reserved `user` label is limited to same-origin viewer comments, preventing agent integrations from forging user feedback. diff --git a/.changeset/typed-mermaid-validation-errors.md b/.changeset/typed-mermaid-validation-errors.md deleted file mode 100644 index 1b8e9d03..00000000 --- a/.changeset/typed-mermaid-validation-errors.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"sideshow": patch ---- - -Invalid Mermaid submitted through the posts API now returns a typed validation -error with the failing request field, diagram type, complete parser diagnostic, -and concrete retry steps. The existing human-readable `error` string remains -for compatibility, and rejected diagrams are not persisted. diff --git a/.changeset/whole-needles-remain.md b/.changeset/whole-needles-remain.md deleted file mode 100644 index a845151c..00000000 --- a/.changeset/whole-needles-remain.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/CHANGELOG.md b/CHANGELOG.md index 6be452b8..474ea745 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,55 @@ # Changelog +## 0.14.0 + +### Minor Changes + +- 604ca24: serve: add `--host` / `SIDESHOW_HOST` to bind one address + + `serve` listened on every interface with no way to restrict it, and printed + `listening on http://localhost:PORT` regardless — so a server sharing a host or + a network with anything else was reachable from it, and the startup line said + otherwise. The default is unchanged (every interface, which is what containers + and LAN-shared instances need); `--host 127.0.0.1` now keeps it off the network + entirely, and the startup line reports the address actually bound. + +- 14a8ea3: viewer: fold the card's export actions into one share menu, with copy-as-markdown + + A card's footer carried three separate icons that all meant "take this + elsewhere" — copy link, open in a new tab, open as a PNG — and no room for a + fourth. They are now rows in a single **Share** menu, joined by **Copy as + markdown**: the whole post as portable markdown, with prose kept as prose, + code/diffs/terminal output/JSON/mermaid as fenced blocks, images as image links, + and an html surface degraded to a link back to it rather than a dump of its + markup. + + The flattening is served, not derived in the browser, so every tier can have it: + `GET /api/posts/:id/markdown` returns the same text for `curl` and the CLI. + +### Patch Changes + +- 68531b2: Show a recent-posts Home view for first-time visitors to multi-session workspaces, with live updates and safe themed previews. +- 11c4434: Cache fully pinned social-preview screenshots at the Cloudflare edge so repeated link unfurls avoid redundant Browser Rendering calls. Access, post existence, and revision are revalidated on every edge request, and token-protected boards keep private client cache headers. +- feac177: Make recent-post ordering deterministic when multiple writes share the same millisecond timestamp, preventing different SQLite versions from selecting different posts at the result limit. +- 102990f: Load the rich-surface renderers and publish-time parsers on first use instead of + at boot. shiki, `@pierre/diffs`, markdown-it and `@mermaid-js/parser` are now + imported when a markdown/code/diff/terminal surface is rendered or a diff/mermaid + surface is published, rather than by every server at startup. Idle memory drops + from ~132 MB to ~102 MB and boot time from ~486 ms to ~275 ms; a workspace that + only ever uses html surfaces never loads them at all. No behavior change. +- ea2fb02: Highlight code against one theme instead of two when the color scheme is already + known. shiki tokenizes once per theme, so asking for a light/dark pair costs + exactly twice as much — and the viewer always tells the server which scheme it + resolved, so half that work was being discarded with CSS. Rendering a + 1400-line code surface drops from 1.14s to 543ms and its document from 751KB to + 529KB; markdown with fenced code improves by roughly the same proportion. An + unpinned direct load of `/s/:id` still gets both themes and follows the OS. +- b0f6a94: Comment authors are now derived from the session agent for CLI, MCP, and other programmatic writes. The reserved `user` label is limited to same-origin viewer comments, preventing agent integrations from forging user feedback. +- 6c1073a: Invalid Mermaid submitted through the posts API now returns a typed validation + error with the failing request field, diagram type, complete parser diagnostic, + and concrete retry steps. The existing human-readable `error` string remains + for compatibility, and rejected diagrams are not persisted. + ## 0.13.0 ### Minor Changes diff --git a/package-lock.json b/package-lock.json index c373d27a..5fe8c911 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sideshow", - "version": "0.13.0", + "version": "0.14.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sideshow", - "version": "0.13.0", + "version": "0.14.0", "license": "MIT", "dependencies": { "@hono/node-server": "^2.1.0", diff --git a/package.json b/package.json index 6cda9a80..c72c9812 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sideshow", - "version": "0.13.0", + "version": "0.14.0", "description": "A live visual surface for terminal coding agents — agents draw HTML snippets, you watch them in the browser and comment back.", "keywords": [ "agent-tools",