platform: v0.36.0
0.36.0 (2026-08-09)
Features
- ai: add production playground and run traces (ced609b)
- ai: add workspace AI Studio and legal coverage (6de4e39)
- ai: decouple observability from key approval (c1d96e1)
- ai: deepen studio observability (c7104c4)
- ai: enforce external app usage policy (e229116)
- ai: let an API key be issued bound to a registered external app (9f07c2a)
- ai: let external apps authenticate background workloads with a bound API key (#5091) (0626284)
- ai: let external apps authenticate background workloads with a bound key (ce123e3)
- ai: let the studio show provider cost in a chosen currency (7141326)
- ai: let the studio show provider cost in a chosen currency (#5097) (371ffe6)
- ai: re-check the app registry on every bound-key request (11e5ebe)
- ai: rebuild AI Studio information architecture and UI (c433d70)
- ai: show relative activity timestamps (9ca57f1)
- ai: support keyless external TTS (8ebfeae)
- apps: add resilient error recovery shells (f0f514d)
- apps: unify and redesign app catalog (b679068)
- auth: offer Microsoft sign-in again (fe981ee)
- chat: add connected site sync bridge (05c27f5)
- chat: add connected site sync bridge (#5078) (3de1a07)
- chat: add external parity reconciliation (953b9d6)
- chat: add external parity reconciliation (#5086) (5ef796f)
- chat: add first bridge pairing flow (78d0ccf)
- chat: add single-use bridge pairing tickets (0496bb6)
- chat: adopt existing sync runs (0741e33)
- chat: adopt existing sync runs (#5106) (1c1c438)
- chat: complete connected-site operational parity (#5093) (397e11b)
- chat: complete connected-site parity (fd4061d)
- chat: complete external replica pairing (#5098) (05f0425)
- chat: configure modern replica destination (857d2a9)
- chat: support bounded agent sync runs (e9c66b5)
- ci: approve release PRs that are still only generated output (#5090) (f3d34f2)
- cms: add CyberShield35 media adapter (2808101)
- cms: add CyberShield35 media adapter (#5087) (57c7da2)
- cms: redesign content library controls (220ee96)
- cms: redesign media library loading (d382b3b)
- cms: redesign workspace home (cd727b8)
- cms: safeguard entry publishing workflow (2371b08)
- cms: support Richfield external project forms (befa92f)
- contacts: refine report review experience (0dd3247)
- editor: add heading hierarchy controls (714db4c)
- editor: add heading hierarchy controls (5cf3222)
- editor: add icon toolbar tooltips (6b3f1b8)
- editor: add icon toolbar tooltips (#5034) (7e687b1)
- editor: add localized external project editing (38cae2c)
- editor: add preview mode (49611c4)
- editor: add safe HTML source mode (78c5057)
- editor: add safe HTML source mode (#5075) (ccf130f)
- external-projects: let a linked app apply its own schema sync (4bcb90a)
- external-projects: let a linked app install its own content model (cf0d668)
- external-projects: list form submissions for scheduled forwarding (d0ca353)
- external-projects: send mail via SES and gate forms with Turnstile (0fe6851)
- finance: reconcile inventory provider sales (56650e0)
- forms: merge satellite migration (e739f1b)
- forms: migrate product to satellite app (51b9392)
- git: add fast repository satellite (51982ae)
- git: refine repository browsing (106fcc6)
- infrastructure: add platform account recovery (8a0c757)
- infrastructure: improve AI policy workspace explorer (2eae218)
- inventory: add POS device management (822a171)
- inventory: allocate bundle revenue and add cash checkout (bd465f9)
- inventory: export sales periods (00e6a04)
- inventory: improve sales exports (1c27668)
- inventory: secure Square POS event checkout (532b463)
- landing: drop the hero badge and rebuild the product frame (b3259df)
- landing: retile the app bento and rebuild the problem section (c56f42a)
- marketing: rebuild security, partners, careers, blog and contributors (98515d7)
- marketing: rebuild the legal kit, security subpages and docs chrome (9a4cfaa)
- meet: add Google-Meet-style calls on Cloudflare Realtime SFU (a32dd52)
- meet: drop the /workspace prefix and move rooms to /r (9e370e9)
- meet: revamp collaborative scheduling (9124a5d)
- navigation: open workspace selector on reveal (c760d42)
- offline: own service worker runtime and refresh dependencies (ae44477)
- onboarding: connect product guidance across apps (68cf626)
- platform: expose the running build over HTTP for every app (7b90d42)
- reports: add periodic reporting automation (ec7bd5e)
- tasks: add board access and capacity controls (87456b0)
- tasks: add board access and capacity controls (#5094) (d9e41ee)
- tasks: add task list settings shortcuts (50031da)
- tasks: add task list settings shortcuts (#5103) (9de306c)
- tasks: compact board share access and tidy list settings (7102179)
- tasks: consolidate list settings and capacity into one dialog (9c3bb7c)
- tasks: consolidate task dialog details into one disclosure (bcc2219)
- tasks: improve board settings controls (acc14d5)
- tasks: keep realtime on deep-linked cross-workspace tasks (5a29e78)
- tooling: guard satellites against cookie-client authorization (5c8fbd3)
- ui: align landing and locale experience (aa6e47f)
- web: add external app AI execution (67c863a)
- web: improve workspace navigation context (73959e3)
- web: make Mira the workspace dashboard (c2b8763)
- web: make Mira the workspace dashboard (#5079) (9023dab)
- web: rebuild about and contact pages (4775ac2)
- web: rebuild changelog and branding on the marketing system (813a6e9)
- web: rebuild marketing navbar (f0cd6f6)
- web: rebuild product marketing pages (fb96cd1)
- web: redesign marketing landing page (13ede78)
- web: refine marketing experience (c7f1cec)
- web: serve the GitHub release feed on /changelog (cca2927)
Bug Fixes
- ai: accept rich embedding payloads (a65b13f)
- ai: diagnose production settlement failures (60411c3)
- ai: improve playground credentials and diagnostics (b61db3c)
- ai: include workspace credit usage (854b1e7)
- ai: keep chat sdk server-only (b110543)
- ai: keep version badge inside intl provider (ace9003)
- ai: prefer direct Google gateway routing (06b6ef7)
- ai: preserve usage during schema rollout (3a24ef1)
- ai: prevent satellite auth loops (80f264c)
- ai: reconcile expired Studio reservations (aeeadd4)
- ai: refresh live observability ranges (819303b)
- ai: release zero-credit reservations (7a07de1)
- ai: repair Mira reasoning streams (c04386a)
- ai: repair studio settings administration (ec4c5e9)
- ai: restore members and paginate studio lists (9d83554)
- ai: restore workspace settings and translations (45b3c4f)
- ai: route Gemini embeddings through Google (3d94e5c)
- ai: settle bound-key runs and attribute their cost to the app (ca69c00)
- ai: suspend locale app shell (14c64a2)
- ai: use direct Google provider (3039a95)
- apps: stop registering a service worker the apps do not serve (16688e9)
- auth: isolate invitation caches by user (c720f15)
- auth: keep a stored account session usable across switches (fb882cd)
- auth: redirect signup entry points to login (14a8a0f)
- auth: resume a pending sign-in after switching accounts (5403718)
- backend: remove obsolete authenticated request helper (81844db)
- calendar: reconcile deleted provider events (fd0cedb)
- chat: address external bridge review findings (30533fc)
- chat: align bridge readiness contracts (356f0d2)
- chat: close bridge edge cases (db585c8)
- chat: close external delivery review gaps (62e339f)
- chat: close external sync race conditions (e938748)
- chat: close final bridge review gaps (9d9a9b1)
- chat: close ingest delivery gaps (12fef72)
- chat: complete connected site hardening (9175456)
- chat: decode external visitor labels (1ca3e75)
- chat: decode external visitor labels (#5112) (cb7af54)
- chat: defer workspace layout to request time (#5083) (fda02a6)
- chat: define metadata depth boundary (2e99ae5)
- chat: disambiguate ingest lanes (d8478d3)
- chat: extend bridge pairing timeout (314010e)
- chat: extend sync control timeout (6233a91)
- chat: extend sync control timeout (#5101) (6db92ff)
- chat: fence concurrent AI retries (8fbf14b)
- chat: fence external sync recovery (e6e5c1b)
- chat: harden attachment retries (1e8ecf6)
- chat: harden bridge recovery paths (9dc22a7)
- chat: harden bridge retry boundaries (9affb39)
- chat: harden bridge review edge cases (0ecfad7)
- chat: harden connected site migration (73cccd0)
- chat: harden connected site sync (70e8785)
- chat: harden connected-site parity (a0d3148)
- chat: harden external bridge boundaries (2d25202)
- chat: harden external bridge synchronization (5b7c709)
- chat: harden external bridge synchronization (63ccf91)
- chat: harden external parity replay (936f464)
- chat: harden external parity replay (896923b)
- chat: harden external parity replay (89c5498)
- chat: harden external sync ordering (7489418)
- chat: isolate native AI message runs (3ce6151)
- chat: limit message notifications (cc66b64)
- chat: make retries converge safely (e2c9eb8)
- chat: mount query state adapter (#5084) (60253f8)
- chat: preserve native message behavior (fc09530)
- chat: preserve resumed sync state (7040fad)
- chat: recover pending credentials safely (0ef1e00)
- chat: recover unverified bridge credentials (4d3a32f)
- chat: recover unverified ingest credentials (66a7676)
- chat: require credential revocation proof (f6fe750)
- chat: restore AI message modules clobbered by fb60d3e (e4cef99)
- chat: restore external inbox display parity (#5108) (b34ea6d)
- chat: return persisted adopted runs (a194a35)
- chat: scope sync runs to connector (90dbe5a)
- chat: type external source event writes (abca1dd)
- chat: validate bridge reply replays (f802774)
- ci: align legal effective date assertions (ec89a8e)
- ci: align marketing migration checks (7a94038)
- ci: align tanstack public route assertions (3cf9547)
- ci: assert legal dates per route (5ab0d0e)
- ci: build dist-only packages before the release check (8eecae4)
- ci: build packages for storefront cache e2e (a93c08c)
- ci: include workflow config core in sparse checkout (4c3fcec)
- ci: isolate production database secrets (d6859ae)
- ci: isolate reusable deployment concurrency (2de6fef)
- ci: keep latest production deploy runnable (45e4ceb)
- ci: keep task helper collection source-only (7355a05)
- ci: keep the release-notes branch until the release is tagged (833ceeb)
- ci: pin the environment in portless setup tests (9e4928a)
- ci: preserve active production deployments (23a8c0f)
- ci: prevent duplicate and scheduled runs (73e5a17)
- ci: publish portable vendored UI dependencies (e69563f)
- ci: remove duplicate Docker volumes (20add8b)
- ci: repair the two failing checks on main (c6848fe)
- ci: resolve AI quality findings (0073444)
- ci: resolve shared task helper during e2e collection (0319a3b)
- ci: resolve types from source in storage-core tests (080328a)
- ci: restore dependency refresh validation (fc47eca)
- ci: restore explicit CodeQL ownership (9e1137a)
- ci: run the release check without ripgrep and cache its turbo build (13e36a0)
- ci: serialize release-please lifecycle (75f05ac)
- ci: skip unconfigured git deployments (dc00a53)
- ci: stabilize satellite dependency installs (8e8d05a)
- ci: stabilize tasks lifecycle flow (f7a6356)
- ci: stop three script tests depending on the machine that runs them (c5fd573)
- ci: tolerate a release branch GitHub already deleted (#5100) (3f3e45c)
- ci: unblock database and legal checks (01496bf)
- ci: unblock release auto-merge with Flutter and a push-token gate (#5089) (45ed769)
- clear residual quality findings (3ff6c3f)
- cms: allow bound project member setup (c3d420d)
- cms: allow root admin member bootstrap (87f138e)
- cms: enable chat for custom templates (3f4cea1)
- contacts: improve class scheduling and attendance (3bc9ef4)
- contacts: repair approval detail dialog (a948ea2)
- contacts: restore attendance and translation checks (3f1587b)
- contacts: restore profile request links (df3802f)
- contacts: stabilize metric mutations (085e28b)
- contacts: stop shadowing the workspace permissions summary (1a89892)
- database: order connected chat migrations (f7f5903)
- database: reorder CyberShield35 adapter migration (f984497)
- database: rerun creator membership repair (81a6a07)
- database: retimestamp parity migrations (6f8f034)
- database: separate creator membership repair (8316c8f)
- deps: align Streamdown with Shiki 4 (0d89f55)
- deps: refresh shared nuqs lock entry (9cb8cf9)
- discord: update Pillow security release (eefc9d7)
- e2e: align workspace fixtures with creator membership (cfb13b6)
- e2e: follow actual tasks app origin (cb9604d)
- e2e: follow satellite route ownership (591190c)
- e2e: prepare tasks satellite dependencies (9af6be1)
- e2e: run tasks lifecycle in CI (bed2cd5)
- e2e: wait for onboarding readiness (127fa63)
- editor: avoid duplicate link extension (86c5ead)
- editor: avoid duplicate link extension (#5035) (7d2c7f1)
- editor: harden toolbar focus handling (52a933e)
- editor: harden toolbar interactions (8c4d77b)
- editor: improve toolbar accessibility (8b46cb0)
- editor: refine tooltip accessibility (36180e6)
- editor: stabilize link popover (c400197)
- editor: use publishable icon runtime (059ea97)
- editor: validate rich text URLs (415094f)
- external-chat: allow bridge route alias (b259d9d)
- external-chat: allow bridge route alias (#5082) (4b294d4)
- external-chat: complete connected-site setup (#5081) (17a2b16)
- external-projects: let a broader scope answer for a narrower one (#5107) (0d3eea4)
- external-projects: pin the submissions POST return type (0b0f900)
- git: apply Streamdown token colors (74bf301)
- git: load Streamdown theme styles (afd1941)
- git: repair production repository routing (d615d34)
- git: repair repository rendering and routes (3f71a05)
- git: restore production markdown build (06be083)
- i18n: add workspace member labels (f912121)
- infrastructure: authorize external app registry sessions (a09e8f7)
- infrastructure: freeze Vercel dependency installs (96cd10c)
- infrastructure: guard whitelist request rendering (a84acac)
- infrastructure: own admin APIs and paginate models (a73514c)
- infrastructure: own AI credit admin APIs (4606857)
- infrastructure: pin Vercel Bun installer (2dcaef0)
- infrastructure: proxy workspace list (a444f9d)
- infrastructure: proxy workspace list (#5080) (36b7b21)
- infrastructure: restore production builds (a9adc4a)
- infrastructure: select chat canary workspace (4832ab5)
- infrastructure: use satellite database runtime (ee4044e)
- inventory: authorize admin POS fallback (9ba0fbc)
- inventory: correct storefront bundle checkout (cb9c247)
- inventory: distinguish Square POS device paths (4654605)
- inventory: make storefront removal safe (9dd4dc6)
- inventory: reconcile checkout sales analytics (b872994)
- inventory: reconcile provider checkout stock (2160487)
- inventory: repair storefront removal rollout (cb5828b)
- localize realtime analytics filters (10c14fa)
- meet: accept satellite app-session auth on the meetings API (7f97eac)
- meet: attribute remote tracks to their publisher (7f206bc)
- meet: authorise meeting edit and delete from the satellite (00524ab)
- meet: mount the nuqs adapter in the root layout (3931063)
- meet: normalize workspace aliases in the meetings API (1c2688f)
- meet: reconnect dropped call signaling with a fresh join token (3c6cb41)
- meet: restore the notifications namespace so Plans stops erroring (675611d)
- mira: refresh live sessions and refine voice UX (bbf29b5)
- open pay billing links in new tabs (c6c565f)
- platform: improve satellite workspace routing (0c49c48)
- platform: improve task details and satellite saves (441c283)
- platform: merge notification and group visibility fixes (4fe9e97)
- platform: persist settings dialog state (04d2128)
- platform: restore notifications and group visibility (eb570a4)
- platform: stabilize offline and calendar initialization (8ef8fbc)
- quality: address AI findings (c24f827)
- remove unreachable group queries (0ff2882)
- reports: scale delivery maintenance and report counts (4dd4f47)
- resolve code quality findings (63f10b5)
- resolve remaining quality suggestions (826aec4)
- satellite: align sidebar workspace spacing (199de40)
- satellites: stop authorizing app-session callers with the cookie client (b0d0242)
- security: enforce infrastructure workspace permissions (00b469c)
- security: protect crawler metadata endpoints (386bdb6)
- security: remediate code scanning findings (023db2e)
- security: sanitize unsubscribe response boundary (a179933)
- settings: enable satellite profile management (4876ae2)
- settings: harden workspace role management (0570687)
- settings: hydrate shared profile data (7890e61)
- settings: make the workspace permissions summary one total contract (d88e709)
- settings: repair satellite workspace management (63614cd)
- settings: restore satellite workspace management (be1fb5a)
- storefront: show uploaded bundle images (beff755)
- storefront: stop registering missing service worker (655a382)
- tanstack-web: align router with start (6f14f31)
- tanstack: align migrated marketing routes (6337286)
- tasks: allow capacity rules in app sessions (f9f9f85)
- tasks: guarantee root workspace resolution (94f674d)
- tasks: isolate board member query cache (31760be)
- tasks: isolate board member query cache (#5096) (687c402)
- tasks: keep board settings tabs in context (b26c6c3)
- tasks: let members read board sharing, and surface why access is denied (81886e8)
- tasks: localize root proxy rewrites (83109f9)
- tasks: log every board access denial, not only member denials (b852ad6)
- tasks: open task links that point outside the current workspace (8f46e08)
- tasks: open the dialog on Properties and settle it in one step (2780950)
- tasks: quiet the description toolbar and name the compact action honestly (51838a0)
- tasks: redirect roots to canonical boards (bfc7cf2)
- tasks: repair board share access and harden AI media attachments (65b8092)
- tasks: repair onboarding and external metadata (e0b62eb)
- tasks: resolve board membership with the admin client (e5cc820)
- tasks: restore scrolling in the focused task dialog (ee2d312)
- tasks: restore task description on deep-link opens (56d4efa)
- tasks: show one skeleton per task dialog open (944288b)
- tasks: stabilize settings and list ordering (6dc9f2e)
- tasks: stop the task dialog remounting after it opens (9a423da)
- tasks: translate board reorder feedback (4d355d1)
- tasks: unify settings navigation (2f305e0)
- tasks: widen focused task dialog (e9fd624)
- tooling: report which script test failed instead of nothing (e9154e4)
- tooling: support webpack verification builds (5275e10)
- ui: make member management mobile responsive (104c812)
- ui: preserve hosted workspace logos (1f8e8b2)
- ui: publish portable vendored dependencies (99ad359)
- ui: refine member access settings (b5b1ebf)
- ui: unify workspace access and sidebar controls (450183e)
- web: accept satellite app sessions for member invites (4d90ceb)
- web: address Mira voice review feedback (dd0187f)
- web: apply saved theme before first paint (bcbfb9f)
- web: close external chat dispatchers safely (a210edf)
- web: decode Gemini interaction audio (9a8c148)
- web: harden external Gemini TTS (815b175)
- web: harden Mira voice session transitions (d78f864)
- web: harden prerender client boundaries (ab1596a)
- web: isolate UI docs navigation controls (94741d3)
- web: keep runtime providers suspended (a2714b8)
- web: preserve external chat request results (2811056)
- web: repair and meter Mira Live mode (2fb0ec4)
- web: repair Mira Live connection and states (ad841bb)
- web: repair Mira Live token provisioning (55f786d)
- web: repair Mira model picker routing (5ad8a23)
- web: restore changelog preview build (7c85f52)
- web: restore hidden workspace selector spacing (da28160)
- web: restore Mira Live connection (92d3c83)
- web: restore Mira Live token provisioning (0569ab8)
- web: route the QR generator to the tools app (424dbfd)
- web: scroll to deep-linked landing sections (6a9d95e)
- web: select Gemini TTS API revision (2edb5e2)
- workspaces: harden invitation interactions (b7f8f6c)
- workspaces: keep the creator a member of the workspace they create (8b33f42)
- workspaces: preserve creator administration access (cea32ea)
- workspaces: propagate a workspace rename without a page reload (cca0b2d)
- workspaces: repair shared member administration (8a1515b)
- workspaces: restore invitation access across apps (3592699)
- workspaces: restore invitation access across apps (#5099) (c7032c3)
- workspaces: route satellite creation through setup (754bf1b)
Performance Improvements
- chat: parallelize historical ingest (251fa98)
- chat: parallelize historical ingest (#5104) (e3ca34c)
- ci: attach deploys to commit runs (7d213b8)
- ci: centralize production deployment planning (1331e31)
- ci: exclude gate-only changes from app deploys (da85ff6)
- ci: reduce redundant runner fan-out (78fe6a0)
- ci: skip deploys for orchestration-only changes (c543f99)
- git: optimize repository browsing (22d4b9e)
- inventory: add event-driven storefront caching (2f571f4)
- storefront: share customer navigation shell (21cb78d)
- storefront: stabilize navigation and cart rendering (471c6b7)
- web: optimize landing page (32a3023)
- web: smooth mobile landing sections (d3fae9a)