You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Publishing now creates an immutable edition at /p/{publicationId}/{version}. The internal and v1 publish endpoints require {expectedRevision, idempotencyKey}; creation returns 201 and an idempotent replay returns 200. Update API callers before upgrading. Slug editing and preview regeneration endpoints have been removed. Unpublishing revokes every edition in the series; edition URLs then return 410.
Existing /p/{hex8}-{slug}, reader and /embed/{hex8} links return 404 until explicitly converted with scripts/migrate-publications-to-editions.js; after conversion they redirect permanently to edition 1, never the latest edition. Edition visits currently do not contribute to visitor analytics. The old embed SDK controls are unavailable on edition canvases.
Upgrade instructions
Take and verify a restorable database backup before deploying. Startup migrations 103 and 104 add edition storage and revocations; migration 105 adds legacy links, drops presentations.published and removes settings.ogPreview. The old publication index remains for conversion. Migration down functions are development rollback helpers, not a production restore strategy.
Deploy the release. On runner installations export and register this release's renderer bundle and require a green renderer-runner doctor check before publishing. Keep older renderer registrations for existing editions. See docs/ops/renderer-runner.md.
Run node scripts/migrate-publications-to-editions.js without --apply and preserve the dry-run report. Review every refusal, including missing or trashed sources and publication gate failures; do not automatically apply an unexplained report. Old links remain unavailable until conversion.
After review, run the same script with --apply, preserve its report and test the old links. The conversion is resumable and idempotent. Then run node scripts/sweep-published-previews.js --check, review it, and use --apply to remove obsolete generated previews.
Added
publishing: publish editions and point old links at their first (T1.5) (#1943) (1c3231f)
publishing: seal a deck into a frozen edition input (T1.2) (#1932) (cf4dfa2)
publishing: serve editions from their own bytes at /p/:id/:version (T1.4) (ff18eee)
publishing: store immutable editions with one atomic publish (T1.3) (#1935) (bd2a7a1)
Fixed
editor: "This card" writes into its own item after a remote change (B892) (#1934) (f26c0ce)
editor: pin the per-language deck title live and keep the pencil (B893) (#1936) (334b238)
editor: the canvas selection follows its item after a remote move (B894) (#1938) (e9503e7)
markdown: no placeholder reaches the output, no exponent in start (B897) (#1941) (5150fe9)
renderer: render markdown in editions, escaped by construction (#1940) (98109a3)
storage: a bare i18n write no longer erases a language version (B895) (#1937) (c86bdef)