Skip to content

runtime-v0.3.20

Choose a tag to compare

@github-actions github-actions released this 10 Jul 03:45

What's Changed

Large Features

  • feat(product): improve agent auth and workspace mobility by @pablonyx in #381
  • feat(desktop): add support report uploads by @pablonyx in #391
  • feat(product): update settings navigation IA by @pablonyx in #773
  • feat(auth): add configurable SSO by @pablonyx in #782
  • feat(server): self-hosting v1 - single-org mode, first-run claim, invites, versions, deploy bundle by @pablonyx in #858
  • feat(agent-auth): titled-key vault + env-var selections, state.json v2, two-phase render, new auth UI by @pablonyx in #907
  • feat(support): revive support flow as two focused modals + product-wide polish by @pablonyx in #932
  • feat(billing): usage visibility, budget limits, and consumption surfaces by @pablonyx in #1020

Minor Features

  • feat(mobile): refine chat configuration controls by @pablonyx in #342
  • feat(desktop): slim updater UI by @pablonyx in #369
  • feat(product): surface cloud workspace activity status by @pablonyx in #371
  • feat(web): refine workspace chat header by @pablonyx in #372
  • feat(product): share transcript viewer across web and desktop by @pablonyx in #373
  • feat(product): add email password sign-in by @pablonyx in #382
  • feat(product): align web loading and copy feedback by @pablonyx in #387
  • feat(support): add debug correlation case files by @pablonyx in #397
  • feat(desktop): align Git UI and add turn undo by @pablonyx in #402
  • feat(desktop): add web handoff shortcuts by @pablonyx in #405
  • feat(product): refresh frontier agent model defaults by @pablonyx in #407
  • feat(support): track support reports in GitHub and Linear by @pablonyx in #411
  • feat(product): refine chat transcript and launch flows by @pablonyx in #507
  • feat(workspaces): improve generated worktree creation by @pablonyx in #605
  • feat(agents): normalize variant-encoded model families in catalog build by @pablonyx in #614
  • feat(agents): bedrock + opencode-zen probe contexts, parallel matrix by @pablonyx in #617
  • feat(desktop): Obsidian-style live-preview markdown in scratchpad by @pablonyx in #660
  • feat(workspaces): AI-generate workspace names, retire workspace_naming MCP by @pablonyx in #661
  • feat(desktop): tab-strip playground, workspace UI polish, and session runtime updates by @pablonyx in #686
  • feat(agents): add Grok (xAI Grok Build) as a harness by @pablonyx in #705
  • feat(agents): runtime-startup installed-only reconcile (run_startup_pass) by @pablonyx in #730
  • feat(desktop): misc UI polish — tab width, markdown headings, codex spinner, default ⌘N by @pablonyx in #743
  • feat(transcript): provider-icon links + better file-path resolution by @pablonyx in #742
  • feat(web): gate browser auth for beta access by @pablonyx in #775
  • feat(anyharness): add runtime pressure pruning by @pablonyx in #776
  • feat(product): add organization integration controls by @pablonyx in #774
  • feat(desktop): refresh settings UI by @pablonyx in #777
  • fix(desktop): polish settings and page spacing by @pablonyx in #778
  • feat(desktop): polish scratch markdown editing by @row0-rl in #780
  • feat(desktop): add organization switcher footer by @pablonyx in #784
  • feat(orgs): accept pending invitations by @pablonyx in #785
  • feat(billing): clarify plans and credits UI by @pablonyx in #786
  • feat(cloud): add managed sandbox stack one by @pablonyx in #789
  • feat(cloud): runtime worker auth model + enrollment by @pablonyx in #827
  • feat(server): first-run claim with setup token by @pablonyx in #863
  • feat(server): ADMIN_EMAILS floor + instance admin invariants by @pablonyx in #865
  • feat: invite-as-allowlist registration + desktop password sign-in by @pablonyx in #867
  • feat(server): real version reporting, /meta pins, desktop updater redirect by @pablonyx in #861
  • feat(cloud): integration definition/account/oauth models + provider access by @pablonyx in #830
  • feat(cloud): integration gateway MCP endpoint + virtual tools by @pablonyx in #832
  • feat(cloud): integration management APIs (authenticate, oauth, admin) by @pablonyx in #835
  • feat(cloud): integration health endpoint by @pablonyx in #836
  • feat(cloud): integrations settings UI by @pablonyx in #844
  • feat(gateway): real xAI upstream + LiteLLM in production compose by @pablonyx in #906
  • feat(agent-auth): runtime catalog — gateway probe-always, curation as data, render pins deleted by @pablonyx in #908
  • feat(cloud): OAuth (DCR) support for org-custom MCP integrations by @pablonyx in #902
  • feat(desktop): searchable integrations + composer indicator by @pablonyx in #905
  • feat(desktop): All-Models becomes a rich model table (thinking levels, provider, status) by @pablonyx in #923
  • feat(cloud): org-scoped worker identity + gateway org-policy enforcement (restore #894) by @pablonyx in #924
  • feat(cloud): heartbeat version convergence + sandbox worker self-swap (restore #897) by @pablonyx in #925
  • feat(desktop): ModelTable round 2 — modes column, family-key enrichment, description subtitles by @pablonyx in #926
  • feat(anyharness): Bedrock models in the agent gateway + enrichment fixes by @pablonyx in #928
  • feat(desktop): Codex-style file tree overlay with grouped filter search by @pablonyx in #930
  • feat(desktop): files viewer chrome polish — toggle menu, compact find bar, metrics sweep by @pablonyx in #931
  • feat(desktop): Codex-quality diff renderer — layered color-mix + airy typography by @pablonyx in #933
  • feat(desktop): per-gap context expanders with gutter chevrons by @pablonyx in #934
  • feat(desktop): Codex-style review layout — sticky headers, jump-to-file, virtualization by @pablonyx in #935
  • feat: hunk-level revert/stage — sidecar patch endpoints + hover pills by @pablonyx in #936
  • feat(desktop): full-height single-scroll review layout by @pablonyx in #937
  • feat(server): analytics dashboards — provider-cost ingestion + Metabase schema by @pablonyx in #973
  • feat(customerio): engagement attribute sync (email_type, workspace_count, last_active_at) by @pablonyx in #967
  • feat(desktop): header tabs polish — borderless chips, sticky new-chat, history popover by @pablonyx in #991
  • feat(settings): rework Account IA and Appearance preview by @pablonyx in #993
  • fix(desktop): sidebar dates/icons, neutral update pill, stable workspace sort by @pablonyx in #992
  • feat(composer): redesign chat input control row, model picker, and empty-session switch by @pablonyx in #996
  • feat(workers): add catalogVersion to heartbeat response (convergence P1) by @pablonyx in #988
  • feat(worker): catalog fetch+push transport — pins converge without binary releases (convergence P2) by @pablonyx in #989
  • feat(composer): rework command palette, slash command UX, and add-repo flow by @pablonyx in #1000
  • feat(chat): transcript polish — list spacing, shimmer, label sizes, streaming reveal, anchor fixes by @pablonyx in #1002
  • feat(desktop): agents settings UX polish + env-unmasked CLI auth state by @pablonyx in #986
  • feat(agent-gateway): enforce org auth-method policy at select-time by @pablonyx in #1019
  • feat(billing): revive the billing reconciler on CloudSandbox + resume-deny + enforce by @pablonyx in #1021
  • feat(auth): org-scoped SSO login entry points + product-readiness carve-out by @pablonyx in #1048
  • feat(server): advertise a runtime version pin and serve the anyharness binary for worker self-update by @pablonyx in #1087
  • feat(anyharness): worker-owned in-place AnyHarness runtime self-update in cloud sandboxes by @pablonyx in #1088
  • fix(desktop): restore search field in composer model picker by @pablonyx in #1094
  • feat(desktop): remove Agent Defaults settings page; defaults from catalog + last-used-wins by @pablonyx in #1100
  • feat(server): audit integration-gateway tool calls with a per-call usage row by @pablonyx in #1101

Performance

  • perf(cloud): add worker control long poll by @pablonyx in #416
  • perf(anyharness): reduce local session latency by @pablonyx in #517
  • fix(desktop): keep workspace shell mounted across all authenticated routes by @pablonyx in #1097

Fixes

  • fix(desktop): repair workspace shortcuts and tab activation by @pablonyx in #353
  • fix(desktop): preserve sidebar row spacing by @pablonyx in #356
  • fix(product): smooth auth loading mark handoff by @pablonyx in #364
  • fix(product): constrain auth loading beads by @pablonyx in #365
  • fix(product): stabilize agents, workspaces, and automations by @pablonyx in #368
  • fix(mobile): use remote production build numbers by @pablonyx in #378
  • fix(server): avoid wake transaction leak by @pablonyx in #386
  • fix(product): apply cloud MCP config to local sessions by @pablonyx in #388
  • fix(desktop): apply appearance theme in support window by @pablonyx in #393
  • fix(desktop): allow support window event listen by @pablonyx in #396
  • fix(desktop): preserve billing return handoff by @pablonyx in #399
  • fix(desktop): clarify support report upload failures by @pablonyx in #398
  • fix(desktop): make new workspace shortcuts reliable by @pablonyx in #401
  • fix(support): harden debug report correlation by @pablonyx in #403
  • fix(desktop): dedupe support report upload toasts by @pablonyx in #406
  • fix(server): isolate automation snapshot failures by @pablonyx in #408
  • fix(desktop): fail release on broken sentry upload by @pablonyx in #409
  • fix(release): align desktop sentry preflight guard by @pablonyx in #410
  • fix(desktop): avoid web-to-desktop handoff reload loops by @pablonyx in #511
  • fix(desktop): align live tool call labels by @pablonyx in #518
  • fix(desktop): normalize composer caret sizing by @pablonyx in #519
  • fix(anyharness): honor requested Claude model ids by @pablonyx in #520
  • fix(desktop): scale composer input text with chat size by @pablonyx in #521
  • fix(anyharness): resolve Claude Opus 4.8 launch id by @pablonyx in #524
  • fix(anyharness): render prompts for terminal command runs by @pablonyx in #602
  • fix(chat): surface delivery errors and allow retry for unconfirmed prompts by @pablonyx in #628
  • fix(desktop): idle presentation for warming sessions + stable sidebar position for new workspaces by @pablonyx in #647
  • fix(sessions): fail ACP startup fast when the agent process exits + codex install fix by @pablonyx in #646
  • fix(desktop): single transcript spacing rhythm and resize-driven bottom pinning by @pablonyx in #649
  • fix(catalog): codex back to npm delivery now that @proliferate-ai sidecars are published by @pablonyx in #655
  • fix(web): explain when the local API is unreachable during first-run auth by @utsavp257 in #657
  • fix(anyharness): preserve access-gate failures in session errors by @sandip-pathe in #656
  • fix(support): stop report uploads retrying a permanent conflict forever by @pablonyx in #737
  • fix(catalog): refresh agent catalog + restore claude model availability across auth contexts by @pablonyx in #738
  • fix(catalog): drop sourceless native pins + update catalog tests for the refresh by @pablonyx in #741
  • fix(desktop): self-heal stale default model + gate new-thread to active auth context by @pablonyx in #739
  • fix(desktop): GitHub sign-in checking flash + sidebar spinner alignment by @pablonyx in #757
  • fix(desktop): keep right panel add button outside tab fade by @row0-rl in #779
  • fix(desktop): reduce duplicate subagent visual identities by @Julian0444 in #788
  • fix(product): tighten sidebar row density by @pablonyx in #797
  • fix(desktop): repo-shape conformance for streaming-UI leftovers by @pablonyx in #872
  • fix(migrations): merge the three parallel alembic heads on main by @pablonyx in #887
  • fix(desktop): prevent path traversal in support attachment staging by @pablonyx in #874
  • fix(cloud/agent-run-config): require org membership for org-scoped listing (IDOR) by @pablonyx in #875
  • fix(cloud/github-app): verify installation ownership in install callback (IDOR) by @pablonyx in #876
  • fix(auth): add token-generation revocation for logout and password change by @pablonyx in #877
  • fix(product-ui): repo-shape conformance for secrets dialog + icon barrel by @pablonyx in #911
  • fix(desktop): All-Models refresh for native routes uploads runtime-probed models by @pablonyx in #912
  • fix(desktop): worker identity survives logout/user switch by @pablonyx in #893
  • fix(desktop): file-viewer scroll + open-in fixes by @pablonyx in #954
  • fix(anyharness): dedup gateway model table to Bedrock-only current-gen + fix names by @pablonyx in #955
  • fix(agent-gateway): schedule materialization after vkey rotation (P0) by @pablonyx in #987
  • fix(catalog): gateway enrichment join — normalizer gaps + cross-harness identity fallback by @pablonyx in #994
  • fix(catalog): codex gateway policy — openai only, gpt-5.2 default by @pablonyx in #995
  • fix(auth): classify against the env the CLI actually inherits (ambient, registry-bounded) by @pablonyx in #997
  • fix(auth): reject unknown fields on PATCH /users/me + allowlist gateway line growth by @pablonyx in #999
  • fix(server): correct Sentry error-count ingestion (empty-result bug) by @pablonyx in #984
  • fix(server): deliver signup Slack notifications inline (no Celery worker exists) by @pablonyx in #1018
  • fix(billing): bill org compute to the org subject, not personal by @pablonyx in #1047
  • fix(agents): use git ref, not catalog version label, for git-pin drift checks by @pablonyx in #1052
  • fix(billing): only hold payment_failed on dunning-driven subscription deletion by @pablonyx in #1049
  • fix(billing): clear credits-exhausted errors end-to-end — no pager, stable 402 code, real toast message by @pablonyx in #1057
  • fix(cloud): self-heal stale sandbox runtimes on reconnect + structured 502 by @pablonyx in #1058
  • fix(billing): membership changes no longer 500 when an org has two active subscriptions by @pablonyx in #1056
  • fix(server): align email validation between account creation and read models by @pablonyx in #1014
  • fix(desktop): consumption card always visible in the sidebar, not in the account popover by @pablonyx in #1075
  • fix(desktop): make invitation-accept UI reachable for non-admin invitees by @pablonyx in #1017
  • fix(self-host): replace dead Bifrost gateway vars with the real LiteLLM config by @pablonyx in #1054
  • fix(desktop): invite links carry the issuing server origin; trust-confirm before switching by @pablonyx in #1083
  • fix(desktop): sync right panel tab height with glass workspace header by @pablonyx in #1093
  • fix(desktop): stop show-more toggle from appearing on every user message by @pablonyx in #1095
  • fix(desktop): stop gating local-surface harness settings on cloud auth by @pablonyx in #1096
  • fix(anyharness): stamp release version into runtime and worker binaries by @pablonyx in #1102
  • fix(desktop): stop presenting sessions as iterating once the final answer has rendered by @pablonyx in #1099
  • feat(billing): wire the gateway LLM-credit budget gate as a second enforcement wall by @pablonyx in #1103
  • fix(anyharness): unbreak Windows worker builds broken by the runtime self-update by @pablonyx in #1107

Docs

  • docs(dev): add local development runbook by @pablonyx in #354
  • docs(dev): move ci cd guide into dev process by @pablonyx in #355
  • docs(docs): route docs into spec buckets by @pablonyx in #374
  • docs(release): document production deploy failure modes by @pablonyx in #375
  • docs(release): clarify deployment runbook by @pablonyx in #380
  • docs(structures): add worker and supervisor structure guides by @pablonyx in #392
  • docs(server): align server guide structure by @pablonyx in #395
  • docs(anyharness): align runtime structure docs with current paths by @pablonyx in #441
  • docs(specs): move repo docs into specs by @pablonyx in #501
  • docs(specs): track migrated reference specs by @pablonyx in #503
  • docs(specs): clean up transitional spec language by @pablonyx in #516
  • docs(product): consolidate architecture and worker specs by @pablonyx in #528
  • docs(runbooks): add Stripe and E2B recovery guides by @pablonyx in #563
  • docs(runbooks): add cloud ops recovery inventory by @pablonyx in #593
  • docs(worker): ratify shared redis wake ownership by @pablonyx in #531
  • docs(worker): ratify durable job substrate plan by @pablonyx in #533
  • docs(frontend): tighten frontend structure guidance by @pablonyx in #595
  • docs(server): codify background and shared-lib structure by @pablonyx in #596
  • docs(docs): clarify worker docs and retire drafts by @pablonyx in #600
  • docs(docs): clarify auth and package ownership by @pablonyx in #601
  • docs(release): add GitHub issue form templates for bugs and features by @pablonyx in #665
  • docs(specs): integrations + worker-auth primitive, current-state architecture by @pablonyx in #891
  • docs(testing): how-to for writing new tier-2/tier-3 tests by @pablonyx in #1073
  • docs(runtime): worker-owned anyharness self-update in cloud sandboxes by @pablonyx in #1081

Maintenance

  • ci(release): add hosted deploy spine by @pablonyx in #344
  • refactor(frontend): share settings surfaces across apps by @pablonyx in #343
  • refactor(anyharness): thin workspace and agent HTTP handlers by @pablonyx in #347
  • refactor(anyharness): move cross-domain deletes out of stores by @pablonyx in #348
  • ci(anyharness): ratchet architecture boundaries by @pablonyx in #349
  • refactor(anyharness): align live session boundaries by @pablonyx in #350
  • refactor(anyharness): split terminal domain and live runtime by @pablonyx in #351
  • refactor(anyharness): tighten domain contracts by @pablonyx in #352
  • feat(billing): add Pro early-access promo-code script + docs by @pablonyx in #357
  • ci(release): build E2B when bypassing staging by @pablonyx in #358
  • release(desktop): bump to 0.1.41 by @pablonyx in #359
  • release(mobile): bump iOS build number by @pablonyx in #360
  • refactor(anyharness): clean up session store live boundary by @pablonyx in #361
  • refactor(anyharness): move domain response DTOs to API mappers by @pablonyx in #362
  • refactor(anyharness): decouple session product MCP launch by @pablonyx in #363
  • release(desktop): bump to 0.1.42 by @pablonyx in #366
  • ci(release): route desktop through production promote by @pablonyx in #370
  • chore(desktop): bump release to 0.1.43 by @pablonyx in #376
  • ci(desktop): allow promote-sourced release refs by @pablonyx in #377
  • ci(mobile): submit built EAS artifact by id by @pablonyx in #379
  • fix(server): format password auth changes by @pablonyx in #383
  • fix(server): make analytics MCP test product-ready by @pablonyx in #384
  • fix(server): make agent auth tests product-ready by @pablonyx in #385
  • fix(server): format runtime config service by @pablonyx in #389
  • fix(mobile): keep staging TestFlight submit aligned by @pablonyx in #390
  • chore(desktop): bump updater version to 0.1.44 by @pablonyx in #394
  • chore(product): disable Slack bot flow by @pablonyx in #400
  • chore(desktop): bump updater version to 0.1.45 by @pablonyx in #404
  • test(anyharness): split worker tailer tests by @pablonyx in #435
  • fix(server): keep worker control service boundary clean by @pablonyx in #436
  • fix(server): guard worker control migration replay by @pablonyx in #437
  • chore(frontend): add report-only structure inventory by @pablonyx in #440
  • chore(server): add structure guardrails by @pablonyx in #442
  • refactor(anyharness): split live session runtime concerns by @pablonyx in #444
  • refactor(frontend): normalize hook responsibility folders by @pablonyx in #443
  • refactor(anyharness): split adapter operations by capability by @pablonyx in #446
  • refactor(anyharness): split agent readiness and install roles by @pablonyx in #445
  • refactor(frontend): align DOM primitives with ui package by @pablonyx in #448
  • ci(deploy): exclude dry runs from deploy bases by @pablonyx in #449
  • refactor(server): thread automation store db sessions by @pablonyx in #447
  • refactor(frontend): route support access through sdk react by @pablonyx in #451
  • refactor(frontend): move component config out of components by @pablonyx in #452
  • refactor(anyharness): split workspace lifecycle responsibilities by @pablonyx in #453
  • refactor(frontend): split desktop workspace shell responsibilities by @pablonyx in #456
  • refactor(frontend): split automation inventory domain rules by @pablonyx in #457
  • refactor(anyharness): split session domain responsibilities by @pablonyx in #454
  • ci(deploy): key promotion checks off deploy artifacts by @pablonyx in #459
  • refactor(frontend): split mobile chat screen responsibilities by @pablonyx in #460
  • refactor(frontend): split web chat screen responsibilities by @pablonyx in #458
  • refactor(anyharness): decouple core domains from product surfaces by @pablonyx in #461
  • refactor(frontend): split mobile surface responsibilities by @pablonyx in #465
  • refactor(frontend): split desktop session workflow responsibilities by @pablonyx in #468
  • refactor(desktop): split settings and automation surfaces by @pablonyx in #467
  • refactor(anyharness): split api contract boundary modules by @pablonyx in #470
  • refactor(server): thread billing store db sessions by @pablonyx in #450
  • refactor(frontend): split shared package surface responsibilities by @pablonyx in #466
  • refactor(anyharness): align product mcp structure by @pablonyx in #471
  • refactor(anyharness): promote artifacts into product domain by @pablonyx in #472
  • refactor(anyharness): finish runtime topology moves by @pablonyx in #473
  • refactor(server): thread cloud store db sessions by @pablonyx in #455
  • release(desktop): bump version to 0.1.47 by @pablonyx in #474
  • ci(server): let server test job finish by @pablonyx in #476
  • refactor(server): route service session boundaries by @pablonyx in #475
  • refactor(server): align billing Stripe integration by @pablonyx in #480
  • refactor(server): carve cloud runtime owners by @pablonyx in #477
  • refactor(server): split agent auth gateway owners by @pablonyx in #481
  • refactor(server): split command and worker transactions by @pablonyx in #479
  • refactor(server): split Slack cloud bot workers by @pablonyx in #478
  • refactor(ui): split shared icon modules by @pablonyx in #485
  • refactor(server): clean folder naming hygiene by @pablonyx in #482
  • refactor(desktop): split large workspace hooks by @pablonyx in #486
  • refactor(mobile): split large mobile surfaces by @pablonyx in #489
  • refactor(desktop): split large frontend infra modules by @pablonyx in #491
  • refactor(web): split large web frontend surfaces by @pablonyx in #490
  • refactor(desktop): split content and review surfaces by @pablonyx in #492
  • refactor(desktop): split settings and app utilities by @pablonyx in #493
  • refactor(desktop): split home launch flow by @pablonyx in #495
  • refactor(desktop): split workspace mobility flows by @pablonyx in #494
  • refactor(desktop): split workspace navigation flows by @pablonyx in #496
  • refactor(desktop): split chat selector hooks by @pablonyx in #498
  • refactor(desktop): split session lifecycle actions by @pablonyx in #499
  • refactor(desktop): split composer model selector logic by @pablonyx in #500
  • refactor(product-ui): split shared chat composer surfaces by @pablonyx in #502
  • refactor(product-ui): split shared chat transcript surfaces by @pablonyx in #504
  • chore(test): normalize describe blocks and refresh todo playground fixtures by @pablonyx in #508
  • release(desktop): bump desktop version to 0.1.48 by @pablonyx in #512
  • release(desktop): bump desktop version to 0.1.49 by @pablonyx in #525
  • docs(release): capture production deploy learnings by @pablonyx in #527
  • refactor(cloud): collapse sandbox slot identity into targets by @pablonyx in #529
  • refactor(desktop): split turn diff panel components by @pablonyx in #566
  • refactor(product): split chat transcript view by @pablonyx in #568
  • refactor(desktop): split session runtime dev SSE logging by @pablonyx in #571
  • ci(frontend): enforce structure report by @pablonyx in #591
  • refactor(desktop): centralize settings admin role checks by @pablonyx in #592
  • refactor(worker): align worker structure with control and tail model by @pablonyx in #530
  • feat(worker): fold control reconcile into two-poll loop by @pablonyx in #532
  • feat(server): add celery background skeleton by @pablonyx in #534
  • feat(server): add background outbox foundation by @pablonyx in #535
  • feat(server): move signup slack notification to celery by @pablonyx in #536
  • refactor(server): move runtime wake to background outbox by @pablonyx in #537
  • refactor(server): move support tracker reconciler to Beat by @pablonyx in #538
  • refactor(server): move cloud automation execution to Celery by @pablonyx in #539
  • refactor(server): extract worker command service by @pablonyx in #540
  • refactor(server): extract worker auth helpers by @pablonyx in #541
  • refactor(server): extract command preflight by @pablonyx in #542
  • refactor(server): extract command wake orchestration by @pablonyx in #543
  • refactor(server): extract command client state by @pablonyx in #544
  • refactor(server): extract command workspace scope by @pablonyx in #545
  • refactor(server): extract workspace detail assembly by @pablonyx in #546
  • refactor(server): extract workspace target launch by @pablonyx in #547
  • refactor(server): extract workspace remote access by @pablonyx in #548
  • refactor(server): extract workspace lifecycle actions by @pablonyx in #549
  • refactor(server): extract workspace provisioning by @pablonyx in #550
  • refactor(server): split workspace payload models by @pablonyx in #551
  • refactor(server): split workspace lifecycle store by @pablonyx in #552
  • refactor(server): move sandbox store helpers by @pablonyx in #553
  • refactor(server): split runtime config worker service by @pablonyx in #554
  • refactor(server): split runtime bootstrap helpers by @pablonyx in #555
  • refactor(server): split runtime sandbox lifecycle by @pablonyx in #556
  • refactor(server): split runtime launch helpers by @pablonyx in #557
  • refactor(server): split runtime workspace preparation by @pablonyx in #558
  • refactor(server): split runtime provision input by @pablonyx in #559
  • refactor(server): split runtime template preparation by @pablonyx in #560
  • refactor(server): split runtime launch connect flow by @pablonyx in #561
  • refactor(server): split command payload rules by @pablonyx in #562
  • refactor(server): split runtime config resolver types by @pablonyx in #564
  • refactor(server): split mobility cleanup service by @pablonyx in #565
  • refactor(server): split mobility preflight service by @pablonyx in #567
  • refactor(server): split cloud mobility store package by @pablonyx in #569
  • refactor(server): ratchet cloud repo config store by @pablonyx in #570
  • refactor(server): split cloud sync event stores by @pablonyx in #572
  • refactor(server): split cloud command lease store by @pablonyx in #573
  • refactor(server): split cloud command result store by @pablonyx in #574
  • refactor(server): split automation run store by @pablonyx in #575
  • refactor(server): split cloud workspace store by @pablonyx in #576
  • refactor(server): split auth identity service by @pablonyx in #577
  • refactor(server): split billing usage stores by @pablonyx in #578
  • refactor(server): split billing subject store by @pablonyx in #579
  • refactor(server): split billing subscription store by @pablonyx in #580
  • refactor(server): split billing seat store by @pablonyx in #581
  • refactor(server): split billing accounting service by @pablonyx in #582
  • refactor(server): split billing snapshot service by @pablonyx in #583
  • refactor(server): split billing team checkout by @pablonyx in #584
  • refactor(server): split billing checkout service by @pablonyx in #585
  • refactor(server): split billing accounting pass by @pablonyx in #586
  • refactor(server): split billing seat reconciliation by @pablonyx in #587
  • refactor(server): split billing runtime usage by @pablonyx in #588
  • refactor(server): split billing overview read models by @pablonyx in #589
  • refactor(server): retire billing service imports by @pablonyx in #590
  • ci(release): add release train hotfix automation by @pablonyx in #597
  • ci(release): add public product version train by @pablonyx in #598
  • ci(release): publish product release notes by @pablonyx in #599
  • chore(anyharness): add sqlite schema snapshot by @pablonyx in #603
  • refactor(anyharness): group live terminal modules by role by @pablonyx in #604
  • refactor(anyharness): simplify workspace records by @pablonyx in #606
  • refactor(mcp): collapse sub-threshold product MCP files by @pablonyx in #610
  • refactor(mcp): purge legacy routes, headers, and deprecated tool params by @pablonyx in #616
  • chore(release): add dependabot, CODEOWNERS, CodeQL, and security docs by @pablonyx in #666
  • ci(release): bump CodeQL action to v4 and checkout to v5 (Node 24) by @pablonyx in #679
  • chore(deps): bump toml from 0.8.2 to 0.9.12+spec-1.1.0 by @dependabot[bot] in #681
  • chore(deps): bump zip from 4.6.1 to 8.6.0 by @dependabot[bot] in #682
  • chore(deps): bump rusqlite from 0.32.1 to 0.40.1 by @dependabot[bot] in #683
  • chore(deps): bump sentry from 0.47.0 to 0.48.2 by @dependabot[bot] in #684
  • chore(deps): bump portable-pty from 0.8.1 to 0.9.0 by @dependabot[bot] in #685
  • chore(deps): bump the cargo-minor-and-patch group across 1 directory with 17 updates by @dependabot[bot] in #701
  • chore(ci): ignore Expo SDK packages in Dependabot by @pablonyx in #704
  • test(server): make api-path-prefix assertions robust to Starlette router nesting by @pablonyx in #714
  • chore(deps): bump getrandom from 0.2.17 to 0.4.2 by @dependabot[bot] in #687
  • chore(deps): bump the github-actions group across 1 directory with 12 updates by @dependabot[bot] in #690
  • chore(deps): bump cryptography from 46.0.5 to 49.0.0 in /server by @dependabot[bot] in #670
  • chore(deps): update fastapi-users[oauth,sqlalchemy] requirement from >=14.0.0 to >=15.0.5 in /server by @dependabot[bot] in #674
  • chore(deps): update uvicorn[standard] requirement from >=0.34.0 to >=0.49.0 in /server by @dependabot[bot] in #671
  • chore(deps): update sentry-sdk[fastapi] requirement from >=2.28.0 to >=2.62.0 in /server by @dependabot[bot] in #676
  • chore(deps): update botocore[crt] requirement from >=1.43.18 to >=1.43.30 in /server by @dependabot[bot] in #677
  • chore(ci): stop Dependabot major-version churn by @pablonyx in #726
  • chore(deps): bump the python-minor-and-patch group across 1 directory with 12 updates by @dependabot[bot] in #712
  • chore(deps): bump tauri from 2.10.3 to 2.11.2 in the cargo-minor-and-patch group across 1 directory by @dependabot[bot] in #725
  • chore(deps): bump the npm-minor-and-patch group across 1 directory with 36 updates by @dependabot[bot] in #727
  • fix(anyharness): re-fork zero-turn Claude fork children instead of dead load_session by @pablonyx in #732
  • fix(product-ui): don't show scroll-to-bottom button when transcript isn't scrollable by @pablonyx in #733
  • fix(desktop): keep distinct local workspaces per folder+branch instead of collapsing by @pablonyx in #735
  • fix(desktop): stop model/mode switch landing one behind by @pablonyx in #736
  • feat(desktop): publish Homebrew cask on release by @pablonyx in #770
  • fix(desktop): push Homebrew cask on the tap's first release by @pablonyx in #771
  • refactor(server): add ownership dependency substrate by @pablonyx in #781
  • refactor(server): enforce integration policy org RLS by @pablonyx in #783
  • chore(dev): split local dev setup and run by @pablonyx in #790
  • [codex] Clean up cloud repo workspace sandbox DB models by @pablonyx in #803
  • refactor(cloud): cut over workspace flow to gateway by @pablonyx in #809
  • fix(frontend): wire the six oversized files onto their split-out modules by @pablonyx in #855
  • refactor(cloud): delete parked cloud domains and dead consumers by @pablonyx in #823
  • feat(server): membership policy seam + SINGLE_ORG_MODE by @pablonyx in #862
  • ci(self-host): production compose smoke, phase 1 by @pablonyx in #859
  • release(server): publish self-host deploy bundle by @pablonyx in #868
  • refactor(anyharness): gut runtime_config, inject gateway MCP from dotfile by @pablonyx in #837
  • ci: fail PRs that fork the alembic migration history by @pablonyx in #888
  • chore(harness): remove the gemini harness (upstream went enterprise-only) by @pablonyx in #896
  • fix(ci): sync HarnessPane.test.tsx max-lines allowlist by @pablonyx in #917
  • chore(cloud): integration FKs + schema vestiges + gateway/health perf hygiene by @pablonyx in #895
  • refactor(desktop): unify code/markdown rendering onto shared product-ui primitive by @pablonyx in #927
  • chore(sdk): regenerate openapi for stage-patch/unstage-patch endpoints by @pablonyx in #951
  • fix(server): sync analytics ingest task def with deployed reality by @pablonyx in #983
  • fix(ci): make repo-shape checks green on main by @pablonyx in #1010
  • tests(release): tier-3 runner skeleton (lanes, env manifest, reporter, dry-run) by @pablonyx in #1009
  • test(release-e2e): browser-free session seeding for the staging durable user by @pablonyx in #1062
  • ci(release-e2e): tier-3 runner workflow (release-train cadence) by @pablonyx in #1064
  • test(release): reconcile tier-3 pins with tonight's merges by @pablonyx in #1066
  • ci(tests): install Tauri system deps in the tier-3 workflow build step by @pablonyx in #1067
  • ci(tests): provide throwaway server secrets to the tier-3 boot step by @pablonyx in #1068
  • test(intent): mock IdP slot + SSO scenario (T2-AUTH-3) by @pablonyx in #1015
  • test(intent): tier-2 org SSO login entry points (T2-AUTH-5) by @pablonyx in #1072
  • test(intent): point remove-user flow row at existing coverage by @pablonyx in #1074
  • specs(testing): T3-INT-1 credential is any api_key kind, not a Slack bot token by @pablonyx in #1076
  • fix(tests): tier-3 runner treats missing credentials as blocked and self-seeds the CI local lane by @pablonyx in #1080
  • fix(ci): make same-day release tag reruns collision-tolerant by @pablonyx in #1082
  • test(self-hosting): tier-1 config/meta units + tier-2 claim/invite/adaptive-signin specs by @pablonyx in #1085
  • feat(desktop): make updater endpoint + pubkey build-overridable for tier-4 tests by @pablonyx in #1086
  • refactor(integrations): remove cloudflare_docs seed and archive removed seeds on sync by @pablonyx in #1001
  • ci(release): publish runtime and worker bare-binary trees to the downloads CDN by @pablonyx in #1091
  • test(release): tier-4 cloud AnyHarness runtime self-update scenario (T4-CLOUD-1) by @pablonyx in #1092
  • test(desktop): tier-4 desktop auto-update scenario (T4-DESKTOP-1) by @pablonyx in #1090
  • test(release): implement T3-PROV-2 pause/resume and T3-SEC-MAT-1 secret materialization by @pablonyx in #1098
  • test(server): assert org billing exhaustion lifecycle live on staging (T3-BILL-4) + fix #1047 attribution by @pablonyx in #1108
  • test(release-e2e): add self-hosting live scenarios (T3-SH / T4-SH) by @pablonyx in #1109
  • test(release-e2e): implement T3-SH-3 gateway add-on against the standing box by @pablonyx in #1110
  • test(release-e2e): assert funded billing lifecycle + Stripe test-mode swap live on staging (T3-BILL-3) by @pablonyx in #1112
  • ci(release): let the runtime CDN publish job assume its AWS role by @pablonyx in #1113

Other Changes

New Contributors

Full Changelog: runtime-v0.1.2...runtime-v0.3.20