Naar inhoud springen

Wat is er nieuw

De nieuwste functies, verbeteringen en fixes in CheckPt Studio.

Sommige release notes hieronder zijn in het Engels gepubliceerd.

  1. 0.1.4-test.17

    Nieuwste14 september 2026
    Details

    test

  2. 0.1.4-test.12

    13 september 2026
    Details

    Test !

  3. 0.1.4-test.11

    13 september 2026
    Details

    Test

  4. 0.1.4-test.10

    10 september 2026
    Details

    What's New in v0.1.4-test.10

    Added

    • delete a project permanently, and say what that will destroy (#3874)
    • an archived project's sessions and inbox leave with it (#3873)
    • give App Review a way to actually exercise the app (#3771)
    • an org-owned machine opens a read-only Studio, not a sign-out (#3839)
    • a device page answers what is RUNNING on the machine, not what projects were opened on it (#3825)
    • the approval proof survives the pipe (#3817)
    • Personal or Organization at device setup (#3796)
    • settings was a 1000x680 dialog that never grew β€” it is a screen now (#3779)
    • approval-signature groundwork β€” content commitment and key publication (#3763)
    • give a device to the org β€” userβ†’org ownership transfer (#3752)
    • spoken replies β€” state the scope, cooperate with screen readers, respect quiet hours (#3769)
    • the two drawer entries that led nowhere, answered (#2487, #2488) (#3754)
    • the activation events β€” device paired, first session, first approval (#3698)
    • the public board screens what reaches it (#3674)
    • Studio's events were anonymous β€” they now carry the account (#3687)
    • Studio had no analytics gate at all β€” now nothing is captured before consent (#3661)
    • a load target that can actually be a fleet (#3650) (#3655)
    • Integrations was four screens of one flat list β€” split it into three rail pages and collapse the connect forms (#3670)
    • consent was an island in AsyncStorage; it now follows the account (#3669)
    • the web activation events β€” signup through subscription (#3663)
    • what plan is this user actually on, and who owns Lockdown Media (#3642)
    • analytics consent belongs to the account, not to one browser (#3623)
    • observe whether prod has been applied, daily and without credentials (#3644)
    • every event was an anonymous device β€” web now identifies the account (#3639)
    • voting on the public feature board (#3577)
    • declare the iOS privacy manifest the binary was shipping without (#3574)
    • the public board's front door (#3580)
    • brand the Windows installer and localise its chrome (#3586)
    • a public roadmap anyone can read, logged out (#3550)
    • human control of the public feedback board (#3558)
    • the event taxonomy β€” names are a schema, so decide them once (#3535)
    • put Dave and Gulsah in Lockdown Media Inc. on the Team plan (#3538)
    • the generator grid gets its brand marks (#3517)
    • branded drag-to-install window for the macOS DMG (#3540)
    • evaluate approval prompts against stored rules and auto-approve on match (#3494)
    • feedback votes table + publication/moderation columns (#3510)
    • in-app analytics consent control (#3478)
    • honour Global Privacy Control β€” the banner asked people who had already answered (#3468)
    • backend exceptions were being reported to nobody (#3457)
    • rebuild the Sessions control bar, and make the launch wait say what it is (#3449)
    • Stripe Tax, behind a flag, so the registrations stop blocking the code (#3408)
    • the admin console has no password (#3358)
    • reclassify service ↔ task in the wizard, persisted as an override (#3340)
    • record the over-cap state a downgrade leaves, and tell the account holder once (#3319)
    • Orbit takes over the 404, error and suspense screens (#3256)
    • a kill switch that does not need a deploy (#3290)
    • async release-notes curation, visible outcomes, and a workable editor (#3266) (#3269)
    • watch production between deploys, and stop claiming it's up (#3095)
    • record ToS/Privacy acceptance at signup, and gate age (#3243)
    • make the promised data export real (GDPR Art. 20) (#3242)
    • brand marks for every framework, service engine and agent (#3247)
    • the push prompt is asked once, with a reason in front of it (#3250)
    • the account-level notification class β€” billing and security events reach a person (#3097)
    • the review screen runs on real data, and the flag it hid behind is gone (#3176)
    • hands-free mode β€” a screenless conversation (#3076)
    • seal the notification-history body at rest and on both read planes (#3117)
    • the six machine-origin events reach the bell (#3087)
    • serve per-check CI detail and PR review comments (#3093)
    • a daemon secret.* op family, so env secrets land on the device that reads them (#3070)
    • gate notification routing, email cadence & chat-started tasks (#3084)
    • stamp every account-scoped cache, defer an unreadable approval, and give a service runtime an owner (#2853) (#3080)
    • prove a prod deploy worked, don't assume it (#3069)
    • PR queue kanban + swimlane layouts (#274) (#3066)
    • DEK-encrypt the digest queue's content and cut its TTL to 16 days (#3056)
    • give org-owned webhook destinations a surface (#3048)
    • tell a member what they lose before they confirm leaving an org (#3050)
    • discover compose files and Procfiles outside the repo root (#2899)
    • cloud worker recipe + ephemeral lifecycle (#3022)
    • give inbound chat a UI, and a /link-chat page that isn't a 404 (#3024)
    • prove the phone's device id instead of asserting it (#3029)
    • the phone can say where a project's events go (#3021)
    • surface delivery failures β€” a dead channel is announced, not just counted (#3004)
    • human-quality service display names (#2898)
    • auto-checkpoint every turn β€” the undo point is always one turn back (#2980)
    • the connector gate resolves per row, from that row's owner (#2999)
    • a datastore pass, so Workspace.orm stops being inert (#2941)
    • the wizard's Project name says it is required (#2938)
    • compose parser v2 β€” YAML lib, extends, IPv6, override merge (#2903)
    • the three rungs Studio could see, and the fourth it sent you to your phone for (#2994)
    • a session on an org worker runs as the member who started it (#2974)
    • connector docs + the ecosystem chips #1312 took away (#2964)
    • gate connector management β€” one key, owner-scoped, on three planes (#2963)
    • a routing rule matches a SET of events, not one category (#2983)
    • desktop notifications, and the toast you don't get for the window you're looking at (#2975)
    • org workers on a BYO relay β€” redeem enrollment through the identity boundary (#2973)
    • custom webhook destinations β€” outbound HMAC signing, an SSRF guard, and per-destination health (#2953)
    • an org connector switched off blocks the server for everyone (#2965)
    • WebSocket/SSE inspector β€” watch on inspector.read, frame send behind inspector.exec.ws (#2743)
    • the phone says where the work runs, and why one more will not start (#2956)
    • project portability tiers β€” pinned projects, a project-first picker, and graduation (#2947)
    • run the D2 override layer inside detect() (#2896)
    • resolve nr script-runner indirection (#2868)
    • N-entry per-agent MCP config provisioning (#2940)
    • one VCS event, one post per destination (#2900)
    • geometry that outlives the PTY, and a barrier for "done writing" (#2951)
    • resumable sessions β€” pick your work back up after a crash, reboot or shutdown (#2935)
    • the concurrency wall names what is running, and offers to stop one (#2950)
    • connector management β€” catalog, scopes, per-project opt-out, audit (#2932)
    • every advertised channel real or removed β€” email wired, SMS deleted, desktop withheld (#2927)
    • promote the runtime DetectionResult validator into the package (#2890)
    • rspack and rsbuild are framework CLIs, not tool tasks (#2866)
    • decompose a nested composite, and let chain ambiguity survive (#2904)
    • at-cap recovery β€” the refusal names what is running, and offers to stop one (#2925)
    • Studio sidebar goes project-first; devices become availability metadata (#2751)
    • wire the connector gate β€” proxy, approvals, deny handling, audit (#2842)
    • safe shutdown β€” one "you have active sessions" treatment at every boundary that means leaving (#2895)
    • one decision engine β€” reconcile the two routing planes, delete the loser (#2893)
    • tell the other phones when a sound changes (#2891)
    • shared-worker credential resolution β€” org-owned VCS connections, the clone ladder, and a preflight (#2858)
    • device-code enrolment replaces pairing (#2844)
    • gate session sharing & export at Pro (#2852)
    • an org's worker pool on the web, with owner/admin revoke (#2854)
    • the event catalog, and the events that were never raised (#2631)
    • rebuild the session top bar as one aligned row (#2855)
    • org worker slots β€” a pooled entitlement, and an org that pays for it (#2801)
    • surface session export + share from the drawer (#2354) (#2837)
    • curated connector catalog + BYO, with row provenance (#2843)
    • org workers become routable β€” owner-scoped proxy plane + a picker that names them (#2738)
    • start Add service from a component picker, not a blank form (#2830)
    • one release button, a dialog that fits, and platforms you can actually combine (#2791)
    • connector credentials β€” keychain storage + device-local OAuth (#2754)
    • shareable read-only session replay links (#2756)
    • start an agent task from Slack or Discord (#2784)
    • a rail that discloses instead of hiding, and panels that actually draw (#2803)
    • gate session checkpoints behind Pro (Class B daemon) (#2772)
    • an org worker can publish a session, attributed to the member who started it (#2740)
    • session gist β€” what a session is about, and where you left off (#2752)
    • org governance β€” permitted backends, no-literal policy, reference audit (#2750)
    • external secret managers via vendor CLI + .checkpt/env-sources.toml (#2746)
    • sibling-worktree and sibling-project providers (#2741)
    • gate the inbound VCS webhook pipeline at Pro (vcs_event_stream) (#2760) (#2769)
    • approve/deny an agent action from Slack or Discord (#2749)
    • infer project-vs-session scope from worktree variance (#2739)
    • auto-pull on session start β€” clone+attach on the target device when unmounted (#2572)
    • markdown session summary + diff/patch export (#2737)
    • every restore takes a safety checkpoint first (#2735)
    • MCP connector registry β€” entity, CRUD, scoping and distribution (#2629)
    • account-wide merged project list with per-project device availability (#2721)
    • terminal recording β€” a session's output ring as an asciicast (#2576)
    • inbound Slack + Discord apps and chat identity mapping (#2654)
    • session-drawer Checkpoints UI (#2328) (#2638)
    • MCP server inspector β€” catalog on inspector.read, tool call behind inspector.exec.mcp (#2645)
    • inbox triage on the relay tier β€” snooze/dismiss actually leaves the feed (#2640)
    • BYO relay β€” the operator sets the limits, not the hosted plan (#2574)
    • the projects folder is editable from Settings (#2675)
    • test a clone URL before cloning it (#2679)
    • delete a release that never shipped, and give its number back (#2674)
    • one empty-state component, even hero tiles, always-four quick actions (#2662)
    • seed the default Studio tips catalog (#2660)
    • honest local-folder copy, empty-repo default, and explained-disabled controls (#2663)
    • fleet parse telemetry β€” production as the ultimate canary (#2637)
    • lift the dark ramp off flat black and give headers their own band (#2659)
    • serve web's auth-gated screens from a mock, and gate the surface (#2634)
    • org workers resolve their own relay map (#2636)
    • sortable releases table, last-edited attribution, and layout fixes (#2646)
    • session-attributed notes, drop the notes flag (epic #2099 exit) (#2618)
    • the daemon evaluates approval rules (#2639)
    • GraphQL inspector β€” introspection + a query runner that is provably a read (#2537)
    • seal org-hosted session content to the org, not one account (#2624)
    • checkpoint ops β€” restore, delete, and the four daemon verbs (#2619)
    • configure expo-updates so launch binaries are OTA-capable (#2602)
    • org enrollment tokens + checkptd pair --org-token (#2575)
    • voice steering β€” approve or deny with a spoken instruction, on-device (#2547)
    • wire Custom Sounds end to end and remove its flag (#2567)
    • queue / broker inspector β€” Kafka, RabbitMQ, BullMQ, NATS (#2539)
    • detect services from Nx project.json targets (#2222) (#2592)
    • Linear connector (issueβ†’session) (#2578)
    • rotate the org content key forward, on an authenticated declaration (#2554)
    • inbox snooze and dismiss actually work (#2596)
    • the Sessions tab as cards or a table, with search and filters (#2533)
    • checkpt agent β€” CLI surface over the Agent's OS-service machinery (#2571)
    • audit the data_inspectors gate against the verb registers β€” derived, never listed (#2569)
    • fail the PR that closes a cited matrix issue, before the merge does (#2577)
    • pairing screen offers Studio and terminal, not CLI only (#2564)
    • unlist post-MVP coming-soon rows for launch; promote GitHub Projects (#2360) (#2573)
    • only the device running a dev server can name its address (#2536)
    • GitHub Projects (v2) connector (issueβ†’session) (#2541)
    • gRPC inspector β€” reflection schema browser + gated call builder (#2540)
    • org-owned devices β€” ownerType/ownerId, guards and counters (#2518)
    • create flow stops asking for a directory β€” placement defaults into the projects root (#2535)
    • resolve entitlements from the owner of the thing being worked on (#2538)
    • serve the plan catalog to Studio, and ask for a billing region instead of a currency (#2546)
    • env sources β€” persist the wizard's env, and sweep every place a value can come from (#2528)
    • version-skew UX for a standalone Agent Studio doesn't own (#2534)
    • org keyrings reach every door, and stop growing quadratically (#2516)
    • revamp Home, add a system-metrics tile, and fix the empty Inbox (#2530)
    • Jira connector (issueβ†’session) (#2501)
    • API viewer β†’ Postman-like β€” collections, environments, history, auth, import/export, assertions (#2494)
    • the entire agent-facing MCP surface is Pro (agent_mcp_tools) (#2517)
    • Redis viewer power β€” value/TTL edits, pub/sub monitor, memory stats, export (#2509)
    • a loopback Agent that isn't co-located stops being treated as this machine (#2515)
    • per-device projects root β€” onboarding step + daemon settings store (#2511)
    • per-owner entitlements claim, and no back-compat for relays that don't exist (#2497)
    • Home, Inbox, Sessions and Devices as the phone's four tabs (#2484)
    • MongoDB inspector β€” collections + document browse (#2492)
    • mutating MCP control tools ride the approval flow (#2498)
    • record who started a session, from the channel and not the body (#2500)
    • remote-aware project picking for non-co-located Agents (#2490)
    • remove the Community cross-device approvals cap (#2483)
    • brand the app icon and splash (#2482)
    • Postgres viewer power β€” SQL editor, EXPLAIN, export, ER diagram (#2464)
    • one subscription per account, on every plane (#2428)
    • wire the Notes tab to the relay's real sealed notes (#2467)
    • give mobile the console's semantic palette (#2468)
    • the relay derives the device id, it no longer accepts one (#2478)
    • make VCS provider availability config, flag and secret together (#2474)
    • guard the Compare-plans matrix localization, and fix nine leaks (#2475)
    • mail catcher inspector β€” four products behind one closed op union (#2453)
    • update dialog renders localized release notes from notes.json (#2454)
    • one scrollbar across web, admin, Studio and mobile (#2414)
    • session-scoped MCP inspector query tools (read-only by construction) (#2465)
    • mobile deploys from admin β€” EAS build + internal-track submit, watched end-to-end (#2466)
    • scaffold a new project straight into a repository (#2461) (#2470)
    • presence is per relay β€” render known-but-not-connected (#2460)
    • MySQL/MariaDB inspector behind the existing db verbs (#2451)
    • personal vs org allowances, and the owed BYO qualifier (#2459)
    • gate on resolved feature entitlements, not the plan tier name (#2457)
    • session-scoped MCP control tools β€” services, tasks, checkpoints, env doctor (#2455)
    • tell the old audience when a row stops being theirs (#2212)
    • gate issue-seeded sessions behind issue_seeded_sessions (#2446)
    • the mutating inspector capability, per family (#2450)
    • merge on read across relays, with legible degradation (#2445)
    • session-scoped MCP observe tools β€” logs, status, ports, diff, deps (#2395) (#2448)
    • changelog renders localized summary + expandable details from notes.json (#2447)
    • gate the data-plane inspectors behind data_inspectors (#2449)
    • config-driven Compare-plans comparison matrix (#2432)
    • force on re-detect + last-known digest on cold open (#2273)
    • confidence calibration pass β€” reliability table, ECE, H1/H2/H3 verdicts (#2274)
    • ship as a free companion, remove all in-app purchasing (#2438)
    • seal project_notes title+body to the author's devices (#2431)
    • pick a device, get that device's agent list (#2433)
    • inject the session-scoped MCP endpoint at agent spawn (per agent type) (#2437)
    • inspector framework β€” an engine signal, a viewer registry, and a shell (#2426)
    • publish structured notes.json (all locales); demote latest.json notes to transport (#2434)
    • chunked transport for mobile image input over the proxy plane (#2415)
    • gate the PR / change-request queue behind change_request_queue (#2429)
    • apply the Appearance editor settings to the real editor (#2430)
    • sweep the Tauri commands that answer about the wrong device (#2419)
    • release_note_translations β€” fan-out on finalize, trailing, human-review locks (#2316) (#2427)
    • extend the PlanFeatureKey gate framework (#2361)
    • multi-window launch configurations β€” scoped windows, per-window scale, saved layouts (#2388)
    • MCP server scaffold with per-session token auth on /mcp/v1 (#2408)
    • wrap the org key into the invite, unwrap on accept β€” no online teammate required (#2387)
    • admin-managed "Did you know" tips (#2418)
    • say so when a session ends or a project is saved or deleted (#2417)
    • release curation review UI on ReleaseDetail (#2315) (#2403)
    • route the session diff through the daemon so remote sessions reach parity (#2400)
    • AI curation pass over a release's draft notes (#2314) (#2343)
    • give sign-in and first-run the Studio scene (#2381)
    • deploy-console redesign for the release detail page (#2271)
    • session Files surface + open-a-changed-file from the diff lists (#2308)
    • make Expo Go a working dev mode, with banners for what's off (#2312)
    • stop wiping the database on deploy, launch it from the console (#2267)
    • detect.* LRU + SQLite cache, force, and detect.summary (ADR 0009) (#2227)
    • project Files tab on the real mount root β€” removes FEATURES.filesBrowser (#2245)
    • deliver org invitations by email, and let an admin resend one (#2209)
    • make the Services step tell the truth, and let the user correct it (#2206)
    • bind getCiStatus for Bitbucket and Azure DevOps (#2216)
    • Bitbucket + Azure DevOps webhook event adapters (#2210)
    • CodeMirror 6 and the shared FileEditor component (#2225)
    • org content key + kid-addressed keyring (#2215)
    • one device↔device plane for session I/O β€” and a gate so it can't rot again (#2158)
    • file.* op family β€” list, read and write a project path (#2218)
    • multi-currency subscriptions across 19 launch currencies (#2112)
    • env secrets actually resolve β€” OS keychain read + write, resolved late so nothing persists (#2198)
    • make the phone the hero below lg, and stop shipping the desktop shot to phones (#2186)
    • merge semantics on read paths β€” union devices and approvals, qualify projects by relay (#2079)
    • notes get an owner and an org β€” private by default, promoted to share (#2163)
    • close the mobile parity gap β€” Projects, Inbox, org templates, Home (#2183)
    • fleet view β€” every agent session across every device on one screen (#2174)
    • detector-wizard fixes (#2141, #2140, #2145) + Studio chrome pass (#2153)
    • materialize context files, and an ownership ledger to make it safe (#2131)
    • exhaustive route-crawl mode (OVERFLOW_MODE=all) (#2058)
    • seeded session fixture for auth-gated screens (#2056)
    • confirm ownership transfer, and only ownership transfer (#2116)
    • section-scoped value-vs-en leak gate (#1835)
    • stage releases by bump, with the server owning the version (#2110)
    • connect-on-demand relay sockets, keyed by relay (#2082)
    • native Android billing via the Stripe Payment Sheet (#2098)
    • fail-closed overflow CI gate + per-surface baseline ratchet (#1832)
    • GitLab webhook event adapter β€” /webhooks/gitlab now serves (#2092)
    • meter cross-device approvals on the hosting daemon, never local ones (#2088)
    • apps/web surface under vite dev (#2055)
    • context-file manifest, path gate and handoff materialization plan (#1995)
    • route relay.rest by org, so writes land on the right relay (#2078)
    • fan the push token out to every registered relay (#2075)
    • hold N relay connections with per-relay credentials (#2050)
    • fail-closed approval gate for agent MCP tool calls (#1997)
    • gate organization creation behind the Team plan (#2051)
    • register on every resolved relay β€” N credentials, not one (#2043)
    • add the mobile RN-web surface + static length-delta backstop (#2015)
    • view-only devices, gated to Pro+, plus Studio plan awareness (#2036)
    • relay-qualified project identity β€” declare the axis, key on it, store it (#2026)
    • resolve every relay per org, not one URL per user (#2033)
    • stamp the owning-relay hint into the push data payload (#2030)
    • task run history β€” exit codes, durations, revisitable output (#2001)
    • signed-request verification and approver authorization for Slack approvals (#1998)
    • auto-fix parser regressions into a draft PR (#1996)
    • anonymous QR re-pair keeps its device id by proving the key (#1951) (#2002)
    • source /changelog and /docs/whats-new from the live releases feed (#2003)
    • device-limit dialog offers only workers for removal (#1936) (#1988)
    • report a connected phone as online, and teach the device pickers to tell kinds apart (#1991)
    • expose the inspector query ops over the proxy (#1982)
    • sessions replicate like devices and projects β€” not peer-cache fan-out (#1950)
    • mobile answers prompts over the relay-brokered transport (#1932)
    • enforce the ratified per-locale register in CI (#1946)
    • give chat channels a workspace to belong to (#1305) (#1899)
    • localize pricing plan bullets, limits & CTAs (#1834)
    • a relay that is already enrolled converges instead of duplicating (#1929)
    • keyboard shortcuts for pinned task quick actions (#1797) (#1925)
    • Redis service inspector β€” SCAN-based keyspace browse (read-only) (#1914)
    • relay self-enrollment β€” one-time token, registered key, no shared secret (#1908)
    • let a service declare its port through an env var (#1916)
    • Postgres service inspector β€” schema + data browse (read-only) (#1910)
    • runner service inspector on real process state + output (#1583) (#1902)
    • attribute webhook events to their project and org (#1305) (#1898)
    • email notification delivery via SendGrid + Email chip (#1308) (#1648)
    • mobile service inspector on real Metro state (#1587) (#1824)
    • initialize starter config for a project with no .checkpt/ (#1664) (#1839)
    • API service inspector β€” route discovery + auto-addressed request builder (#1584) (#1823)
    • expose config, exec and service ops over the proxy (#1821)
    • frame the wizard detect services/env as a preview (#1759)
    • overflow-detection engine + Studio surface (#1744)
    • services topology view on real declared deps (#1575) (#1818)
    • register the Romanian (ro) locale β€” web switcher + backend catalog (#1385) (#1652)
    • enforce allowRemoteSessions end-to-end (#1813)
    • build the shared Docker install layer on every PR (#1795) (#1809)
    • session output over the shared cursor/gap contract (#1542) (#1807)
    • prompts to relay tier β€” an approval survives the originating device going offline (#1791)
    • web service inspector on real dev-server state + embedded preview (#1582) (#1801)
    • dependency-ordered cascade start/stop with readiness gating (#1581) (#1777)
    • pinned tasks surface as session quick actions (#1568) (#1798)
    • funded-turn tier β€” assert the in-flight hooks against a real turn (#1787)
    • Discord and Teams webhook channels (#1306, #1307) (#1781)
    • i18n the live-detect surface (DetectStep log + errors) (#1758)
    • P3c β€” Python pack parity (tooling + registry-miss) (#1708)
    • adopt the shared stream for devices and projects (#1541) (#1790)
    • run a session's tasks in that session's worktree + env (#1567) (#1770)
    • real per-service CPU/RAM sampling, process-tree inclusive (#1580) (#1768)
    • Env import pane writes real config (#1560) (#1750)
    • forward the whole account stream, and give the Agent a cursor (#1538) (#1767)
    • session Services drawer on real daemon runtime (#1728) (#1752)
    • Slack webhook channel β€” destinations, subscriptions, daemon dispatch (#1305) (#1670)
    • alert on prod deploy failures in Slack (#1715) (#1743)
    • one entity cache + cursor/gap handling, retire the per-store reducers (#1745)
    • run a task in a PTY pane via a daemon-owned run (#1566) (#1737)
    • per-service log capture + stream to the Logs surface (#1579) (#1733)
    • health probe executor (http/tcp/exec) β€” real service health (#1578) (#1732)
    • one cursor/gap/snapshot service for every entity (#1537) (#1714)
    • shared vs per-session service lifecycle + cross-worktree ownership (#1577) (#1710)
    • org-curated starter template list (#1635) (#1688)
    • Env Ports pane on real daemon port allocations (#1559) (#1699)
    • project Tasks tab on real .checkpt/tasks.toml (#1565) (#1665)
    • guarantee sessions carry a resolvable relay project id (#1529) (#1647)
    • service supervisor β€” spawn/stop/restart + runtime registry (#1576) (#1683)
    • Romanian (ro) β€” Studio (#1675)
    • Romanian (ro) β€” mobile (checkpt-app) (#1672)
    • Romanian (ro) β€” web + backend templates (#1660)
    • Go rule pack β€” gin/echo/fiber/chi via go.mod (P3b) (#1524)
    • transactional outbox so a mutation cannot skip its fan-out (#1536) (#1682)
    • authenticated encrypted peer-session channel (#1523) (#1686)
    • P2 β€” runtime versions + non-JS package managers + unrecognised notes (#1480)
    • write .checkpt/ at project creation, without the npm CLI (#1592) (#1671)
    • Env editor pane on real .checkpt/env.toml (#1557) (#1668)
    • project Services tab on real .checkpt/services.toml (#1667)
    • subscribe-gated + compressed cross-device streaming (#1415) (#1658)
    • BYO relay reads identity from the hosted relay (#1623) (#1649)
    • route proxy.forward across relay instances (#1496) (#1653)
    • scaffold from a house/org starter template (#1410) (#1642)
    • typed project-config client + provenance model (#1556) (#1641)
    • Bitbucket Cloud provider, end to end (#1303) (#1510)
    • extract Makefile targets as service/task sources (#1132) (#1240)
    • P1 Studio dev wiring β€” real detect.scan over local-IPC (ADR 0009) (#1471)
    • services.toml schema gaps β€” scope, expanded ServiceKind, source decision (#1573) (#1633)
    • deviceβ†’instance presence registry + deliverToDevice primitive (#1495) (#1632)
    • populate ci + agents context sections (#1131) (#1241)
    • replication contract + entity registry (#1535) (#1630)
    • expand env example-file allowlist β€” .env.sample/.env.template/.env.dist and friends (#1136) (#1139)
    • commit-vs-exclude config persistence + project-creation prompt (#1554) (#1626)
    • surface registry-miss as an unrecognized-framework diagnostic (#1238) (#1239)
    • scaffold a project from a GitHub template repository (#1409) (#1619)
    • standalone headless checkptd install + enrollment (#1620)
    • tasks.toml schema β€” new DocKind::Tasks (#1563) (#1627)
    • retire the public-tunnel transport (#1622)
    • ElastiCache Redis for the relay bus + optional relay client (#1494) (#1605)
    • public blog rendering + SEO β€” SSR, meta/OG, hreflang, sitemap (#1345) (#1603)
    • enroll on confirm β€” defer device creation, name it at creation (#1617)
    • per-locale "retry with more care" for blog translation (#1593) (#1607)
    • Azure DevOps Repos provider, end to end (#1304) (#1509)
    • GitLab connect + repo import, end to end (#1302) (#1499)
    • assert frameworks/tools from non-optional peerDependencies (#425) (#965)
    • Claude auto-translation fan-out on blog publish (#1344) (#1589)
    • wizard scaffold step β€” recipe picker, live PTY, post-run chain (#1408) (#1591)
    • UX pass across the portal and console (#1506)
    • Indonesian, Vietnamese and Czech β€” Studio (#1371, #1375, #1383) (#1501)
    • C2 β€” Rust rule pack (framework detection slice) (#899) (#1295)
    • live-PTY agent TUI canary harness (#1065) (#1467)
    • scaffold recipe registry + toolchain presence probe (#1407) (#1531)
    • content model + admin CRUD + public read endpoints (#1343) (#1530)
    • Home widget customization β€” registry + persisted layout (#1402) (#1522)
    • route peer transport over the relay WS (#1414) (#1527)
    • Vietnamese (vi) and Czech (cs) β€” apps/web + backend catalog + switcher (#1373, #1381) (#1503)
    • Indonesian (id), Vietnamese (vi) and Czech (cs) β€” mobile (checkpt-app) (#1502)
    • run a PTY command in a chosen working directory (#1406) (#1511)
    • URL-locale routing + hreflang for public pages (#1342) (#1519)
    • forward E2E-encrypted proxy envelopes between account devices (#1413) (#1516)
    • graceful-detection guarantees β€” walker budget, fault isolation, invariants, fixtures (#1466)
    • reject a non-existent or non-directory attach root path (#1405) (#1470)
    • Home screen β€” cross-device monitoring station (#1401) (#1484)
    • hierarchical "up" navigation β€” Location model + derived parent (#1441)
    • SSR the public surface β€” React Router 7 libraryβ†’framework mode (#1340) (#1396)
    • widen Linux compat β€” build Studio in an Ubuntu 22.04 container (glibc 2.35 floor) (#1440)
    • Ukrainian (uk) β€” apps/web namespaces + backend catalog + switcher (#1377) (#1458)
    • move approval-rules CRUD to website-api (#1359) (#1450)
    • match the console's palette to the web dashboard (#1446)
    • uk β€” Studio (#1379) (#1448)
    • Ukrainian (uk) β€” mobile (checkpt-app), incl. native OS strings (#1378) (#1447)
    • dev-login β†’ real account session + device-model correctness (#1412)
    • translation-delta harness β€” context packs + mechanical merge (#1392) (#1394)
    • localized product screenshots β€” one-command generation across all locales (#1418)
    • revamp the admin console's look and feel (#1417)
    • rebuild the auth backdrop as a rendered orbit plate (#1398)
    • rebuild the logged-in portal and auth screens (#1404)
    • E2EE slice 2 β€” recipient decrypt stack (key distribution, sealed transit, QR pinning, truthful EncryptionScreen) (#1317)
    • native Windows ARM64 (aarch64) Studio build (#1395)
    • Indonesian (id) β€” web + backend templates (#1369) (#1393)
    • clone any git URL in the new-project wizard (#1391)
    • version-support policy + floor-raise runbook + CI contract freeze (#1115) (#1389)
    • migrate web to httpOnly cookie auth (mirror admin cookie+CSRF) (#1364)
    • override-merge rule (D2, #902) (#1281)
    • complete the TS/JS framework + datastore registry (#425) (#1291)
    • C1 β€” Python rule pack (framework detection slice) (#898) (#1294)
    • reply to ticket submitter by email (#1014) (#1357)
    • structured feedback columns, attachments, triage list, throttle (#418) (#1212)
    • redesign auth screens + add Studio sign-up & password reset (#1296)
    • pre-launch site mode β€” public site with gated surfaces + notify-me waitlist (#1282) (#1283)
    • shared Pill chip + facet-counted filter pills across the console (#1314)
    • B2 β€” service detection + classifier (#896) (#1043)
    • Studio-era site polish β€” meta, sitemap, closing CTA, Clerk cleanup (#1211)
    • How It Works integration chip popovers + truthful ecosystem claims (#1297) (#1312)
    • two-device Studio harness + one-command db:reset (#1273)
    • handle Claude's /btw side questions in the terminal (#1210)
    • B1 β€” TS/JS rule pack, first end-to-end slice (#895) (#955)
    • live rule sync from quiet_hours.updated / approval_rules.updated (#1209)
    • sealed-envelope foundation β€” keys, enrollment, v2 codecs, rotation, push hardening (#235) (#1269)
    • BYO-relay serverβ†’server contract versioning + relay-min-version floor (#1278)
    • Hindi (hi) translation + language switcher β€” checkpt-app (#825) (#1279)
    • version adoption snapshots + admin Adoption view (#1171) (#1272)
    • Hindi (hi) translation + language switcher (#826) (#1264)
    • encrypt JWT signing private keys at rest (envelope encryption) (#878)
    • Korean (ko) translation β€” mobile, incl. native OS strings (#807) (#1217)
    • A3 β€” framework + datastore registries (#894) (#954)
    • override-only service fields + generated TS schema (#901) (#1102)
    • Korean (ko) translation β€” Studio (#808) (#1223)
    • client update gates β€” Studio mandatory-update wall + mobile force-update (#1270)
    • Polish (pl) for CheckPt Studio (#817) (#1267)
    • Dutch (nl) β€” mobile (checkpt-app) (#813) (#1266)
    • Korean (ko) translation β€” web, shared auth + backend templates (#806) (#1216)
    • thin-tolerant local-IPC seam + Studio restart nudge (#1248)
    • REST client contract β€” /version, UPGRADE_REQUIRED (426), client-BFF boundary (#1112) (#1263)
    • Hindi (hi) β€” web + backend templates (#1262)
    • org custom relay URL + Team+ management UI, propagated to Agent/Studio/mobile (#1084) (#1246)
    • Chinese (Traditional) zh-Hant β€” mobile (checkpt-app) (#828) (#1261)
    • Dutch (nl) for CheckPt Studio (#814) (#1260)
    • Polish (pl) translation β€” web, shared auth + backend templates (#815) (#1228)
    • zh-Hant β€” Studio (#829) (#1252)
    • Dutch (nl) β€” web + backend templates (#812) (#1243)
    • Italian (it) β€” mobile (checkpt-app) (#810) (#1249)
    • version stamping + minimum-version floor (#1111) (#1242)
    • zh-Hant (Traditional Chinese) β€” web + backend (#827) (#1247)
    • token ratchet β€” guard banning raw hex, text-[Npx], gray/palette utilities in app code (#1163) (#1244)
    • relay short-retention event log + vcs.backfill on Agent reconnect (#1237)
    • Italian (it) translation + language-switcher enable (#811) (#1236)
    • zh-Hans (Simplified Chinese) β€” mobile (checkpt-app) (#804) (#1235)
    • P2P proxy protocol negotiation & capability handshake (#1231)
    • mobile ThemeContext token adoption + fontSize/hex codemod (#1233)
    • German (de) translation + language-switcher enable (#794) (#1208)
    • infra manual-apply reminder + runbook procedure for pulumi env drift (#1165) (#1229)
    • Studio deploys from admin β€” stage/publish, changelog editing, live run watching + CDN verification (#1204)
    • Italian (it) β€” web + backend templates (#809) (#1234)
    • zh-Hans β€” Studio (#805) (#1207)
    • Studio single-channel β€” relay REST + pairing behind the Agent (#1189) (#1199)
    • add a target-id filter to the audit log UI (#1201)
    • i18n ja β€” mobile (#800) (#1200)
    • admin gray/small-text codemod onto design tokens (#1161) (#1206)
    • Turkish (tr) translation β€” mobile, incl. native OS strings (#819) (#1120)
    • Studio native in-app subscriptions via Stripe Elements (#1177) (#1193)
    • remote session start on an arbitrary online worker (#1182)
    • split-panel sign-in redesign (#733) (#1094)
    • wire SendGrid delivery for invitation emails (#1013) (#1057)
    • web gray-text + emerald-tint codemod onto design tokens (#1160) (#1197)
    • German (de) translation + language-switcher enable (#795) (#1185)
    • Simplified Chinese (zh-Hans) for web + backend (#802) (#1196)
    • Japanese (ja) translation + language switcher (#801) (#1198)
    • releases table + Studio history backfill + read-only admin Releases page (#1170) (#1184)
    • A2 β€” BREAKING schema adoptions from repo-scanner (#893) (#953)
    • Japanese (ja) β€” web + backend templates (#799) (#1190)
    • Studio type-scale + semantic-token codemod, uiFontScale setting (#1159) (#1186)
    • Brazilian Portuguese (pt-BR) for the mobile app (#791) (#1180)
    • native intent-based subscription API (#1175) (#1181)
    • publish versioned public checkpt/relay image + BYO migration & compat story (#1176)
    • German (de) β€” web + backend templates (#793) (#1183)
    • Brazilian Portuguese (pt-BR) for web + backend templates (#790) (#1168)
    • rem type scale + WCAG contrast fixes in design-tokens (#1166)
    • Brazilian Portuguese (pt-BR) for CheckPt Studio (#792) (#1167)
    • entitlements-in-token β€” plan/concurrency as signed claims (#1082) (#1154)
    • Agent lifecycle + quit semantics β€” pause/resume, quit warns + stops sessions (#1128)
    • resolve .checkpt/env.toml at session start β€” port allocation + name templating (#1117)
    • Russian (ru) translation for mobile (checkpt-app) (#822) (#1150)
    • Turkish (tr) translation β€” Studio (#820) (#1122)
    • Turkish (tr) translation β€” web, shared auth + backend templates (#818) (#1119)
    • French (fr) translation + enablement for mobile (#797) (#1121)
    • asymmetric identity verification β€” EdDSA relay-exchange tokens + identity JWKS (#1081) (#1127)
    • Russian (ru) translation for Studio (#823) (#1126)
    • port components/ui primitives to semantic tokens (#731) (#1087)
    • /operations service-health page + GET /admin/system/health (#1015) (#1059)
    • Russian (ru) for web + backend templates (#821) (#1124)
    • French (fr) for CheckPt Studio (#1116)
    • Studio tray, close-to-tray, and Agent service lifecycle UX (#1106)
    • French (fr) for web + backend templates (#796) (#1108)
    • Spanish (es) for mobile (checkpt-app) (#1103)
    • bundled daemon gets the production relay URL β€” service argv + spawn env (#976) (#1107)
    • Spanish (es) for CheckPt Studio (#1099)
    • execute .checkpt/hooks.toml lifecycle hooks (#1002) (#1089)
    • grant member role on organic app-account creation (#1104)
    • adopt ApiError error codes across the three frontends (#1034) (#1079)
    • add auth.* error codes to bff-auth throw sites (#1071) (#1073)
    • promote daemon β†’ standalone always-on Agent service (#1090)
    • Stripe webhook inspect + replay UI (#1011) (#1078)
    • coupon + promotion-code management (#1012) (#1072)
    • Spanish (es) for web + backend templates (#1088)
    • A1 β€” walker + .checkpt/ignore implementation (#892) (#949)
    • Agent proxies account-scoped relay reads; drop Studio's relay socket (#1018) (#1070)
    • CLDR-plural-aware locale key-parity guard + translation glossary (#1075)
    • worktree-backed session lifecycle (#1000) (#1007)
    • Homebrew cask + tap for macOS brew install --cask (#1063)
    • failed-payment queue β€” worklist for failed and past-due payments (#1061)
    • wire EditProfileScreen to the real profile endpoints (#971) (#984)
    • Issues tab + start-session-from-issue on real provider data (#655) (#961)
    • Codex + Gemini bespoke profiles β€” state detection, model lists (#998) (#1062)
    • allow one email to hold both an app and an admin account (#1056) (#1060)
    • drain i18n allowlist to zero (#772) (#1008)
    • extract user-reachable API errors to stable error codes (#832) (#1035)
    • Agent auth unification β€” single relay credential (device + account) (#1040)
    • derive ThemeContext palette from @checkpt/design-tokens (#335) (#960)
    • install affordances for missing agents (#997) (#1042)
    • PR list + status on real provider data (#656) (#1039)
    • business + engagement metrics API and Overview charts (#1041)
    • avatar pipeline β€” presigned S3 upload + OAuth picture seed (#968) (#980)
    • shared "On this page" rail across all docs pages (#1037)
    • ship the Profile tab on the real account profile (#970) (#981)
    • wire recipient-locale into data-plane notification paths (#1028) (#1038)
    • editable name + timezone on the Account profile (#969) (#983)
    • typed spawn-failure handling for missing agent binaries (#996) (#1036)
    • partial-update PUT /dashboard/profile + avatarUrl (#967) (#978)
    • /billing page + expanded UserDetail billing tab (#1032)
    • detect installed agent CLIs at startup (agents_detect + login-shell PATH) (#1026)
    • clickable Device detail page in Studio (#1001)
    • new-project wizard β€” real repo browser + clone from provider (#657) (#990)
    • drain backend-composed content into server locale catalog (#830) (#1030)
    • audit-log read endpoint + Operations audit UI (#958)
    • per-client rate limiting for DB-touching WS handlers (#461) (#950)
    • project_override table + IPC for layered config (#449) (#948)
    • GitLab provider β€” descriptor + PAT auth + read adapter (#661) (#859)
    • replace Overview stub with a real counts dashboard (#987)
    • shared agent registry + agent-typed sessions in Studio (#1006)
    • drain checkpt-app hardcoded strings to zero (#771) (#989)
    • flag-dropdown language switcher with full #764 roadmap (#1005)
    • root device identity in a device keypair (#925) (#940)
    • drop Supporter, rebalance to Community / Pro / Team / Enterprise (#974)
    • home + footer feedback, responsive nav fixes, page consistency (#982)
    • Linux CLI install script (curl | sh) + wire /download Linux tab (#939)
    • provision the platform admin team (Dave/Gulsah/Tulin) (#977)
    • error-code envelope + web/mobile/Studio error mapping with generic fallback (#831) (#916)
    • align landing widths, loosen spacing, add Help page (#972)

    Changed

    • the setpoint packs by a count, and a count is not what binds (#3802)
    • cross-instance routing and skewed-account fan-out, measured on the rig (#3696)
    • measure the per-task capacity constants at 5k+ sockets (#3682)
    • alarm on 5xx and latency, so something fires on the effect (#3622)
    • the connect-admission rate now derives from the socket setpoint it has to drain (#3616)
    • a fetch that lost its timeout, two churning contexts, and a sort with no documented ceiling (#3621)
    • a retention sweep that ranks the whole table, on every task, under the request timeout (#3620)
    • Rust License Gate stops rebuilding cargo-about and stops resolving a crate graph nobody touched (#3541)
    • size RDS and ElastiCache on their own drivers β€” DB down, Redis up (#3448)
    • record ci baselines from the first green workflow run (#3190) (#3432)
    • PERF-6 β€” relay load harness: connect storm + sustained streaming, nightly CI (#3306)
    • PERF-17 β€” the Lighthouse budgets could not fail, and the daemon paid a webview's codec (#3359)
    • scope the unit suite to the affected projects, and size the shard matrix to fit (#3343)
    • stop shipping ~9 MB the binary never uses (#3320)
    • alarm the resources that bind first, and stop re-serving stable endpoints (#3338)
    • a connection storm couldn't scale the relay out, and ~128 stalled sockets could OOM it (#3323)
    • coalesce output frames, memoize the remaining context values, virtualize notification history (#3316)
    • shard Unit Tests 4 ways β€” the suite outgrew its 30m cap (#3334)
    • PERF-15 β€” index & query hygiene, and the CONCURRENTLY pattern the repo could not use (#3305)
    • PERF-8 β€” memoize the relay-exchange entitlements card (#3298)
    • virtualize the SessionDetail transcript and memoize the WebSocket context value (#3296)
    • PERF-10 β€” the control plane gets the index the data plane already had (#3301)
    • let one task claim a due webhook event (#3297)
    • PERF-11 β€” WAL, a relaxed sync, and a sequence counter that already knew the answer (#3292)
    • clear the backend query/N+1 tail (#3291)
    • PERF-2 β€” bound every Stripe and OAuth request (#3274)
    • the changelog assembles once per TTL, not once per visitor (#3271)
    • bound how long a pooled connection may be held, not just how many (#3267)
    • index the three hottest lookups on the authenticated path (#3265)
    • the app parses one locale at boot, not twenty-one (#3264)
    • startDaemon() β€” main.ts becomes a module, boot and shutdown become ordered steps (#3085)
    • verify #1866's backpressure against a real congested socket (#3086)
    • extract remote and chat-run session start (#3047)
    • retire the 150-key local-ws handler map (#3049)
    • virtualize Approvals, Rules and Org Rules; fix the countdown re-render (#3045)
    • extract the MCP HTTP transport wiring (#3026)
    • extract the 34 proxy verb handlers, and register them through the feature table (#3014)
    • extract session start β€” gate, evaluate, register, provision (#3030)
    • extract the local-IPC request handlers (#3028)
    • extract the relay frame router out of connectWebSocket (#3007)
    • extract the services and tasks wiring (#2976)
    • extract the express routes into a router (#2990)
    • extract the relay plane β€” links, credentials, REST routing and sync wiring (#2982)
    • a feature registry, and local-ws dispatch that reads a table (#2971)
    • extract prompt create, answer, expiry and withdrawal (#2979)
    • finish the session-persistence extraction (#2968)
    • extract plan, keys, notification and MCP-connector wiring (#2958)
    • extract session environment, worktree lifecycle and hooks (#2948)
    • session kinds shrink to the shipped core (#2913)
    • a DaemonContext for the daemon's shared state (#2901)
    • a chunk no longer re-renders the terminal component (#2848)
    • the overflow sweep was one 20s timeout, Γ—16 β€” gate restored off the critical path (#2792)
    • drop the i18n overflow browser sweep from Code Quality (#2732)
    • source/connector abstraction for the issue seed picker (#2481)
    • delete the Apple billing plane (#2439)
    • extract session row mapping from main.ts (#2208)
    • extract device identity + auth headers from main.ts (#2207)
    • make @checkpt/ui importable from a tsc-built lib (#2108)
    • extract the peer publish fan-out from main.ts (#2105)
    • delete the org audit API surface, which has had no callers since #1445 (#2086)
    • map main.ts by subsystem seam, extract the pure leaves (#2071)
    • carry output chunks as base64 and batch the live push (#2081)
    • extract the remaining web/admin auth-surface duplicates (#2047)
    • bound what the relay buffers toward a slow consumer (#1866) (#2032)
    • cache the WS connect path (#1864) (#2020)
    • scope device-unpaired to the owning account (#1867) (#2028)
    • amortise the output rings' per-append prune (#1865) (#2019)
    • extract the shared ErrorBoundary and the auth-client test seam (#1973)
    • one device, one id, one table (#1907)
    • stop asking /auth/refresh for visitors who never signed in (#1775)
    • derive API image runtime dependency lists from the built bundle (#1740)
    • one shared env-doctor implementation β€” retire the TS rule copy (#1727)
    • adopt @checkpt/ui and close the type-scale gate exclusion (#1712)
    • one component layer for the web portal and admin console (#1676)
    • one service-kind vocabulary β€” align the crate enum onto the detector's names (#1650)
    • split FEATURES.servicesTasks into services + tasks (#1564) (#1631)
    • split ECS task roles per service (#1547)
    • cache session diff across tab switches β€” stale-while-revalidate (#674) (#876)
    • extract module-const UI copy to t() keys (#988) (#994)
    • drain i18n allowlist to zero β€” extract UI strings to t() (#770) (#975)

    Documentation

    • the plaintext audit names every table, and CI keeps it that way (#3834)
    • UAT-MOB-05 stops claiming an attribution the product never had (#3814)
    • the three guides omit RELAY_PUBLIC_URL, so every guide deploys a relay that cannot sign anyone in (#3784)
    • record the key-revocation walk result, both directions (#3737)
    • write down the perf postures, and stop two workflow headers arguing against them (#3610)
    • the live connect was walked β€” flip the surfaces that still say otherwise (#3498)
    • Team is self-serve β€” UAT-PAY-09 rewritten to the org-aware checkout #227 shipped (#3472)
    • the provider ship-gate's flag half closed on 2026-08-18 (#3475)
    • the UAT-X-05 blocker still said the relay stores plaintext prompts β€” #3082 fixed that on both planes (#3469)
    • the gate runbook still walked deleted QR pairing in four cases (#3429)
    • stop crediting deleted files, and guard against the next one (#3352)
    • the rollback tables now say what happens to the schema (#3336)
    • runbook for exercising the Studio version floor in prod (#3116)
    • the record of what the hosted relay sees (#3089)
    • record the in-app design, its inventory and its gaps (#3075)
    • UAT-X-03 describes the at-cap recovery that shipped (#3003)
    • audit every plaintext column the hosted relay stores (#3040)
    • the headless-Agent page documents unattended org enrollment (#3006)
    • the output contract promised a sessionId the failure paths don't have (#3008)
    • correct stale UAT expectations and the CSRF bypass rationale (#3000)
    • document not_mounted where the codes are documented (#2857)
    • spike β€” proxy, because the hook path fails open (#2802)
    • name the releases that made the renumber's precondition false (#2783)
    • design the Compare-plans comparison matrix content (#2379)
    • session-scoped MCP identity & log isolation β€” spike decision (#2401)
    • ratify the plan-gating matrix β€” three new gates, not five (#2305)
    • hosted on-demand compute go/no-go spike β€” NOT-YET (#2242)
    • say subset, not mirror β€” the local type omits allowCritical (#2170)
    • ratify the fr, es and ru register blocks and sweep the residual drift (#2048)
    • the three BYO platform guides omit the identity configuration (#2049)
    • spike β€” mobile multi-relay is N registrations, not N sockets (#2014)
    • claim shipped E2EE precisely β€” UAT gate, web copy, pricing, FAQ (#2013)
    • e2ee.md never learned about session.meta (#1979)
    • reflow the ro Β§5.16 length bullet so the span sits on one line (#1956)
    • drop the last "shared with the token-refresh path" claim (#1805)
    • map UAT cases to the tests that prove them (#1804)
    • drop the dead web profile from the self-host reference (#1769)
    • launch UAT manual test plan + project board seeder (#1713)
    • pre-flip validation report β€” go/no-go for projectDetection (#1656)
    • refresh tryout cheat-sheet to current main (G4) (#1693)
    • tryout kit + testing roadmap for real-repo validation (#1481)
    • the replication contract is hosted-only β€” and BYO can't enroll a device (#1625)
    • ratify Romanian (ro) register and conventions β€” Β§5.16 (#1610)
    • state the WSL story honestly on the requirements page and in a setup guide (#1476) (#1598)
    • document RELAY_KEK as required in every self-hosting guide (#1601)
    • Cloudflare TLS fronting guide + web docs page (#1515)
    • ratify vi (Β§5.14) and cs (Β§5.15) register blocks (#1488)
    • AWS deploy runbook + web docs page (#1299) (#1483)
    • WSL2 support investigation and decision (#1333) (#1478)
    • Railway deploy guide + web docs page (#1298) (#1442)
    • Expo Go no longer works β€” document the dev-client (EAS) setup (#1290)
    • renumber duplicate ADR 0008 β†’ 0016 + truthful contract docs (#425) (#1046)
    • ADR 0012 β€” API route extraction deferred for v1 (#440) (#882)
    • confidence model calibration methodology (#435) (#881)
    • composite/runbook decomposition strategies (#430) (#880)
    • ADR 0014 β€” env binding inference, cheap proxy v1 / deep scan v1.1 (#431) (#879)
    • readiness probe defaults per ServiceKind (#432) (#877)
    • Perforce provider design spike (#662 Phase 1) (#858)
    • ADR 0013 β€” .checkpt/ignore, adopt global / defer per-detector (#441) (#875)
    • ADR 0015 β€” override layer aligns with crates/checkpt-config (#434) (#874)
    • self-hosting guide (#753) (#963)
    • per-language detection roadmap + framework taxonomy (#433) (#872)
    • ADR 0011 β€” schema delta vs repo-scanner, adopt/reject (#439) (#883)
    • ADR 0009 β€” daemon RPC contract for detection (#436) (#871)

    Fixed

    • the turn hook named a CLI Studio never ships (#3870)
    • the migration task is sized for ts-node, and had grown past 512MiB (#3865)
    • close the six pinned KNOWN GAP defects in the org/user dialogs (#3857)
    • stop pkg from turning our subcommand into a missing file (#3861)
    • About's update check ran behind the panel it was opened from (#3860)
    • refuse re-parenting session publishes, and clean up the ones already filed (#3858)
    • drop device_authorized from the ordered activation funnel (#3854)
    • anti-phishing line, one-line security copy in every locale, and TTLs that cannot drift (#3850)
    • the stream-inspector service guard, and the last owed exec half (#3835)
    • give transactional email a layout, and take presentation out of the catalog (#3848)
    • the funnel probe asks about a person, and silence can fail again (#3849)
    • carry the natural-stop budget to the peer, instead of rejecting at 15s (#3837)
    • a shed frame asked the bus where a device it was holding is, and a stalled consumer was never reclaimed (#3809)
    • an org-owned device's presence reached nobody (#3826)
    • name a REVOKED machine that is still holding a concurrency slot (#3828)
    • a draft larger than one call could never be curated (#3822)
    • run git with the user's PATH, not launchd's four directories (#3824)
    • the reflection request encoded to zero bytes, so gRPC reflection never worked against a real server (#3813)
    • retire the offline incumbent in the same transaction as the write that takes its name (#3808)
    • the approval prompt says what identity is actually on the wire (#3804)
    • a Redis inspector resolves only services the project has (#3806)
    • the declared engine decides, and a contradiction refuses (#3760)
    • releases list goes live, and Studio's launch/sign-in stop hiding the app (#3743)
    • the prompt flow, the answer race, and a re-publish that re-notified every device (#3756)
    • a hung rollout must go red, not quiet (#3748)
    • don't let an absent projectId resolve to an arbitrary project (#3724)
    • close the local proxy route around the approval gate (SEC-8) (#3726)
    • release the push address on sign-out, and drop the dead device cache (#3738)
    • let MONGODB_URI satisfy its own service's name tiebreak (#3741)
    • the generator was capturing an empty Approvals screen (#3735)
    • every approval card said "Unknown device" β€” the join used a dead plane (#3739)
    • retention fixtures that cannot expire (#3684)
    • the organizations page and the status rail each claim something untrue (#3677)
    • the launcher could not find an agent the picker had just listed (#3666)
    • stop the four lies the golden-path walk found (#3675)
    • show what a curation pass is doing, and let an operator stop it (#3607)
    • the wizard's first step asked where the project should live and took one answer (#3660)
    • the DMG's branded window needs Finder, which CI had told the bundler to skip (#3664)
    • stop selling org rules that auto-approve nothing (#3654)
    • the org lost an owner where the insert could not promote (#3656)
    • assert cross-stack outputs at the read, so a stale prod-persistent says so (#3648)
    • nulling the submitter's id left their email and device id on the row (#3638)
    • the perimeter's 401 page is not an error message (#3617)
    • one brand casing, and a gate so it stays that way (#3599)
    • repair the download page's dead docs link, and the UAT case that fails correct behaviour (#3598)
    • reconcile device presence at boot, so a restart stops stranding devices online (#3596)
    • scope Overview's user counts to the app portal (#3597)
    • stop the pollers that deadlock truncateAll, and retry the ones that get away (#3552)
    • carry orgId and clientType to clients, so an org pool worker is not read as your own machine (#3579)
    • the at-cap refusal named nothing β€” its device lookup threw on every call (#3570)
    • build the approval authority after the store opens, so a pinned key survives a restart (#3564)
    • log why the relay rejected a session publish, not just that it did (#3561)
    • a duplicated Content-Type meant nothing was ever published to the relay (#3557)
    • the admin credential probe now only ever sees the perimeter (#3573)
    • the relay is on the internet, so a shared WiFi is not the answer (#3567)
    • WAFv2 rejected both descriptions, failing the prod apply (#3545)
    • the CSP guard reads prose in a comment as a second directive (#3569)
    • delete the translation crons and the impossible work they retried (#3505)
    • a runtime barrel import from @checkpt/shared reds two studio specs (#3565)
    • a migrated database is a schema, not somebody else's rows (#3560)
    • say whose prompt the session is awaiting (#3518)
    • the banner carries enough to report itself (#3526)
    • /help routed bug reports to a Featurebase workspace we don't own (#3514)
    • the shipped macOS bundle was SIGKILLed on launch β€” a restricted entitlement with no profile to authorize it (#3534)
    • an auth rejection is not a network fault, and a swallowed 401 is not an empty screen (#3496)
    • name the PostHog key, harden the secret write, and record posthogKeysWired (#3473)
    • stop the PTY geometry churn behind the duplicate banners (#3516)
    • main was red on three jobs, and none of them was a product bug (#3515)
    • failed panes say why they failed, and stop dressing as empty ones (#3481)
    • a missing git.diff path answered with a TypeError, not a reason (#3474)
    • a device env override never reached a started process (#3466)
    • a read-only .git leaked an absolute path past the redaction (#3471)
    • a typo in .checkpt/env.toml renamed the file away and read as empty (#3465)
    • deactivating a Google link did not sever it (#3463)
    • two build profiles targeted a staging environment that never existed (#3451)
    • move the admin roster onto Workspace identities (#3439)
    • the Redis SG locked out the BFF throttler β€” 26s customer login (#3444)
    • the hero dropped the desktop shot on every viewport under 1024px (#3442)
    • the wizard contradicts itself on service counts, and three Stack rows render blank (#3412)
    • the launch pane renders with no words at all (#3411)
    • the fair-use footnote published a rate limit wrong three ways (#3438)
    • the SAST baseline goes stale, so old PRs inherit main's findings (#3441)
    • production shipped blind β€” reporter unarmed, boundary silent (#3312)
    • the fingerprint runtime version was a fact about the machine, not the commit (#3393)
    • expo-speech-recognition 56.x is built for SDK 56, not our 54 (#3407)
    • centre the status pages, and drop the mascot name from copy (#3391)
    • an expired prompt read as the user's rejection (#3349)
    • the three #3151/#3158/#3170 follow-ups (#3370)
    • sharing a note re-seals it to the org (#3357)
    • the BYO Relay page claimed approval content skips the relay (#3348)
    • let the relay say WHY the id differs (#3362)
    • count the idle signal in parse telemetry (#3350)
    • gate the Multi-step filter chip behind a recorded flag (#3346)
    • list a deleted or binary file whose path contains " b/" (#3344)
    • measure the banner β€” rule out the stuck store, report what failed (#3364)
    • enforce on-device speech recognition, and grow the grammar rather than leave the device (#3342)
    • the dashboard drew a Redis floor with no Redis (#3347)
    • a repo-supplied exec env source needs a grant before it runs (#3318)
    • the inline drawer must not lock page scroll or trap Tab (#3315)
    • Redis connectors use ioredis subscribe + lowercase pipeline (#3235)
    • redirect /status to the external BetterStack status page (#3027)
    • probe the OS before handing a session a port (#3328)
    • the Doctor now says a template over a secret can't resolve (#3332)
    • own the page-scroll lock at module scope, not per modal instance (#3327)
    • keep the pagination control a constant width as the page moves (#3329)
    • guard the getCurrentWindow() that throws synchronously outside Tauri (#3310)
    • a terminal session row stays terminal (#3326)
    • stop claiming direnv sources .envrc.local, and say what does (#3335)
    • the task host must not hand its config blob to the task (#3302)
    • keep a file's line endings through open β†’ edit β†’ save (#3331)
    • revalidate the Files tree, and offer refresh on healthy rows (#3333)
    • serialize task starts per (project, session, name) (#3330)
    • refuse a charged account's delete cleanly, and stop orphaning four tables (#3307)
    • record devices_owner_label_unique in the schema snapshot β€” main is red (#3322)
    • the wizard walk is red because one Tauri call throws synchronously in a browser (#3317)
    • name the plan once and show it everywhere, make device names unique, and unrig the plan grid (#3263)
    • the customSounds flag gated nothing β€” the feature already works (#3311)
    • a degraded keystore no longer publishes plaintext prompts and session titles (#3309)
    • impersonation read-only is server-enforced, and the two elevated secrets are wired (#3285)
    • the revocation backstop looks devices up by id alone, which is no longer unique (#3308)
    • give Android push a real small icon instead of a white square (#3299)
    • name the unguarded locales, and stage the fr/tr imperative rules (#3017)
    • a device going offline is not a statement about its sessions (#3253)
    • a complimentary subscription ends when it says it does (#3255)
    • a remote answer navigates from the marker, or refuses to act (#3249)
    • voice listens in the user's language, not en-US (#3289)
    • a rota that starts in three days pages nobody today (#3288)
    • the production database cannot be destroyed by a routine apply (#3280)
    • patch runtime CVEs β€” protobufjs β‰₯7.5.5, validator β‰₯13.15.22 (#3281)
    • password reset kills every session, and cookie-mode stops leaking tokens (#3272)
    • the status page needs design v2, and custom CSS is paid (#3278)
    • regenerate the schema snapshot for the release-curation columns (#3284)
    • the phone re-checks what a tip says and where it points (#3259)
    • delete the RDS Proxy / read-replica flags β€” nothing read them (#3270)
    • every REST call gets a deadline, and relay URLs must be https (#3252)
    • stop claiming the /pair universal links we deleted (#3246)
    • the org screens ask for a namespace that exists (#3248)
    • the App Links contract is held together, and names both signing keys (#3238)
    • keep the band's verbs on screen, pin the gauge's height, and give React Navigation the app's palette (#3234)
    • take the last two purchase CTAs out of the shipped copy (#3100) (#3237)
    • add placeholder-parity gate; fix 7 machine-translation drifts (#3223) (#3233)
    • the export-compliance attestation matches the crypto that ships (#3165)
    • surface the GitHub cause behind release 502s (#3115)
    • one section identity across surfaces, and name the plan in Studio (#3096)
    • one organization, one invoice β€” Team is bought per seat (#3090)
    • the matrix omitted the one surface that always fires (#3088)
    • the mic always comes back, and gated accounts get no FAB (#3068)
    • draw an unreadable session title as a stand-in, not a name (#3065)
    • the status bar's "Online" count must be the online one (#3063)
    • Overview must not render a failed fetch as an empty state (#3062)
    • reap the session rows whose owner is gone (#3055)
    • one org, one charge β€” the founder is seat 1 (#3064)
    • a phone can open org-sealed content (#3058)
    • register PAT webhooks, per-registration secrets pinned to a repo (#3057)
    • repair the integration specs that rotted red (#3051)
    • five edge cases in the hash encoder and command resolution (#3013)
    • one unreadable chunk no longer fails the whole output.tail (#3046)
    • a partial profile update must survive both transpiles (#3044)
    • org seat counts drifted from Stripe with nothing watching (#3042)
    • a terminal-answered prompt records the option that was chosen (#3043)
    • reopen encryption status + notification history on the peer proxy (#3002)
    • order task defs after the secret VERSION, not the empty secret (#3035)
    • delete Trusted Origins β€” Smart Rules already owns auto-approve (#3009)
    • scope the session reconcile to the account that owns it (#2933)
    • normalize the plan name before walking to the next tier (#2934)
    • give a generator run an owner that outlives the screen (#2928)
    • state the E2EE claim precisely on sign-in (#2931)
    • stop reporting states that contradict the same screen (#2936)
    • the session Terminal says which nothing it is showing (#2937)
    • the org rules table's status column reads "Status", not "Enabled" (#2997)
    • attribute Procfile/compose processes by language, not by sort order (#2897)
    • declare Task.watch, and guard the registry order-dependence (#2944)
    • a fresh worktree can start the stack from the checked-in steps (#2988)
    • org quiet hours were resolved by the caller, so the two that couldn't name an org ignored them (#2987)
    • validate a project_local mount before it becomes a spawn cwd (#2970)
    • a watch teardown is addressed to its OWNER, not the mount (#2972)
    • the vcs category had delivery and no switch (#2962)
    • write the fs sketch's NUL separators as escapes, not raw bytes (#2926)
    • an org worker can answer the member who addressed it (#2960)
    • a notification setting that silently reverts, because two relay replicas cannot order a snapshot (#2957)
    • make @checkpt/cli publishable β€” bundle the bin, declare what the tarball requires (#2959)
    • the marketing navbar's desktop row fits 1280px in every locale (#2954)
    • dedupe Nx target servers by command, not by workspace (#2943)
    • org-worker sessions β€” the start paths that assume an account (#2949)
    • org workers can read their org's projects, and their cache can hold them (#2946)
    • the org dashboard renders prose again, not i18n keys (#2945)
    • canonicalize request-supplied UUIDs, and fix the split audit trail (#2905)
    • the overview's duplicate CTAs, silent checklist, and bare-email account menu (#2912)
    • name the five icon-only controls a screen reader could not (#2930)
    • clear a user's subscription rows before deleting the account (#2908)
    • deleting an org revokes its worker pool β€” in both deleters (#2894)
    • one top bar everywhere, and a drawer that stops shoving the app (#2917)
    • the screenshot harnesses' account session signs itself out (#2914)
    • model the org worker pool so dashboard-devices renders again (#2889)
    • read projectType from angular.json, not just the Nx layouts (#2887)
    • fingerprint project.json in the detect cache's fs sketch (#2888)
    • one-click adopt of an out-of-date local Agent + release version guard (#2841)
    • model GET /v1/orgs/:id/devices in the web screenshot mock (#2869)
    • the seed prompt nobody submitted, and five more from a golden-path walk (#2863)
    • write the .lproj files where the pbxproj points (#2861)
    • gemini's MCP registration never took β€” untrusted worktree (#2856)
    • name the ghosts before refusing at the device cap (#2847)
    • tidy three rough edges β€” Pro-gated copy, Inspector collapse, popped-out window inset (#2849)
    • detection you can reach with a projectId (#2846)
    • model GET /v1/replays so dashboard-security renders again (#2845)
    • don't offer Start for a per-session service with no session (#2828)
    • one control per option, answered by index (#2832)
    • stop repainting the whole grid on every keystroke (#2833)
    • a failed config init must not cost the user their wizard answers (#2823)
    • a collapsible Inspector, a header that stays on one line, and an ended session that says what happened (#2825)
    • resolve checkpt-config in the target dir cargo actually uses (#2821)
    • a session row that fits on one line, and an empty Env step that says which nothing this is (#2827)
    • show a change's patch on the Diff tab, and notice edits made outside the agent (#2826)
    • detect idle when Claude Code paints its composer placeholder (#2822)
    • ScreenHeader's style prop takes StyleProp, not a bare ViewStyle (#2831)
    • one top bar, a drawer footer that admits it exists, and Approvals filters you can see (#2829)
    • the 150% deploy cap deadlocks a service scaled in to one task (#2804)
    • key devices by owner, migrate legacy keys, reconcile enc_pub (#2777)
    • admin-api and website-api images also need the generated migration registry (#2794)
    • guard the throttler options shape, and stop telling operators auth needs no Redis (#2788)
    • vitejs/vite's packages/vite leaves the services list and types lib (#2689 + #2690) (#2697)
    • wire ANTHROPIC_API_KEY into the admin-api task definition (#2790)
    • macOS keychain password-dialog spam β€” data-protection keychain behind a shared access group (#2770)
    • pre-merge citation guard walks a cited epic's sub-issues (#2656) (#2781)
    • Copilot round 4 β€” a header that gave an order, and a comment that stated a falsehood (#2780)
    • connecting a code host belongs in Settings, and the source row stops wrapping (#2753)
    • read what a run script runs, whose framework it is, and what Nx says (#2588, #2589, #2590) (#2671)
    • a Mac's OS is macOS, not "web" (#2725)
    • unreadable is not missing, and Next needs a chosen path (#2773)
    • fail when a shipped migration's number changes (#2782)
    • New Project names the projects folder the clone will use (#2757)
    • the dashboard plan card states the plan the account is on (#2755)
    • localized iOS permission strings are actually wired in (#2759)
    • throttle counters are fleet-wide, and a code has a guess budget (#2771)
    • a database that fails to open must not report healthy (#2763)
    • repair the migration ledger the renumbering orphaned (#2778)
    • device setup stops offering view-only to Community (#2758)
    • four shipped-but-unreachable surfaces β€” voice FAB, Fleet/Rules headers, device icons, encryption honesty (#2747)
    • the releases backfill gets its own concurrency group (#2765)
    • a prod DB wipe no longer erases the Studio version ledger (#2731)
    • a session that has ended no longer renders as "Idle" (#2724)
    • the "Connecting…" gate can no longer hang silently (#2727)
    • detect questions that don't end the line, and stop calling a stalled session "writing code" (#2726)
    • Comp opens for a user with no subscription (#2723)
    • two machines on one account are tellable apart (#2728)
    • a failed publish can no longer advertise a release that doesn't exist (#2722)
    • publishing a version twice no longer dies on AccessDenied (#2694)
    • a dialog no longer freezes the window in place (#2693)
    • draw the device's own platform mark, everywhere (#2684)
    • the Agent could not start at all, and nothing noticed (#2685)
    • make the window's top band draggable on macOS (#2687)
    • stop CHECKPT_RELAY_WS pointing the socket at another relay (#2686)
    • the collapsed sidebar is the admin console's rail, not a gutter (#2688)
    • the site follows the visitor's OS theme, and says so (#2670)
    • the collapsed rail stops growing a horizontal scrollbar (#2677)
    • one scroll surface per terminal pane (re-land of #2641) (#2665)
    • tell "store still opening" apart from "store failed", and stop blaming the user's devices (#2664)
    • scope the key directory to the relay that vouched for it (#2643)
    • a prompt's life is its session, not a five-minute timer (#2650)
    • decide output.tail's decode by requester capability (#2633)
    • stamp the release version into the daemon package (#2649)
    • pairing sessions in the shared store, and a store outage that stops accusing the user (#2628)
    • the terminal always accepts input, and an answered prompt always leaves the inbox (#2570)
    • the biometric switches now lock something (#2620)
    • materialize sound channels for every relay, not just the current one (#2625)
    • stop the exchange banner contradicting the device it sits above (#2630)
    • guard completes the verification-gate vocabulary (#2582)
    • one shape from both arms of a routed config op (#2565)
    • the env write must carry the schemaVersion it read (#2600)
    • wait for the Agent before reconciling, and bound the retry (#2580)
    • make a created project's services startable (#2548)
    • four launch-readiness defects β€” foreground push, the update wall, dead links, a QA screen (#2562)
    • author the Face ID and photo-library purpose strings, in all 20 locales (#2566)
    • gate Custom Sounds and Voice β€” two surfaces that promise what they cannot do (#2563)
    • re-own the org quiet-hours rules written as user-owned (#2549)
    • promote the gRPC inspector off soon (#2556)
    • bound and retry every apt call so a sick Ubuntu mirror can't eat the job (#2553)
    • quiet hours that silently did nothing (#2532)
    • the four bugs the first packaged Windows run found (#2544)
    • promote the always-on headless agent off soon (#2545)
    • make the session terminal usable β€” raw keys, no re-wrap, no poll-lag (#2519)
    • surface the real Google sign-in failure, and simplify the auth forms (#2521)
    • every drawer entry goes somewhere, and nothing it renders is invented (#2493)
    • stop gating project creation on env vars, and make "Paste from .env" work (#2499)
    • enforce concurrency account-wide at the relay (#2491)
    • answer prompts at the relay tier, sealed, not through the source device (#2472)
    • SSR manifest scan read comment prose as an import, breaking every Deploy Web on main (#2476)
    • force-close a revoked device's sockets, whoever revoked it (#2463)
    • one PTY host, and an output ring that stores the byte stream (#2443)
    • classify the multi-window commands the locality guard missed (#2440)
    • make the window's top band one line, and the collapsed sidebar a real rail (#2412)
    • stop the PAT catch-all shadowing GitHub's connection routes (#2413)
    • re-read membership when the Agent's relay link comes up (#2341)
    • surface the real reason pairing failed, and let the daemon load SQLite (#2362)
    • the device tabs deserve a real empty state, and the header a real chip row (#2344)
    • name platform sets in prose instead of lowercasing the label (#2304)
    • a device derives its id from its signing key (#2243)
    • unblock the publish, un-empty the notes, pick platforms (#2272)
    • one About surface β€” route the macOS menu item to the modal (#2268)
    • point the win-arm64 bundler at signtool explicitly (#2247)
    • kind worker/scheduler-role scripts as workers, not the borrowed framework kind (#2223)
    • make PromptsAttentionAndEnvelope migration re-runnable (#2188)
    • drop the stamped session deviceLabel, resolve by id (#2213)
    • take the minor-unit divisor from Stripe, not from ICU (#2219)
    • report a declared workspace member the nested-repo prune drops (#2204)
    • merge exceptions per key, so a client cannot clear what it never sends (#2203)
    • negatively-cache dev-login failures to stop the request storm (#2187)
    • polyfill Intl.PluralRules for Hermes so plurals resolve (#2193)
    • open the multi-step wizard from the relay prompt store (#2194)
    • read session-screen prompts from the relay plane (#2196)
    • demote hyphenated one-shot scripts from the services list (#2155)
    • repair the hero glow and the dropped h1 clause, add a live agent feed (#2184)
    • prune nested repo checkouts so workspaces count once (#2154)
    • disambiguate repeated app chip labels in the wizard stack (#2173)
    • subscribe per relay link, and delete the socket nothing assigned (#2122)
    • stop exporting a secret pointer as if it were the secret (#2185)
    • stop selling an exception the pipeline cannot evaluate (#2165)
    • reposition marketing copy for Claude Code auto-mode default (#2147)
    • skip the detector pipeline when the recipe generates nothing (#2138)
    • pin bash on the linux-arm64 Agent job so pipefail works (#2137)
    • put the nine auth components' status colours on the semantic tones (#2117)
    • localize the dialog's dismiss label, and stop duplicating cancel (#2133)
    • make the wizard Env keychain promise honest (pre-flip minimum bar) (#2128)
    • collapse duplicate runtime chips (F2) and stop the detect-failed screen telling a success story (F3) (#2127)
    • define every colour utility, unify the Security controls, gate the class (#2083)
    • refuse device transfer instead of reporting success (#2076)
    • ApiKeyGuard fails closed and reads the header only (#2066)
    • delete the three unscoped bug-report reads (#2064)
    • sweep BillingPanel onto the type scale + text tokens (#2070)
    • surface the proxy egress counters at /health (#2061)
    • scope my-devices by the token, not by x-app-id (#2063)
    • fail closed when the caller or the device owner is null (#2052)
    • put the pinned Node 24 first on PATH via direnv (#2062)
    • convert request bodies to decorated DTOs so the ValidationPipe is not inert (#2046)
    • filter the inbox cache read to VCS rows in SQL (#2044)
    • task category chips read semantic tokens in both themes (#1815) (#2037)
    • localize the remaining mobile risk/state slug renders (#2039)
    • #1810 β€” enforce the Node 24 pin, guard its drift, make ABI mismatches self-explaining (#2034)
    • delete the two unscoped feedback reads (#1999)
    • remove docs claim of Pro-gated diff previews that do not exist (#1895) (#2027)
    • name the org whose relay you're on, and what isn't reachable from it (#2000)
    • refuse up front when there is no key, and record a failed fix run (#2018)
    • resolve the inbox row's project from its session, and drop the column nobody wrote (#1992)
    • administer an explicit org in the Relay panel, not a guessed one (#2011)
    • converge on answers from other devices, clear badge + tray (#2012)
    • a bad device credential no longer strands the shell (#2009)
    • the dashboard refetches when its tab comes forward (#1994)
    • gate the mock Session-kinds editor out of release builds (#1987)
    • pricing and billing name the capped thing a machine, not a device (#1990)
    • stop aapt choking on BCP-47 locale tags in Android builds (#1984)
    • read TypeORM's affected count for the prompt cap prune (#1986)
    • translate the 141 seeded register violations, empty the allowlist (#1969)
    • give the device-onboarding gate a way out (#1975)
    • real timestamps for migrations, not a +1e9 counter (#1965)
    • reconcile web/admin auth-surface drift and mark the forked files (#1970)
    • Settings β†’ Devices was a hardcoded fixture list duplicating DeviceView (#1964)
    • stop the .envrc template from executing pnpm db:seed (#1957)
    • catch the pricing locale JSON up to the #1921 machine-metering copy (#1962)
    • give project rename + delete an entry point (#1926)
    • stop taking a device id or an account on the caller's word (#1931) (#1949)
    • translate Studio billing UI for es/fr/pt-BR/ru/tr (#1836)
    • meter workers, not clients β€” a phone no longer consumes a device slot (#1921) (#1935)
    • mobile code-level English leaks β€” prompt risk/state slugs + encrypted placeholder (#1123, #1403) (#1837)
    • studio relativeTime() leaks English into translated timestamps (#1125) (#1838)
    • invert the relay to default-deny β€” register JwtAuthGuard as APP_GUARD (#1928)
    • localize the not-local fallback in useEnvFiles (#1927)
    • assign monorepoKind 'cargo-workspace' for Cargo [workspace] roots (#1762) (#1808)
    • co-rooted headline, port-less service dedupe, inert edit-kind button (#1774)
    • the device-cap 403 the daemon can parse β€” plus the three blockers found verifying it (#1904)
    • an Agent connection and its relay connection are two states (#1922)
    • window drag under modals, ultrawide backdrop, narrow status bar (#1901)
    • run a global ValidationPipe on the relay and website-api (#1920)
    • treat cursor moves as layout so Claude's spinner survives the ANSI strip (#1822)
    • the web dashboard tells a BYO account the truth about its own data (#1819)
    • honour the client-supplied device id in the keyed enrollment path (#1640) (#1816)
    • bound the revocation close reason to 123 UTF-8 bytes (#1817)
    • attach applies .git/info/exclude when .checkpt/ already exists (#1811)
    • force the detect live path on in release (mock DCE'd) (#1755)
    • give the root postinstall its script before every image install (#1806)
    • stop the coming-soon flash and the false state-mismatch on OAuth sign-in (#1772)
    • pin the portal URLs and make the apex canonical (#1773)
    • don't fail every Docker image build from the node-pty postinstall (#1741) (#1794)
    • the alerting scripts run under bash -e, which broke every guarded path (#1715) (#1788)
    • make every PTY spawn work, clean install and packaged sidecar (#1741) (#1782)
    • revert the partial react-router major bump that forked the router (#1735) (#1736)
    • copy libs/auth/types into the migration image (#1731)
    • watch every web build input, and guard the filter from drifting (#1730)
    • unbreak the API image builds (#1723)
    • treat Copilot's suppressed findings as a persistent open set (#1717)
    • derive the SSR runtime dependency list from the built bundle (#1720)
    • serve project issues and change requests for PAT-bound projects (#1302) (#1700)
    • stop leaking prompt title/summary/PTY context to the relay (#1703)
    • surface partial scans + collapse services/env in detect adapter (G1, G2) (#1689)
    • scan the scaffold-destination override in the detect effect (#1690)
    • strapi CLI row + guard one-shot/hook framework promotion (G3/G5) (#1698)
    • let the Studio capture use the simulated detector again (#1691)
    • refresh device claims on a jittered cadence (#1638) (#1684)
    • resolve a session's PTY env through the daemon (#1666) (#1685)
    • resolve plan coverage across org membership (#1637) (#1681)
    • fan control-plane events out across relay instances (#1497) (#1678)
    • make FakeRedisHub's virtual clock actually virtual (#1673)
    • regenerate stale makefile goldens to derived ruleset hash (#1651)
    • resolve local (excluded) .checkpt config from the repo root for worktree sessions (#1634)
    • unbreak main β€” align invariant suite + stale golden with composite-root synthesis (#1621)
    • keep the relay to one task and deploy it stop-then-start (#1493) (#1604)
    • parse Claude's welcome when facts sit beside the mascot art (#1597)
    • synthesize root workspace for composite-only repos + referential-integrity check (#1135) (#1138)
    • relay account-device surface + the fan-out that never worked; feat(#1321): blocking device-onboarding gate (#1562)
    • wire RELAY_KEK into the relay task def (#1590) (#1595)
    • capture Studio id/vi/cs β€” main is red (#1602)
    • derive locale lists from the apps, add a coverage gate (#1469) (#1572)
    • stop vendor update prompts reporting as parse regressions (#1571)
    • add cs/vi to the blog locale list, guard it in CI (#1545) (#1546)
    • point /issue board-add at project 12, not stale 7 (#1526)
    • pin Tailwind's scan root so SSR and client emit the same CSS (#1513) (#1532)
    • make the daemon URL runtime-configurable (#1475) (#1528)
    • give container legs a Node before pnpm/action-setup runs (#1520) (#1521)
    • allow the local-trust token to live outside the home dir (#1474) (#1518)
    • key rate limits on the real client IP, not the proxy (#1489) (#1517)
    • send the CSRF token on cookie-mode mutations so sign out works (#1504) (#1505)
    • give the app a real relay credential (#1463) (#1486)
    • run react-router typegen before the root solution typecheck (#1479)
    • localize the New Project stepper pip labels (#1419) (#1464)
    • require a JWT on the relay WS in every environment (#1462)
    • backfill missing uk approval-rule error translations (#1465)
    • light-mode sidebar logo, org switcher wording, security page layout (#1459)
    • dashboard feedback sweep β€” organizations terminology, truthful overview, working security page (#1445)
    • finish the Operations tab strip's token migration (#1444)
    • security page sessions table overflow β€” bounded UA column + shared parseUserAgent (#1443)
    • bundle daemon + config sidecars in Windows portable zip (#1388)
    • regenerate fastify-api and sveltekit-app goldens (#1362)
    • system requirements reflect what the shipped bundles enforce (#1330)
    • truth sweep β€” remove unshipped tier claims across pricing, docs, and FAQ (#1347)
    • legible light-mode auth + app-wide contrast sweep + sign-in redesign (#1287)
    • reconcile end-to-end-encryption claims with what actually ships (#1227) (#1286)
    • deny symlink traversal when the repo root realpath is unresolvable (#1098)
    • backfill relay/version keys into lagging locales (hi, zh-Hant, nl) (#1268)
    • admin β€” sweep residual accent/status utilities + literal white onto semantic tokens (#1250)
    • repair Studio de/ja locale drift β€” main is red (#1213) (#1215)
    • terminal pane blank on tab re-activation β€” keep mounted + re-fit/refresh (#873)
    • checkpt-app pt-BR β€” top up #1175 billing intent error keys (#1194)
    • de web β€” top up #1175 billing intent error keys (#1188)
    • pt-BR Studio β€” top up #1021 tray + agent-lifecycle keys (#1187)
    • set website-api FRONTEND_URL for Stripe checkout redirects (#1155)
    • preserve raw body for Stripe webhook signature verification (#1151)
    • stop packages/shared changes triggering the macOS mobile E2E (#1118)
    • transition sessions to awaiting-input on PTY quiescence (#671) (#986)
    • add missing fr Studio keys for tray + agent lifecycle (#1129)
    • re-run control-plane bootstrap after auth.provision (#664) (#985)
    • normalize nested set-array sorting + stub root id conformance (#425) (#1045)
    • wire Studio desktop OAuth clients into website-api task def (#1109)
    • bundle @aws-sdk/* runtime deps so the image boots (#1092)
    • drop the last stale FEATURES.vcs reference (#660) (#1093)
    • default VITE_CHECKPT_BASE_URL instead of hard-throwing on a blank page (#675) (#851)
    • widen docs content to footer edge, retune footer spacing (#1025)
    • retry only CSRF 403s; mark the token response non-cacheable (#1031)
    • stop token-refresh storm (single-flight + failure backoff) (#979)
    • restore Dock/keyboard focus for macOS dev runs + worktree stamp (#928)

    A11y

    • the axe gate had never looked at admin, at the public board, or at the two routes with live findings (#3628)
    • an overlay inside the screen it covers is not a modal (#3624)
    • the keyboard path into a clickable row is a real button (#3619)
    • the ratchet only ever walked the app it was born in (#3618)
    • drain the last 60 raw literals off the ratchet (#3537)
    • drain the 119 raw-color literals the contrast guard cannot see (#3543)
    • drain the last 63 raw-palette utilities off Docs and the portal banners (#3542)
    • drain the last 10 raw literals in the shared auth UI (#3539)
    • axe runs against the rendered DOM in the one check that gates a merge (#3361)
    • skip-to-content link, field-level error association, and the missing h1s (#3293)
    • make aria-modal true on the thirteen surfaces that claimed it (#3287)
    • the icon-only controls say what they do, and the ratchet keeps them saying it (#3258)
    • the high-visibility pages leave the raw palette (#3240)

    Deps

    • the shipped subset is derived on every run, not remembered once (#3717)
    • the image already installs the shipped closure β€” now it audits it (#3720)
    • most of the alert stream was about files that are not the product (#3640)
    • the prod audit is a watch, permanently β€” and here is why (#3641)

    Dr

    • give the recovery drills a cadence, a named owner, and a dataset column (#3699) (#3761)
    • name the KEK custody window so raising retention shows up in the plan (#3734)
    • a retired KEK must outlive the newest backup that needs it (#3649)
    • the feature was built, and pointed at nothing (#3634)
    • the staleness probe watched the website, not the tier that matters (#3633)
    • DR-4 β€” the rollback is rehearsed, and the runbook stops calling it a claim (#3581)
    • Drill B β€” the vault restore is faster than PITR, and its metadata does not round-trip (#3477)
    • the restore path is rehearsed, and the backup history now outlives the instance (#3383)
    • one env var could turn every merge to main into a prod wipe (#3354)
    • DR-2 β€” a delete you can take back, and a copy of the key that cannot be re-derived (#3300)
    • incident response β€” runbook corrected, alert-delivery state on record, incident runbooks sketched (#3282)

    I18n

    • the org invitation email speaks the reader's language (#3241)
    • finish applying "CheckPt Agent" β€” 40 shipped strings said "daemon" β€” plus the locales/** guard (#2729)
    • route the Settings tab rail through t() (#2068)
    • route project + session tab labels through t() (#1785) (#1800)
    • localize docs system-requirements table rows (#1336) (#1508)
    • pl β€” mobile (checkpt-app) (#1276)

    Infra

    • website-api can call Anthropic, and says at boot whether it can (#3652)
    • SSR hosting for public web β€” Fargate origin + CloudFront/caching (#1341) (#1477)

    Legal

    • the pack's own subprocessor tables were two vendors behind the list (#3685)
    • the privacy policy now says staff can sign in as you (#3637)
    • mobile telemetry is crash-only β€” replay off is the decision, analytics off until consent exists (#3453)
    • write every legal document CheckPt needs β€” counsel checks them (#3384)
    • the subprocessor list named neither vendor adopted since it was written (#3355)
    • an honest privacy policy β€” subprocessor list, DPA path, real company name (#3245)

    License

    • a NOTICE was carried only if the manifest admitted to Apache (#3455)
    • ship third-party attribution with every distributed artifact (#3325)
    • drop the AGPL-3.0 ua-parser-js@2 before it ships (#3239)

    Ops

    • build the activation funnel and prove it populates (#3770)
    • the apt retry deleted the directory apt needs, so every retry after the first was decorative (#3751)
    • watch the crash stream, and gate the accessibility tree (#3742)
    • the Studio E2E gate called "the deps never installed" a test failure (#3749)
    • a placeholder Stripe key survived every probe we had (#3716)
    • the native gate never compiled to completion β€” disk, then timeout (#3683)
    • make the coverage-reachability claims enforceable, not remembered (#3504)
    • nothing compiled native code, so a cross-SDK package merged green (#3454)
    • give mobile a bundle gate, and fix the break it found (#3360)
    • the path-filter guard now covers the test workflows too (#3351)
    • give mobile a compile gate on PRs, and inventory the rest (#3345)
    • say where codecov's floors actually apply β€” trunk, not PRs (#3341)
    • the wizard walk gates PRs, and its stale gate assertion is gone (#3251)

    Polish

    • lay out honestly on a tablet (#3686)
    • store-submission sweep β€” zh script split, RECORD_AUDIO, one brand casing, dead route, font clamp, stale docs (#3314)

    Sec

    • the BYO pages omit what the relay cannot boot without, then say to skip it (#3774)
    • the flow log kept the refused half and dropped the useful one (#3773)
    • three credentials and one ALB attribute with no owner (#3772)
    • a key removed from the seed was never removed from the account (#3701)
    • the Homebrew tap PAT is the credential SEC-19 retired, still live on the install path (#3703)
    • we documented a required secret nothing reads (#3704)
    • cover the app-switcher snapshot, and re-lock after a minute away (#3736)
    • scope the deploy role's CloudWatch Logs read off * (#3702)
    • the admin plane gets its own key, and the release PAT goes away (#3576)
    • an incident now leaves a forensic trail β€” ALB access logs, VPC flow logs, CloudTrail (#3575)
    • SEC-4 β€” the admin plane stops being a committed password (#3479)
    • RELAY_KEK becomes a keyring, and rows say which key wrapped them (#3464)
    • derive the DR seed image from the live task definition (#3450)
    • the publish DTOs still advertised plaintext payloadVersion 1 (#3431)
    • pin the Clerk secret key now that the application is deleted (#3418)
    • SEC-24 β€” a SAST that runs, and a secret scan that sees history (#3403)
    • SEC-24 β€” pin every action, drop root, stop trusting a URL (#3404)
    • pin the prod deploy role to main + a gated production Environment, drop its secret read (#3353)
    • SEC-8 β€” the process asking for permission could grant it (#3365)
    • SEC-18 blast radius β€” immutable ECR, per-service SGs and execution roles (#3379)
    • a push hint could point the app at any relay, which harvested an account-scoped token (#3363)
    • a compromised org pool worker could reach every device of every member who used it (#3356)
    • SEC-1 β€” bind device ids to identity keys on key-directory ingest (#3303)
    • SEC-21 β€” desktop hardening: tokens to the keychain, command_spawn takes a recipe, CSP narrowed (#3324)
    • SEC-20 β€” the Android backup that prebuild turned back on, and a posture that lived in an optional argument (#3321)
    • SEC-11 β€” CSP was report-only, and enforcing it would have broken the app (#3304)
    • SEC-23 app hardening β€” session-bound CSRF, step-up re-auth, invite binding, envelope AAD, daemon keychain (#3295)
    • SEC-22 relay hardening β€” fail-closed org guard, view-only exec gaps, sealed run/inbox detail (#3294)
    • gate analytics and session replay on cookie consent (#3275)
    • a refresh token is not an access token, and the WS credential leaves the query string (#3276)
    • SEC-7 β€” the daemon served session output, inbox and identity to the LAN unauthenticated (#3277)
    • audit the denials, and stop a wipe erasing the trail (#3268)
    • the admin portal has no signup and no CLI grant (#3273)

    Security

    • ship a content security policy, replacing csp: null (#2217)
    • gate Swagger out of production + security headers on the web/admin origins (#2146)

    Tooling

    • the suppressed block is a heading, so the documented parse found nothing (#3778)
  5. 0.1.4-test.9

    9 september 2026
    Details

    What's New in v0.1.4-test.9

    Added

    • give App Review a way to actually exercise the app (#3771)
    • an org-owned machine opens a read-only Studio, not a sign-out (#3839)
    • a device page answers what is RUNNING on the machine, not what projects were opened on it (#3825)
    • the approval proof survives the pipe (#3817)
    • Personal or Organization at device setup (#3796)
    • settings was a 1000x680 dialog that never grew β€” it is a screen now (#3779)
    • approval-signature groundwork β€” content commitment and key publication (#3763)
    • give a device to the org β€” userβ†’org ownership transfer (#3752)
    • spoken replies β€” state the scope, cooperate with screen readers, respect quiet hours (#3769)
    • the two drawer entries that led nowhere, answered (#2487, #2488) (#3754)
    • the activation events β€” device paired, first session, first approval (#3698)
    • the public board screens what reaches it (#3674)
    • Studio's events were anonymous β€” they now carry the account (#3687)
    • Studio had no analytics gate at all β€” now nothing is captured before consent (#3661)
    • a load target that can actually be a fleet (#3650) (#3655)
    • Integrations was four screens of one flat list β€” split it into three rail pages and collapse the connect forms (#3670)
    • consent was an island in AsyncStorage; it now follows the account (#3669)
    • the web activation events β€” signup through subscription (#3663)
    • what plan is this user actually on, and who owns Lockdown Media (#3642)
    • analytics consent belongs to the account, not to one browser (#3623)
    • observe whether prod has been applied, daily and without credentials (#3644)
    • every event was an anonymous device β€” web now identifies the account (#3639)
    • voting on the public feature board (#3577)
    • declare the iOS privacy manifest the binary was shipping without (#3574)
    • the public board's front door (#3580)
    • brand the Windows installer and localise its chrome (#3586)
    • a public roadmap anyone can read, logged out (#3550)
    • human control of the public feedback board (#3558)
    • the event taxonomy β€” names are a schema, so decide them once (#3535)
    • put Dave and Gulsah in Lockdown Media Inc. on the Team plan (#3538)
    • the generator grid gets its brand marks (#3517)
    • branded drag-to-install window for the macOS DMG (#3540)
    • evaluate approval prompts against stored rules and auto-approve on match (#3494)
    • feedback votes table + publication/moderation columns (#3510)
    • in-app analytics consent control (#3478)
    • honour Global Privacy Control β€” the banner asked people who had already answered (#3468)
    • backend exceptions were being reported to nobody (#3457)
    • rebuild the Sessions control bar, and make the launch wait say what it is (#3449)
    • Stripe Tax, behind a flag, so the registrations stop blocking the code (#3408)
    • the admin console has no password (#3358)
    • reclassify service ↔ task in the wizard, persisted as an override (#3340)
    • record the over-cap state a downgrade leaves, and tell the account holder once (#3319)
    • Orbit takes over the 404, error and suspense screens (#3256)
    • a kill switch that does not need a deploy (#3290)
    • async release-notes curation, visible outcomes, and a workable editor (#3266) (#3269)
    • watch production between deploys, and stop claiming it's up (#3095)
    • record ToS/Privacy acceptance at signup, and gate age (#3243)
    • make the promised data export real (GDPR Art. 20) (#3242)
    • brand marks for every framework, service engine and agent (#3247)
    • the push prompt is asked once, with a reason in front of it (#3250)
    • the account-level notification class β€” billing and security events reach a person (#3097)
    • the review screen runs on real data, and the flag it hid behind is gone (#3176)
    • hands-free mode β€” a screenless conversation (#3076)
    • seal the notification-history body at rest and on both read planes (#3117)
    • the six machine-origin events reach the bell (#3087)
    • serve per-check CI detail and PR review comments (#3093)
    • a daemon secret.* op family, so env secrets land on the device that reads them (#3070)
    • gate notification routing, email cadence & chat-started tasks (#3084)
    • stamp every account-scoped cache, defer an unreadable approval, and give a service runtime an owner (#2853) (#3080)
    • prove a prod deploy worked, don't assume it (#3069)
    • PR queue kanban + swimlane layouts (#274) (#3066)
    • DEK-encrypt the digest queue's content and cut its TTL to 16 days (#3056)
    • give org-owned webhook destinations a surface (#3048)
    • tell a member what they lose before they confirm leaving an org (#3050)
    • discover compose files and Procfiles outside the repo root (#2899)
    • cloud worker recipe + ephemeral lifecycle (#3022)
    • give inbound chat a UI, and a /link-chat page that isn't a 404 (#3024)
    • prove the phone's device id instead of asserting it (#3029)
    • the phone can say where a project's events go (#3021)
    • surface delivery failures β€” a dead channel is announced, not just counted (#3004)
    • human-quality service display names (#2898)
    • auto-checkpoint every turn β€” the undo point is always one turn back (#2980)
    • the connector gate resolves per row, from that row's owner (#2999)
    • a datastore pass, so Workspace.orm stops being inert (#2941)
    • the wizard's Project name says it is required (#2938)
    • compose parser v2 β€” YAML lib, extends, IPv6, override merge (#2903)
    • the three rungs Studio could see, and the fourth it sent you to your phone for (#2994)
    • a session on an org worker runs as the member who started it (#2974)
    • connector docs + the ecosystem chips #1312 took away (#2964)
    • gate connector management β€” one key, owner-scoped, on three planes (#2963)
    • a routing rule matches a SET of events, not one category (#2983)
    • desktop notifications, and the toast you don't get for the window you're looking at (#2975)
    • org workers on a BYO relay β€” redeem enrollment through the identity boundary (#2973)
    • custom webhook destinations β€” outbound HMAC signing, an SSRF guard, and per-destination health (#2953)
    • an org connector switched off blocks the server for everyone (#2965)
    • WebSocket/SSE inspector β€” watch on inspector.read, frame send behind inspector.exec.ws (#2743)
    • the phone says where the work runs, and why one more will not start (#2956)
    • project portability tiers β€” pinned projects, a project-first picker, and graduation (#2947)
    • run the D2 override layer inside detect() (#2896)
    • resolve nr script-runner indirection (#2868)
    • N-entry per-agent MCP config provisioning (#2940)
    • one VCS event, one post per destination (#2900)
    • geometry that outlives the PTY, and a barrier for "done writing" (#2951)
    • resumable sessions β€” pick your work back up after a crash, reboot or shutdown (#2935)
    • the concurrency wall names what is running, and offers to stop one (#2950)
    • connector management β€” catalog, scopes, per-project opt-out, audit (#2932)
    • every advertised channel real or removed β€” email wired, SMS deleted, desktop withheld (#2927)
    • promote the runtime DetectionResult validator into the package (#2890)
    • rspack and rsbuild are framework CLIs, not tool tasks (#2866)
    • decompose a nested composite, and let chain ambiguity survive (#2904)
    • at-cap recovery β€” the refusal names what is running, and offers to stop one (#2925)
    • Studio sidebar goes project-first; devices become availability metadata (#2751)
    • wire the connector gate β€” proxy, approvals, deny handling, audit (#2842)
    • safe shutdown β€” one "you have active sessions" treatment at every boundary that means leaving (#2895)
    • one decision engine β€” reconcile the two routing planes, delete the loser (#2893)
    • tell the other phones when a sound changes (#2891)
    • shared-worker credential resolution β€” org-owned VCS connections, the clone ladder, and a preflight (#2858)
    • device-code enrolment replaces pairing (#2844)
    • gate session sharing & export at Pro (#2852)
    • an org's worker pool on the web, with owner/admin revoke (#2854)
    • the event catalog, and the events that were never raised (#2631)
    • rebuild the session top bar as one aligned row (#2855)
    • org worker slots β€” a pooled entitlement, and an org that pays for it (#2801)
    • surface session export + share from the drawer (#2354) (#2837)
    • curated connector catalog + BYO, with row provenance (#2843)
    • org workers become routable β€” owner-scoped proxy plane + a picker that names them (#2738)
    • start Add service from a component picker, not a blank form (#2830)
    • one release button, a dialog that fits, and platforms you can actually combine (#2791)
    • connector credentials β€” keychain storage + device-local OAuth (#2754)
    • shareable read-only session replay links (#2756)
    • start an agent task from Slack or Discord (#2784)
    • a rail that discloses instead of hiding, and panels that actually draw (#2803)
    • gate session checkpoints behind Pro (Class B daemon) (#2772)
    • an org worker can publish a session, attributed to the member who started it (#2740)
    • session gist β€” what a session is about, and where you left off (#2752)
    • org governance β€” permitted backends, no-literal policy, reference audit (#2750)
    • external secret managers via vendor CLI + .checkpt/env-sources.toml (#2746)
    • sibling-worktree and sibling-project providers (#2741)
    • gate the inbound VCS webhook pipeline at Pro (vcs_event_stream) (#2760) (#2769)
    • approve/deny an agent action from Slack or Discord (#2749)
    • infer project-vs-session scope from worktree variance (#2739)
    • auto-pull on session start β€” clone+attach on the target device when unmounted (#2572)
    • markdown session summary + diff/patch export (#2737)
    • every restore takes a safety checkpoint first (#2735)
    • MCP connector registry β€” entity, CRUD, scoping and distribution (#2629)
    • account-wide merged project list with per-project device availability (#2721)
    • terminal recording β€” a session's output ring as an asciicast (#2576)
    • inbound Slack + Discord apps and chat identity mapping (#2654)
    • session-drawer Checkpoints UI (#2328) (#2638)
    • MCP server inspector β€” catalog on inspector.read, tool call behind inspector.exec.mcp (#2645)
    • inbox triage on the relay tier β€” snooze/dismiss actually leaves the feed (#2640)
    • BYO relay β€” the operator sets the limits, not the hosted plan (#2574)
    • the projects folder is editable from Settings (#2675)
    • test a clone URL before cloning it (#2679)
    • delete a release that never shipped, and give its number back (#2674)
    • one empty-state component, even hero tiles, always-four quick actions (#2662)
    • seed the default Studio tips catalog (#2660)
    • honest local-folder copy, empty-repo default, and explained-disabled controls (#2663)
    • fleet parse telemetry β€” production as the ultimate canary (#2637)
    • lift the dark ramp off flat black and give headers their own band (#2659)
    • serve web's auth-gated screens from a mock, and gate the surface (#2634)
    • org workers resolve their own relay map (#2636)
    • sortable releases table, last-edited attribution, and layout fixes (#2646)
    • session-attributed notes, drop the notes flag (epic #2099 exit) (#2618)
    • the daemon evaluates approval rules (#2639)
    • GraphQL inspector β€” introspection + a query runner that is provably a read (#2537)
    • seal org-hosted session content to the org, not one account (#2624)
    • checkpoint ops β€” restore, delete, and the four daemon verbs (#2619)
    • configure expo-updates so launch binaries are OTA-capable (#2602)
    • org enrollment tokens + checkptd pair --org-token (#2575)
    • voice steering β€” approve or deny with a spoken instruction, on-device (#2547)
    • wire Custom Sounds end to end and remove its flag (#2567)
    • queue / broker inspector β€” Kafka, RabbitMQ, BullMQ, NATS (#2539)
    • detect services from Nx project.json targets (#2222) (#2592)
    • Linear connector (issueβ†’session) (#2578)
    • rotate the org content key forward, on an authenticated declaration (#2554)
    • inbox snooze and dismiss actually work (#2596)
    • the Sessions tab as cards or a table, with search and filters (#2533)
    • checkpt agent β€” CLI surface over the Agent's OS-service machinery (#2571)
    • audit the data_inspectors gate against the verb registers β€” derived, never listed (#2569)
    • fail the PR that closes a cited matrix issue, before the merge does (#2577)
    • pairing screen offers Studio and terminal, not CLI only (#2564)
    • unlist post-MVP coming-soon rows for launch; promote GitHub Projects (#2360) (#2573)
    • only the device running a dev server can name its address (#2536)
    • GitHub Projects (v2) connector (issueβ†’session) (#2541)
    • gRPC inspector β€” reflection schema browser + gated call builder (#2540)
    • org-owned devices β€” ownerType/ownerId, guards and counters (#2518)
    • create flow stops asking for a directory β€” placement defaults into the projects root (#2535)
    • resolve entitlements from the owner of the thing being worked on (#2538)
    • serve the plan catalog to Studio, and ask for a billing region instead of a currency (#2546)
    • env sources β€” persist the wizard's env, and sweep every place a value can come from (#2528)
    • version-skew UX for a standalone Agent Studio doesn't own (#2534)
    • org keyrings reach every door, and stop growing quadratically (#2516)
    • revamp Home, add a system-metrics tile, and fix the empty Inbox (#2530)
    • Jira connector (issueβ†’session) (#2501)
    • API viewer β†’ Postman-like β€” collections, environments, history, auth, import/export, assertions (#2494)
    • the entire agent-facing MCP surface is Pro (agent_mcp_tools) (#2517)
    • Redis viewer power β€” value/TTL edits, pub/sub monitor, memory stats, export (#2509)
    • a loopback Agent that isn't co-located stops being treated as this machine (#2515)
    • per-device projects root β€” onboarding step + daemon settings store (#2511)
    • per-owner entitlements claim, and no back-compat for relays that don't exist (#2497)
    • Home, Inbox, Sessions and Devices as the phone's four tabs (#2484)
    • MongoDB inspector β€” collections + document browse (#2492)
    • mutating MCP control tools ride the approval flow (#2498)
    • record who started a session, from the channel and not the body (#2500)
    • remote-aware project picking for non-co-located Agents (#2490)
    • remove the Community cross-device approvals cap (#2483)
    • brand the app icon and splash (#2482)
    • Postgres viewer power β€” SQL editor, EXPLAIN, export, ER diagram (#2464)
    • one subscription per account, on every plane (#2428)
    • wire the Notes tab to the relay's real sealed notes (#2467)
    • give mobile the console's semantic palette (#2468)
    • the relay derives the device id, it no longer accepts one (#2478)
    • make VCS provider availability config, flag and secret together (#2474)
    • guard the Compare-plans matrix localization, and fix nine leaks (#2475)
    • mail catcher inspector β€” four products behind one closed op union (#2453)
    • update dialog renders localized release notes from notes.json (#2454)
    • one scrollbar across web, admin, Studio and mobile (#2414)
    • session-scoped MCP inspector query tools (read-only by construction) (#2465)
    • mobile deploys from admin β€” EAS build + internal-track submit, watched end-to-end (#2466)
    • scaffold a new project straight into a repository (#2461) (#2470)
    • presence is per relay β€” render known-but-not-connected (#2460)
    • MySQL/MariaDB inspector behind the existing db verbs (#2451)
    • personal vs org allowances, and the owed BYO qualifier (#2459)
    • gate on resolved feature entitlements, not the plan tier name (#2457)
    • session-scoped MCP control tools β€” services, tasks, checkpoints, env doctor (#2455)
    • tell the old audience when a row stops being theirs (#2212)
    • gate issue-seeded sessions behind issue_seeded_sessions (#2446)
    • the mutating inspector capability, per family (#2450)
    • merge on read across relays, with legible degradation (#2445)
    • session-scoped MCP observe tools β€” logs, status, ports, diff, deps (#2395) (#2448)
    • changelog renders localized summary + expandable details from notes.json (#2447)
    • gate the data-plane inspectors behind data_inspectors (#2449)
    • config-driven Compare-plans comparison matrix (#2432)
    • force on re-detect + last-known digest on cold open (#2273)
    • confidence calibration pass β€” reliability table, ECE, H1/H2/H3 verdicts (#2274)
    • ship as a free companion, remove all in-app purchasing (#2438)
    • seal project_notes title+body to the author's devices (#2431)
    • pick a device, get that device's agent list (#2433)
    • inject the session-scoped MCP endpoint at agent spawn (per agent type) (#2437)
    • inspector framework β€” an engine signal, a viewer registry, and a shell (#2426)
    • publish structured notes.json (all locales); demote latest.json notes to transport (#2434)
    • chunked transport for mobile image input over the proxy plane (#2415)
    • gate the PR / change-request queue behind change_request_queue (#2429)
    • apply the Appearance editor settings to the real editor (#2430)
    • sweep the Tauri commands that answer about the wrong device (#2419)
    • release_note_translations β€” fan-out on finalize, trailing, human-review locks (#2316) (#2427)
    • extend the PlanFeatureKey gate framework (#2361)
    • multi-window launch configurations β€” scoped windows, per-window scale, saved layouts (#2388)
    • MCP server scaffold with per-session token auth on /mcp/v1 (#2408)
    • wrap the org key into the invite, unwrap on accept β€” no online teammate required (#2387)
    • admin-managed "Did you know" tips (#2418)
    • say so when a session ends or a project is saved or deleted (#2417)
    • release curation review UI on ReleaseDetail (#2315) (#2403)
    • route the session diff through the daemon so remote sessions reach parity (#2400)
    • AI curation pass over a release's draft notes (#2314) (#2343)
    • give sign-in and first-run the Studio scene (#2381)
    • deploy-console redesign for the release detail page (#2271)
    • session Files surface + open-a-changed-file from the diff lists (#2308)
    • make Expo Go a working dev mode, with banners for what's off (#2312)
    • stop wiping the database on deploy, launch it from the console (#2267)
    • detect.* LRU + SQLite cache, force, and detect.summary (ADR 0009) (#2227)
    • project Files tab on the real mount root β€” removes FEATURES.filesBrowser (#2245)
    • deliver org invitations by email, and let an admin resend one (#2209)
    • make the Services step tell the truth, and let the user correct it (#2206)
    • bind getCiStatus for Bitbucket and Azure DevOps (#2216)
    • Bitbucket + Azure DevOps webhook event adapters (#2210)
    • CodeMirror 6 and the shared FileEditor component (#2225)
    • org content key + kid-addressed keyring (#2215)
    • one device↔device plane for session I/O β€” and a gate so it can't rot again (#2158)
    • file.* op family β€” list, read and write a project path (#2218)
    • multi-currency subscriptions across 19 launch currencies (#2112)
    • env secrets actually resolve β€” OS keychain read + write, resolved late so nothing persists (#2198)
    • make the phone the hero below lg, and stop shipping the desktop shot to phones (#2186)
    • merge semantics on read paths β€” union devices and approvals, qualify projects by relay (#2079)
    • notes get an owner and an org β€” private by default, promoted to share (#2163)
    • close the mobile parity gap β€” Projects, Inbox, org templates, Home (#2183)
    • fleet view β€” every agent session across every device on one screen (#2174)
    • detector-wizard fixes (#2141, #2140, #2145) + Studio chrome pass (#2153)
    • materialize context files, and an ownership ledger to make it safe (#2131)
    • exhaustive route-crawl mode (OVERFLOW_MODE=all) (#2058)
    • seeded session fixture for auth-gated screens (#2056)
    • confirm ownership transfer, and only ownership transfer (#2116)
    • section-scoped value-vs-en leak gate (#1835)
    • stage releases by bump, with the server owning the version (#2110)
    • connect-on-demand relay sockets, keyed by relay (#2082)
    • native Android billing via the Stripe Payment Sheet (#2098)
    • fail-closed overflow CI gate + per-surface baseline ratchet (#1832)
    • GitLab webhook event adapter β€” /webhooks/gitlab now serves (#2092)
    • meter cross-device approvals on the hosting daemon, never local ones (#2088)
    • apps/web surface under vite dev (#2055)
    • context-file manifest, path gate and handoff materialization plan (#1995)
    • route relay.rest by org, so writes land on the right relay (#2078)
    • fan the push token out to every registered relay (#2075)
    • hold N relay connections with per-relay credentials (#2050)
    • fail-closed approval gate for agent MCP tool calls (#1997)
    • gate organization creation behind the Team plan (#2051)
    • register on every resolved relay β€” N credentials, not one (#2043)
    • add the mobile RN-web surface + static length-delta backstop (#2015)
    • view-only devices, gated to Pro+, plus Studio plan awareness (#2036)
    • relay-qualified project identity β€” declare the axis, key on it, store it (#2026)
    • resolve every relay per org, not one URL per user (#2033)
    • stamp the owning-relay hint into the push data payload (#2030)
    • task run history β€” exit codes, durations, revisitable output (#2001)
    • signed-request verification and approver authorization for Slack approvals (#1998)
    • auto-fix parser regressions into a draft PR (#1996)
    • anonymous QR re-pair keeps its device id by proving the key (#1951) (#2002)
    • source /changelog and /docs/whats-new from the live releases feed (#2003)
    • device-limit dialog offers only workers for removal (#1936) (#1988)
    • report a connected phone as online, and teach the device pickers to tell kinds apart (#1991)
    • expose the inspector query ops over the proxy (#1982)
    • sessions replicate like devices and projects β€” not peer-cache fan-out (#1950)
    • mobile answers prompts over the relay-brokered transport (#1932)
    • enforce the ratified per-locale register in CI (#1946)
    • give chat channels a workspace to belong to (#1305) (#1899)
    • localize pricing plan bullets, limits & CTAs (#1834)
    • a relay that is already enrolled converges instead of duplicating (#1929)
    • keyboard shortcuts for pinned task quick actions (#1797) (#1925)
    • Redis service inspector β€” SCAN-based keyspace browse (read-only) (#1914)
    • relay self-enrollment β€” one-time token, registered key, no shared secret (#1908)
    • let a service declare its port through an env var (#1916)
    • Postgres service inspector β€” schema + data browse (read-only) (#1910)
    • runner service inspector on real process state + output (#1583) (#1902)
    • attribute webhook events to their project and org (#1305) (#1898)
    • email notification delivery via SendGrid + Email chip (#1308) (#1648)
    • mobile service inspector on real Metro state (#1587) (#1824)
    • initialize starter config for a project with no .checkpt/ (#1664) (#1839)
    • API service inspector β€” route discovery + auto-addressed request builder (#1584) (#1823)
    • expose config, exec and service ops over the proxy (#1821)
    • frame the wizard detect services/env as a preview (#1759)
    • overflow-detection engine + Studio surface (#1744)
    • services topology view on real declared deps (#1575) (#1818)
    • register the Romanian (ro) locale β€” web switcher + backend catalog (#1385) (#1652)
    • enforce allowRemoteSessions end-to-end (#1813)
    • build the shared Docker install layer on every PR (#1795) (#1809)
    • session output over the shared cursor/gap contract (#1542) (#1807)
    • prompts to relay tier β€” an approval survives the originating device going offline (#1791)
    • web service inspector on real dev-server state + embedded preview (#1582) (#1801)
    • dependency-ordered cascade start/stop with readiness gating (#1581) (#1777)
    • pinned tasks surface as session quick actions (#1568) (#1798)
    • funded-turn tier β€” assert the in-flight hooks against a real turn (#1787)
    • Discord and Teams webhook channels (#1306, #1307) (#1781)
    • i18n the live-detect surface (DetectStep log + errors) (#1758)
    • P3c β€” Python pack parity (tooling + registry-miss) (#1708)
    • adopt the shared stream for devices and projects (#1541) (#1790)
    • run a session's tasks in that session's worktree + env (#1567) (#1770)
    • real per-service CPU/RAM sampling, process-tree inclusive (#1580) (#1768)
    • Env import pane writes real config (#1560) (#1750)
    • forward the whole account stream, and give the Agent a cursor (#1538) (#1767)
    • session Services drawer on real daemon runtime (#1728) (#1752)
    • Slack webhook channel β€” destinations, subscriptions, daemon dispatch (#1305) (#1670)
    • alert on prod deploy failures in Slack (#1715) (#1743)
    • one entity cache + cursor/gap handling, retire the per-store reducers (#1745)
    • run a task in a PTY pane via a daemon-owned run (#1566) (#1737)
    • per-service log capture + stream to the Logs surface (#1579) (#1733)
    • health probe executor (http/tcp/exec) β€” real service health (#1578) (#1732)
    • one cursor/gap/snapshot service for every entity (#1537) (#1714)
    • shared vs per-session service lifecycle + cross-worktree ownership (#1577) (#1710)
    • org-curated starter template list (#1635) (#1688)
    • Env Ports pane on real daemon port allocations (#1559) (#1699)
    • project Tasks tab on real .checkpt/tasks.toml (#1565) (#1665)
    • guarantee sessions carry a resolvable relay project id (#1529) (#1647)
    • service supervisor β€” spawn/stop/restart + runtime registry (#1576) (#1683)
    • Romanian (ro) β€” Studio (#1675)
    • Romanian (ro) β€” mobile (checkpt-app) (#1672)
    • Romanian (ro) β€” web + backend templates (#1660)
    • Go rule pack β€” gin/echo/fiber/chi via go.mod (P3b) (#1524)
    • transactional outbox so a mutation cannot skip its fan-out (#1536) (#1682)
    • authenticated encrypted peer-session channel (#1523) (#1686)
    • P2 β€” runtime versions + non-JS package managers + unrecognised notes (#1480)
    • write .checkpt/ at project creation, without the npm CLI (#1592) (#1671)
    • Env editor pane on real .checkpt/env.toml (#1557) (#1668)
    • project Services tab on real .checkpt/services.toml (#1667)
    • subscribe-gated + compressed cross-device streaming (#1415) (#1658)
    • BYO relay reads identity from the hosted relay (#1623) (#1649)
    • route proxy.forward across relay instances (#1496) (#1653)
    • scaffold from a house/org starter template (#1410) (#1642)
    • typed project-config client + provenance model (#1556) (#1641)
    • Bitbucket Cloud provider, end to end (#1303) (#1510)
    • extract Makefile targets as service/task sources (#1132) (#1240)
    • P1 Studio dev wiring β€” real detect.scan over local-IPC (ADR 0009) (#1471)
    • services.toml schema gaps β€” scope, expanded ServiceKind, source decision (#1573) (#1633)
    • deviceβ†’instance presence registry + deliverToDevice primitive (#1495) (#1632)
    • populate ci + agents context sections (#1131) (#1241)
    • replication contract + entity registry (#1535) (#1630)
    • expand env example-file allowlist β€” .env.sample/.env.template/.env.dist and friends (#1136) (#1139)
    • commit-vs-exclude config persistence + project-creation prompt (#1554) (#1626)
    • surface registry-miss as an unrecognized-framework diagnostic (#1238) (#1239)
    • scaffold a project from a GitHub template repository (#1409) (#1619)
    • standalone headless checkptd install + enrollment (#1620)
    • tasks.toml schema β€” new DocKind::Tasks (#1563) (#1627)
    • retire the public-tunnel transport (#1622)
    • ElastiCache Redis for the relay bus + optional relay client (#1494) (#1605)
    • public blog rendering + SEO β€” SSR, meta/OG, hreflang, sitemap (#1345) (#1603)
    • enroll on confirm β€” defer device creation, name it at creation (#1617)
    • per-locale "retry with more care" for blog translation (#1593) (#1607)
    • Azure DevOps Repos provider, end to end (#1304) (#1509)
    • GitLab connect + repo import, end to end (#1302) (#1499)
    • assert frameworks/tools from non-optional peerDependencies (#425) (#965)
    • Claude auto-translation fan-out on blog publish (#1344) (#1589)
    • wizard scaffold step β€” recipe picker, live PTY, post-run chain (#1408) (#1591)
    • UX pass across the portal and console (#1506)
    • Indonesian, Vietnamese and Czech β€” Studio (#1371, #1375, #1383) (#1501)
    • C2 β€” Rust rule pack (framework detection slice) (#899) (#1295)
    • live-PTY agent TUI canary harness (#1065) (#1467)
    • scaffold recipe registry + toolchain presence probe (#1407) (#1531)
    • content model + admin CRUD + public read endpoints (#1343) (#1530)
    • Home widget customization β€” registry + persisted layout (#1402) (#1522)
    • route peer transport over the relay WS (#1414) (#1527)
    • Vietnamese (vi) and Czech (cs) β€” apps/web + backend catalog + switcher (#1373, #1381) (#1503)
    • Indonesian (id), Vietnamese (vi) and Czech (cs) β€” mobile (checkpt-app) (#1502)
    • run a PTY command in a chosen working directory (#1406) (#1511)
    • URL-locale routing + hreflang for public pages (#1342) (#1519)
    • forward E2E-encrypted proxy envelopes between account devices (#1413) (#1516)
    • graceful-detection guarantees β€” walker budget, fault isolation, invariants, fixtures (#1466)
    • reject a non-existent or non-directory attach root path (#1405) (#1470)
    • Home screen β€” cross-device monitoring station (#1401) (#1484)
    • hierarchical "up" navigation β€” Location model + derived parent (#1441)
    • SSR the public surface β€” React Router 7 libraryβ†’framework mode (#1340) (#1396)
    • widen Linux compat β€” build Studio in an Ubuntu 22.04 container (glibc 2.35 floor) (#1440)
    • Ukrainian (uk) β€” apps/web namespaces + backend catalog + switcher (#1377) (#1458)
    • move approval-rules CRUD to website-api (#1359) (#1450)
    • match the console's palette to the web dashboard (#1446)
    • uk β€” Studio (#1379) (#1448)
    • Ukrainian (uk) β€” mobile (checkpt-app), incl. native OS strings (#1378) (#1447)
    • dev-login β†’ real account session + device-model correctness (#1412)
    • translation-delta harness β€” context packs + mechanical merge (#1392) (#1394)
    • localized product screenshots β€” one-command generation across all locales (#1418)
    • revamp the admin console's look and feel (#1417)
    • rebuild the auth backdrop as a rendered orbit plate (#1398)
    • rebuild the logged-in portal and auth screens (#1404)
    • E2EE slice 2 β€” recipient decrypt stack (key distribution, sealed transit, QR pinning, truthful EncryptionScreen) (#1317)
    • native Windows ARM64 (aarch64) Studio build (#1395)
    • Indonesian (id) β€” web + backend templates (#1369) (#1393)
    • clone any git URL in the new-project wizard (#1391)
    • version-support policy + floor-raise runbook + CI contract freeze (#1115) (#1389)
    • migrate web to httpOnly cookie auth (mirror admin cookie+CSRF) (#1364)
    • override-merge rule (D2, #902) (#1281)
    • complete the TS/JS framework + datastore registry (#425) (#1291)
    • C1 β€” Python rule pack (framework detection slice) (#898) (#1294)
    • reply to ticket submitter by email (#1014) (#1357)
    • structured feedback columns, attachments, triage list, throttle (#418) (#1212)
    • redesign auth screens + add Studio sign-up & password reset (#1296)
    • pre-launch site mode β€” public site with gated surfaces + notify-me waitlist (#1282) (#1283)
    • shared Pill chip + facet-counted filter pills across the console (#1314)
    • B2 β€” service detection + classifier (#896) (#1043)
    • Studio-era site polish β€” meta, sitemap, closing CTA, Clerk cleanup (#1211)
    • How It Works integration chip popovers + truthful ecosystem claims (#1297) (#1312)
    • two-device Studio harness + one-command db:reset (#1273)
    • handle Claude's /btw side questions in the terminal (#1210)
    • B1 β€” TS/JS rule pack, first end-to-end slice (#895) (#955)
    • live rule sync from quiet_hours.updated / approval_rules.updated (#1209)
    • sealed-envelope foundation β€” keys, enrollment, v2 codecs, rotation, push hardening (#235) (#1269)
    • BYO-relay serverβ†’server contract versioning + relay-min-version floor (#1278)
    • Hindi (hi) translation + language switcher β€” checkpt-app (#825) (#1279)
    • version adoption snapshots + admin Adoption view (#1171) (#1272)
    • Hindi (hi) translation + language switcher (#826) (#1264)
    • encrypt JWT signing private keys at rest (envelope encryption) (#878)
    • Korean (ko) translation β€” mobile, incl. native OS strings (#807) (#1217)
    • A3 β€” framework + datastore registries (#894) (#954)
    • override-only service fields + generated TS schema (#901) (#1102)
    • Korean (ko) translation β€” Studio (#808) (#1223)
    • client update gates β€” Studio mandatory-update wall + mobile force-update (#1270)
    • Polish (pl) for CheckPt Studio (#817) (#1267)
    • Dutch (nl) β€” mobile (checkpt-app) (#813) (#1266)
    • Korean (ko) translation β€” web, shared auth + backend templates (#806) (#1216)
    • thin-tolerant local-IPC seam + Studio restart nudge (#1248)
    • REST client contract β€” /version, UPGRADE_REQUIRED (426), client-BFF boundary (#1112) (#1263)
    • Hindi (hi) β€” web + backend templates (#1262)
    • org custom relay URL + Team+ management UI, propagated to Agent/Studio/mobile (#1084) (#1246)
    • Chinese (Traditional) zh-Hant β€” mobile (checkpt-app) (#828) (#1261)
    • Dutch (nl) for CheckPt Studio (#814) (#1260)
    • Polish (pl) translation β€” web, shared auth + backend templates (#815) (#1228)
    • zh-Hant β€” Studio (#829) (#1252)
    • Dutch (nl) β€” web + backend templates (#812) (#1243)
    • Italian (it) β€” mobile (checkpt-app) (#810) (#1249)
    • version stamping + minimum-version floor (#1111) (#1242)
    • zh-Hant (Traditional Chinese) β€” web + backend (#827) (#1247)
    • token ratchet β€” guard banning raw hex, text-[Npx], gray/palette utilities in app code (#1163) (#1244)
    • relay short-retention event log + vcs.backfill on Agent reconnect (#1237)
    • Italian (it) translation + language-switcher enable (#811) (#1236)
    • zh-Hans (Simplified Chinese) β€” mobile (checkpt-app) (#804) (#1235)
    • P2P proxy protocol negotiation & capability handshake (#1231)
    • mobile ThemeContext token adoption + fontSize/hex codemod (#1233)
    • German (de) translation + language-switcher enable (#794) (#1208)
    • infra manual-apply reminder + runbook procedure for pulumi env drift (#1165) (#1229)
    • Studio deploys from admin β€” stage/publish, changelog editing, live run watching + CDN verification (#1204)
    • Italian (it) β€” web + backend templates (#809) (#1234)
    • zh-Hans β€” Studio (#805) (#1207)
    • Studio single-channel β€” relay REST + pairing behind the Agent (#1189) (#1199)
    • add a target-id filter to the audit log UI (#1201)
    • i18n ja β€” mobile (#800) (#1200)
    • admin gray/small-text codemod onto design tokens (#1161) (#1206)
    • Turkish (tr) translation β€” mobile, incl. native OS strings (#819) (#1120)
    • Studio native in-app subscriptions via Stripe Elements (#1177) (#1193)
    • remote session start on an arbitrary online worker (#1182)
    • split-panel sign-in redesign (#733) (#1094)
    • wire SendGrid delivery for invitation emails (#1013) (#1057)
    • web gray-text + emerald-tint codemod onto design tokens (#1160) (#1197)
    • German (de) translation + language-switcher enable (#795) (#1185)
    • Simplified Chinese (zh-Hans) for web + backend (#802) (#1196)
    • Japanese (ja) translation + language switcher (#801) (#1198)
    • releases table + Studio history backfill + read-only admin Releases page (#1170) (#1184)
    • A2 β€” BREAKING schema adoptions from repo-scanner (#893) (#953)
    • Japanese (ja) β€” web + backend templates (#799) (#1190)
    • Studio type-scale + semantic-token codemod, uiFontScale setting (#1159) (#1186)
    • Brazilian Portuguese (pt-BR) for the mobile app (#791) (#1180)
    • native intent-based subscription API (#1175) (#1181)
    • publish versioned public checkpt/relay image + BYO migration & compat story (#1176)
    • German (de) β€” web + backend templates (#793) (#1183)
    • Brazilian Portuguese (pt-BR) for web + backend templates (#790) (#1168)
    • rem type scale + WCAG contrast fixes in design-tokens (#1166)
    • Brazilian Portuguese (pt-BR) for CheckPt Studio (#792) (#1167)
    • entitlements-in-token β€” plan/concurrency as signed claims (#1082) (#1154)
    • Agent lifecycle + quit semantics β€” pause/resume, quit warns + stops sessions (#1128)
    • resolve .checkpt/env.toml at session start β€” port allocation + name templating (#1117)
    • Russian (ru) translation for mobile (checkpt-app) (#822) (#1150)
    • Turkish (tr) translation β€” Studio (#820) (#1122)
    • Turkish (tr) translation β€” web, shared auth + backend templates (#818) (#1119)
    • French (fr) translation + enablement for mobile (#797) (#1121)
    • asymmetric identity verification β€” EdDSA relay-exchange tokens + identity JWKS (#1081) (#1127)
    • Russian (ru) translation for Studio (#823) (#1126)
    • port components/ui primitives to semantic tokens (#731) (#1087)
    • /operations service-health page + GET /admin/system/health (#1015) (#1059)
    • Russian (ru) for web + backend templates (#821) (#1124)
    • French (fr) for CheckPt Studio (#1116)
    • Studio tray, close-to-tray, and Agent service lifecycle UX (#1106)
    • French (fr) for web + backend templates (#796) (#1108)
    • Spanish (es) for mobile (checkpt-app) (#1103)
    • bundled daemon gets the production relay URL β€” service argv + spawn env (#976) (#1107)
    • Spanish (es) for CheckPt Studio (#1099)
    • execute .checkpt/hooks.toml lifecycle hooks (#1002) (#1089)
    • grant member role on organic app-account creation (#1104)
    • adopt ApiError error codes across the three frontends (#1034) (#1079)
    • add auth.* error codes to bff-auth throw sites (#1071) (#1073)
    • promote daemon β†’ standalone always-on Agent service (#1090)
    • Stripe webhook inspect + replay UI (#1011) (#1078)
    • coupon + promotion-code management (#1012) (#1072)
    • Spanish (es) for web + backend templates (#1088)
    • A1 β€” walker + .checkpt/ignore implementation (#892) (#949)
    • Agent proxies account-scoped relay reads; drop Studio's relay socket (#1018) (#1070)
    • CLDR-plural-aware locale key-parity guard + translation glossary (#1075)
    • worktree-backed session lifecycle (#1000) (#1007)
    • Homebrew cask + tap for macOS brew install --cask (#1063)
    • failed-payment queue β€” worklist for failed and past-due payments (#1061)
    • wire EditProfileScreen to the real profile endpoints (#971) (#984)
    • Issues tab + start-session-from-issue on real provider data (#655) (#961)
    • Codex + Gemini bespoke profiles β€” state detection, model lists (#998) (#1062)
    • allow one email to hold both an app and an admin account (#1056) (#1060)
    • drain i18n allowlist to zero (#772) (#1008)
    • extract user-reachable API errors to stable error codes (#832) (#1035)
    • Agent auth unification β€” single relay credential (device + account) (#1040)
    • derive ThemeContext palette from @checkpt/design-tokens (#335) (#960)
    • install affordances for missing agents (#997) (#1042)
    • PR list + status on real provider data (#656) (#1039)
    • business + engagement metrics API and Overview charts (#1041)
    • avatar pipeline β€” presigned S3 upload + OAuth picture seed (#968) (#980)
    • shared "On this page" rail across all docs pages (#1037)
    • ship the Profile tab on the real account profile (#970) (#981)
    • wire recipient-locale into data-plane notification paths (#1028) (#1038)
    • editable name + timezone on the Account profile (#969) (#983)
    • typed spawn-failure handling for missing agent binaries (#996) (#1036)
    • partial-update PUT /dashboard/profile + avatarUrl (#967) (#978)
    • /billing page + expanded UserDetail billing tab (#1032)
    • detect installed agent CLIs at startup (agents_detect + login-shell PATH) (#1026)
    • clickable Device detail page in Studio (#1001)
    • new-project wizard β€” real repo browser + clone from provider (#657) (#990)
    • drain backend-composed content into server locale catalog (#830) (#1030)
    • audit-log read endpoint + Operations audit UI (#958)
    • per-client rate limiting for DB-touching WS handlers (#461) (#950)
    • project_override table + IPC for layered config (#449) (#948)
    • GitLab provider β€” descriptor + PAT auth + read adapter (#661) (#859)
    • replace Overview stub with a real counts dashboard (#987)
    • shared agent registry + agent-typed sessions in Studio (#1006)
    • drain checkpt-app hardcoded strings to zero (#771) (#989)
    • flag-dropdown language switcher with full #764 roadmap (#1005)
    • root device identity in a device keypair (#925) (#940)
    • drop Supporter, rebalance to Community / Pro / Team / Enterprise (#974)
    • home + footer feedback, responsive nav fixes, page consistency (#982)
    • Linux CLI install script (curl | sh) + wire /download Linux tab (#939)
    • provision the platform admin team (Dave/Gulsah/Tulin) (#977)
    • error-code envelope + web/mobile/Studio error mapping with generic fallback (#831) (#916)
    • align landing widths, loosen spacing, add Help page (#972)

    Changed

    • the setpoint packs by a count, and a count is not what binds (#3802)
    • cross-instance routing and skewed-account fan-out, measured on the rig (#3696)
    • measure the per-task capacity constants at 5k+ sockets (#3682)
    • alarm on 5xx and latency, so something fires on the effect (#3622)
    • the connect-admission rate now derives from the socket setpoint it has to drain (#3616)
    • a fetch that lost its timeout, two churning contexts, and a sort with no documented ceiling (#3621)
    • a retention sweep that ranks the whole table, on every task, under the request timeout (#3620)
    • Rust License Gate stops rebuilding cargo-about and stops resolving a crate graph nobody touched (#3541)
    • size RDS and ElastiCache on their own drivers β€” DB down, Redis up (#3448)
    • record ci baselines from the first green workflow run (#3190) (#3432)
    • PERF-6 β€” relay load harness: connect storm + sustained streaming, nightly CI (#3306)
    • PERF-17 β€” the Lighthouse budgets could not fail, and the daemon paid a webview's codec (#3359)
    • scope the unit suite to the affected projects, and size the shard matrix to fit (#3343)
    • stop shipping ~9 MB the binary never uses (#3320)
    • alarm the resources that bind first, and stop re-serving stable endpoints (#3338)
    • a connection storm couldn't scale the relay out, and ~128 stalled sockets could OOM it (#3323)
    • coalesce output frames, memoize the remaining context values, virtualize notification history (#3316)
    • shard Unit Tests 4 ways β€” the suite outgrew its 30m cap (#3334)
    • PERF-15 β€” index & query hygiene, and the CONCURRENTLY pattern the repo could not use (#3305)
    • PERF-8 β€” memoize the relay-exchange entitlements card (#3298)
    • virtualize the SessionDetail transcript and memoize the WebSocket context value (#3296)
    • PERF-10 β€” the control plane gets the index the data plane already had (#3301)
    • let one task claim a due webhook event (#3297)
    • PERF-11 β€” WAL, a relaxed sync, and a sequence counter that already knew the answer (#3292)
    • clear the backend query/N+1 tail (#3291)
    • PERF-2 β€” bound every Stripe and OAuth request (#3274)
    • the changelog assembles once per TTL, not once per visitor (#3271)
    • bound how long a pooled connection may be held, not just how many (#3267)
    • index the three hottest lookups on the authenticated path (#3265)
    • the app parses one locale at boot, not twenty-one (#3264)
    • startDaemon() β€” main.ts becomes a module, boot and shutdown become ordered steps (#3085)
    • verify #1866's backpressure against a real congested socket (#3086)
    • extract remote and chat-run session start (#3047)
    • retire the 150-key local-ws handler map (#3049)
    • virtualize Approvals, Rules and Org Rules; fix the countdown re-render (#3045)
    • extract the MCP HTTP transport wiring (#3026)
    • extract the 34 proxy verb handlers, and register them through the feature table (#3014)
    • extract session start β€” gate, evaluate, register, provision (#3030)
    • extract the local-IPC request handlers (#3028)
    • extract the relay frame router out of connectWebSocket (#3007)
    • extract the services and tasks wiring (#2976)
    • extract the express routes into a router (#2990)
    • extract the relay plane β€” links, credentials, REST routing and sync wiring (#2982)
    • a feature registry, and local-ws dispatch that reads a table (#2971)
    • extract prompt create, answer, expiry and withdrawal (#2979)
    • finish the session-persistence extraction (#2968)
    • extract plan, keys, notification and MCP-connector wiring (#2958)
    • extract session environment, worktree lifecycle and hooks (#2948)
    • session kinds shrink to the shipped core (#2913)
    • a DaemonContext for the daemon's shared state (#2901)
    • a chunk no longer re-renders the terminal component (#2848)
    • the overflow sweep was one 20s timeout, Γ—16 β€” gate restored off the critical path (#2792)
    • drop the i18n overflow browser sweep from Code Quality (#2732)
    • source/connector abstraction for the issue seed picker (#2481)
    • delete the Apple billing plane (#2439)
    • extract session row mapping from main.ts (#2208)
    • extract device identity + auth headers from main.ts (#2207)
    • make @checkpt/ui importable from a tsc-built lib (#2108)
    • extract the peer publish fan-out from main.ts (#2105)
    • delete the org audit API surface, which has had no callers since #1445 (#2086)
    • map main.ts by subsystem seam, extract the pure leaves (#2071)
    • carry output chunks as base64 and batch the live push (#2081)
    • extract the remaining web/admin auth-surface duplicates (#2047)
    • bound what the relay buffers toward a slow consumer (#1866) (#2032)
    • cache the WS connect path (#1864) (#2020)
    • scope device-unpaired to the owning account (#1867) (#2028)
    • amortise the output rings' per-append prune (#1865) (#2019)
    • extract the shared ErrorBoundary and the auth-client test seam (#1973)
    • one device, one id, one table (#1907)
    • stop asking /auth/refresh for visitors who never signed in (#1775)
    • derive API image runtime dependency lists from the built bundle (#1740)
    • one shared env-doctor implementation β€” retire the TS rule copy (#1727)
    • adopt @checkpt/ui and close the type-scale gate exclusion (#1712)
    • one component layer for the web portal and admin console (#1676)
    • one service-kind vocabulary β€” align the crate enum onto the detector's names (#1650)
    • split FEATURES.servicesTasks into services + tasks (#1564) (#1631)
    • split ECS task roles per service (#1547)
    • cache session diff across tab switches β€” stale-while-revalidate (#674) (#876)
    • extract module-const UI copy to t() keys (#988) (#994)
    • drain i18n allowlist to zero β€” extract UI strings to t() (#770) (#975)

    Documentation

    • the plaintext audit names every table, and CI keeps it that way (#3834)
    • UAT-MOB-05 stops claiming an attribution the product never had (#3814)
    • the three guides omit RELAY_PUBLIC_URL, so every guide deploys a relay that cannot sign anyone in (#3784)
    • record the key-revocation walk result, both directions (#3737)
    • write down the perf postures, and stop two workflow headers arguing against them (#3610)
    • the live connect was walked β€” flip the surfaces that still say otherwise (#3498)
    • Team is self-serve β€” UAT-PAY-09 rewritten to the org-aware checkout #227 shipped (#3472)
    • the provider ship-gate's flag half closed on 2026-08-18 (#3475)
    • the UAT-X-05 blocker still said the relay stores plaintext prompts β€” #3082 fixed that on both planes (#3469)
    • the gate runbook still walked deleted QR pairing in four cases (#3429)
    • stop crediting deleted files, and guard against the next one (#3352)
    • the rollback tables now say what happens to the schema (#3336)
    • runbook for exercising the Studio version floor in prod (#3116)
    • the record of what the hosted relay sees (#3089)
    • record the in-app design, its inventory and its gaps (#3075)
    • UAT-X-03 describes the at-cap recovery that shipped (#3003)
    • audit every plaintext column the hosted relay stores (#3040)
    • the headless-Agent page documents unattended org enrollment (#3006)
    • the output contract promised a sessionId the failure paths don't have (#3008)
    • correct stale UAT expectations and the CSRF bypass rationale (#3000)
    • document not_mounted where the codes are documented (#2857)
    • spike β€” proxy, because the hook path fails open (#2802)
    • name the releases that made the renumber's precondition false (#2783)
    • design the Compare-plans comparison matrix content (#2379)
    • session-scoped MCP identity & log isolation β€” spike decision (#2401)
    • ratify the plan-gating matrix β€” three new gates, not five (#2305)
    • hosted on-demand compute go/no-go spike β€” NOT-YET (#2242)
    • say subset, not mirror β€” the local type omits allowCritical (#2170)
    • ratify the fr, es and ru register blocks and sweep the residual drift (#2048)
    • the three BYO platform guides omit the identity configuration (#2049)
    • spike β€” mobile multi-relay is N registrations, not N sockets (#2014)
    • claim shipped E2EE precisely β€” UAT gate, web copy, pricing, FAQ (#2013)
    • e2ee.md never learned about session.meta (#1979)
    • reflow the ro Β§5.16 length bullet so the span sits on one line (#1956)
    • drop the last "shared with the token-refresh path" claim (#1805)
    • map UAT cases to the tests that prove them (#1804)
    • drop the dead web profile from the self-host reference (#1769)
    • launch UAT manual test plan + project board seeder (#1713)
    • pre-flip validation report β€” go/no-go for projectDetection (#1656)
    • refresh tryout cheat-sheet to current main (G4) (#1693)
    • tryout kit + testing roadmap for real-repo validation (#1481)
    • the replication contract is hosted-only β€” and BYO can't enroll a device (#1625)
    • ratify Romanian (ro) register and conventions β€” Β§5.16 (#1610)
    • state the WSL story honestly on the requirements page and in a setup guide (#1476) (#1598)
    • document RELAY_KEK as required in every self-hosting guide (#1601)
    • Cloudflare TLS fronting guide + web docs page (#1515)
    • ratify vi (Β§5.14) and cs (Β§5.15) register blocks (#1488)
    • AWS deploy runbook + web docs page (#1299) (#1483)
    • WSL2 support investigation and decision (#1333) (#1478)
    • Railway deploy guide + web docs page (#1298) (#1442)
    • Expo Go no longer works β€” document the dev-client (EAS) setup (#1290)
    • renumber duplicate ADR 0008 β†’ 0016 + truthful contract docs (#425) (#1046)
    • ADR 0012 β€” API route extraction deferred for v1 (#440) (#882)
    • confidence model calibration methodology (#435) (#881)
    • composite/runbook decomposition strategies (#430) (#880)
    • ADR 0014 β€” env binding inference, cheap proxy v1 / deep scan v1.1 (#431) (#879)
    • readiness probe defaults per ServiceKind (#432) (#877)
    • Perforce provider design spike (#662 Phase 1) (#858)
    • ADR 0013 β€” .checkpt/ignore, adopt global / defer per-detector (#441) (#875)
    • ADR 0015 β€” override layer aligns with crates/checkpt-config (#434) (#874)
    • self-hosting guide (#753) (#963)
    • per-language detection roadmap + framework taxonomy (#433) (#872)
    • ADR 0011 β€” schema delta vs repo-scanner, adopt/reject (#439) (#883)
    • ADR 0009 β€” daemon RPC contract for detection (#436) (#871)

    Fixed

    • the turn hook named a CLI Studio never ships (#3870)
    • the migration task is sized for ts-node, and had grown past 512MiB (#3865)
    • close the six pinned KNOWN GAP defects in the org/user dialogs (#3857)
    • stop pkg from turning our subcommand into a missing file (#3861)
    • About's update check ran behind the panel it was opened from (#3860)
    • refuse re-parenting session publishes, and clean up the ones already filed (#3858)
    • drop device_authorized from the ordered activation funnel (#3854)
    • anti-phishing line, one-line security copy in every locale, and TTLs that cannot drift (#3850)
    • the stream-inspector service guard, and the last owed exec half (#3835)
    • give transactional email a layout, and take presentation out of the catalog (#3848)
    • the funnel probe asks about a person, and silence can fail again (#3849)
    • carry the natural-stop budget to the peer, instead of rejecting at 15s (#3837)
    • a shed frame asked the bus where a device it was holding is, and a stalled consumer was never reclaimed (#3809)
    • an org-owned device's presence reached nobody (#3826)
    • name a REVOKED machine that is still holding a concurrency slot (#3828)
    • a draft larger than one call could never be curated (#3822)
    • run git with the user's PATH, not launchd's four directories (#3824)
    • the reflection request encoded to zero bytes, so gRPC reflection never worked against a real server (#3813)
    • retire the offline incumbent in the same transaction as the write that takes its name (#3808)
    • the approval prompt says what identity is actually on the wire (#3804)
    • a Redis inspector resolves only services the project has (#3806)
    • the declared engine decides, and a contradiction refuses (#3760)
    • releases list goes live, and Studio's launch/sign-in stop hiding the app (#3743)
    • the prompt flow, the answer race, and a re-publish that re-notified every device (#3756)
    • a hung rollout must go red, not quiet (#3748)
    • don't let an absent projectId resolve to an arbitrary project (#3724)
    • close the local proxy route around the approval gate (SEC-8) (#3726)
    • release the push address on sign-out, and drop the dead device cache (#3738)
    • let MONGODB_URI satisfy its own service's name tiebreak (#3741)
    • the generator was capturing an empty Approvals screen (#3735)
    • every approval card said "Unknown device" β€” the join used a dead plane (#3739)
    • retention fixtures that cannot expire (#3684)
    • the organizations page and the status rail each claim something untrue (#3677)
    • the launcher could not find an agent the picker had just listed (#3666)
    • stop the four lies the golden-path walk found (#3675)
    • show what a curation pass is doing, and let an operator stop it (#3607)
    • the wizard's first step asked where the project should live and took one answer (#3660)
    • the DMG's branded window needs Finder, which CI had told the bundler to skip (#3664)
    • stop selling org rules that auto-approve nothing (#3654)
    • the org lost an owner where the insert could not promote (#3656)
    • assert cross-stack outputs at the read, so a stale prod-persistent says so (#3648)
    • nulling the submitter's id left their email and device id on the row (#3638)
    • the perimeter's 401 page is not an error message (#3617)
    • one brand casing, and a gate so it stays that way (#3599)
    • repair the download page's dead docs link, and the UAT case that fails correct behaviour (#3598)
    • reconcile device presence at boot, so a restart stops stranding devices online (#3596)
    • scope Overview's user counts to the app portal (#3597)
    • stop the pollers that deadlock truncateAll, and retry the ones that get away (#3552)
    • carry orgId and clientType to clients, so an org pool worker is not read as your own machine (#3579)
    • the at-cap refusal named nothing β€” its device lookup threw on every call (#3570)
    • build the approval authority after the store opens, so a pinned key survives a restart (#3564)
    • log why the relay rejected a session publish, not just that it did (#3561)
    • a duplicated Content-Type meant nothing was ever published to the relay (#3557)
    • the admin credential probe now only ever sees the perimeter (#3573)
    • the relay is on the internet, so a shared WiFi is not the answer (#3567)
    • WAFv2 rejected both descriptions, failing the prod apply (#3545)
    • the CSP guard reads prose in a comment as a second directive (#3569)
    • delete the translation crons and the impossible work they retried (#3505)
    • a runtime barrel import from @checkpt/shared reds two studio specs (#3565)
    • a migrated database is a schema, not somebody else's rows (#3560)
    • say whose prompt the session is awaiting (#3518)
    • the banner carries enough to report itself (#3526)
    • /help routed bug reports to a Featurebase workspace we don't own (#3514)
    • the shipped macOS bundle was SIGKILLed on launch β€” a restricted entitlement with no profile to authorize it (#3534)
    • an auth rejection is not a network fault, and a swallowed 401 is not an empty screen (#3496)
    • name the PostHog key, harden the secret write, and record posthogKeysWired (#3473)
    • stop the PTY geometry churn behind the duplicate banners (#3516)
    • main was red on three jobs, and none of them was a product bug (#3515)
    • failed panes say why they failed, and stop dressing as empty ones (#3481)
    • a missing git.diff path answered with a TypeError, not a reason (#3474)
    • a device env override never reached a started process (#3466)
    • a read-only .git leaked an absolute path past the redaction (#3471)
    • a typo in .checkpt/env.toml renamed the file away and read as empty (#3465)
    • deactivating a Google link did not sever it (#3463)
    • two build profiles targeted a staging environment that never existed (#3451)
    • move the admin roster onto Workspace identities (#3439)
    • the Redis SG locked out the BFF throttler β€” 26s customer login (#3444)
    • the hero dropped the desktop shot on every viewport under 1024px (#3442)
    • the wizard contradicts itself on service counts, and three Stack rows render blank (#3412)
    • the launch pane renders with no words at all (#3411)
    • the fair-use footnote published a rate limit wrong three ways (#3438)
    • the SAST baseline goes stale, so old PRs inherit main's findings (#3441)
    • production shipped blind β€” reporter unarmed, boundary silent (#3312)
    • the fingerprint runtime version was a fact about the machine, not the commit (#3393)
    • expo-speech-recognition 56.x is built for SDK 56, not our 54 (#3407)
    • centre the status pages, and drop the mascot name from copy (#3391)
    • an expired prompt read as the user's rejection (#3349)
    • the three #3151/#3158/#3170 follow-ups (#3370)
    • sharing a note re-seals it to the org (#3357)
    • the BYO Relay page claimed approval content skips the relay (#3348)
    • let the relay say WHY the id differs (#3362)
    • count the idle signal in parse telemetry (#3350)
    • gate the Multi-step filter chip behind a recorded flag (#3346)
    • list a deleted or binary file whose path contains " b/" (#3344)
    • measure the banner β€” rule out the stuck store, report what failed (#3364)
    • enforce on-device speech recognition, and grow the grammar rather than leave the device (#3342)
    • the dashboard drew a Redis floor with no Redis (#3347)
    • a repo-supplied exec env source needs a grant before it runs (#3318)
    • the inline drawer must not lock page scroll or trap Tab (#3315)
    • Redis connectors use ioredis subscribe + lowercase pipeline (#3235)
    • redirect /status to the external BetterStack status page (#3027)
    • probe the OS before handing a session a port (#3328)
    • the Doctor now says a template over a secret can't resolve (#3332)
    • own the page-scroll lock at module scope, not per modal instance (#3327)
    • keep the pagination control a constant width as the page moves (#3329)
    • guard the getCurrentWindow() that throws synchronously outside Tauri (#3310)
    • a terminal session row stays terminal (#3326)
    • stop claiming direnv sources .envrc.local, and say what does (#3335)
    • the task host must not hand its config blob to the task (#3302)
    • keep a file's line endings through open β†’ edit β†’ save (#3331)
    • revalidate the Files tree, and offer refresh on healthy rows (#3333)
    • serialize task starts per (project, session, name) (#3330)
    • refuse a charged account's delete cleanly, and stop orphaning four tables (#3307)
    • record devices_owner_label_unique in the schema snapshot β€” main is red (#3322)
    • the wizard walk is red because one Tauri call throws synchronously in a browser (#3317)
    • name the plan once and show it everywhere, make device names unique, and unrig the plan grid (#3263)
    • the customSounds flag gated nothing β€” the feature already works (#3311)
    • a degraded keystore no longer publishes plaintext prompts and session titles (#3309)
    • impersonation read-only is server-enforced, and the two elevated secrets are wired (#3285)
    • the revocation backstop looks devices up by id alone, which is no longer unique (#3308)
    • give Android push a real small icon instead of a white square (#3299)
    • name the unguarded locales, and stage the fr/tr imperative rules (#3017)
    • a device going offline is not a statement about its sessions (#3253)
    • a complimentary subscription ends when it says it does (#3255)
    • a remote answer navigates from the marker, or refuses to act (#3249)
    • voice listens in the user's language, not en-US (#3289)
    • a rota that starts in three days pages nobody today (#3288)
    • the production database cannot be destroyed by a routine apply (#3280)
    • patch runtime CVEs β€” protobufjs β‰₯7.5.5, validator β‰₯13.15.22 (#3281)
    • password reset kills every session, and cookie-mode stops leaking tokens (#3272)
    • the status page needs design v2, and custom CSS is paid (#3278)
    • regenerate the schema snapshot for the release-curation columns (#3284)
    • the phone re-checks what a tip says and where it points (#3259)
    • delete the RDS Proxy / read-replica flags β€” nothing read them (#3270)
    • every REST call gets a deadline, and relay URLs must be https (#3252)
    • stop claiming the /pair universal links we deleted (#3246)
    • the org screens ask for a namespace that exists (#3248)
    • the App Links contract is held together, and names both signing keys (#3238)
    • keep the band's verbs on screen, pin the gauge's height, and give React Navigation the app's palette (#3234)
    • take the last two purchase CTAs out of the shipped copy (#3100) (#3237)
    • add placeholder-parity gate; fix 7 machine-translation drifts (#3223) (#3233)
    • the export-compliance attestation matches the crypto that ships (#3165)
    • surface the GitHub cause behind release 502s (#3115)
    • one section identity across surfaces, and name the plan in Studio (#3096)
    • one organization, one invoice β€” Team is bought per seat (#3090)
    • the matrix omitted the one surface that always fires (#3088)
    • the mic always comes back, and gated accounts get no FAB (#3068)
    • draw an unreadable session title as a stand-in, not a name (#3065)
    • the status bar's "Online" count must be the online one (#3063)
    • Overview must not render a failed fetch as an empty state (#3062)
    • reap the session rows whose owner is gone (#3055)
    • one org, one charge β€” the founder is seat 1 (#3064)
    • a phone can open org-sealed content (#3058)
    • register PAT webhooks, per-registration secrets pinned to a repo (#3057)
    • repair the integration specs that rotted red (#3051)
    • five edge cases in the hash encoder and command resolution (#3013)
    • one unreadable chunk no longer fails the whole output.tail (#3046)
    • a partial profile update must survive both transpiles (#3044)
    • org seat counts drifted from Stripe with nothing watching (#3042)
    • a terminal-answered prompt records the option that was chosen (#3043)
    • reopen encryption status + notification history on the peer proxy (#3002)
    • order task defs after the secret VERSION, not the empty secret (#3035)
    • delete Trusted Origins β€” Smart Rules already owns auto-approve (#3009)
    • scope the session reconcile to the account that owns it (#2933)
    • normalize the plan name before walking to the next tier (#2934)
    • give a generator run an owner that outlives the screen (#2928)
    • state the E2EE claim precisely on sign-in (#2931)
    • stop reporting states that contradict the same screen (#2936)
    • the session Terminal says which nothing it is showing (#2937)
    • the org rules table's status column reads "Status", not "Enabled" (#2997)
    • attribute Procfile/compose processes by language, not by sort order (#2897)
    • declare Task.watch, and guard the registry order-dependence (#2944)
    • a fresh worktree can start the stack from the checked-in steps (#2988)
    • org quiet hours were resolved by the caller, so the two that couldn't name an org ignored them (#2987)
    • validate a project_local mount before it becomes a spawn cwd (#2970)
    • a watch teardown is addressed to its OWNER, not the mount (#2972)
    • the vcs category had delivery and no switch (#2962)
    • write the fs sketch's NUL separators as escapes, not raw bytes (#2926)
    • an org worker can answer the member who addressed it (#2960)
    • a notification setting that silently reverts, because two relay replicas cannot order a snapshot (#2957)
    • make @checkpt/cli publishable β€” bundle the bin, declare what the tarball requires (#2959)
    • the marketing navbar's desktop row fits 1280px in every locale (#2954)
    • dedupe Nx target servers by command, not by workspace (#2943)
    • org-worker sessions β€” the start paths that assume an account (#2949)
    • org workers can read their org's projects, and their cache can hold them (#2946)
    • the org dashboard renders prose again, not i18n keys (#2945)
    • canonicalize request-supplied UUIDs, and fix the split audit trail (#2905)
    • the overview's duplicate CTAs, silent checklist, and bare-email account menu (#2912)
    • name the five icon-only controls a screen reader could not (#2930)
    • clear a user's subscription rows before deleting the account (#2908)
    • deleting an org revokes its worker pool β€” in both deleters (#2894)
    • one top bar everywhere, and a drawer that stops shoving the app (#2917)
    • the screenshot harnesses' account session signs itself out (#2914)
    • model the org worker pool so dashboard-devices renders again (#2889)
    • read projectType from angular.json, not just the Nx layouts (#2887)
    • fingerprint project.json in the detect cache's fs sketch (#2888)
    • one-click adopt of an out-of-date local Agent + release version guard (#2841)
    • model GET /v1/orgs/:id/devices in the web screenshot mock (#2869)
    • the seed prompt nobody submitted, and five more from a golden-path walk (#2863)
    • write the .lproj files where the pbxproj points (#2861)
    • gemini's MCP registration never took β€” untrusted worktree (#2856)
    • name the ghosts before refusing at the device cap (#2847)
    • tidy three rough edges β€” Pro-gated copy, Inspector collapse, popped-out window inset (#2849)
    • detection you can reach with a projectId (#2846)
    • model GET /v1/replays so dashboard-security renders again (#2845)
    • don't offer Start for a per-session service with no session (#2828)
    • one control per option, answered by index (#2832)
    • stop repainting the whole grid on every keystroke (#2833)
    • a failed config init must not cost the user their wizard answers (#2823)
    • a collapsible Inspector, a header that stays on one line, and an ended session that says what happened (#2825)
    • resolve checkpt-config in the target dir cargo actually uses (#2821)
    • a session row that fits on one line, and an empty Env step that says which nothing this is (#2827)
    • show a change's patch on the Diff tab, and notice edits made outside the agent (#2826)
    • detect idle when Claude Code paints its composer placeholder (#2822)
    • ScreenHeader's style prop takes StyleProp, not a bare ViewStyle (#2831)
    • one top bar, a drawer footer that admits it exists, and Approvals filters you can see (#2829)
    • the 150% deploy cap deadlocks a service scaled in to one task (#2804)
    • key devices by owner, migrate legacy keys, reconcile enc_pub (#2777)
    • admin-api and website-api images also need the generated migration registry (#2794)
    • guard the throttler options shape, and stop telling operators auth needs no Redis (#2788)
    • vitejs/vite's packages/vite leaves the services list and types lib (#2689 + #2690) (#2697)
    • wire ANTHROPIC_API_KEY into the admin-api task definition (#2790)
    • macOS keychain password-dialog spam β€” data-protection keychain behind a shared access group (#2770)
    • pre-merge citation guard walks a cited epic's sub-issues (#2656) (#2781)
    • Copilot round 4 β€” a header that gave an order, and a comment that stated a falsehood (#2780)
    • connecting a code host belongs in Settings, and the source row stops wrapping (#2753)
    • read what a run script runs, whose framework it is, and what Nx says (#2588, #2589, #2590) (#2671)
    • a Mac's OS is macOS, not "web" (#2725)
    • unreadable is not missing, and Next needs a chosen path (#2773)
    • fail when a shipped migration's number changes (#2782)
    • New Project names the projects folder the clone will use (#2757)
    • the dashboard plan card states the plan the account is on (#2755)
    • localized iOS permission strings are actually wired in (#2759)
    • throttle counters are fleet-wide, and a code has a guess budget (#2771)
    • a database that fails to open must not report healthy (#2763)
    • repair the migration ledger the renumbering orphaned (#2778)
    • device setup stops offering view-only to Community (#2758)
    • four shipped-but-unreachable surfaces β€” voice FAB, Fleet/Rules headers, device icons, encryption honesty (#2747)
    • the releases backfill gets its own concurrency group (#2765)
    • a prod DB wipe no longer erases the Studio version ledger (#2731)
    • a session that has ended no longer renders as "Idle" (#2724)
    • the "Connecting…" gate can no longer hang silently (#2727)
    • detect questions that don't end the line, and stop calling a stalled session "writing code" (#2726)
    • Comp opens for a user with no subscription (#2723)
    • two machines on one account are tellable apart (#2728)
    • a failed publish can no longer advertise a release that doesn't exist (#2722)
    • publishing a version twice no longer dies on AccessDenied (#2694)
    • a dialog no longer freezes the window in place (#2693)
    • draw the device's own platform mark, everywhere (#2684)
    • the Agent could not start at all, and nothing noticed (#2685)
    • make the window's top band draggable on macOS (#2687)
    • stop CHECKPT_RELAY_WS pointing the socket at another relay (#2686)
    • the collapsed sidebar is the admin console's rail, not a gutter (#2688)
    • the site follows the visitor's OS theme, and says so (#2670)
    • the collapsed rail stops growing a horizontal scrollbar (#2677)
    • one scroll surface per terminal pane (re-land of #2641) (#2665)
    • tell "store still opening" apart from "store failed", and stop blaming the user's devices (#2664)
    • scope the key directory to the relay that vouched for it (#2643)
    • a prompt's life is its session, not a five-minute timer (#2650)
    • decide output.tail's decode by requester capability (#2633)
    • stamp the release version into the daemon package (#2649)
    • pairing sessions in the shared store, and a store outage that stops accusing the user (#2628)
    • the terminal always accepts input, and an answered prompt always leaves the inbox (#2570)
    • the biometric switches now lock something (#2620)
    • materialize sound channels for every relay, not just the current one (#2625)
    • stop the exchange banner contradicting the device it sits above (#2630)
    • guard completes the verification-gate vocabulary (#2582)
    • one shape from both arms of a routed config op (#2565)
    • the env write must carry the schemaVersion it read (#2600)
    • wait for the Agent before reconciling, and bound the retry (#2580)
    • make a created project's services startable (#2548)
    • four launch-readiness defects β€” foreground push, the update wall, dead links, a QA screen (#2562)
    • author the Face ID and photo-library purpose strings, in all 20 locales (#2566)
    • gate Custom Sounds and Voice β€” two surfaces that promise what they cannot do (#2563)
    • re-own the org quiet-hours rules written as user-owned (#2549)
    • promote the gRPC inspector off soon (#2556)
    • bound and retry every apt call so a sick Ubuntu mirror can't eat the job (#2553)
    • quiet hours that silently did nothing (#2532)
    • the four bugs the first packaged Windows run found (#2544)
    • promote the always-on headless agent off soon (#2545)
    • make the session terminal usable β€” raw keys, no re-wrap, no poll-lag (#2519)
    • surface the real Google sign-in failure, and simplify the auth forms (#2521)
    • every drawer entry goes somewhere, and nothing it renders is invented (#2493)
    • stop gating project creation on env vars, and make "Paste from .env" work (#2499)
    • enforce concurrency account-wide at the relay (#2491)
    • answer prompts at the relay tier, sealed, not through the source device (#2472)
    • SSR manifest scan read comment prose as an import, breaking every Deploy Web on main (#2476)
    • force-close a revoked device's sockets, whoever revoked it (#2463)
    • one PTY host, and an output ring that stores the byte stream (#2443)
    • classify the multi-window commands the locality guard missed (#2440)
    • make the window's top band one line, and the collapsed sidebar a real rail (#2412)
    • stop the PAT catch-all shadowing GitHub's connection routes (#2413)
    • re-read membership when the Agent's relay link comes up (#2341)
    • surface the real reason pairing failed, and let the daemon load SQLite (#2362)
    • the device tabs deserve a real empty state, and the header a real chip row (#2344)
    • name platform sets in prose instead of lowercasing the label (#2304)
    • a device derives its id from its signing key (#2243)
    • unblock the publish, un-empty the notes, pick platforms (#2272)
    • one About surface β€” route the macOS menu item to the modal (#2268)
    • point the win-arm64 bundler at signtool explicitly (#2247)
    • kind worker/scheduler-role scripts as workers, not the borrowed framework kind (#2223)
    • make PromptsAttentionAndEnvelope migration re-runnable (#2188)
    • drop the stamped session deviceLabel, resolve by id (#2213)
    • take the minor-unit divisor from Stripe, not from ICU (#2219)
    • report a declared workspace member the nested-repo prune drops (#2204)
    • merge exceptions per key, so a client cannot clear what it never sends (#2203)
    • negatively-cache dev-login failures to stop the request storm (#2187)
    • polyfill Intl.PluralRules for Hermes so plurals resolve (#2193)
    • open the multi-step wizard from the relay prompt store (#2194)
    • read session-screen prompts from the relay plane (#2196)
    • demote hyphenated one-shot scripts from the services list (#2155)
    • repair the hero glow and the dropped h1 clause, add a live agent feed (#2184)
    • prune nested repo checkouts so workspaces count once (#2154)
    • disambiguate repeated app chip labels in the wizard stack (#2173)
    • subscribe per relay link, and delete the socket nothing assigned (#2122)
    • stop exporting a secret pointer as if it were the secret (#2185)
    • stop selling an exception the pipeline cannot evaluate (#2165)
    • reposition marketing copy for Claude Code auto-mode default (#2147)
    • skip the detector pipeline when the recipe generates nothing (#2138)
    • pin bash on the linux-arm64 Agent job so pipefail works (#2137)
    • put the nine auth components' status colours on the semantic tones (#2117)
    • localize the dialog's dismiss label, and stop duplicating cancel (#2133)
    • make the wizard Env keychain promise honest (pre-flip minimum bar) (#2128)
    • collapse duplicate runtime chips (F2) and stop the detect-failed screen telling a success story (F3) (#2127)
    • define every colour utility, unify the Security controls, gate the class (#2083)
    • refuse device transfer instead of reporting success (#2076)
    • ApiKeyGuard fails closed and reads the header only (#2066)
    • delete the three unscoped bug-report reads (#2064)
    • sweep BillingPanel onto the type scale + text tokens (#2070)
    • surface the proxy egress counters at /health (#2061)
    • scope my-devices by the token, not by x-app-id (#2063)
    • fail closed when the caller or the device owner is null (#2052)
    • put the pinned Node 24 first on PATH via direnv (#2062)
    • convert request bodies to decorated DTOs so the ValidationPipe is not inert (#2046)
    • filter the inbox cache read to VCS rows in SQL (#2044)
    • task category chips read semantic tokens in both themes (#1815) (#2037)
    • localize the remaining mobile risk/state slug renders (#2039)
    • #1810 β€” enforce the Node 24 pin, guard its drift, make ABI mismatches self-explaining (#2034)
    • delete the two unscoped feedback reads (#1999)
    • remove docs claim of Pro-gated diff previews that do not exist (#1895) (#2027)
    • name the org whose relay you're on, and what isn't reachable from it (#2000)
    • refuse up front when there is no key, and record a failed fix run (#2018)
    • resolve the inbox row's project from its session, and drop the column nobody wrote (#1992)
    • administer an explicit org in the Relay panel, not a guessed one (#2011)
    • converge on answers from other devices, clear badge + tray (#2012)
    • a bad device credential no longer strands the shell (#2009)
    • the dashboard refetches when its tab comes forward (#1994)
    • gate the mock Session-kinds editor out of release builds (#1987)
    • pricing and billing name the capped thing a machine, not a device (#1990)
    • stop aapt choking on BCP-47 locale tags in Android builds (#1984)
    • read TypeORM's affected count for the prompt cap prune (#1986)
    • translate the 141 seeded register violations, empty the allowlist (#1969)
    • give the device-onboarding gate a way out (#1975)
    • real timestamps for migrations, not a +1e9 counter (#1965)
    • reconcile web/admin auth-surface drift and mark the forked files (#1970)
    • Settings β†’ Devices was a hardcoded fixture list duplicating DeviceView (#1964)
    • stop the .envrc template from executing pnpm db:seed (#1957)
    • catch the pricing locale JSON up to the #1921 machine-metering copy (#1962)
    • give project rename + delete an entry point (#1926)
    • stop taking a device id or an account on the caller's word (#1931) (#1949)
    • translate Studio billing UI for es/fr/pt-BR/ru/tr (#1836)
    • meter workers, not clients β€” a phone no longer consumes a device slot (#1921) (#1935)
    • mobile code-level English leaks β€” prompt risk/state slugs + encrypted placeholder (#1123, #1403) (#1837)
    • studio relativeTime() leaks English into translated timestamps (#1125) (#1838)
    • invert the relay to default-deny β€” register JwtAuthGuard as APP_GUARD (#1928)
    • localize the not-local fallback in useEnvFiles (#1927)
    • assign monorepoKind 'cargo-workspace' for Cargo [workspace] roots (#1762) (#1808)
    • co-rooted headline, port-less service dedupe, inert edit-kind button (#1774)
    • the device-cap 403 the daemon can parse β€” plus the three blockers found verifying it (#1904)
    • an Agent connection and its relay connection are two states (#1922)
    • window drag under modals, ultrawide backdrop, narrow status bar (#1901)
    • run a global ValidationPipe on the relay and website-api (#1920)
    • treat cursor moves as layout so Claude's spinner survives the ANSI strip (#1822)
    • the web dashboard tells a BYO account the truth about its own data (#1819)
    • honour the client-supplied device id in the keyed enrollment path (#1640) (#1816)
    • bound the revocation close reason to 123 UTF-8 bytes (#1817)
    • attach applies .git/info/exclude when .checkpt/ already exists (#1811)
    • force the detect live path on in release (mock DCE'd) (#1755)
    • give the root postinstall its script before every image install (#1806)
    • stop the coming-soon flash and the false state-mismatch on OAuth sign-in (#1772)
    • pin the portal URLs and make the apex canonical (#1773)
    • don't fail every Docker image build from the node-pty postinstall (#1741) (#1794)
    • the alerting scripts run under bash -e, which broke every guarded path (#1715) (#1788)
    • make every PTY spawn work, clean install and packaged sidecar (#1741) (#1782)
    • revert the partial react-router major bump that forked the router (#1735) (#1736)
    • copy libs/auth/types into the migration image (#1731)
    • watch every web build input, and guard the filter from drifting (#1730)
    • unbreak the API image builds (#1723)
    • treat Copilot's suppressed findings as a persistent open set (#1717)
    • derive the SSR runtime dependency list from the built bundle (#1720)
    • serve project issues and change requests for PAT-bound projects (#1302) (#1700)
    • stop leaking prompt title/summary/PTY context to the relay (#1703)
    • surface partial scans + collapse services/env in detect adapter (G1, G2) (#1689)
    • scan the scaffold-destination override in the detect effect (#1690)
    • strapi CLI row + guard one-shot/hook framework promotion (G3/G5) (#1698)
    • let the Studio capture use the simulated detector again (#1691)
    • refresh device claims on a jittered cadence (#1638) (#1684)
    • resolve a session's PTY env through the daemon (#1666) (#1685)
    • resolve plan coverage across org membership (#1637) (#1681)
    • fan control-plane events out across relay instances (#1497) (#1678)
    • make FakeRedisHub's virtual clock actually virtual (#1673)
    • regenerate stale makefile goldens to derived ruleset hash (#1651)
    • resolve local (excluded) .checkpt config from the repo root for worktree sessions (#1634)
    • unbreak main β€” align invariant suite + stale golden with composite-root synthesis (#1621)
    • keep the relay to one task and deploy it stop-then-start (#1493) (#1604)
    • parse Claude's welcome when facts sit beside the mascot art (#1597)
    • synthesize root workspace for composite-only repos + referential-integrity check (#1135) (#1138)
    • relay account-device surface + the fan-out that never worked; feat(#1321): blocking device-onboarding gate (#1562)
    • wire RELAY_KEK into the relay task def (#1590) (#1595)
    • capture Studio id/vi/cs β€” main is red (#1602)
    • derive locale lists from the apps, add a coverage gate (#1469) (#1572)
    • stop vendor update prompts reporting as parse regressions (#1571)
    • add cs/vi to the blog locale list, guard it in CI (#1545) (#1546)
    • point /issue board-add at project 12, not stale 7 (#1526)
    • pin Tailwind's scan root so SSR and client emit the same CSS (#1513) (#1532)
    • make the daemon URL runtime-configurable (#1475) (#1528)
    • give container legs a Node before pnpm/action-setup runs (#1520) (#1521)
    • allow the local-trust token to live outside the home dir (#1474) (#1518)
    • key rate limits on the real client IP, not the proxy (#1489) (#1517)
    • send the CSRF token on cookie-mode mutations so sign out works (#1504) (#1505)
    • give the app a real relay credential (#1463) (#1486)
    • run react-router typegen before the root solution typecheck (#1479)
    • localize the New Project stepper pip labels (#1419) (#1464)
    • require a JWT on the relay WS in every environment (#1462)
    • backfill missing uk approval-rule error translations (#1465)
    • light-mode sidebar logo, org switcher wording, security page layout (#1459)
    • dashboard feedback sweep β€” organizations terminology, truthful overview, working security page (#1445)
    • finish the Operations tab strip's token migration (#1444)
    • security page sessions table overflow β€” bounded UA column + shared parseUserAgent (#1443)
    • bundle daemon + config sidecars in Windows portable zip (#1388)
    • regenerate fastify-api and sveltekit-app goldens (#1362)
    • system requirements reflect what the shipped bundles enforce (#1330)
    • truth sweep β€” remove unshipped tier claims across pricing, docs, and FAQ (#1347)
    • legible light-mode auth + app-wide contrast sweep + sign-in redesign (#1287)
    • reconcile end-to-end-encryption claims with what actually ships (#1227) (#1286)
    • deny symlink traversal when the repo root realpath is unresolvable (#1098)
    • backfill relay/version keys into lagging locales (hi, zh-Hant, nl) (#1268)
    • admin β€” sweep residual accent/status utilities + literal white onto semantic tokens (#1250)
    • repair Studio de/ja locale drift β€” main is red (#1213) (#1215)
    • terminal pane blank on tab re-activation β€” keep mounted + re-fit/refresh (#873)
    • checkpt-app pt-BR β€” top up #1175 billing intent error keys (#1194)
    • de web β€” top up #1175 billing intent error keys (#1188)
    • pt-BR Studio β€” top up #1021 tray + agent-lifecycle keys (#1187)
    • set website-api FRONTEND_URL for Stripe checkout redirects (#1155)
    • preserve raw body for Stripe webhook signature verification (#1151)
    • stop packages/shared changes triggering the macOS mobile E2E (#1118)
    • transition sessions to awaiting-input on PTY quiescence (#671) (#986)
    • add missing fr Studio keys for tray + agent lifecycle (#1129)
    • re-run control-plane bootstrap after auth.provision (#664) (#985)
    • normalize nested set-array sorting + stub root id conformance (#425) (#1045)
    • wire Studio desktop OAuth clients into website-api task def (#1109)
    • bundle @aws-sdk/* runtime deps so the image boots (#1092)
    • drop the last stale FEATURES.vcs reference (#660) (#1093)
    • default VITE_CHECKPT_BASE_URL instead of hard-throwing on a blank page (#675) (#851)
    • widen docs content to footer edge, retune footer spacing (#1025)
    • retry only CSRF 403s; mark the token response non-cacheable (#1031)
    • stop token-refresh storm (single-flight + failure backoff) (#979)
    • restore Dock/keyboard focus for macOS dev runs + worktree stamp (#928)

    A11y

    • the axe gate had never looked at admin, at the public board, or at the two routes with live findings (#3628)
    • an overlay inside the screen it covers is not a modal (#3624)
    • the keyboard path into a clickable row is a real button (#3619)
    • the ratchet only ever walked the app it was born in (#3618)
    • drain the last 60 raw literals off the ratchet (#3537)
    • drain the 119 raw-color literals the contrast guard cannot see (#3543)
    • drain the last 63 raw-palette utilities off Docs and the portal banners (#3542)
    • drain the last 10 raw literals in the shared auth UI (#3539)
    • axe runs against the rendered DOM in the one check that gates a merge (#3361)
    • skip-to-content link, field-level error association, and the missing h1s (#3293)
    • make aria-modal true on the thirteen surfaces that claimed it (#3287)
    • the icon-only controls say what they do, and the ratchet keeps them saying it (#3258)
    • the high-visibility pages leave the raw palette (#3240)

    Deps

    • the shipped subset is derived on every run, not remembered once (#3717)
    • the image already installs the shipped closure β€” now it audits it (#3720)
    • most of the alert stream was about files that are not the product (#3640)
    • the prod audit is a watch, permanently β€” and here is why (#3641)

    Dr

    • give the recovery drills a cadence, a named owner, and a dataset column (#3699) (#3761)
    • name the KEK custody window so raising retention shows up in the plan (#3734)
    • a retired KEK must outlive the newest backup that needs it (#3649)
    • the feature was built, and pointed at nothing (#3634)
    • the staleness probe watched the website, not the tier that matters (#3633)
    • DR-4 β€” the rollback is rehearsed, and the runbook stops calling it a claim (#3581)
    • Drill B β€” the vault restore is faster than PITR, and its metadata does not round-trip (#3477)
    • the restore path is rehearsed, and the backup history now outlives the instance (#3383)
    • one env var could turn every merge to main into a prod wipe (#3354)
    • DR-2 β€” a delete you can take back, and a copy of the key that cannot be re-derived (#3300)
    • incident response β€” runbook corrected, alert-delivery state on record, incident runbooks sketched (#3282)

    I18n

    • the org invitation email speaks the reader's language (#3241)
    • finish applying "CheckPt Agent" β€” 40 shipped strings said "daemon" β€” plus the locales/** guard (#2729)
    • route the Settings tab rail through t() (#2068)
    • route project + session tab labels through t() (#1785) (#1800)
    • localize docs system-requirements table rows (#1336) (#1508)
    • pl β€” mobile (checkpt-app) (#1276)

    Infra

    • website-api can call Anthropic, and says at boot whether it can (#3652)
    • SSR hosting for public web β€” Fargate origin + CloudFront/caching (#1341) (#1477)

    Legal

    • the pack's own subprocessor tables were two vendors behind the list (#3685)
    • the privacy policy now says staff can sign in as you (#3637)
    • mobile telemetry is crash-only β€” replay off is the decision, analytics off until consent exists (#3453)
    • write every legal document CheckPt needs β€” counsel checks them (#3384)
    • the subprocessor list named neither vendor adopted since it was written (#3355)
    • an honest privacy policy β€” subprocessor list, DPA path, real company name (#3245)

    License

    • a NOTICE was carried only if the manifest admitted to Apache (#3455)
    • ship third-party attribution with every distributed artifact (#3325)
    • drop the AGPL-3.0 ua-parser-js@2 before it ships (#3239)

    Ops

    • build the activation funnel and prove it populates (#3770)
    • the apt retry deleted the directory apt needs, so every retry after the first was decorative (#3751)
    • watch the crash stream, and gate the accessibility tree (#3742)
    • the Studio E2E gate called "the deps never installed" a test failure (#3749)
    • a placeholder Stripe key survived every probe we had (#3716)
    • the native gate never compiled to completion β€” disk, then timeout (#3683)
    • make the coverage-reachability claims enforceable, not remembered (#3504)
    • nothing compiled native code, so a cross-SDK package merged green (#3454)
    • give mobile a bundle gate, and fix the break it found (#3360)
    • the path-filter guard now covers the test workflows too (#3351)
    • give mobile a compile gate on PRs, and inventory the rest (#3345)
    • say where codecov's floors actually apply β€” trunk, not PRs (#3341)
    • the wizard walk gates PRs, and its stale gate assertion is gone (#3251)

    Polish

    • lay out honestly on a tablet (#3686)
    • store-submission sweep β€” zh script split, RECORD_AUDIO, one brand casing, dead route, font clamp, stale docs (#3314)

    Sec

    • the BYO pages omit what the relay cannot boot without, then say to skip it (#3774)
    • the flow log kept the refused half and dropped the useful one (#3773)
    • three credentials and one ALB attribute with no owner (#3772)
    • a key removed from the seed was never removed from the account (#3701)
    • the Homebrew tap PAT is the credential SEC-19 retired, still live on the install path (#3703)
    • we documented a required secret nothing reads (#3704)
    • cover the app-switcher snapshot, and re-lock after a minute away (#3736)
    • scope the deploy role's CloudWatch Logs read off * (#3702)
    • the admin plane gets its own key, and the release PAT goes away (#3576)
    • an incident now leaves a forensic trail β€” ALB access logs, VPC flow logs, CloudTrail (#3575)
    • SEC-4 β€” the admin plane stops being a committed password (#3479)
    • RELAY_KEK becomes a keyring, and rows say which key wrapped them (#3464)
    • derive the DR seed image from the live task definition (#3450)
    • the publish DTOs still advertised plaintext payloadVersion 1 (#3431)
    • pin the Clerk secret key now that the application is deleted (#3418)
    • SEC-24 β€” a SAST that runs, and a secret scan that sees history (#3403)
    • SEC-24 β€” pin every action, drop root, stop trusting a URL (#3404)
    • pin the prod deploy role to main + a gated production Environment, drop its secret read (#3353)
    • SEC-8 β€” the process asking for permission could grant it (#3365)
    • SEC-18 blast radius β€” immutable ECR, per-service SGs and execution roles (#3379)
    • a push hint could point the app at any relay, which harvested an account-scoped token (#3363)
    • a compromised org pool worker could reach every device of every member who used it (#3356)
    • SEC-1 β€” bind device ids to identity keys on key-directory ingest (#3303)
    • SEC-21 β€” desktop hardening: tokens to the keychain, command_spawn takes a recipe, CSP narrowed (#3324)
    • SEC-20 β€” the Android backup that prebuild turned back on, and a posture that lived in an optional argument (#3321)
    • SEC-11 β€” CSP was report-only, and enforcing it would have broken the app (#3304)
    • SEC-23 app hardening β€” session-bound CSRF, step-up re-auth, invite binding, envelope AAD, daemon keychain (#3295)
    • SEC-22 relay hardening β€” fail-closed org guard, view-only exec gaps, sealed run/inbox detail (#3294)
    • gate analytics and session replay on cookie consent (#3275)
    • a refresh token is not an access token, and the WS credential leaves the query string (#3276)
    • SEC-7 β€” the daemon served session output, inbox and identity to the LAN unauthenticated (#3277)
    • audit the denials, and stop a wipe erasing the trail (#3268)
    • the admin portal has no signup and no CLI grant (#3273)

    Security

    • ship a content security policy, replacing csp: null (#2217)
    • gate Swagger out of production + security headers on the web/admin origins (#2146)

    Tooling

    • the suppressed block is a heading, so the documented parse found nothing (#3778)
  6. 0.1.4-test.8

    9 september 2026
    Details

    What's New in v0.1.4-test.8

    Added

    • give App Review a way to actually exercise the app (#3771)
    • an org-owned machine opens a read-only Studio, not a sign-out (#3839)
    • a device page answers what is RUNNING on the machine, not what projects were opened on it (#3825)
    • the approval proof survives the pipe (#3817)
    • Personal or Organization at device setup (#3796)
    • settings was a 1000x680 dialog that never grew β€” it is a screen now (#3779)
    • approval-signature groundwork β€” content commitment and key publication (#3763)
    • give a device to the org β€” userβ†’org ownership transfer (#3752)
    • spoken replies β€” state the scope, cooperate with screen readers, respect quiet hours (#3769)
    • the two drawer entries that led nowhere, answered (#2487, #2488) (#3754)
    • the activation events β€” device paired, first session, first approval (#3698)
    • the public board screens what reaches it (#3674)
    • Studio's events were anonymous β€” they now carry the account (#3687)
    • Studio had no analytics gate at all β€” now nothing is captured before consent (#3661)
    • a load target that can actually be a fleet (#3650) (#3655)
    • Integrations was four screens of one flat list β€” split it into three rail pages and collapse the connect forms (#3670)
    • consent was an island in AsyncStorage; it now follows the account (#3669)
    • the web activation events β€” signup through subscription (#3663)
    • what plan is this user actually on, and who owns Lockdown Media (#3642)
    • analytics consent belongs to the account, not to one browser (#3623)
    • observe whether prod has been applied, daily and without credentials (#3644)
    • every event was an anonymous device β€” web now identifies the account (#3639)
    • voting on the public feature board (#3577)
    • declare the iOS privacy manifest the binary was shipping without (#3574)
    • the public board's front door (#3580)
    • brand the Windows installer and localise its chrome (#3586)
    • a public roadmap anyone can read, logged out (#3550)
    • human control of the public feedback board (#3558)
    • the event taxonomy β€” names are a schema, so decide them once (#3535)
    • put Dave and Gulsah in Lockdown Media Inc. on the Team plan (#3538)
    • the generator grid gets its brand marks (#3517)
    • branded drag-to-install window for the macOS DMG (#3540)
    • evaluate approval prompts against stored rules and auto-approve on match (#3494)
    • feedback votes table + publication/moderation columns (#3510)
    • in-app analytics consent control (#3478)
    • honour Global Privacy Control β€” the banner asked people who had already answered (#3468)
    • backend exceptions were being reported to nobody (#3457)
    • rebuild the Sessions control bar, and make the launch wait say what it is (#3449)
    • Stripe Tax, behind a flag, so the registrations stop blocking the code (#3408)
    • the admin console has no password (#3358)
    • reclassify service ↔ task in the wizard, persisted as an override (#3340)
    • record the over-cap state a downgrade leaves, and tell the account holder once (#3319)
    • Orbit takes over the 404, error and suspense screens (#3256)
    • a kill switch that does not need a deploy (#3290)
    • async release-notes curation, visible outcomes, and a workable editor (#3266) (#3269)
    • watch production between deploys, and stop claiming it's up (#3095)
    • record ToS/Privacy acceptance at signup, and gate age (#3243)
    • make the promised data export real (GDPR Art. 20) (#3242)
    • brand marks for every framework, service engine and agent (#3247)
    • the push prompt is asked once, with a reason in front of it (#3250)
    • the account-level notification class β€” billing and security events reach a person (#3097)
    • the review screen runs on real data, and the flag it hid behind is gone (#3176)
    • hands-free mode β€” a screenless conversation (#3076)
    • seal the notification-history body at rest and on both read planes (#3117)
    • the six machine-origin events reach the bell (#3087)
    • serve per-check CI detail and PR review comments (#3093)
    • a daemon secret.* op family, so env secrets land on the device that reads them (#3070)
    • gate notification routing, email cadence & chat-started tasks (#3084)
    • stamp every account-scoped cache, defer an unreadable approval, and give a service runtime an owner (#2853) (#3080)
    • prove a prod deploy worked, don't assume it (#3069)
    • PR queue kanban + swimlane layouts (#274) (#3066)
    • DEK-encrypt the digest queue's content and cut its TTL to 16 days (#3056)
    • give org-owned webhook destinations a surface (#3048)
    • tell a member what they lose before they confirm leaving an org (#3050)
    • discover compose files and Procfiles outside the repo root (#2899)
    • cloud worker recipe + ephemeral lifecycle (#3022)
    • give inbound chat a UI, and a /link-chat page that isn't a 404 (#3024)
    • prove the phone's device id instead of asserting it (#3029)
    • the phone can say where a project's events go (#3021)
    • surface delivery failures β€” a dead channel is announced, not just counted (#3004)
    • human-quality service display names (#2898)
    • auto-checkpoint every turn β€” the undo point is always one turn back (#2980)
    • the connector gate resolves per row, from that row's owner (#2999)
    • a datastore pass, so Workspace.orm stops being inert (#2941)
    • the wizard's Project name says it is required (#2938)
    • compose parser v2 β€” YAML lib, extends, IPv6, override merge (#2903)
    • the three rungs Studio could see, and the fourth it sent you to your phone for (#2994)
    • a session on an org worker runs as the member who started it (#2974)
    • connector docs + the ecosystem chips #1312 took away (#2964)
    • gate connector management β€” one key, owner-scoped, on three planes (#2963)
    • a routing rule matches a SET of events, not one category (#2983)
    • desktop notifications, and the toast you don't get for the window you're looking at (#2975)
    • org workers on a BYO relay β€” redeem enrollment through the identity boundary (#2973)
    • custom webhook destinations β€” outbound HMAC signing, an SSRF guard, and per-destination health (#2953)
    • an org connector switched off blocks the server for everyone (#2965)
    • WebSocket/SSE inspector β€” watch on inspector.read, frame send behind inspector.exec.ws (#2743)
    • the phone says where the work runs, and why one more will not start (#2956)
    • project portability tiers β€” pinned projects, a project-first picker, and graduation (#2947)
    • run the D2 override layer inside detect() (#2896)
    • resolve nr script-runner indirection (#2868)
    • N-entry per-agent MCP config provisioning (#2940)
    • one VCS event, one post per destination (#2900)
    • geometry that outlives the PTY, and a barrier for "done writing" (#2951)
    • resumable sessions β€” pick your work back up after a crash, reboot or shutdown (#2935)
    • the concurrency wall names what is running, and offers to stop one (#2950)
    • connector management β€” catalog, scopes, per-project opt-out, audit (#2932)
    • every advertised channel real or removed β€” email wired, SMS deleted, desktop withheld (#2927)
    • promote the runtime DetectionResult validator into the package (#2890)
    • rspack and rsbuild are framework CLIs, not tool tasks (#2866)
    • decompose a nested composite, and let chain ambiguity survive (#2904)
    • at-cap recovery β€” the refusal names what is running, and offers to stop one (#2925)
    • Studio sidebar goes project-first; devices become availability metadata (#2751)
    • wire the connector gate β€” proxy, approvals, deny handling, audit (#2842)
    • safe shutdown β€” one "you have active sessions" treatment at every boundary that means leaving (#2895)
    • one decision engine β€” reconcile the two routing planes, delete the loser (#2893)
    • tell the other phones when a sound changes (#2891)
    • shared-worker credential resolution β€” org-owned VCS connections, the clone ladder, and a preflight (#2858)
    • device-code enrolment replaces pairing (#2844)
    • gate session sharing & export at Pro (#2852)
    • an org's worker pool on the web, with owner/admin revoke (#2854)
    • the event catalog, and the events that were never raised (#2631)
    • rebuild the session top bar as one aligned row (#2855)
    • org worker slots β€” a pooled entitlement, and an org that pays for it (#2801)
    • surface session export + share from the drawer (#2354) (#2837)
    • curated connector catalog + BYO, with row provenance (#2843)
    • org workers become routable β€” owner-scoped proxy plane + a picker that names them (#2738)
    • start Add service from a component picker, not a blank form (#2830)
    • one release button, a dialog that fits, and platforms you can actually combine (#2791)
    • connector credentials β€” keychain storage + device-local OAuth (#2754)
    • shareable read-only session replay links (#2756)
    • start an agent task from Slack or Discord (#2784)
    • a rail that discloses instead of hiding, and panels that actually draw (#2803)
    • gate session checkpoints behind Pro (Class B daemon) (#2772)
    • an org worker can publish a session, attributed to the member who started it (#2740)
    • session gist β€” what a session is about, and where you left off (#2752)
    • org governance β€” permitted backends, no-literal policy, reference audit (#2750)
    • external secret managers via vendor CLI + .checkpt/env-sources.toml (#2746)
    • sibling-worktree and sibling-project providers (#2741)
    • gate the inbound VCS webhook pipeline at Pro (vcs_event_stream) (#2760) (#2769)
    • approve/deny an agent action from Slack or Discord (#2749)
    • infer project-vs-session scope from worktree variance (#2739)
    • auto-pull on session start β€” clone+attach on the target device when unmounted (#2572)
    • markdown session summary + diff/patch export (#2737)
    • every restore takes a safety checkpoint first (#2735)
    • MCP connector registry β€” entity, CRUD, scoping and distribution (#2629)
    • account-wide merged project list with per-project device availability (#2721)
    • terminal recording β€” a session's output ring as an asciicast (#2576)
    • inbound Slack + Discord apps and chat identity mapping (#2654)
    • session-drawer Checkpoints UI (#2328) (#2638)
    • MCP server inspector β€” catalog on inspector.read, tool call behind inspector.exec.mcp (#2645)
    • inbox triage on the relay tier β€” snooze/dismiss actually leaves the feed (#2640)
    • BYO relay β€” the operator sets the limits, not the hosted plan (#2574)
    • the projects folder is editable from Settings (#2675)
    • test a clone URL before cloning it (#2679)
    • delete a release that never shipped, and give its number back (#2674)
    • one empty-state component, even hero tiles, always-four quick actions (#2662)
    • seed the default Studio tips catalog (#2660)
    • honest local-folder copy, empty-repo default, and explained-disabled controls (#2663)
    • fleet parse telemetry β€” production as the ultimate canary (#2637)
    • lift the dark ramp off flat black and give headers their own band (#2659)
    • serve web's auth-gated screens from a mock, and gate the surface (#2634)
    • org workers resolve their own relay map (#2636)
    • sortable releases table, last-edited attribution, and layout fixes (#2646)
    • session-attributed notes, drop the notes flag (epic #2099 exit) (#2618)
    • the daemon evaluates approval rules (#2639)
    • GraphQL inspector β€” introspection + a query runner that is provably a read (#2537)
    • seal org-hosted session content to the org, not one account (#2624)
    • checkpoint ops β€” restore, delete, and the four daemon verbs (#2619)
    • configure expo-updates so launch binaries are OTA-capable (#2602)
    • org enrollment tokens + checkptd pair --org-token (#2575)
    • voice steering β€” approve or deny with a spoken instruction, on-device (#2547)
    • wire Custom Sounds end to end and remove its flag (#2567)
    • queue / broker inspector β€” Kafka, RabbitMQ, BullMQ, NATS (#2539)
    • detect services from Nx project.json targets (#2222) (#2592)
    • Linear connector (issueβ†’session) (#2578)
    • rotate the org content key forward, on an authenticated declaration (#2554)
    • inbox snooze and dismiss actually work (#2596)
    • the Sessions tab as cards or a table, with search and filters (#2533)
    • checkpt agent β€” CLI surface over the Agent's OS-service machinery (#2571)
    • audit the data_inspectors gate against the verb registers β€” derived, never listed (#2569)
    • fail the PR that closes a cited matrix issue, before the merge does (#2577)
    • pairing screen offers Studio and terminal, not CLI only (#2564)
    • unlist post-MVP coming-soon rows for launch; promote GitHub Projects (#2360) (#2573)
    • only the device running a dev server can name its address (#2536)
    • GitHub Projects (v2) connector (issueβ†’session) (#2541)
    • gRPC inspector β€” reflection schema browser + gated call builder (#2540)
    • org-owned devices β€” ownerType/ownerId, guards and counters (#2518)
    • create flow stops asking for a directory β€” placement defaults into the projects root (#2535)
    • resolve entitlements from the owner of the thing being worked on (#2538)
    • serve the plan catalog to Studio, and ask for a billing region instead of a currency (#2546)
    • env sources β€” persist the wizard's env, and sweep every place a value can come from (#2528)
    • version-skew UX for a standalone Agent Studio doesn't own (#2534)
    • org keyrings reach every door, and stop growing quadratically (#2516)
    • revamp Home, add a system-metrics tile, and fix the empty Inbox (#2530)
    • Jira connector (issueβ†’session) (#2501)
    • API viewer β†’ Postman-like β€” collections, environments, history, auth, import/export, assertions (#2494)
    • the entire agent-facing MCP surface is Pro (agent_mcp_tools) (#2517)
    • Redis viewer power β€” value/TTL edits, pub/sub monitor, memory stats, export (#2509)
    • a loopback Agent that isn't co-located stops being treated as this machine (#2515)
    • per-device projects root β€” onboarding step + daemon settings store (#2511)
    • per-owner entitlements claim, and no back-compat for relays that don't exist (#2497)
    • Home, Inbox, Sessions and Devices as the phone's four tabs (#2484)
    • MongoDB inspector β€” collections + document browse (#2492)
    • mutating MCP control tools ride the approval flow (#2498)
    • record who started a session, from the channel and not the body (#2500)
    • remote-aware project picking for non-co-located Agents (#2490)
    • remove the Community cross-device approvals cap (#2483)
    • brand the app icon and splash (#2482)
    • Postgres viewer power β€” SQL editor, EXPLAIN, export, ER diagram (#2464)
    • one subscription per account, on every plane (#2428)
    • wire the Notes tab to the relay's real sealed notes (#2467)
    • give mobile the console's semantic palette (#2468)
    • the relay derives the device id, it no longer accepts one (#2478)
    • make VCS provider availability config, flag and secret together (#2474)
    • guard the Compare-plans matrix localization, and fix nine leaks (#2475)
    • mail catcher inspector β€” four products behind one closed op union (#2453)
    • update dialog renders localized release notes from notes.json (#2454)
    • one scrollbar across web, admin, Studio and mobile (#2414)
    • session-scoped MCP inspector query tools (read-only by construction) (#2465)
    • mobile deploys from admin β€” EAS build + internal-track submit, watched end-to-end (#2466)
    • scaffold a new project straight into a repository (#2461) (#2470)
    • presence is per relay β€” render known-but-not-connected (#2460)
    • MySQL/MariaDB inspector behind the existing db verbs (#2451)
    • personal vs org allowances, and the owed BYO qualifier (#2459)
    • gate on resolved feature entitlements, not the plan tier name (#2457)
    • session-scoped MCP control tools β€” services, tasks, checkpoints, env doctor (#2455)
    • tell the old audience when a row stops being theirs (#2212)
    • gate issue-seeded sessions behind issue_seeded_sessions (#2446)
    • the mutating inspector capability, per family (#2450)
    • merge on read across relays, with legible degradation (#2445)
    • session-scoped MCP observe tools β€” logs, status, ports, diff, deps (#2395) (#2448)
    • changelog renders localized summary + expandable details from notes.json (#2447)
    • gate the data-plane inspectors behind data_inspectors (#2449)
    • config-driven Compare-plans comparison matrix (#2432)
    • force on re-detect + last-known digest on cold open (#2273)
    • confidence calibration pass β€” reliability table, ECE, H1/H2/H3 verdicts (#2274)
    • ship as a free companion, remove all in-app purchasing (#2438)
    • seal project_notes title+body to the author's devices (#2431)
    • pick a device, get that device's agent list (#2433)
    • inject the session-scoped MCP endpoint at agent spawn (per agent type) (#2437)
    • inspector framework β€” an engine signal, a viewer registry, and a shell (#2426)
    • publish structured notes.json (all locales); demote latest.json notes to transport (#2434)
    • chunked transport for mobile image input over the proxy plane (#2415)
    • gate the PR / change-request queue behind change_request_queue (#2429)
    • apply the Appearance editor settings to the real editor (#2430)
    • sweep the Tauri commands that answer about the wrong device (#2419)
    • release_note_translations β€” fan-out on finalize, trailing, human-review locks (#2316) (#2427)
    • extend the PlanFeatureKey gate framework (#2361)
    • multi-window launch configurations β€” scoped windows, per-window scale, saved layouts (#2388)
    • MCP server scaffold with per-session token auth on /mcp/v1 (#2408)
    • wrap the org key into the invite, unwrap on accept β€” no online teammate required (#2387)
    • admin-managed "Did you know" tips (#2418)
    • say so when a session ends or a project is saved or deleted (#2417)
    • release curation review UI on ReleaseDetail (#2315) (#2403)
    • route the session diff through the daemon so remote sessions reach parity (#2400)
    • AI curation pass over a release's draft notes (#2314) (#2343)
    • give sign-in and first-run the Studio scene (#2381)
    • deploy-console redesign for the release detail page (#2271)
    • session Files surface + open-a-changed-file from the diff lists (#2308)
    • make Expo Go a working dev mode, with banners for what's off (#2312)
    • stop wiping the database on deploy, launch it from the console (#2267)
    • detect.* LRU + SQLite cache, force, and detect.summary (ADR 0009) (#2227)
    • project Files tab on the real mount root β€” removes FEATURES.filesBrowser (#2245)
    • deliver org invitations by email, and let an admin resend one (#2209)
    • make the Services step tell the truth, and let the user correct it (#2206)
    • bind getCiStatus for Bitbucket and Azure DevOps (#2216)
    • Bitbucket + Azure DevOps webhook event adapters (#2210)
    • CodeMirror 6 and the shared FileEditor component (#2225)
    • org content key + kid-addressed keyring (#2215)
    • one device↔device plane for session I/O β€” and a gate so it can't rot again (#2158)
    • file.* op family β€” list, read and write a project path (#2218)
    • multi-currency subscriptions across 19 launch currencies (#2112)
    • env secrets actually resolve β€” OS keychain read + write, resolved late so nothing persists (#2198)
    • make the phone the hero below lg, and stop shipping the desktop shot to phones (#2186)
    • merge semantics on read paths β€” union devices and approvals, qualify projects by relay (#2079)
    • notes get an owner and an org β€” private by default, promoted to share (#2163)
    • close the mobile parity gap β€” Projects, Inbox, org templates, Home (#2183)
    • fleet view β€” every agent session across every device on one screen (#2174)
    • detector-wizard fixes (#2141, #2140, #2145) + Studio chrome pass (#2153)
    • materialize context files, and an ownership ledger to make it safe (#2131)
    • exhaustive route-crawl mode (OVERFLOW_MODE=all) (#2058)
    • seeded session fixture for auth-gated screens (#2056)
    • confirm ownership transfer, and only ownership transfer (#2116)
    • section-scoped value-vs-en leak gate (#1835)
    • stage releases by bump, with the server owning the version (#2110)
    • connect-on-demand relay sockets, keyed by relay (#2082)
    • native Android billing via the Stripe Payment Sheet (#2098)
    • fail-closed overflow CI gate + per-surface baseline ratchet (#1832)
    • GitLab webhook event adapter β€” /webhooks/gitlab now serves (#2092)
    • meter cross-device approvals on the hosting daemon, never local ones (#2088)
    • apps/web surface under vite dev (#2055)
    • context-file manifest, path gate and handoff materialization plan (#1995)
    • route relay.rest by org, so writes land on the right relay (#2078)
    • fan the push token out to every registered relay (#2075)
    • hold N relay connections with per-relay credentials (#2050)
    • fail-closed approval gate for agent MCP tool calls (#1997)
    • gate organization creation behind the Team plan (#2051)
    • register on every resolved relay β€” N credentials, not one (#2043)
    • add the mobile RN-web surface + static length-delta backstop (#2015)
    • view-only devices, gated to Pro+, plus Studio plan awareness (#2036)
    • relay-qualified project identity β€” declare the axis, key on it, store it (#2026)
    • resolve every relay per org, not one URL per user (#2033)
    • stamp the owning-relay hint into the push data payload (#2030)
    • task run history β€” exit codes, durations, revisitable output (#2001)
    • signed-request verification and approver authorization for Slack approvals (#1998)
    • auto-fix parser regressions into a draft PR (#1996)
    • anonymous QR re-pair keeps its device id by proving the key (#1951) (#2002)
    • source /changelog and /docs/whats-new from the live releases feed (#2003)
    • device-limit dialog offers only workers for removal (#1936) (#1988)
    • report a connected phone as online, and teach the device pickers to tell kinds apart (#1991)
    • expose the inspector query ops over the proxy (#1982)
    • sessions replicate like devices and projects β€” not peer-cache fan-out (#1950)
    • mobile answers prompts over the relay-brokered transport (#1932)
    • enforce the ratified per-locale register in CI (#1946)
    • give chat channels a workspace to belong to (#1305) (#1899)
    • localize pricing plan bullets, limits & CTAs (#1834)
    • a relay that is already enrolled converges instead of duplicating (#1929)
    • keyboard shortcuts for pinned task quick actions (#1797) (#1925)
    • Redis service inspector β€” SCAN-based keyspace browse (read-only) (#1914)
    • relay self-enrollment β€” one-time token, registered key, no shared secret (#1908)
    • let a service declare its port through an env var (#1916)
    • Postgres service inspector β€” schema + data browse (read-only) (#1910)
    • runner service inspector on real process state + output (#1583) (#1902)
    • attribute webhook events to their project and org (#1305) (#1898)
    • email notification delivery via SendGrid + Email chip (#1308) (#1648)
    • mobile service inspector on real Metro state (#1587) (#1824)
    • initialize starter config for a project with no .checkpt/ (#1664) (#1839)
    • API service inspector β€” route discovery + auto-addressed request builder (#1584) (#1823)
    • expose config, exec and service ops over the proxy (#1821)
    • frame the wizard detect services/env as a preview (#1759)
    • overflow-detection engine + Studio surface (#1744)
    • services topology view on real declared deps (#1575) (#1818)
    • register the Romanian (ro) locale β€” web switcher + backend catalog (#1385) (#1652)
    • enforce allowRemoteSessions end-to-end (#1813)
    • build the shared Docker install layer on every PR (#1795) (#1809)
    • session output over the shared cursor/gap contract (#1542) (#1807)
    • prompts to relay tier β€” an approval survives the originating device going offline (#1791)
    • web service inspector on real dev-server state + embedded preview (#1582) (#1801)
    • dependency-ordered cascade start/stop with readiness gating (#1581) (#1777)
    • pinned tasks surface as session quick actions (#1568) (#1798)
    • funded-turn tier β€” assert the in-flight hooks against a real turn (#1787)
    • Discord and Teams webhook channels (#1306, #1307) (#1781)
    • i18n the live-detect surface (DetectStep log + errors) (#1758)
    • P3c β€” Python pack parity (tooling + registry-miss) (#1708)
    • adopt the shared stream for devices and projects (#1541) (#1790)
    • run a session's tasks in that session's worktree + env (#1567) (#1770)
    • real per-service CPU/RAM sampling, process-tree inclusive (#1580) (#1768)
    • Env import pane writes real config (#1560) (#1750)
    • forward the whole account stream, and give the Agent a cursor (#1538) (#1767)
    • session Services drawer on real daemon runtime (#1728) (#1752)
    • Slack webhook channel β€” destinations, subscriptions, daemon dispatch (#1305) (#1670)
    • alert on prod deploy failures in Slack (#1715) (#1743)
    • one entity cache + cursor/gap handling, retire the per-store reducers (#1745)
    • run a task in a PTY pane via a daemon-owned run (#1566) (#1737)
    • per-service log capture + stream to the Logs surface (#1579) (#1733)
    • health probe executor (http/tcp/exec) β€” real service health (#1578) (#1732)
    • one cursor/gap/snapshot service for every entity (#1537) (#1714)
    • shared vs per-session service lifecycle + cross-worktree ownership (#1577) (#1710)
    • org-curated starter template list (#1635) (#1688)
    • Env Ports pane on real daemon port allocations (#1559) (#1699)
    • project Tasks tab on real .checkpt/tasks.toml (#1565) (#1665)
    • guarantee sessions carry a resolvable relay project id (#1529) (#1647)
    • service supervisor β€” spawn/stop/restart + runtime registry (#1576) (#1683)
    • Romanian (ro) β€” Studio (#1675)
    • Romanian (ro) β€” mobile (checkpt-app) (#1672)
    • Romanian (ro) β€” web + backend templates (#1660)
    • Go rule pack β€” gin/echo/fiber/chi via go.mod (P3b) (#1524)
    • transactional outbox so a mutation cannot skip its fan-out (#1536) (#1682)
    • authenticated encrypted peer-session channel (#1523) (#1686)
    • P2 β€” runtime versions + non-JS package managers + unrecognised notes (#1480)
    • write .checkpt/ at project creation, without the npm CLI (#1592) (#1671)
    • Env editor pane on real .checkpt/env.toml (#1557) (#1668)
    • project Services tab on real .checkpt/services.toml (#1667)
    • subscribe-gated + compressed cross-device streaming (#1415) (#1658)
    • BYO relay reads identity from the hosted relay (#1623) (#1649)
    • route proxy.forward across relay instances (#1496) (#1653)
    • scaffold from a house/org starter template (#1410) (#1642)
    • typed project-config client + provenance model (#1556) (#1641)
    • Bitbucket Cloud provider, end to end (#1303) (#1510)
    • extract Makefile targets as service/task sources (#1132) (#1240)
    • P1 Studio dev wiring β€” real detect.scan over local-IPC (ADR 0009) (#1471)
    • services.toml schema gaps β€” scope, expanded ServiceKind, source decision (#1573) (#1633)
    • deviceβ†’instance presence registry + deliverToDevice primitive (#1495) (#1632)
    • populate ci + agents context sections (#1131) (#1241)
    • replication contract + entity registry (#1535) (#1630)
    • expand env example-file allowlist β€” .env.sample/.env.template/.env.dist and friends (#1136) (#1139)
    • commit-vs-exclude config persistence + project-creation prompt (#1554) (#1626)
    • surface registry-miss as an unrecognized-framework diagnostic (#1238) (#1239)
    • scaffold a project from a GitHub template repository (#1409) (#1619)
    • standalone headless checkptd install + enrollment (#1620)
    • tasks.toml schema β€” new DocKind::Tasks (#1563) (#1627)
    • retire the public-tunnel transport (#1622)
    • ElastiCache Redis for the relay bus + optional relay client (#1494) (#1605)
    • public blog rendering + SEO β€” SSR, meta/OG, hreflang, sitemap (#1345) (#1603)
    • enroll on confirm β€” defer device creation, name it at creation (#1617)
    • per-locale "retry with more care" for blog translation (#1593) (#1607)
    • Azure DevOps Repos provider, end to end (#1304) (#1509)
    • GitLab connect + repo import, end to end (#1302) (#1499)
    • assert frameworks/tools from non-optional peerDependencies (#425) (#965)
    • Claude auto-translation fan-out on blog publish (#1344) (#1589)
    • wizard scaffold step β€” recipe picker, live PTY, post-run chain (#1408) (#1591)
    • UX pass across the portal and console (#1506)
    • Indonesian, Vietnamese and Czech β€” Studio (#1371, #1375, #1383) (#1501)
    • C2 β€” Rust rule pack (framework detection slice) (#899) (#1295)
    • live-PTY agent TUI canary harness (#1065) (#1467)
    • scaffold recipe registry + toolchain presence probe (#1407) (#1531)
    • content model + admin CRUD + public read endpoints (#1343) (#1530)
    • Home widget customization β€” registry + persisted layout (#1402) (#1522)
    • route peer transport over the relay WS (#1414) (#1527)
    • Vietnamese (vi) and Czech (cs) β€” apps/web + backend catalog + switcher (#1373, #1381) (#1503)
    • Indonesian (id), Vietnamese (vi) and Czech (cs) β€” mobile (checkpt-app) (#1502)
    • run a PTY command in a chosen working directory (#1406) (#1511)
    • URL-locale routing + hreflang for public pages (#1342) (#1519)
    • forward E2E-encrypted proxy envelopes between account devices (#1413) (#1516)
    • graceful-detection guarantees β€” walker budget, fault isolation, invariants, fixtures (#1466)
    • reject a non-existent or non-directory attach root path (#1405) (#1470)
    • Home screen β€” cross-device monitoring station (#1401) (#1484)
    • hierarchical "up" navigation β€” Location model + derived parent (#1441)
    • SSR the public surface β€” React Router 7 libraryβ†’framework mode (#1340) (#1396)
    • widen Linux compat β€” build Studio in an Ubuntu 22.04 container (glibc 2.35 floor) (#1440)
    • Ukrainian (uk) β€” apps/web namespaces + backend catalog + switcher (#1377) (#1458)
    • move approval-rules CRUD to website-api (#1359) (#1450)
    • match the console's palette to the web dashboard (#1446)
    • uk β€” Studio (#1379) (#1448)
    • Ukrainian (uk) β€” mobile (checkpt-app), incl. native OS strings (#1378) (#1447)
    • dev-login β†’ real account session + device-model correctness (#1412)
    • translation-delta harness β€” context packs + mechanical merge (#1392) (#1394)
    • localized product screenshots β€” one-command generation across all locales (#1418)
    • revamp the admin console's look and feel (#1417)
    • rebuild the auth backdrop as a rendered orbit plate (#1398)
    • rebuild the logged-in portal and auth screens (#1404)
    • E2EE slice 2 β€” recipient decrypt stack (key distribution, sealed transit, QR pinning, truthful EncryptionScreen) (#1317)
    • native Windows ARM64 (aarch64) Studio build (#1395)
    • Indonesian (id) β€” web + backend templates (#1369) (#1393)
    • clone any git URL in the new-project wizard (#1391)
    • version-support policy + floor-raise runbook + CI contract freeze (#1115) (#1389)
    • migrate web to httpOnly cookie auth (mirror admin cookie+CSRF) (#1364)
    • override-merge rule (D2, #902) (#1281)
    • complete the TS/JS framework + datastore registry (#425) (#1291)
    • C1 β€” Python rule pack (framework detection slice) (#898) (#1294)
    • reply to ticket submitter by email (#1014) (#1357)
    • structured feedback columns, attachments, triage list, throttle (#418) (#1212)
    • redesign auth screens + add Studio sign-up & password reset (#1296)
    • pre-launch site mode β€” public site with gated surfaces + notify-me waitlist (#1282) (#1283)
    • shared Pill chip + facet-counted filter pills across the console (#1314)
    • B2 β€” service detection + classifier (#896) (#1043)
    • Studio-era site polish β€” meta, sitemap, closing CTA, Clerk cleanup (#1211)
    • How It Works integration chip popovers + truthful ecosystem claims (#1297) (#1312)
    • two-device Studio harness + one-command db:reset (#1273)
    • handle Claude's /btw side questions in the terminal (#1210)
    • B1 β€” TS/JS rule pack, first end-to-end slice (#895) (#955)
    • live rule sync from quiet_hours.updated / approval_rules.updated (#1209)
    • sealed-envelope foundation β€” keys, enrollment, v2 codecs, rotation, push hardening (#235) (#1269)
    • BYO-relay serverβ†’server contract versioning + relay-min-version floor (#1278)
    • Hindi (hi) translation + language switcher β€” checkpt-app (#825) (#1279)
    • version adoption snapshots + admin Adoption view (#1171) (#1272)
    • Hindi (hi) translation + language switcher (#826) (#1264)
    • encrypt JWT signing private keys at rest (envelope encryption) (#878)
    • Korean (ko) translation β€” mobile, incl. native OS strings (#807) (#1217)
    • A3 β€” framework + datastore registries (#894) (#954)
    • override-only service fields + generated TS schema (#901) (#1102)
    • Korean (ko) translation β€” Studio (#808) (#1223)
    • client update gates β€” Studio mandatory-update wall + mobile force-update (#1270)
    • Polish (pl) for CheckPt Studio (#817) (#1267)
    • Dutch (nl) β€” mobile (checkpt-app) (#813) (#1266)
    • Korean (ko) translation β€” web, shared auth + backend templates (#806) (#1216)
    • thin-tolerant local-IPC seam + Studio restart nudge (#1248)
    • REST client contract β€” /version, UPGRADE_REQUIRED (426), client-BFF boundary (#1112) (#1263)
    • Hindi (hi) β€” web + backend templates (#1262)
    • org custom relay URL + Team+ management UI, propagated to Agent/Studio/mobile (#1084) (#1246)
    • Chinese (Traditional) zh-Hant β€” mobile (checkpt-app) (#828) (#1261)
    • Dutch (nl) for CheckPt Studio (#814) (#1260)
    • Polish (pl) translation β€” web, shared auth + backend templates (#815) (#1228)
    • zh-Hant β€” Studio (#829) (#1252)
    • Dutch (nl) β€” web + backend templates (#812) (#1243)
    • Italian (it) β€” mobile (checkpt-app) (#810) (#1249)
    • version stamping + minimum-version floor (#1111) (#1242)
    • zh-Hant (Traditional Chinese) β€” web + backend (#827) (#1247)
    • token ratchet β€” guard banning raw hex, text-[Npx], gray/palette utilities in app code (#1163) (#1244)
    • relay short-retention event log + vcs.backfill on Agent reconnect (#1237)
    • Italian (it) translation + language-switcher enable (#811) (#1236)
    • zh-Hans (Simplified Chinese) β€” mobile (checkpt-app) (#804) (#1235)
    • P2P proxy protocol negotiation & capability handshake (#1231)
    • mobile ThemeContext token adoption + fontSize/hex codemod (#1233)
    • German (de) translation + language-switcher enable (#794) (#1208)
    • infra manual-apply reminder + runbook procedure for pulumi env drift (#1165) (#1229)
    • Studio deploys from admin β€” stage/publish, changelog editing, live run watching + CDN verification (#1204)
    • Italian (it) β€” web + backend templates (#809) (#1234)
    • zh-Hans β€” Studio (#805) (#1207)
    • Studio single-channel β€” relay REST + pairing behind the Agent (#1189) (#1199)
    • add a target-id filter to the audit log UI (#1201)
    • i18n ja β€” mobile (#800) (#1200)
    • admin gray/small-text codemod onto design tokens (#1161) (#1206)
    • Turkish (tr) translation β€” mobile, incl. native OS strings (#819) (#1120)
    • Studio native in-app subscriptions via Stripe Elements (#1177) (#1193)
    • remote session start on an arbitrary online worker (#1182)
    • split-panel sign-in redesign (#733) (#1094)
    • wire SendGrid delivery for invitation emails (#1013) (#1057)
    • web gray-text + emerald-tint codemod onto design tokens (#1160) (#1197)
    • German (de) translation + language-switcher enable (#795) (#1185)
    • Simplified Chinese (zh-Hans) for web + backend (#802) (#1196)
    • Japanese (ja) translation + language switcher (#801) (#1198)
    • releases table + Studio history backfill + read-only admin Releases page (#1170) (#1184)
    • A2 β€” BREAKING schema adoptions from repo-scanner (#893) (#953)
    • Japanese (ja) β€” web + backend templates (#799) (#1190)
    • Studio type-scale + semantic-token codemod, uiFontScale setting (#1159) (#1186)
    • Brazilian Portuguese (pt-BR) for the mobile app (#791) (#1180)
    • native intent-based subscription API (#1175) (#1181)
    • publish versioned public checkpt/relay image + BYO migration & compat story (#1176)
    • German (de) β€” web + backend templates (#793) (#1183)
    • Brazilian Portuguese (pt-BR) for web + backend templates (#790) (#1168)
    • rem type scale + WCAG contrast fixes in design-tokens (#1166)
    • Brazilian Portuguese (pt-BR) for CheckPt Studio (#792) (#1167)
    • entitlements-in-token β€” plan/concurrency as signed claims (#1082) (#1154)
    • Agent lifecycle + quit semantics β€” pause/resume, quit warns + stops sessions (#1128)
    • resolve .checkpt/env.toml at session start β€” port allocation + name templating (#1117)
    • Russian (ru) translation for mobile (checkpt-app) (#822) (#1150)
    • Turkish (tr) translation β€” Studio (#820) (#1122)
    • Turkish (tr) translation β€” web, shared auth + backend templates (#818) (#1119)
    • French (fr) translation + enablement for mobile (#797) (#1121)
    • asymmetric identity verification β€” EdDSA relay-exchange tokens + identity JWKS (#1081) (#1127)
    • Russian (ru) translation for Studio (#823) (#1126)
    • port components/ui primitives to semantic tokens (#731) (#1087)
    • /operations service-health page + GET /admin/system/health (#1015) (#1059)
    • Russian (ru) for web + backend templates (#821) (#1124)
    • French (fr) for CheckPt Studio (#1116)
    • Studio tray, close-to-tray, and Agent service lifecycle UX (#1106)
    • French (fr) for web + backend templates (#796) (#1108)
    • Spanish (es) for mobile (checkpt-app) (#1103)
    • bundled daemon gets the production relay URL β€” service argv + spawn env (#976) (#1107)
    • Spanish (es) for CheckPt Studio (#1099)
    • execute .checkpt/hooks.toml lifecycle hooks (#1002) (#1089)
    • grant member role on organic app-account creation (#1104)
    • adopt ApiError error codes across the three frontends (#1034) (#1079)
    • add auth.* error codes to bff-auth throw sites (#1071) (#1073)
    • promote daemon β†’ standalone always-on Agent service (#1090)
    • Stripe webhook inspect + replay UI (#1011) (#1078)
    • coupon + promotion-code management (#1012) (#1072)
    • Spanish (es) for web + backend templates (#1088)
    • A1 β€” walker + .checkpt/ignore implementation (#892) (#949)
    • Agent proxies account-scoped relay reads; drop Studio's relay socket (#1018) (#1070)
    • CLDR-plural-aware locale key-parity guard + translation glossary (#1075)
    • worktree-backed session lifecycle (#1000) (#1007)
    • Homebrew cask + tap for macOS brew install --cask (#1063)
    • failed-payment queue β€” worklist for failed and past-due payments (#1061)
    • wire EditProfileScreen to the real profile endpoints (#971) (#984)
    • Issues tab + start-session-from-issue on real provider data (#655) (#961)
    • Codex + Gemini bespoke profiles β€” state detection, model lists (#998) (#1062)
    • allow one email to hold both an app and an admin account (#1056) (#1060)
    • drain i18n allowlist to zero (#772) (#1008)
    • extract user-reachable API errors to stable error codes (#832) (#1035)
    • Agent auth unification β€” single relay credential (device + account) (#1040)
    • derive ThemeContext palette from @checkpt/design-tokens (#335) (#960)
    • install affordances for missing agents (#997) (#1042)
    • PR list + status on real provider data (#656) (#1039)
    • business + engagement metrics API and Overview charts (#1041)
    • avatar pipeline β€” presigned S3 upload + OAuth picture seed (#968) (#980)
    • shared "On this page" rail across all docs pages (#1037)
    • ship the Profile tab on the real account profile (#970) (#981)
    • wire recipient-locale into data-plane notification paths (#1028) (#1038)
    • editable name + timezone on the Account profile (#969) (#983)
    • typed spawn-failure handling for missing agent binaries (#996) (#1036)
    • partial-update PUT /dashboard/profile + avatarUrl (#967) (#978)
    • /billing page + expanded UserDetail billing tab (#1032)
    • detect installed agent CLIs at startup (agents_detect + login-shell PATH) (#1026)
    • clickable Device detail page in Studio (#1001)
    • new-project wizard β€” real repo browser + clone from provider (#657) (#990)
    • drain backend-composed content into server locale catalog (#830) (#1030)
    • audit-log read endpoint + Operations audit UI (#958)
    • per-client rate limiting for DB-touching WS handlers (#461) (#950)
    • project_override table + IPC for layered config (#449) (#948)
    • GitLab provider β€” descriptor + PAT auth + read adapter (#661) (#859)
    • replace Overview stub with a real counts dashboard (#987)
    • shared agent registry + agent-typed sessions in Studio (#1006)
    • drain checkpt-app hardcoded strings to zero (#771) (#989)
    • flag-dropdown language switcher with full #764 roadmap (#1005)
    • root device identity in a device keypair (#925) (#940)
    • drop Supporter, rebalance to Community / Pro / Team / Enterprise (#974)
    • home + footer feedback, responsive nav fixes, page consistency (#982)
    • Linux CLI install script (curl | sh) + wire /download Linux tab (#939)
    • provision the platform admin team (Dave/Gulsah/Tulin) (#977)
    • error-code envelope + web/mobile/Studio error mapping with generic fallback (#831) (#916)
    • align landing widths, loosen spacing, add Help page (#972)

    Changed

    • the setpoint packs by a count, and a count is not what binds (#3802)
    • cross-instance routing and skewed-account fan-out, measured on the rig (#3696)
    • measure the per-task capacity constants at 5k+ sockets (#3682)
    • alarm on 5xx and latency, so something fires on the effect (#3622)
    • the connect-admission rate now derives from the socket setpoint it has to drain (#3616)
    • a fetch that lost its timeout, two churning contexts, and a sort with no documented ceiling (#3621)
    • a retention sweep that ranks the whole table, on every task, under the request timeout (#3620)
    • Rust License Gate stops rebuilding cargo-about and stops resolving a crate graph nobody touched (#3541)
    • size RDS and ElastiCache on their own drivers β€” DB down, Redis up (#3448)
    • record ci baselines from the first green workflow run (#3190) (#3432)
    • PERF-6 β€” relay load harness: connect storm + sustained streaming, nightly CI (#3306)
    • PERF-17 β€” the Lighthouse budgets could not fail, and the daemon paid a webview's codec (#3359)
    • scope the unit suite to the affected projects, and size the shard matrix to fit (#3343)
    • stop shipping ~9 MB the binary never uses (#3320)
    • alarm the resources that bind first, and stop re-serving stable endpoints (#3338)
    • a connection storm couldn't scale the relay out, and ~128 stalled sockets could OOM it (#3323)
    • coalesce output frames, memoize the remaining context values, virtualize notification history (#3316)
    • shard Unit Tests 4 ways β€” the suite outgrew its 30m cap (#3334)
    • PERF-15 β€” index & query hygiene, and the CONCURRENTLY pattern the repo could not use (#3305)
    • PERF-8 β€” memoize the relay-exchange entitlements card (#3298)
    • virtualize the SessionDetail transcript and memoize the WebSocket context value (#3296)
    • PERF-10 β€” the control plane gets the index the data plane already had (#3301)
    • let one task claim a due webhook event (#3297)
    • PERF-11 β€” WAL, a relaxed sync, and a sequence counter that already knew the answer (#3292)
    • clear the backend query/N+1 tail (#3291)
    • PERF-2 β€” bound every Stripe and OAuth request (#3274)
    • the changelog assembles once per TTL, not once per visitor (#3271)
    • bound how long a pooled connection may be held, not just how many (#3267)
    • index the three hottest lookups on the authenticated path (#3265)
    • the app parses one locale at boot, not twenty-one (#3264)
    • startDaemon() β€” main.ts becomes a module, boot and shutdown become ordered steps (#3085)
    • verify #1866's backpressure against a real congested socket (#3086)
    • extract remote and chat-run session start (#3047)
    • retire the 150-key local-ws handler map (#3049)
    • virtualize Approvals, Rules and Org Rules; fix the countdown re-render (#3045)
    • extract the MCP HTTP transport wiring (#3026)
    • extract the 34 proxy verb handlers, and register them through the feature table (#3014)
    • extract session start β€” gate, evaluate, register, provision (#3030)
    • extract the local-IPC request handlers (#3028)
    • extract the relay frame router out of connectWebSocket (#3007)
    • extract the services and tasks wiring (#2976)
    • extract the express routes into a router (#2990)
    • extract the relay plane β€” links, credentials, REST routing and sync wiring (#2982)
    • a feature registry, and local-ws dispatch that reads a table (#2971)
    • extract prompt create, answer, expiry and withdrawal (#2979)
    • finish the session-persistence extraction (#2968)
    • extract plan, keys, notification and MCP-connector wiring (#2958)
    • extract session environment, worktree lifecycle and hooks (#2948)
    • session kinds shrink to the shipped core (#2913)
    • a DaemonContext for the daemon's shared state (#2901)
    • a chunk no longer re-renders the terminal component (#2848)
    • the overflow sweep was one 20s timeout, Γ—16 β€” gate restored off the critical path (#2792)
    • drop the i18n overflow browser sweep from Code Quality (#2732)
    • source/connector abstraction for the issue seed picker (#2481)
    • delete the Apple billing plane (#2439)
    • extract session row mapping from main.ts (#2208)
    • extract device identity + auth headers from main.ts (#2207)
    • make @checkpt/ui importable from a tsc-built lib (#2108)
    • extract the peer publish fan-out from main.ts (#2105)
    • delete the org audit API surface, which has had no callers since #1445 (#2086)
    • map main.ts by subsystem seam, extract the pure leaves (#2071)
    • carry output chunks as base64 and batch the live push (#2081)
    • extract the remaining web/admin auth-surface duplicates (#2047)
    • bound what the relay buffers toward a slow consumer (#1866) (#2032)
    • cache the WS connect path (#1864) (#2020)
    • scope device-unpaired to the owning account (#1867) (#2028)
    • amortise the output rings' per-append prune (#1865) (#2019)
    • extract the shared ErrorBoundary and the auth-client test seam (#1973)
    • one device, one id, one table (#1907)
    • stop asking /auth/refresh for visitors who never signed in (#1775)
    • derive API image runtime dependency lists from the built bundle (#1740)
    • one shared env-doctor implementation β€” retire the TS rule copy (#1727)
    • adopt @checkpt/ui and close the type-scale gate exclusion (#1712)
    • one component layer for the web portal and admin console (#1676)
    • one service-kind vocabulary β€” align the crate enum onto the detector's names (#1650)
    • split FEATURES.servicesTasks into services + tasks (#1564) (#1631)
    • split ECS task roles per service (#1547)
    • cache session diff across tab switches β€” stale-while-revalidate (#674) (#876)
    • extract module-const UI copy to t() keys (#988) (#994)
    • drain i18n allowlist to zero β€” extract UI strings to t() (#770) (#975)

    Documentation

    • the plaintext audit names every table, and CI keeps it that way (#3834)
    • UAT-MOB-05 stops claiming an attribution the product never had (#3814)
    • the three guides omit RELAY_PUBLIC_URL, so every guide deploys a relay that cannot sign anyone in (#3784)
    • record the key-revocation walk result, both directions (#3737)
    • write down the perf postures, and stop two workflow headers arguing against them (#3610)
    • the live connect was walked β€” flip the surfaces that still say otherwise (#3498)
    • Team is self-serve β€” UAT-PAY-09 rewritten to the org-aware checkout #227 shipped (#3472)
    • the provider ship-gate's flag half closed on 2026-08-18 (#3475)
    • the UAT-X-05 blocker still said the relay stores plaintext prompts β€” #3082 fixed that on both planes (#3469)
    • the gate runbook still walked deleted QR pairing in four cases (#3429)
    • stop crediting deleted files, and guard against the next one (#3352)
    • the rollback tables now say what happens to the schema (#3336)
    • runbook for exercising the Studio version floor in prod (#3116)
    • the record of what the hosted relay sees (#3089)
    • record the in-app design, its inventory and its gaps (#3075)
    • UAT-X-03 describes the at-cap recovery that shipped (#3003)
    • audit every plaintext column the hosted relay stores (#3040)
    • the headless-Agent page documents unattended org enrollment (#3006)
    • the output contract promised a sessionId the failure paths don't have (#3008)
    • correct stale UAT expectations and the CSRF bypass rationale (#3000)
    • document not_mounted where the codes are documented (#2857)
    • spike β€” proxy, because the hook path fails open (#2802)
    • name the releases that made the renumber's precondition false (#2783)
    • design the Compare-plans comparison matrix content (#2379)
    • session-scoped MCP identity & log isolation β€” spike decision (#2401)
    • ratify the plan-gating matrix β€” three new gates, not five (#2305)
    • hosted on-demand compute go/no-go spike β€” NOT-YET (#2242)
    • say subset, not mirror β€” the local type omits allowCritical (#2170)
    • ratify the fr, es and ru register blocks and sweep the residual drift (#2048)
    • the three BYO platform guides omit the identity configuration (#2049)
    • spike β€” mobile multi-relay is N registrations, not N sockets (#2014)
    • claim shipped E2EE precisely β€” UAT gate, web copy, pricing, FAQ (#2013)
    • e2ee.md never learned about session.meta (#1979)
    • reflow the ro Β§5.16 length bullet so the span sits on one line (#1956)
    • drop the last "shared with the token-refresh path" claim (#1805)
    • map UAT cases to the tests that prove them (#1804)
    • drop the dead web profile from the self-host reference (#1769)
    • launch UAT manual test plan + project board seeder (#1713)
    • pre-flip validation report β€” go/no-go for projectDetection (#1656)
    • refresh tryout cheat-sheet to current main (G4) (#1693)
    • tryout kit + testing roadmap for real-repo validation (#1481)
    • the replication contract is hosted-only β€” and BYO can't enroll a device (#1625)
    • ratify Romanian (ro) register and conventions β€” Β§5.16 (#1610)
    • state the WSL story honestly on the requirements page and in a setup guide (#1476) (#1598)
    • document RELAY_KEK as required in every self-hosting guide (#1601)
    • Cloudflare TLS fronting guide + web docs page (#1515)
    • ratify vi (Β§5.14) and cs (Β§5.15) register blocks (#1488)
    • AWS deploy runbook + web docs page (#1299) (#1483)
    • WSL2 support investigation and decision (#1333) (#1478)
    • Railway deploy guide + web docs page (#1298) (#1442)
    • Expo Go no longer works β€” document the dev-client (EAS) setup (#1290)
    • renumber duplicate ADR 0008 β†’ 0016 + truthful contract docs (#425) (#1046)
    • ADR 0012 β€” API route extraction deferred for v1 (#440) (#882)
    • confidence model calibration methodology (#435) (#881)
    • composite/runbook decomposition strategies (#430) (#880)
    • ADR 0014 β€” env binding inference, cheap proxy v1 / deep scan v1.1 (#431) (#879)
    • readiness probe defaults per ServiceKind (#432) (#877)
    • Perforce provider design spike (#662 Phase 1) (#858)
    • ADR 0013 β€” .checkpt/ignore, adopt global / defer per-detector (#441) (#875)
    • ADR 0015 β€” override layer aligns with crates/checkpt-config (#434) (#874)
    • self-hosting guide (#753) (#963)
    • per-language detection roadmap + framework taxonomy (#433) (#872)
    • ADR 0011 β€” schema delta vs repo-scanner, adopt/reject (#439) (#883)
    • ADR 0009 β€” daemon RPC contract for detection (#436) (#871)

    Fixed

    • the migration task is sized for ts-node, and had grown past 512MiB (#3865)
    • close the six pinned KNOWN GAP defects in the org/user dialogs (#3857)
    • stop pkg from turning our subcommand into a missing file (#3861)
    • About's update check ran behind the panel it was opened from (#3860)
    • refuse re-parenting session publishes, and clean up the ones already filed (#3858)
    • drop device_authorized from the ordered activation funnel (#3854)
    • anti-phishing line, one-line security copy in every locale, and TTLs that cannot drift (#3850)
    • the stream-inspector service guard, and the last owed exec half (#3835)
    • give transactional email a layout, and take presentation out of the catalog (#3848)
    • the funnel probe asks about a person, and silence can fail again (#3849)
    • carry the natural-stop budget to the peer, instead of rejecting at 15s (#3837)
    • a shed frame asked the bus where a device it was holding is, and a stalled consumer was never reclaimed (#3809)
    • an org-owned device's presence reached nobody (#3826)
    • name a REVOKED machine that is still holding a concurrency slot (#3828)
    • a draft larger than one call could never be curated (#3822)
    • run git with the user's PATH, not launchd's four directories (#3824)
    • the reflection request encoded to zero bytes, so gRPC reflection never worked against a real server (#3813)
    • retire the offline incumbent in the same transaction as the write that takes its name (#3808)
    • the approval prompt says what identity is actually on the wire (#3804)
    • a Redis inspector resolves only services the project has (#3806)
    • the declared engine decides, and a contradiction refuses (#3760)
    • releases list goes live, and Studio's launch/sign-in stop hiding the app (#3743)
    • the prompt flow, the answer race, and a re-publish that re-notified every device (#3756)
    • a hung rollout must go red, not quiet (#3748)
    • don't let an absent projectId resolve to an arbitrary project (#3724)
    • close the local proxy route around the approval gate (SEC-8) (#3726)
    • release the push address on sign-out, and drop the dead device cache (#3738)
    • let MONGODB_URI satisfy its own service's name tiebreak (#3741)
    • the generator was capturing an empty Approvals screen (#3735)
    • every approval card said "Unknown device" β€” the join used a dead plane (#3739)
    • retention fixtures that cannot expire (#3684)
    • the organizations page and the status rail each claim something untrue (#3677)
    • the launcher could not find an agent the picker had just listed (#3666)
    • stop the four lies the golden-path walk found (#3675)
    • show what a curation pass is doing, and let an operator stop it (#3607)
    • the wizard's first step asked where the project should live and took one answer (#3660)
    • the DMG's branded window needs Finder, which CI had told the bundler to skip (#3664)
    • stop selling org rules that auto-approve nothing (#3654)
    • the org lost an owner where the insert could not promote (#3656)
    • assert cross-stack outputs at the read, so a stale prod-persistent says so (#3648)
    • nulling the submitter's id left their email and device id on the row (#3638)
    • the perimeter's 401 page is not an error message (#3617)
    • one brand casing, and a gate so it stays that way (#3599)
    • repair the download page's dead docs link, and the UAT case that fails correct behaviour (#3598)
    • reconcile device presence at boot, so a restart stops stranding devices online (#3596)
    • scope Overview's user counts to the app portal (#3597)
    • stop the pollers that deadlock truncateAll, and retry the ones that get away (#3552)
    • carry orgId and clientType to clients, so an org pool worker is not read as your own machine (#3579)
    • the at-cap refusal named nothing β€” its device lookup threw on every call (#3570)
    • build the approval authority after the store opens, so a pinned key survives a restart (#3564)
    • log why the relay rejected a session publish, not just that it did (#3561)
    • a duplicated Content-Type meant nothing was ever published to the relay (#3557)
    • the admin credential probe now only ever sees the perimeter (#3573)
    • the relay is on the internet, so a shared WiFi is not the answer (#3567)
    • WAFv2 rejected both descriptions, failing the prod apply (#3545)
    • the CSP guard reads prose in a comment as a second directive (#3569)
    • delete the translation crons and the impossible work they retried (#3505)
    • a runtime barrel import from @checkpt/shared reds two studio specs (#3565)
    • a migrated database is a schema, not somebody else's rows (#3560)
    • say whose prompt the session is awaiting (#3518)
    • the banner carries enough to report itself (#3526)
    • /help routed bug reports to a Featurebase workspace we don't own (#3514)
    • the shipped macOS bundle was SIGKILLed on launch β€” a restricted entitlement with no profile to authorize it (#3534)
    • an auth rejection is not a network fault, and a swallowed 401 is not an empty screen (#3496)
    • name the PostHog key, harden the secret write, and record posthogKeysWired (#3473)
    • stop the PTY geometry churn behind the duplicate banners (#3516)
    • main was red on three jobs, and none of them was a product bug (#3515)
    • failed panes say why they failed, and stop dressing as empty ones (#3481)
    • a missing git.diff path answered with a TypeError, not a reason (#3474)
    • a device env override never reached a started process (#3466)
    • a read-only .git leaked an absolute path past the redaction (#3471)
    • a typo in .checkpt/env.toml renamed the file away and read as empty (#3465)
    • deactivating a Google link did not sever it (#3463)
    • two build profiles targeted a staging environment that never existed (#3451)
    • move the admin roster onto Workspace identities (#3439)
    • the Redis SG locked out the BFF throttler β€” 26s customer login (#3444)
    • the hero dropped the desktop shot on every viewport under 1024px (#3442)
    • the wizard contradicts itself on service counts, and three Stack rows render blank (#3412)
    • the launch pane renders with no words at all (#3411)
    • the fair-use footnote published a rate limit wrong three ways (#3438)
    • the SAST baseline goes stale, so old PRs inherit main's findings (#3441)
    • production shipped blind β€” reporter unarmed, boundary silent (#3312)
    • the fingerprint runtime version was a fact about the machine, not the commit (#3393)
    • expo-speech-recognition 56.x is built for SDK 56, not our 54 (#3407)
    • centre the status pages, and drop the mascot name from copy (#3391)
    • an expired prompt read as the user's rejection (#3349)
    • the three #3151/#3158/#3170 follow-ups (#3370)
    • sharing a note re-seals it to the org (#3357)
    • the BYO Relay page claimed approval content skips the relay (#3348)
    • let the relay say WHY the id differs (#3362)
    • count the idle signal in parse telemetry (#3350)
    • gate the Multi-step filter chip behind a recorded flag (#3346)
    • list a deleted or binary file whose path contains " b/" (#3344)
    • measure the banner β€” rule out the stuck store, report what failed (#3364)
    • enforce on-device speech recognition, and grow the grammar rather than leave the device (#3342)
    • the dashboard drew a Redis floor with no Redis (#3347)
    • a repo-supplied exec env source needs a grant before it runs (#3318)
    • the inline drawer must not lock page scroll or trap Tab (#3315)
    • Redis connectors use ioredis subscribe + lowercase pipeline (#3235)
    • redirect /status to the external BetterStack status page (#3027)
    • probe the OS before handing a session a port (#3328)
    • the Doctor now says a template over a secret can't resolve (#3332)
    • own the page-scroll lock at module scope, not per modal instance (#3327)
    • keep the pagination control a constant width as the page moves (#3329)
    • guard the getCurrentWindow() that throws synchronously outside Tauri (#3310)
    • a terminal session row stays terminal (#3326)
    • stop claiming direnv sources .envrc.local, and say what does (#3335)
    • the task host must not hand its config blob to the task (#3302)
    • keep a file's line endings through open β†’ edit β†’ save (#3331)
    • revalidate the Files tree, and offer refresh on healthy rows (#3333)
    • serialize task starts per (project, session, name) (#3330)
    • refuse a charged account's delete cleanly, and stop orphaning four tables (#3307)
    • record devices_owner_label_unique in the schema snapshot β€” main is red (#3322)
    • the wizard walk is red because one Tauri call throws synchronously in a browser (#3317)
    • name the plan once and show it everywhere, make device names unique, and unrig the plan grid (#3263)
    • the customSounds flag gated nothing β€” the feature already works (#3311)
    • a degraded keystore no longer publishes plaintext prompts and session titles (#3309)
    • impersonation read-only is server-enforced, and the two elevated secrets are wired (#3285)
    • the revocation backstop looks devices up by id alone, which is no longer unique (#3308)
    • give Android push a real small icon instead of a white square (#3299)
    • name the unguarded locales, and stage the fr/tr imperative rules (#3017)
    • a device going offline is not a statement about its sessions (#3253)
    • a complimentary subscription ends when it says it does (#3255)
    • a remote answer navigates from the marker, or refuses to act (#3249)
    • voice listens in the user's language, not en-US (#3289)
    • a rota that starts in three days pages nobody today (#3288)
    • the production database cannot be destroyed by a routine apply (#3280)
    • patch runtime CVEs β€” protobufjs β‰₯7.5.5, validator β‰₯13.15.22 (#3281)
    • password reset kills every session, and cookie-mode stops leaking tokens (#3272)
    • the status page needs design v2, and custom CSS is paid (#3278)
    • regenerate the schema snapshot for the release-curation columns (#3284)
    • the phone re-checks what a tip says and where it points (#3259)
    • delete the RDS Proxy / read-replica flags β€” nothing read them (#3270)
    • every REST call gets a deadline, and relay URLs must be https (#3252)
    • stop claiming the /pair universal links we deleted (#3246)
    • the org screens ask for a namespace that exists (#3248)
    • the App Links contract is held together, and names both signing keys (#3238)
    • keep the band's verbs on screen, pin the gauge's height, and give React Navigation the app's palette (#3234)
    • take the last two purchase CTAs out of the shipped copy (#3100) (#3237)
    • add placeholder-parity gate; fix 7 machine-translation drifts (#3223) (#3233)
    • the export-compliance attestation matches the crypto that ships (#3165)
    • surface the GitHub cause behind release 502s (#3115)
    • one section identity across surfaces, and name the plan in Studio (#3096)
    • one organization, one invoice β€” Team is bought per seat (#3090)
    • the matrix omitted the one surface that always fires (#3088)
    • the mic always comes back, and gated accounts get no FAB (#3068)
    • draw an unreadable session title as a stand-in, not a name (#3065)
    • the status bar's "Online" count must be the online one (#3063)
    • Overview must not render a failed fetch as an empty state (#3062)
    • reap the session rows whose owner is gone (#3055)
    • one org, one charge β€” the founder is seat 1 (#3064)
    • a phone can open org-sealed content (#3058)
    • register PAT webhooks, per-registration secrets pinned to a repo (#3057)
    • repair the integration specs that rotted red (#3051)
    • five edge cases in the hash encoder and command resolution (#3013)
    • one unreadable chunk no longer fails the whole output.tail (#3046)
    • a partial profile update must survive both transpiles (#3044)
    • org seat counts drifted from Stripe with nothing watching (#3042)
    • a terminal-answered prompt records the option that was chosen (#3043)
    • reopen encryption status + notification history on the peer proxy (#3002)
    • order task defs after the secret VERSION, not the empty secret (#3035)
    • delete Trusted Origins β€” Smart Rules already owns auto-approve (#3009)
    • scope the session reconcile to the account that owns it (#2933)
    • normalize the plan name before walking to the next tier (#2934)
    • give a generator run an owner that outlives the screen (#2928)
    • state the E2EE claim precisely on sign-in (#2931)
    • stop reporting states that contradict the same screen (#2936)
    • the session Terminal says which nothing it is showing (#2937)
    • the org rules table's status column reads "Status", not "Enabled" (#2997)
    • attribute Procfile/compose processes by language, not by sort order (#2897)
    • declare Task.watch, and guard the registry order-dependence (#2944)
    • a fresh worktree can start the stack from the checked-in steps (#2988)
    • org quiet hours were resolved by the caller, so the two that couldn't name an org ignored them (#2987)
    • validate a project_local mount before it becomes a spawn cwd (#2970)
    • a watch teardown is addressed to its OWNER, not the mount (#2972)
    • the vcs category had delivery and no switch (#2962)
    • write the fs sketch's NUL separators as escapes, not raw bytes (#2926)
    • an org worker can answer the member who addressed it (#2960)
    • a notification setting that silently reverts, because two relay replicas cannot order a snapshot (#2957)
    • make @checkpt/cli publishable β€” bundle the bin, declare what the tarball requires (#2959)
    • the marketing navbar's desktop row fits 1280px in every locale (#2954)
    • dedupe Nx target servers by command, not by workspace (#2943)
    • org-worker sessions β€” the start paths that assume an account (#2949)
    • org workers can read their org's projects, and their cache can hold them (#2946)
    • the org dashboard renders prose again, not i18n keys (#2945)
    • canonicalize request-supplied UUIDs, and fix the split audit trail (#2905)
    • the overview's duplicate CTAs, silent checklist, and bare-email account menu (#2912)
    • name the five icon-only controls a screen reader could not (#2930)
    • clear a user's subscription rows before deleting the account (#2908)
    • deleting an org revokes its worker pool β€” in both deleters (#2894)
    • one top bar everywhere, and a drawer that stops shoving the app (#2917)
    • the screenshot harnesses' account session signs itself out (#2914)
    • model the org worker pool so dashboard-devices renders again (#2889)
    • read projectType from angular.json, not just the Nx layouts (#2887)
    • fingerprint project.json in the detect cache's fs sketch (#2888)
    • one-click adopt of an out-of-date local Agent + release version guard (#2841)
    • model GET /v1/orgs/:id/devices in the web screenshot mock (#2869)
    • the seed prompt nobody submitted, and five more from a golden-path walk (#2863)
    • write the .lproj files where the pbxproj points (#2861)
    • gemini's MCP registration never took β€” untrusted worktree (#2856)
    • name the ghosts before refusing at the device cap (#2847)
    • tidy three rough edges β€” Pro-gated copy, Inspector collapse, popped-out window inset (#2849)
    • detection you can reach with a projectId (#2846)
    • model GET /v1/replays so dashboard-security renders again (#2845)
    • don't offer Start for a per-session service with no session (#2828)
    • one control per option, answered by index (#2832)
    • stop repainting the whole grid on every keystroke (#2833)
    • a failed config init must not cost the user their wizard answers (#2823)
    • a collapsible Inspector, a header that stays on one line, and an ended session that says what happened (#2825)
    • resolve checkpt-config in the target dir cargo actually uses (#2821)
    • a session row that fits on one line, and an empty Env step that says which nothing this is (#2827)
    • show a change's patch on the Diff tab, and notice edits made outside the agent (#2826)
    • detect idle when Claude Code paints its composer placeholder (#2822)
    • ScreenHeader's style prop takes StyleProp, not a bare ViewStyle (#2831)
    • one top bar, a drawer footer that admits it exists, and Approvals filters you can see (#2829)
    • the 150% deploy cap deadlocks a service scaled in to one task (#2804)
    • key devices by owner, migrate legacy keys, reconcile enc_pub (#2777)
    • admin-api and website-api images also need the generated migration registry (#2794)
    • guard the throttler options shape, and stop telling operators auth needs no Redis (#2788)
    • vitejs/vite's packages/vite leaves the services list and types lib (#2689 + #2690) (#2697)
    • wire ANTHROPIC_API_KEY into the admin-api task definition (#2790)
    • macOS keychain password-dialog spam β€” data-protection keychain behind a shared access group (#2770)
    • pre-merge citation guard walks a cited epic's sub-issues (#2656) (#2781)
    • Copilot round 4 β€” a header that gave an order, and a comment that stated a falsehood (#2780)
    • connecting a code host belongs in Settings, and the source row stops wrapping (#2753)
    • read what a run script runs, whose framework it is, and what Nx says (#2588, #2589, #2590) (#2671)
    • a Mac's OS is macOS, not "web" (#2725)
    • unreadable is not missing, and Next needs a chosen path (#2773)
    • fail when a shipped migration's number changes (#2782)
    • New Project names the projects folder the clone will use (#2757)
    • the dashboard plan card states the plan the account is on (#2755)
    • localized iOS permission strings are actually wired in (#2759)
    • throttle counters are fleet-wide, and a code has a guess budget (#2771)
    • a database that fails to open must not report healthy (#2763)
    • repair the migration ledger the renumbering orphaned (#2778)
    • device setup stops offering view-only to Community (#2758)
    • four shipped-but-unreachable surfaces β€” voice FAB, Fleet/Rules headers, device icons, encryption honesty (#2747)
    • the releases backfill gets its own concurrency group (#2765)
    • a prod DB wipe no longer erases the Studio version ledger (#2731)
    • a session that has ended no longer renders as "Idle" (#2724)
    • the "Connecting…" gate can no longer hang silently (#2727)
    • detect questions that don't end the line, and stop calling a stalled session "writing code" (#2726)
    • Comp opens for a user with no subscription (#2723)
    • two machines on one account are tellable apart (#2728)
    • a failed publish can no longer advertise a release that doesn't exist (#2722)
    • publishing a version twice no longer dies on AccessDenied (#2694)
    • a dialog no longer freezes the window in place (#2693)
    • draw the device's own platform mark, everywhere (#2684)
    • the Agent could not start at all, and nothing noticed (#2685)
    • make the window's top band draggable on macOS (#2687)
    • stop CHECKPT_RELAY_WS pointing the socket at another relay (#2686)
    • the collapsed sidebar is the admin console's rail, not a gutter (#2688)
    • the site follows the visitor's OS theme, and says so (#2670)
    • the collapsed rail stops growing a horizontal scrollbar (#2677)
    • one scroll surface per terminal pane (re-land of #2641) (#2665)
    • tell "store still opening" apart from "store failed", and stop blaming the user's devices (#2664)
    • scope the key directory to the relay that vouched for it (#2643)
    • a prompt's life is its session, not a five-minute timer (#2650)
    • decide output.tail's decode by requester capability (#2633)
    • stamp the release version into the daemon package (#2649)
    • pairing sessions in the shared store, and a store outage that stops accusing the user (#2628)
    • the terminal always accepts input, and an answered prompt always leaves the inbox (#2570)
    • the biometric switches now lock something (#2620)
    • materialize sound channels for every relay, not just the current one (#2625)
    • stop the exchange banner contradicting the device it sits above (#2630)
    • guard completes the verification-gate vocabulary (#2582)
    • one shape from both arms of a routed config op (#2565)
    • the env write must carry the schemaVersion it read (#2600)
    • wait for the Agent before reconciling, and bound the retry (#2580)
    • make a created project's services startable (#2548)
    • four launch-readiness defects β€” foreground push, the update wall, dead links, a QA screen (#2562)
    • author the Face ID and photo-library purpose strings, in all 20 locales (#2566)
    • gate Custom Sounds and Voice β€” two surfaces that promise what they cannot do (#2563)
    • re-own the org quiet-hours rules written as user-owned (#2549)
    • promote the gRPC inspector off soon (#2556)
    • bound and retry every apt call so a sick Ubuntu mirror can't eat the job (#2553)
    • quiet hours that silently did nothing (#2532)
    • the four bugs the first packaged Windows run found (#2544)
    • promote the always-on headless agent off soon (#2545)
    • make the session terminal usable β€” raw keys, no re-wrap, no poll-lag (#2519)
    • surface the real Google sign-in failure, and simplify the auth forms (#2521)
    • every drawer entry goes somewhere, and nothing it renders is invented (#2493)
    • stop gating project creation on env vars, and make "Paste from .env" work (#2499)
    • enforce concurrency account-wide at the relay (#2491)
    • answer prompts at the relay tier, sealed, not through the source device (#2472)
    • SSR manifest scan read comment prose as an import, breaking every Deploy Web on main (#2476)
    • force-close a revoked device's sockets, whoever revoked it (#2463)
    • one PTY host, and an output ring that stores the byte stream (#2443)
    • classify the multi-window commands the locality guard missed (#2440)
    • make the window's top band one line, and the collapsed sidebar a real rail (#2412)
    • stop the PAT catch-all shadowing GitHub's connection routes (#2413)
    • re-read membership when the Agent's relay link comes up (#2341)
    • surface the real reason pairing failed, and let the daemon load SQLite (#2362)
    • the device tabs deserve a real empty state, and the header a real chip row (#2344)
    • name platform sets in prose instead of lowercasing the label (#2304)
    • a device derives its id from its signing key (#2243)
    • unblock the publish, un-empty the notes, pick platforms (#2272)
    • one About surface β€” route the macOS menu item to the modal (#2268)
    • point the win-arm64 bundler at signtool explicitly (#2247)
    • kind worker/scheduler-role scripts as workers, not the borrowed framework kind (#2223)
    • make PromptsAttentionAndEnvelope migration re-runnable (#2188)
    • drop the stamped session deviceLabel, resolve by id (#2213)
    • take the minor-unit divisor from Stripe, not from ICU (#2219)
    • report a declared workspace member the nested-repo prune drops (#2204)
    • merge exceptions per key, so a client cannot clear what it never sends (#2203)
    • negatively-cache dev-login failures to stop the request storm (#2187)
    • polyfill Intl.PluralRules for Hermes so plurals resolve (#2193)
    • open the multi-step wizard from the relay prompt store (#2194)
    • read session-screen prompts from the relay plane (#2196)
    • demote hyphenated one-shot scripts from the services list (#2155)
    • repair the hero glow and the dropped h1 clause, add a live agent feed (#2184)
    • prune nested repo checkouts so workspaces count once (#2154)
    • disambiguate repeated app chip labels in the wizard stack (#2173)
    • subscribe per relay link, and delete the socket nothing assigned (#2122)
    • stop exporting a secret pointer as if it were the secret (#2185)
    • stop selling an exception the pipeline cannot evaluate (#2165)
    • reposition marketing copy for Claude Code auto-mode default (#2147)
    • skip the detector pipeline when the recipe generates nothing (#2138)
    • pin bash on the linux-arm64 Agent job so pipefail works (#2137)
    • put the nine auth components' status colours on the semantic tones (#2117)
    • localize the dialog's dismiss label, and stop duplicating cancel (#2133)
    • make the wizard Env keychain promise honest (pre-flip minimum bar) (#2128)
    • collapse duplicate runtime chips (F2) and stop the detect-failed screen telling a success story (F3) (#2127)
    • define every colour utility, unify the Security controls, gate the class (#2083)
    • refuse device transfer instead of reporting success (#2076)
    • ApiKeyGuard fails closed and reads the header only (#2066)
    • delete the three unscoped bug-report reads (#2064)
    • sweep BillingPanel onto the type scale + text tokens (#2070)
    • surface the proxy egress counters at /health (#2061)
    • scope my-devices by the token, not by x-app-id (#2063)
    • fail closed when the caller or the device owner is null (#2052)
    • put the pinned Node 24 first on PATH via direnv (#2062)
    • convert request bodies to decorated DTOs so the ValidationPipe is not inert (#2046)
    • filter the inbox cache read to VCS rows in SQL (#2044)
    • task category chips read semantic tokens in both themes (#1815) (#2037)
    • localize the remaining mobile risk/state slug renders (#2039)
    • #1810 β€” enforce the Node 24 pin, guard its drift, make ABI mismatches self-explaining (#2034)
    • delete the two unscoped feedback reads (#1999)
    • remove docs claim of Pro-gated diff previews that do not exist (#1895) (#2027)
    • name the org whose relay you're on, and what isn't reachable from it (#2000)
    • refuse up front when there is no key, and record a failed fix run (#2018)
    • resolve the inbox row's project from its session, and drop the column nobody wrote (#1992)
    • administer an explicit org in the Relay panel, not a guessed one (#2011)
    • converge on answers from other devices, clear badge + tray (#2012)
    • a bad device credential no longer strands the shell (#2009)
    • the dashboard refetches when its tab comes forward (#1994)
    • gate the mock Session-kinds editor out of release builds (#1987)
    • pricing and billing name the capped thing a machine, not a device (#1990)
    • stop aapt choking on BCP-47 locale tags in Android builds (#1984)
    • read TypeORM's affected count for the prompt cap prune (#1986)
    • translate the 141 seeded register violations, empty the allowlist (#1969)
    • give the device-onboarding gate a way out (#1975)
    • real timestamps for migrations, not a +1e9 counter (#1965)
    • reconcile web/admin auth-surface drift and mark the forked files (#1970)
    • Settings β†’ Devices was a hardcoded fixture list duplicating DeviceView (#1964)
    • stop the .envrc template from executing pnpm db:seed (#1957)
    • catch the pricing locale JSON up to the #1921 machine-metering copy (#1962)
    • give project rename + delete an entry point (#1926)
    • stop taking a device id or an account on the caller's word (#1931) (#1949)
    • translate Studio billing UI for es/fr/pt-BR/ru/tr (#1836)
    • meter workers, not clients β€” a phone no longer consumes a device slot (#1921) (#1935)
    • mobile code-level English leaks β€” prompt risk/state slugs + encrypted placeholder (#1123, #1403) (#1837)
    • studio relativeTime() leaks English into translated timestamps (#1125) (#1838)
    • invert the relay to default-deny β€” register JwtAuthGuard as APP_GUARD (#1928)
    • localize the not-local fallback in useEnvFiles (#1927)
    • assign monorepoKind 'cargo-workspace' for Cargo [workspace] roots (#1762) (#1808)
    • co-rooted headline, port-less service dedupe, inert edit-kind button (#1774)
    • the device-cap 403 the daemon can parse β€” plus the three blockers found verifying it (#1904)
    • an Agent connection and its relay connection are two states (#1922)
    • window drag under modals, ultrawide backdrop, narrow status bar (#1901)
    • run a global ValidationPipe on the relay and website-api (#1920)
    • treat cursor moves as layout so Claude's spinner survives the ANSI strip (#1822)
    • the web dashboard tells a BYO account the truth about its own data (#1819)
    • honour the client-supplied device id in the keyed enrollment path (#1640) (#1816)
    • bound the revocation close reason to 123 UTF-8 bytes (#1817)
    • attach applies .git/info/exclude when .checkpt/ already exists (#1811)
    • force the detect live path on in release (mock DCE'd) (#1755)
    • give the root postinstall its script before every image install (#1806)
    • stop the coming-soon flash and the false state-mismatch on OAuth sign-in (#1772)
    • pin the portal URLs and make the apex canonical (#1773)
    • don't fail every Docker image build from the node-pty postinstall (#1741) (#1794)
    • the alerting scripts run under bash -e, which broke every guarded path (#1715) (#1788)
    • make every PTY spawn work, clean install and packaged sidecar (#1741) (#1782)
    • revert the partial react-router major bump that forked the router (#1735) (#1736)
    • copy libs/auth/types into the migration image (#1731)
    • watch every web build input, and guard the filter from drifting (#1730)
    • unbreak the API image builds (#1723)
    • treat Copilot's suppressed findings as a persistent open set (#1717)
    • derive the SSR runtime dependency list from the built bundle (#1720)
    • serve project issues and change requests for PAT-bound projects (#1302) (#1700)
    • stop leaking prompt title/summary/PTY context to the relay (#1703)
    • surface partial scans + collapse services/env in detect adapter (G1, G2) (#1689)
    • scan the scaffold-destination override in the detect effect (#1690)
    • strapi CLI row + guard one-shot/hook framework promotion (G3/G5) (#1698)
    • let the Studio capture use the simulated detector again (#1691)
    • refresh device claims on a jittered cadence (#1638) (#1684)
    • resolve a session's PTY env through the daemon (#1666) (#1685)
    • resolve plan coverage across org membership (#1637) (#1681)
    • fan control-plane events out across relay instances (#1497) (#1678)
    • make FakeRedisHub's virtual clock actually virtual (#1673)
    • regenerate stale makefile goldens to derived ruleset hash (#1651)
    • resolve local (excluded) .checkpt config from the repo root for worktree sessions (#1634)
    • unbreak main β€” align invariant suite + stale golden with composite-root synthesis (#1621)
    • keep the relay to one task and deploy it stop-then-start (#1493) (#1604)
    • parse Claude's welcome when facts sit beside the mascot art (#1597)
    • synthesize root workspace for composite-only repos + referential-integrity check (#1135) (#1138)
    • relay account-device surface + the fan-out that never worked; feat(#1321): blocking device-onboarding gate (#1562)
    • wire RELAY_KEK into the relay task def (#1590) (#1595)
    • capture Studio id/vi/cs β€” main is red (#1602)
    • derive locale lists from the apps, add a coverage gate (#1469) (#1572)
    • stop vendor update prompts reporting as parse regressions (#1571)
    • add cs/vi to the blog locale list, guard it in CI (#1545) (#1546)
    • point /issue board-add at project 12, not stale 7 (#1526)
    • pin Tailwind's scan root so SSR and client emit the same CSS (#1513) (#1532)
    • make the daemon URL runtime-configurable (#1475) (#1528)
    • give container legs a Node before pnpm/action-setup runs (#1520) (#1521)
    • allow the local-trust token to live outside the home dir (#1474) (#1518)
    • key rate limits on the real client IP, not the proxy (#1489) (#1517)
    • send the CSRF token on cookie-mode mutations so sign out works (#1504) (#1505)
    • give the app a real relay credential (#1463) (#1486)
    • run react-router typegen before the root solution typecheck (#1479)
    • localize the New Project stepper pip labels (#1419) (#1464)
    • require a JWT on the relay WS in every environment (#1462)
    • backfill missing uk approval-rule error translations (#1465)
    • light-mode sidebar logo, org switcher wording, security page layout (#1459)
    • dashboard feedback sweep β€” organizations terminology, truthful overview, working security page (#1445)
    • finish the Operations tab strip's token migration (#1444)
    • security page sessions table overflow β€” bounded UA column + shared parseUserAgent (#1443)
    • bundle daemon + config sidecars in Windows portable zip (#1388)
    • regenerate fastify-api and sveltekit-app goldens (#1362)
    • system requirements reflect what the shipped bundles enforce (#1330)
    • truth sweep β€” remove unshipped tier claims across pricing, docs, and FAQ (#1347)
    • legible light-mode auth + app-wide contrast sweep + sign-in redesign (#1287)
    • reconcile end-to-end-encryption claims with what actually ships (#1227) (#1286)
    • deny symlink traversal when the repo root realpath is unresolvable (#1098)
    • backfill relay/version keys into lagging locales (hi, zh-Hant, nl) (#1268)
    • admin β€” sweep residual accent/status utilities + literal white onto semantic tokens (#1250)
    • repair Studio de/ja locale drift β€” main is red (#1213) (#1215)
    • terminal pane blank on tab re-activation β€” keep mounted + re-fit/refresh (#873)
    • checkpt-app pt-BR β€” top up #1175 billing intent error keys (#1194)
    • de web β€” top up #1175 billing intent error keys (#1188)
    • pt-BR Studio β€” top up #1021 tray + agent-lifecycle keys (#1187)
    • set website-api FRONTEND_URL for Stripe checkout redirects (#1155)
    • preserve raw body for Stripe webhook signature verification (#1151)
    • stop packages/shared changes triggering the macOS mobile E2E (#1118)
    • transition sessions to awaiting-input on PTY quiescence (#671) (#986)
    • add missing fr Studio keys for tray + agent lifecycle (#1129)
    • re-run control-plane bootstrap after auth.provision (#664) (#985)
    • normalize nested set-array sorting + stub root id conformance (#425) (#1045)
    • wire Studio desktop OAuth clients into website-api task def (#1109)
    • bundle @aws-sdk/* runtime deps so the image boots (#1092)
    • drop the last stale FEATURES.vcs reference (#660) (#1093)
    • default VITE_CHECKPT_BASE_URL instead of hard-throwing on a blank page (#675) (#851)
    • widen docs content to footer edge, retune footer spacing (#1025)
    • retry only CSRF 403s; mark the token response non-cacheable (#1031)
    • stop token-refresh storm (single-flight + failure backoff) (#979)
    • restore Dock/keyboard focus for macOS dev runs + worktree stamp (#928)

    A11y

    • the axe gate had never looked at admin, at the public board, or at the two routes with live findings (#3628)
    • an overlay inside the screen it covers is not a modal (#3624)
    • the keyboard path into a clickable row is a real button (#3619)
    • the ratchet only ever walked the app it was born in (#3618)
    • drain the last 60 raw literals off the ratchet (#3537)
    • drain the 119 raw-color literals the contrast guard cannot see (#3543)
    • drain the last 63 raw-palette utilities off Docs and the portal banners (#3542)
    • drain the last 10 raw literals in the shared auth UI (#3539)
    • axe runs against the rendered DOM in the one check that gates a merge (#3361)
    • skip-to-content link, field-level error association, and the missing h1s (#3293)
    • make aria-modal true on the thirteen surfaces that claimed it (#3287)
    • the icon-only controls say what they do, and the ratchet keeps them saying it (#3258)
    • the high-visibility pages leave the raw palette (#3240)

    Deps

    • the shipped subset is derived on every run, not remembered once (#3717)
    • the image already installs the shipped closure β€” now it audits it (#3720)
    • most of the alert stream was about files that are not the product (#3640)
    • the prod audit is a watch, permanently β€” and here is why (#3641)

    Dr

    • give the recovery drills a cadence, a named owner, and a dataset column (#3699) (#3761)
    • name the KEK custody window so raising retention shows up in the plan (#3734)
    • a retired KEK must outlive the newest backup that needs it (#3649)
    • the feature was built, and pointed at nothing (#3634)
    • the staleness probe watched the website, not the tier that matters (#3633)
    • DR-4 β€” the rollback is rehearsed, and the runbook stops calling it a claim (#3581)
    • Drill B β€” the vault restore is faster than PITR, and its metadata does not round-trip (#3477)
    • the restore path is rehearsed, and the backup history now outlives the instance (#3383)
    • one env var could turn every merge to main into a prod wipe (#3354)
    • DR-2 β€” a delete you can take back, and a copy of the key that cannot be re-derived (#3300)
    • incident response β€” runbook corrected, alert-delivery state on record, incident runbooks sketched (#3282)

    I18n

    • the org invitation email speaks the reader's language (#3241)
    • finish applying "CheckPt Agent" β€” 40 shipped strings said "daemon" β€” plus the locales/** guard (#2729)
    • route the Settings tab rail through t() (#2068)
    • route project + session tab labels through t() (#1785) (#1800)
    • localize docs system-requirements table rows (#1336) (#1508)
    • pl β€” mobile (checkpt-app) (#1276)

    Infra

    • website-api can call Anthropic, and says at boot whether it can (#3652)
    • SSR hosting for public web β€” Fargate origin + CloudFront/caching (#1341) (#1477)

    Legal

    • the pack's own subprocessor tables were two vendors behind the list (#3685)
    • the privacy policy now says staff can sign in as you (#3637)
    • mobile telemetry is crash-only β€” replay off is the decision, analytics off until consent exists (#3453)
    • write every legal document CheckPt needs β€” counsel checks them (#3384)
    • the subprocessor list named neither vendor adopted since it was written (#3355)
    • an honest privacy policy β€” subprocessor list, DPA path, real company name (#3245)

    License

    • a NOTICE was carried only if the manifest admitted to Apache (#3455)
    • ship third-party attribution with every distributed artifact (#3325)
    • drop the AGPL-3.0 ua-parser-js@2 before it ships (#3239)

    Ops

    • build the activation funnel and prove it populates (#3770)
    • the apt retry deleted the directory apt needs, so every retry after the first was decorative (#3751)
    • watch the crash stream, and gate the accessibility tree (#3742)
    • the Studio E2E gate called "the deps never installed" a test failure (#3749)
    • a placeholder Stripe key survived every probe we had (#3716)
    • the native gate never compiled to completion β€” disk, then timeout (#3683)
    • make the coverage-reachability claims enforceable, not remembered (#3504)
    • nothing compiled native code, so a cross-SDK package merged green (#3454)
    • give mobile a bundle gate, and fix the break it found (#3360)
    • the path-filter guard now covers the test workflows too (#3351)
    • give mobile a compile gate on PRs, and inventory the rest (#3345)
    • say where codecov's floors actually apply β€” trunk, not PRs (#3341)
    • the wizard walk gates PRs, and its stale gate assertion is gone (#3251)

    Polish

    • lay out honestly on a tablet (#3686)
    • store-submission sweep β€” zh script split, RECORD_AUDIO, one brand casing, dead route, font clamp, stale docs (#3314)

    Sec

    • the BYO pages omit what the relay cannot boot without, then say to skip it (#3774)
    • the flow log kept the refused half and dropped the useful one (#3773)
    • three credentials and one ALB attribute with no owner (#3772)
    • a key removed from the seed was never removed from the account (#3701)
    • the Homebrew tap PAT is the credential SEC-19 retired, still live on the install path (#3703)
    • we documented a required secret nothing reads (#3704)
    • cover the app-switcher snapshot, and re-lock after a minute away (#3736)
    • scope the deploy role's CloudWatch Logs read off * (#3702)
    • the admin plane gets its own key, and the release PAT goes away (#3576)
    • an incident now leaves a forensic trail β€” ALB access logs, VPC flow logs, CloudTrail (#3575)
    • SEC-4 β€” the admin plane stops being a committed password (#3479)
    • RELAY_KEK becomes a keyring, and rows say which key wrapped them (#3464)
    • derive the DR seed image from the live task definition (#3450)
    • the publish DTOs still advertised plaintext payloadVersion 1 (#3431)
    • pin the Clerk secret key now that the application is deleted (#3418)
    • SEC-24 β€” a SAST that runs, and a secret scan that sees history (#3403)
    • SEC-24 β€” pin every action, drop root, stop trusting a URL (#3404)
    • pin the prod deploy role to main + a gated production Environment, drop its secret read (#3353)
    • SEC-8 β€” the process asking for permission could grant it (#3365)
    • SEC-18 blast radius β€” immutable ECR, per-service SGs and execution roles (#3379)
    • a push hint could point the app at any relay, which harvested an account-scoped token (#3363)
    • a compromised org pool worker could reach every device of every member who used it (#3356)
    • SEC-1 β€” bind device ids to identity keys on key-directory ingest (#3303)
    • SEC-21 β€” desktop hardening: tokens to the keychain, command_spawn takes a recipe, CSP narrowed (#3324)
    • SEC-20 β€” the Android backup that prebuild turned back on, and a posture that lived in an optional argument (#3321)
    • SEC-11 β€” CSP was report-only, and enforcing it would have broken the app (#3304)
    • SEC-23 app hardening β€” session-bound CSRF, step-up re-auth, invite binding, envelope AAD, daemon keychain (#3295)
    • SEC-22 relay hardening β€” fail-closed org guard, view-only exec gaps, sealed run/inbox detail (#3294)
    • gate analytics and session replay on cookie consent (#3275)
    • a refresh token is not an access token, and the WS credential leaves the query string (#3276)
    • SEC-7 β€” the daemon served session output, inbox and identity to the LAN unauthenticated (#3277)
    • audit the denials, and stop a wipe erasing the trail (#3268)
    • the admin portal has no signup and no CLI grant (#3273)

    Security

    • ship a content security policy, replacing csp: null (#2217)
    • gate Swagger out of production + security headers on the web/admin origins (#2146)

    Tooling

    • the suppressed block is a heading, so the documented parse found nothing (#3778)
  7. 0.1.4-test.7

    8 september 2026
    Details

    Test

  8. 0.1.4-test.6

    8 september 2026
    Details

    Test

  9. 0.1.4-test.5

    6 september 2026
    Details

    Wat dan ook

  10. 0.1.4-test.4

    4 september 2026
    Details

    Wat is er nieuw in v0.1.4-test.4

    Deze release is een grote upgrade op het gebied van betrouwbaarheid, beveiliging en platform voor CheckPt, met verbeteringen in Studio, mobiel, teams, integraties, sessies op afstand en productie-infrastructuur.

    Toegevoegd

    • Hervatbare sessies, automatische checkpoints, sessies delen, replay en export.
    • Workers op afstand en in eigendom van de organisatie, met beter beheer van projecten en sessies op meerdere apparaten.
    • Slack- en Discord-workflows om taken te starten en acties van de assistent goed te keuren of te weigeren.
    • Uitgebreidere integraties, waaronder Jira, Linear, GitHub Projects, GitLab, Bitbucket, Azure DevOps, MCP en eigen webhooks.
    • Nieuwe service- en data-inspectors voor API's, PostgreSQL, MySQL, MongoDB, Redis, GraphQL, gRPC, queues en meer.
    • Verbeterde projectdetectie, servicebeheer, taakuitvoering, omgevingsconfiguratie en projectscaffolding.
    • Publieke roadmap, feedbackboard, stemmen op functies, instellingen voor analytics-toestemming en betere release notes.
    • Bredere lokalisatie in Studio, mobiel, web en systeemmeldingen.

    Gewijzigd

    • Grote prestatieverbeteringen voor sessies, WebSockets, databases, meldingen, opstarten en CI.
    • Verbeterde navigatie in Studio, project-first workflows, sessiebediening en apparaatbeheer.
    • Vereenvoudigde architectuur voor de Agent, relay, sessieafhandeling, services, taken en authenticatie.

    Opgelost

    • Talloze problemen met het starten van sessies, terminals, koppelen, apparaten op afstand, projectdetectie, meldingen, deployments, facturering en authenticatie.
    • Verbeterde packaging, installers, systeemintegratie en applicatiestabiliteit op macOS en Windows.
    • Belangrijke verbeteringen op het gebied van toegankelijkheid, lokalisatie, responsieve lay-out en consistentie van de UI.

    Beveiliging en betrouwbaarheid

    • Sterkere encryptie, authenticatie, apparaatidentiteit, CSRF-bescherming, omgang met secrets en toegangscontroles.
    • Verbeterde productiemonitoring, disaster recovery, back-ups, auditlogging, infrastructuurisolatie en security scanning.
    • Extra privacy-instellingen voor analytics, telemetrie, accountgegevens en toestemming.
  11. 0.1.4-test.3

    1 september 2026
    Details

    Updates