Releases: jaapstronks/deckyard
Releases · jaapstronks/deckyard
Release list
v1.17.0
1.17.0 (2026-08-05)
Added
- analytics: anonymous viewers can erase their own data (session-token proof-of-possession) (#637) (52b7f41)
- analytics: drop the internal/external tracking toggle, leaving analytics.enabled as the only switch (#635) (0172041)
- api: carry ownerId as the identity in responses and compare it on the client (#640) (5d653d2)
- authz: decide presentation ownership on users.id instead of the email string (#638) (1b5c229)
- authz: decide the workspace grant against the actor's own organization (L10) (#639) (566d970)
- identity: key user_settings on users.id (T10 PR E) (#643) (a0c2af9)
- identity: verify and backfill the identity data migration (T10 PR G) (#646) (6ea1181)
- notes: let the join link edit the session's speaker notes (#632) (e6823c9)
Fixed
- analytics: make the identifier the scope on the last two org-blind seams (#629) (688c843)
- collaborators: a failed invite insert answers 500, not 400 (#642) (d389a32)
- db: honor DATABASE_URL over DATABASE_* in db:migrate (#631) (19a4f28)
- export: queued exports load their theme through loadTheme (#641) (7f56e38)
- share: branch the invite failure on e.code, not on the message (#645) (39e548a)
Security
v1.16.0
1.16.0 (2026-08-04)
Added
- authz: add owner/created_by/updated_by user_id to presentations (T10 PR 3) (#616) (aa0c591)
- authz: add user_id to collaborators alongside user_email (T10 PR 2) (#613) (3a239c2)
- authz: persist owner on PG ownership transfer (T10 tail) (a0fed94)
- storage: move questions, interactions and feedback from disk JSON to Postgres (#606) (0a5b932)
Fixed
- authz: scope collaborator rows on the deck, not the session (#626) (fdacfb2)
- editor: make a failing language switch visible (#620) (596ee2f)
Security
v1.15.0
1.15.0 (2026-08-03)
⚠ BREAKING CHANGES
- slide-types: seven slide-type CSS classes are no longer emitted (team-cards-group-left, kpi-note, quote-author-text, poll-results-main, sfi-header, sfi-card-code, sfi-card-qr). No core stylesheet targeted them, so Deckyard's own themes are unaffected; a fork that styled any of these names against its own copy of the slide types must move those rules to the surviving class on the same element.
Added
- i18n: tier UI locales - nl/en gated, ten best-effort (12c9bad)
- import: complete the file→Postgres import path (#586) (53fe563)
- ops: ship Postgres in the compose stack (#585) (4c93690)
- sandbox: run sandbox TTL cleanup and quota on Postgres (#589) (3cd1d3d)
- storage: default STORAGE_MODE to postgres with a boot guard for file data (#587) (12b9a3b)
- storage: move email templates from disk JSON to Postgres (#602) (e6d2d35)
- storage: move live sessions and follow codes from disk JSON to Postgres (#604) (96aa349)
- storage: move settings from disk JSON to Postgres (#603) (e0c4072)
- storage: remove the file storage backend (#595) (1825a2f)
Fixed
- image-library: find image usage in the presentations table, not on disk (#601) (6a84975)
- install: pass the local compose overlay and fail fast on a stale DATABASE_HOST (#598) (4ae2f0d)
Changed
v1.14.0
v1.13.0
1.13.0 (2026-08-03)
Added
- bundled gradients as a licence-free image source (#560) (bc4a88f)
- capture: hash the recipe module graph instead of the entry file (#545) (abe8d69)
- ci: resolve every relative import, and make the doc gate fork-configurable (#550) (05f3cc1)
- css: refine the spacing scale to 2px and gate its use (#553) (ad0c404)
- test: the classes a slide type emits must resolve to a CSS rule (#554) (397955b)
Fixed
- fonts: pin self-hosted Google Fonts and ship the Latin subsets (#546) (6fb558e)
- slide-types: re-export SCHEMA_BASE_URI for the website generator (#564) (71de779)
- slide-types: re-export SLIDE_STRUCTURES for the website generator (#558) (97d5e7b)
- slide-types: re-export the runtime and interaction vocabularies (#559) (f0df831)
Security
v1.12.1
v1.12.0
1.12.0 (2026-08-02)
Added
- editor: closed per-field editor vocabulary replaces the chart and table forms (#526) (d728ae4)
- editor: one generic collection editor replaces the seven hand-built forms (#524) (7e465ef)
- editor: resolve itemDefaults per deck language via itemDefaultsByLang (#527) (1289c6b)
- editor: the image forms become declarations and the shared element card (#528) (abfd48d)
- editor: the slide-list label reads the labelField declaration (#530) (ac406c0)
- jobs: schedule the three unwired retention cleanups (#537) (ff2d96f)
- slide-types: per-type CSS claimed in the TYPE_CSS manifest (seam-collapse gate point 6, PR 1) (#534) (06e3253)
Fixed
v1.11.0
1.11.0 (2026-08-01)
Added
- api: canonicalize slides[].type on export/read; drop slideTypes manifest (#514) (2dffe2b)
- api: one write-seam validates and normalizes slides[].type (#511) (0e2973d)
- capture: tranche-2 marketing recipes for the /features page (#512) (e723f42)
- organizations: invite people, and let members reach the member list (94442eb)
- organizations: organization profile screen, with delete for the owner (#498) (2773f6c)
- slide-types: three tiers and a
fallbackfacet that enforces them (#502) (eba33ec) - slide-types: v3->v4 migration folds stored type spellings to the registry key (#515) (8db6bff)
- spec: open the published schema and make
structurenormative (#504) (fea73f0) - spec: reverse-DNS type ids,
-slidedropped, and the evolution rule (#506) (dfe1f0b)
Fixed
- export: anchor slide base font to theme, stop app-chrome font leaking into PDF (37afb40)
- export: inline local url() assets and blank unfetchable images (#488) (e3b43e1)
- export: stop blurred shadows reaching the PDF as luminosity masks (#492) (6e04a5c)
- i18n: Dutch field labels for countdown/custom-html/embed/lead-capture/matrix/process slides (#518) (4d27091)
- i18n: one permission-label helper, Dutch comparison/timeline field labels (#513) (70c9eb8)
- organizations: report invitations that were sent, administer the organization you are in (#500) (084601b)
- slide-types: a fork override of a core name reaches the browser (#507) (a77958c)
- theme: declare the generated slide gradient where its coordinates live (#493) (8ba7a2e)
- title-slide: stop left logo corner from shifting the title block (eac3aeb)
Changed
v1.10.0
1.10.0 (2026-07-30)
Added
- capture: bilingual lemonade-stand sample deck for the marketing shots (#454) (1bdbacc)
- capture: the tranche-1 marketing recipes, and three fixes they surfaced (#456) (1fc63d5)
- deck-format: point schema $id at deckyard.eu and license the spec under CC0 (#441) (cddf708)
- kpi-slide: let a theme colour the KPI tiles through tokens (#438) (ed14676)
- ops: add maintenance mode so a deploy stops failing saves silently (#447) (23bf94f)
- organizations: add an organization switcher to the user menu (#446) (33f231d)
- organizations: gate admin UI on the membership role of the active org (#449) (6be2c55)
- organizations: manage the member list from the Users tab (#486) (3dcd05e)
- organizations: the Users tab becomes the member list in multi-org (#484) (0503117)
- scripts: rename migration lijstje-slide → list-slide, on both stores (#464) (4e6f999)
- slide-types: assert no duplicate types and no lossy layout variants (#457) (5d56ae2)
- slide-types: declare the
runtimefacet so nine modules stop guessing (#460) (3cbfb32) - slide-types: declare the
structurefacet and guard it in CI (#453) (dd42f93) - slide-types: derive the name-branching inventory so the matrix has no hole (#458) (e36b96e)
- themes: a green/brass brand theme, and it becomes the default (#455) (f239adf)
- video-slide: let the author set the watch link shown in exports (#434) (67e55b2)
Fixed
- comments: recognise AI suggestions by the effective author identity (#442) (95da202)
- deps: reflect the optional dependency story in the manifest (B6-C4) (#431) (9184d21)
- drop a stray node_modules symlink that rode along in #460 (#461) (09a9c63)
- editor: stop redundant slide-list rebuilds from lock/comment SSE echoes (#435) (8f466a1)
- export: render the video poster in PDF/PNG placeholders (#433) (a14922d)
- i18n: detect duplicate keys in i18n:validate over raw lines (#439) (a1dfa9b)
- slide-types: make the aggregator seam registry-first, and put the companions on the wire (#473) (a83927e)
- slides: three lemonade-stand defects — list alignment, nested-surface contrast, slide-copy language (#463) (fcf7a3a)
- spec: stop publishing legacy fields in the JSON Schema (#452) (3a2334b)
- storage: stop partial writes from erasing deck columns (#440) (71f9a16)