What's Changed
- fix(frontend): stop a palette scroll race from failing web unit tests by @mmabrouk in #7184
- fix(observability): correct tracing analytics figures by @mmabrouk in #7176
- fix(sdk): keep one context across streamed pulls and pin usage to the workflow span by @mmabrouk in #7175
- fix(api): roll up costs and tokens for agent batches, zero costs and summary spans by @mmabrouk in #7179
- fix(api): recompute trace totals when a trace arrives in several OTLP requests by @mmabrouk in #7181
- fix(api): price LLM spans correctly and mark spans that cannot be priced by @mmabrouk in #7178
- fix(runner): correct token and cost reporting for the Pi, Claude and Codex harnesses by @mmabrouk in #7177
- fix(runner): keep usage across an approval pause, and mark custom-connection model spans by @mmabrouk in #7183
- fix(runner): mark spans served by a custom model connection by @mmabrouk in #7187
- chore(runner): bump the Pi harness to 0.87.1 so Pi prices calls with current rates by @mmabrouk in #7180
- feat(runner): use OpenRouter's billed cost on Pi chat spans by @mmabrouk in #7185
- fix(mobile): fill the trace drawer's data slots so tabs show span data by @mmabrouk in #7182
- fix(frontend): wait for the build kit before the first /m message by @mmabrouk in #7190
- fix(api): keep chat app inputs when an evaluation invokes it by @mmabrouk in #7196
- fix(api): download litellm's latest price list at startup again by @mmabrouk in #7197
- fix(runner): keep a late Claude cost reading from overwriting the turn's usage by @mmabrouk in #7203
- [release] v0.121.4 by @github-actions[bot] in #7191
Full Changelog: v0.121.3...v0.121.4