Release v2.39.0
What's Changed
- fix(evals): keep run trash button and overview actions visible on narrow widths (PUR-28) by @SebasKoria in #3937
- PUR-14: Playground control cleanup by @SebasKoria in #3895
- fix(web): answer 424, not 502, when the target MCP server is unreachable by @ignaciojimenezr in #3961
- fix(user-testing): stop infinite render loop reporting Insights empty state by @nachocossio in #3975
- fix(observability): give every prod log row a release, falling back to the baked version by @chelojimenez in #3982
- ops(axiom): record the WARN-notifier decision and the delivery-test result by @chelojimenez in #3985
- fix(observability): type 4xx outcomes and stop dropping promoted origins in serializers by @chelojimenez in #3983
- Agent full loop for Swarms and User Testing by @chelojimenez in #3969
- Checks UX unification: one noun, one label vocabulary, per-session verdicts with reasons by @chelojimenez in #3971
- Report approved swarm runs to their end on Slack and Discord by @chelojimenez in #3990
- fix(checks): use isKnownPredicateKind for the facet kind guards by @chelojimenez in #3993
- chore(server-connections): drop the FEATURE_DISABLED mapping the backend no longer emits by @chelojimenez in #3994
- Add per-turn ratings to User Testing chat and Sessions list by @chelojimenez in #3984
- fix(surface-core): biome-format copy.js to unblock CI on main by @chelojimenez in #4005
- feat(client): cross-surface Sessions page over the unified backend feed by @chelojimenez in #3999
- fix(observability): record how every stream ended, not just the ones that finished by @chelojimenez in #4001
- feat(observability): typed route.operation.failed for mid-stream chat failures by @chelojimenez in #4002
- feat(observability): report JSON-RPC-over-200 bridge failures as route.operation.failed by @chelojimenez in #4003
- Join the attempt verdict onto journey-run sessions as outcome by @chelojimenez in #3996
- test(agent): derive agent tier from operation.risk, with a named-exceptions map by @chelojimenez in #3997
- fix(user-testing): make the surface's claims match the backend's actual gates by @chelojimenez in #4000
- feat(sdk,cli): expose create-time scenario overrides on publish by @chelojimenez in #4004
- fix(servers): stop re-creating a server the workspace already has by @olartgabo in #3947
- feat(chat): name the refused protocol version, and link to the setting by @ignaciojimenezr in #3962
- Document protocol version pin error and Change protocol version button by @mintlify[bot] in #4015
- style(slack-app): biome formatting — unbreak Run Tests on main by @chelojimenez in #4011
- feat(insights): common envelope on the API/SDK/MCP surface (PR 4) by @chelojimenez in #4014
- feat(chatbox): send chatboxId with web search so the owner pays by @chelojimenez in #4019
- fix(user-testing): stop the scenario Edit route resolving as a tester link by @chelojimenez in #4022
- feat(ratings): thumbs up/down widget style for per-turn ratings by @chelojimenez in #4017
- fix(telemetry): own the backend failures whose body names MCPJam by @chelojimenez in #4018
- feat(checks): grade tokenBudgetUnder and widget checks on swarm sessions by @chelojimenez in #3995
- feat(trends): render goal-completion trends on swarms and evals by @chelojimenez in #3998
- feat(production-scoring): claim-and-grade worker for real User Testing sessions by @chelojimenez in #4007
- fix(chat): a mid-stream error chunk must fail the turn, not complete it by @chelojimenez in #4025
- feat(production-scoring): grading editor on the User Testing scenario settings by @chelojimenez in #4009
- feat(judges): groundedness card on the eval run detail (WS2 pilot, client) by @chelojimenez in #4010
- fix(telemetry): claim a HeaderMismatch as ours when we built the request by @chelojimenez in #4029
- fix(insights): follow-ups from the post-merge review round by @chelojimenez in #4021
- excalidraw not connected in local instances by @ignaciojimenezr in #4023
- chore(changeset): create-time scenario overrides on publish by @ignaciojimenezr in #4034
Full Changelog: v2.38.0...v2.39.0