Sessions keep working through model and runtime outages, turns start faster, and sessions open instantly.
Improved
- Opening a session shows its saved history immediately from cache while the live transcript loads, in one request instead of several.
- Turns start faster: configuration, model catalog and ingress checks run in parallel.
- Sessions retry transient model errors inside the turn and continue through short provider outages instead of stopping.
- A session whose runtime was lost resumes automatically when it was running unattended.
- The sandbox model catalog stays current across boot, wake, restart and every turn.
- Streaming responses never forward a partial event line; a stream cut before the first byte is retried, and a later cut ends with an explicit error.
- The
kortixtterminal desk adds cloud sessions, port forwarding, a Links panel and a self-updating launcher. - Managed models route through their OpenRouter pools by default; direct Morph routing is off unless an operator enables it.
- Gateway request logs break admission time down by step: preparation, admission, routing, resolution and billing.
Fixed
- Turns were sometimes marked abandoned while still running.
- Transcript requests could return 401 during a session.
- Stopped sandboxes could stay running after their session ended.
- Orphan cleanup only stops sandboxes that this deployment's database owns.
What's Changed
- feat(sdk,web,mobile): instant session loads — history from cache, lists that never block, one status vocabulary by @Ino-Bagaric in #7778
- feat(gateway): split gateway admission time by step by @markokraemer in #7833
- chore(release): staging VERSION → 0.13.39 [skip ci] by @github-actions[bot] in #7834
- chore(release): VERSION → 0.13.39 [skip ci] by @github-actions[bot] in #7835
- Promote main da10498 to staging (v0.13.39) by @markokraemer in #7836
- fix(tests): pi harness must not read the developer's own skills by @markokraemer in #7790
- fix(daemon): asset swap yields to an in-flight config convergence by @markokraemer in #7791
- fix(runtime): sandbox model catalog stays current — boot, wake, restart, turn-start by @markokraemer in #7786
- docs(spec): runtime convergence — no terminal states, admission control by @markokraemer in #7785
- test(config-releases): pin the proven-check tool-loading contract at the unit level by @markokraemer in #7783
- test(config-releases): CFG-12 race rounds ask a per-round-unique directive by @markokraemer in #7802
- docs(learnings): a one-shot boot decision hardens forever on a resuming box by @markokraemer in #7808
- fix: false-abandoned turns, transcript 401s, zombie sandboxes by @markokraemer in #7807
- fix(daemon): retry transient model errors in-turn and resume through outages — never stop on "Stream ended without finish_reason" by @markokraemer in #7797
- fix(runtime): shed processes before losing the VM; auto-resume unattended sessions after runtime_gone by @markokraemer in #7806
- fix(llm-gateway): never forward a partial SSE line; retry a stream cut before first byte, else emit an explicit error frame by @markokraemer in #7804
- fix(gateway): turn Morph direct off by default (staging hotfix of #7839) by @markokraemer in #7841
- fix(gateway): turn Morph direct off by default for every managed model by @markokraemer in #7839
- Remove docs/ for good and every citation that recreated it by @markokraemer in #7843
- fix(apps): accept the configured non-empty control secret by @kubet in #7849
- fix(sandbox): fence orphan cleanup by database ownership by @kubet in #7852
- fix(sandbox): stage database-owned orphan cleanup by @kubet in #7854
- fix(worktree): new branches fork from fresh origin/main, not the stale local main by @markokraemer in #7846
- kortixt: one-command cloud engineering desk; self-updating launcher; port forwarding; e2e sweep fixes by @markokraemer in #7789
- fix(api): durable per-session env-sync skip closes the 2-replica cache miss by @markokraemer in #7848
- test(tests): turn-latency benchmark — pnpm test -- --latency --target by @markokraemer in #7847
- perf(turn-start): parallelize config/catalog/ingress pre-flight, coalesce the health probe by @markokraemer in #7842
- One-read session view: fold audit into the open bundle, dedupe scope+connectors by @markokraemer in #7845
- infra: colocate dev/staging API with their database region by @markokraemer in #7844
- feat(kortixd): the box side of runtime convergence (Rule 1, 3, blocked) by @markokraemer in #7792
- feat(runtime-convergence): API-side desired-runtime document, admission control, runtime block by @markokraemer in #7793
- Promote main 38ac81a to staging by @markokraemer in #7858
- Release v0.13.39 — Sessions ride through outages by @github-actions[bot] in #7837
Full Changelog: v0.13.38...v0.13.39