New
- ChatGPT and Claude subscription usage lives in the OpenAI and Anthropic provider sheets: every connected account, every usage window the provider reports, and when the next login is back. The separate Usage tab is gone (#12405).
- The mobile app lists, opens and shares a project's Artifacts (#12406).
- Mobile app 1.6.1 on iOS: native system sheets, a ChatGPT-style project drawer, and a full-screen GenUI map (#12407).
- The workspace Inbox's Review tab opens an item beside the list. j/k move through the list, and the next item opens after a verdict (#12410).
Improved
- The workspace menu is flat and shorter. Download app moves to the foot of the sidebar (#12408).
- A new session shows the model it was launched with from the first moment, also while it is still starting (KRTX-4724) (#12425).
- Settings > Usage > Session costs shows spend that matched no session as its own row, so the table and the summary add up (KRTX-4428) (#12018).
- The Free pricing card says that sending needs your own key, or a paid plan for managed models (KRTX-4494) (#12072).
- The Logged in as menus and the sidebar identity line show your profile picture (KRTX-4492) (#12074).
- The credit ledger's five missing badge labels are translated in every language (KRTX-4655) (#12351).
- The mobile Sessions page lists the sessions a person started by default (KRTX-4705) (#12390).
kortix projects lsandkortix workspaces lsleave out deleted workspaces (KRTX-4714) (#12402).- My Kortix: 12 fixes from an end-to-end audit, and a session's CLI reports the release version instead of a staging build stamp (#12413).
- Website: the banking case study is hidden, and asset management has short copy and moves last (#12422).
Fixed
- A Kortix App that acts as its viewer works in a workspace that requires MFA, once the viewer passed the second factor (#12423).
- Opening a further workspace no longer shows the Out-of-credits modal while your free credits are unspent in another workspace (KRTX-4713) (#12418).
- Asking twice to join the waitlist with the same address keeps one request (KRTX-4699) (#12382).
- A wrong HTTP method on an existing API route answers
405with anAllowheader instead of404(KRTX-4704) (#12383). - An OAuth2 provider that refuses client registration gives a clear
400instead of a server error (KRTX-4709) (#12396). - The sign-in email check answers the same for existing and new addresses (KRTX-3504) (#11720).
- When Composio's edge blocks a connector call, the agent gets the block as a client error and stops retrying the same call (KRTX-4722) (#12417).
- kortix.com uses posthog-js 1.447.12, which sanitizes survey HTML (#12426).
- Every API and gateway response carries a referrer policy (KRTX-4702) (#12381).
Internal
- Sub-agents and the MCP
read_sessiontool read the stored session log. The old v1 transcript route answers with aDeprecationheader (#12431). - Workspace rows are updated in place, never re-created, and workspace lookups go through one function (#12427, #12428).
- Load limits: one session's stored log can be read 300 times per minute (KRTX-4696) (#12379), and the config poll's probe has one bounded budget (KRTX-629) (#12412).
- Log noise: credential-fence refusals throttle (KRTX-4731) (#12429), the reaper counts Platinum guest-exec timeouts and 504 renewals as transient (KRTX-4718) (#12411), and image reclaim skips a provider that cannot list (KRTX-4694) (#12376).
- Secrets: retired provider keys are removed, and the prod internal service key and the Tavily, Serper and Firecrawl keys are rotated (#12433, #12430).
- Code cleanup with no behavior change in web, SDK, API and the model catalog (#12416, #12380, #12375, #12357, #12404, #12264, #12370, #12364, #12251, #12393, #12403, #11717, #11716, #11083, #11069, #12415, #12414, #12239).
- CI, infra and docs: the dev deploy typechecks before any ECS roll (KRTX-4672) (#12374), stale web hosts leave the kortix.com zone (KRTX-3365) (#12387), the parked legacy table drop records the verified prod backup (#12420), the Tests lane's stale assertions are fixed (#12359, #12397), and two learnings entries (#12401, #12434).
What's Changed
- fix(ci): typecheck the dev deploy tree before any ECS roll (KRTX-4672) by @agent-kortix in #12374
- fix(deps): node-forge 1.4.3 closes three moderate advisories by @markokraemer in #12384
- fix(api): answer 405 + Allow for a wrong method on a matched route (KRTX-4704) by @agent-kortix in #12383
- fix(api): image reclaim skips a provider that cannot list (KRTX-4694) by @agent-kortix in #12376
- fix(release): v0.15.5 gate fixes (translations, SDK guard, one-mode tests) by @markokraemer in #12388
- fix(api): serve a uniform referrer policy on every origin and edge response (KRTX-4702) by @agent-kortix in #12381
- fix(tests): the Tests lane's three red assertions are cleared (KRTX-4688) by @agent-kortix in #12359
- fix(api): make the waitlist request-access endpoint idempotent (KRTX-4699) by @agent-kortix in #12382
- fix(infra): retire stale web hosts from the kortix.com zone (KRTX-3365) by @agent-kortix in #12387
- fix(mobile): the Sessions page's default list shows person-started sessions only (KRTX-4705) by @agent-kortix in #12390
- chore(release): VERSION → 0.15.6 [skip ci] by @github-actions[bot] in #12392
- fix(self-host): the frontend update rolls out again by @markokraemer in #12394
- fix(api): answer an OAuth2 provider's registration refusal as a typed 400 (KRTX-4709) by @agent-kortix in #12396
- fix(tests): three stale 404 pins follow the wrong-method 405 (KRTX-4704) by @agent-kortix in #12397
- chore(release): staging VERSION → 0.15.7 [skip ci] by @github-actions[bot] in #12400
- chore(release): VERSION → 0.15.7 [skip ci] by @github-actions[bot] in #12399
- docs(learnings): decide a request's host from its Host header, never from nextUrl by @markokraemer in #12401
- fix(cli): drop deleted workspaces from projects/workspaces ls (KRTX-4714) by @agent-kortix in #12402
- refactor(web): delete unused marketing renderers (KRTX-3626) by @agent-kortix in #11069
- refactor(web): remove six unused cleanup leftovers (KRTX-3619) by @agent-kortix in #11083
- feat(models): subscription usage for every ChatGPT and Claude account and window, inside Providers by @sutharjay1 in #12405
- refactor(web): route every marketing topic-tab section through the one TopicTabs (KRTX-4039) by @agent-kortix in #11716
- refactor(web): one walkthrough stepper for the seven solution heroes (KRTX-4040) by @agent-kortix in #11717
- fix(api): check-email answers the same for existing and new addresses (KRTX-3504) by @agent-kortix in #11720
- fix(web): show the unattributed remainder in Usage session costs (KRTX-4428) by @agent-kortix in #12018
- refactor(web): one pressed-toggle control, one device-label rule, no real addresses in the sharing fixture (KRTX-4716) by @agent-kortix in #12403
- feat(mobile): browse, open and share artifacts in the app by @sutharjay1 in #12406
- refactor(web): one post card and one analytics page gate for blog and use cases (KRTX-4707) by @agent-kortix in #12393
- feat(web): a flat, shorter workspace menu; Download app moves to the sidebar foot by @sutharjay1 in #12408
- refactor(web): one appearance copy table, dead settings fields and guards deleted (KRTX-4634) by @agent-kortix in #12251
- refactor(web): split web feature modules and dedupe the capture editor (KRTX-4664) by @agent-kortix in #12364
- refactor(web): one identity block, files rail and type-label table for the marketplace detail (KRTX-4690) by @agent-kortix in #12370
- refactor(web): split the goal page into rail, activity, controls and shared parts (KRTX-4645) by @agent-kortix in #12264
- refactor(sdk): compose the session-error sentence in one exported helper (KRTX-4717) by @agent-kortix in #12404
- fix(web,i18n): the credit ledger's five missing badge labels localize in every locale (KRTX-4655) by @agent-kortix in #12351
- refactor(web): one PageHero, one Window, delete the dead section-primitives (KRTX-4685) by @agent-kortix in #12357
- fix(api): cap per-session stored-log reads before the gate (KRTX-4696) by @agent-kortix in #12379
- fix(my-kortix): 12 audit fixes; a prod session's CLI reports its release by @markokraemer in #12413
- fix(web): render the profile picture in the Logged in as triggers (KRTX-4492) by @agent-kortix in #12074
- feat(web): the Review inbox opens items beside the list by @sutharjay1 in #12410
- feat(mobile): native iOS sheets, ChatGPT-style drawer, full-screen GenUI map by @sutharjay1 in #12407
- refactor(web): one factory per repeated public-route shape (KRTX-4693) by @agent-kortix in #12375
- refactor(web): one billing plan-status module owns copy, dates and dot (KRTX-4698) by @agent-kortix in #12380
- fix(web,mobile): Free pricing card says models need your own key (KRTX-4494) by @agent-kortix in #12072
- fix(api): classify a Platinum guest exec timeout and 504 renewal as transient in the reaper (KRTX-4718) by @agent-kortix in #12411
- refactor(web): one device-code shell, one signed-out guard, one challenge path (KRTX-4721) by @agent-kortix in #12416
- chore(api): remove the OpenCode history recovery script by @DimitrijeGlibic in #12239
- refactor(llm-catalog): move the Codex offline seed out of apps/api (KRTX-4544) by @agent-kortix in #12414
- refactor(api): dedupe the session-cost wire records (KRTX-4622) by @agent-kortix in #12415
- fix(apps): an App acts as its viewer in a workspace that requires MFA by @DimitrijeGlibic in #12419
- fix(api): carry a Composio edge block page's 4xx so the caller stops retrying it (KRTX-4722) by @agent-kortix in #12417
- fix(api): bound the config poll's whole probe and size its mirror budget for a poll (KRTX-629) by @agent-kortix in #12412
- chore(db): the parked Suna-era drop records the verified prod backup by @DimitrijeGlibic in #12420
- revert: an App acts as its viewer in a workspace that requires MFA (#12419) by @DimitrijeGlibic in #12421
- fix(billing): do not greet a further workspace with the Out-of-credits modal while free credits are unspent (KRTX-4713) by @agent-kortix in #12418
- feat(web): hide the banking case study; asset management gets short copy and moves last by @markokraemer in #12422
- fix(web): posthog-js 1.447.12 sanitizes survey HTML on kortix.com by @DimitrijeGlibic in #12426
- fix(workspaces): workspace rows are updated in place, never re-created by @DimitrijeGlibic in #12427
- refactor(workspaces): account-of-workspace lookups go through one function by @DimitrijeGlibic in #12428
- fix(apps): an App acts as its viewer in an MFA workspace when the viewer passed the second factor by @DimitrijeGlibic in #12423
- fix(web): pin the launch model on the session-create row (KRTX-4724) by @agent-kortix in #12425
- chore(secrets): rotate Tavily, Serper and Firecrawl keys by @markokraemer in #12430
- fix(api): throttle credential-fence refusal warn lines through the shared log window (KRTX-4731) by @agent-kortix in #12429
- fix(session-log): sub-agents and MCP read_session stop calling the v1 transcript route by @DimitrijeGlibic in #12431
- chore(secrets): drop retired provider keys and rotate the prod internal service key by @markokraemer in #12433
- docs(learnings): leaked env values stay live after a history rewrite by @markokraemer in #12434
- Promote dev 1f97bfa to staging by @github-actions[bot] in #12437
- fix(release): the v0.15.7 release suite passes again (stage-fix) by @DimitrijeGlibic in #12448
- fix(release): v0.15.7 release suite, round 2 (stage-fix) by @DimitrijeGlibic in #12456
- Release v0.15.7 — Subscription usage per account, Artifacts on mobile, and a side-by-side Review inbox by @github-actions[bot] in #12440
Full Changelog: v0.15.6...v0.15.7