Email delivery that survives a provider outage
Fixed
- Transactional email — team invites, project access requests, and demo-request notifications — now goes through a chain of email providers. If one provider fails or is unavailable, the next one takes over automatically. This removes the single point of failure that delayed some emails on August 5.
- The Terms of Service link now opens the document directly instead of its containing folder.
Internal
- End-to-end cost tests compute gap-fill counts from their own time window, fixing a flaky check.
What's Changed
- chore(release): VERSION → 0.12.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6122
- fix(billing): decouple enterprise entitlements from per-seat billing tier by @markokraemer in https://github.com/kortix-ai/suna/pull/6120
- fix(web): redirect /legal/terms to the specific Drive file, not the folder by @markokraemer in https://github.com/kortix-ai/suna/pull/6123
- fix(web): de-noise editor document-state race + third-party React #185 by @agent-kortix in https://github.com/kortix-ai/suna/pull/6129
- fix(billing): remove false seat-credit-grant copy from seat management card by @markokraemer in https://github.com/kortix-ai/suna/pull/6132
- kortix audit — read the account audit trail from the CLI by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6135
- feat(email): provider-chain transport — SES primary, Resend + Mailtrap fallback by @markokraemer in https://github.com/kortix-ai/suna/pull/6139
- fix(web): new session scope defaults to null secrets, not explicit zero by @agent-kortix in https://github.com/kortix-ai/suna/pull/6133
- fix(sessions): push scope mutation to active sandbox + respawn opencode by @agent-kortix in https://github.com/kortix-ai/suna/pull/6137
- chore(deps): bump hadolint/hadolint-action from 3.3.0 to 3.4.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6075
- chore(deps): bump github/codeql-action from 3 to 4.37.4 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6076
- chore(deps): bump github/codeql-action/upload-sarif from 4.37.1 to 4.37.4 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6077
- feat(llm-catalog): add Kimi K3 as a managed Kortix model via AsterLab by @agent-kortix in https://github.com/kortix-ai/suna/pull/6050
- test(ke2e): cover invite accept/decline state machine + userWithEmail fixture by @agent-kortix in https://github.com/kortix-ai/suna/pull/5203
- test(ke2e): cover account member role-transition matrix (MEM-6) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5549
- fix(llm-gateway): surface real upstream errors instead of generic Bad Gateway by @agent-kortix in https://github.com/kortix-ai/suna/pull/5986
- docs(secrets): use the Kortix Armor organization by @agent-kortix in https://github.com/kortix-ai/suna/pull/5974
- fix(projects): bound large repository branch listing by @markokraemer in https://github.com/kortix-ai/suna/pull/6144
- fix(sdk,web): release session transcripts, scope stream tracking per session, split the icon barrel by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6146
- feat(meta): land the platform coordinator behind the meta_agent experimental flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6143
- fix(worktree): drop the picocolors import from lib (Worktree CI is install-free) by @markokraemer in https://github.com/kortix-ai/suna/pull/6147
Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.3...v0.12.4