What's Changed
- fix(model-prices): claude version identifier to optional by @hassiebp in #12219
- perf: reduce scan size for event prop by converting OR to GREATEST by @Steffen911 in #12221
- feat(ui): map i/o to pydantic root span by @jannikmaierhoefer in #12068
- fix(web): prevent chain by @maxdeichmann in #12222
- chore: parallelize dual write inserts by @Steffen911 in #12225
- chore(evals): add adapter to eval.call-llm span by @hassiebp in #12232
- chore(evals): add adapter to eval.call-llm span by @hassiebp in #12234
- fix(dashboard): pass metricsVersion to cost/usage-by-type chart queries by @sumerman in #12235
- chore(dialog-ui): prevent dialog propagation on enter space; add breadcrumb to dashboards detail page by @marliessophie in #12236
- feat(playground/evals): handle thinking parts by @nimarb in #12233
- chore: upgrade fern for SDK majors by @hassiebp in #11267
- feat(trace-table): show full trace data on hover at small row height by @aditya-mitra in #12237
- chore: upgrade react-resizable-panels to v4 by @nimarb in #12238
- fix(filters): decode empty arrayOptions value as empty array in URL roundtrip by @gnsals0904 in #12229
- feat(query): enable ClickHouse query condition cache for analytics queries by @sumerman in #12251
- feat: add ClickHouse Cloud auth provider by @Steffen911 in #12115
- chore: introduce secondary eval execution queue by @maxdeichmann in #12252
- chore(dx): update agents.md file by @nimarb in #12243
- fix(docker): pin turbo version in build images by @maxdeichmann in #12265
- feat(ui-v4): add top banner by @hassiebp in #12266
- feat: include triggering user info in webhook and GitHub dispatch payloads by @rushabhvaria in #12074
- feat(dashboard): add defenition version tracking to dashboard widgets by @sumerman in #12239
- fix(evals): add missing observation columns to checkTraceExistsAndGetTimestamp CTE by @sumerman in #12269
- fix(api-scores): return executionTraceId by @hassiebp in #12254
- feat: parse livekit attributes on otel spans by @jannikmaierhoefer in #10771
- chore: upgrade fernapi version by @Steffen911 in #12256
- fix(docker): add named volume for Redis by @Steffen911 in #12258
- fix(auth): gate project membership creation behind rbac-project-roles entitlement by @Steffen911 in #12262
- feat(sso): support tokenEndpointAuthMethod in multi-tenant SSO configs by @Steffen911 in #12270
- fix(ui-v4-banner): adjust padding by @hassiebp in #12283
- feat(llm-connections): allow extraHeaders for anthropic adapter by @hassiebp in #12284
- chore(events-table): show scores in table by @nimarb in #12264
- perf(env-filter): make envs cached again by @nimarb in #12286
- fix(dashboard): add fallback when is empty in v2 queries by @sumerman in #12285
- fix: block outgoing by @maxdeichmann in #12296
- perf(dashboards): use query scheduler to reduce concurrency by @nimarb in #12291
- fix(dashboards): resizable turbopack by @nimarb in #12294
- feat(api): type ObservationsV2Response data field instead of map<string, unknown> by @sumerman in #12287
- chore: add http.response.status_code to data dog span by @coffee4tw in #12091
- fix: make traces view slightly more useful on projects with rootless traces by @sumerman in #12307
- fix: default view in new widget form when v4 beta is enabled by @Copilot in #12297
- chore: add release:cloud script by @hassiebp in #12312
- fix(dashboard): add filterSql for correct Trace Name filtering on events_traces view by @sumerman in #12298
- perf: add bloom filter index on provided_model_name and cache settings to events tables by @sumerman in #12313
- feat(ui): edit wording on billing page by @jannikmaierhoefer in #12314
- fix(dashboard): adding uniqueUserIds/uniqueSessionIds to the V4 dashboards by @sumerman in #12317
- fix(evals): ensure inline filter state remounts when target changes by @marliessophie in #12255
- docs(evals): position observation-level evals as recommended approach by @marliessophie in #12293
- chore: add delay by @maxdeichmann in #12321
- fix(events-table): read from events_core again for position in trace by @nimarb in #12329
- fix(auth): support Authentik authorization URL override by @markwoodford in #12300
- perf(query): switch to INNER JOIN and add useFinal flag to tableRelations by @Steffen911 in #12340
- fix(score-analytics): correct mapping of boolean values by @nimarb in #12339
- perf(dashboards): skip rootEventCondition subquery for wide time windows by @Steffen911 in #12318
- fix(eval): extract AI SDK names equivalent to legacy pipeline by @hassiebp in #12342
- fix(sessions): show data in json beta viewer too by @nimarb in #12343
- fix(models): prevent focus loss when typing unit name in price editor by @hassiebbot in #12344
- chore(remote-experiment): increase timeout to 20s and improve error handling by @marliessophie in #12351
- fix(api): ensure proper error handling for silent HTTP codes in TRPCClientError by @marliessophie in #12352
- chore(data-table): format total count and pages in select all banner by @marliessophie in #12353
- fix(mixpanel): sanitize bad distinct_id values and handle partial import errors by @Steffen911 in #12358
- feat(dashboard): validate high-cardinality dimensions require top-N shape on v2 path by @sumerman in #12345
- feat(analytics): track PostHog event for v4 Beta sidebar toggle by @Steffen911 in #12362
- fix(export): categorical scores with colons in name exported as null by @sumerman in #12376
- fix(prompt-management): cache concurrency safety by @hassiebp in #12363
- fix(dashboard): prevent very hight cardinality dimensions from being used in v2 observations widgets by @sumerman in #12377
- fix(model-prices): parse token creation counts by duration by @hassiebp in #12382
- feat(model-prices): add gemini-3.1-flash-lite-preview pricing by @riltonfranzonee in #12369
- feat(filters): default hide langfuse environments by @nimarb in #12346
- fix(storage): add buffered stream uploader with per-part retry for resilient S3 uploads by @sumerman in #12360
- fix(ingestion): python beta OTEL spans should go direct event write path by @hassiebp in #12395
- feat(costs): add gemini input_text price by @jannikmaierhoefer in #12375
- fix(evals): parsing of IO for observation-level evals with json-path by @marliessophie in #12394
- feat(clickhouse): add analytics_events_core view (LFE-8734) by @Steffen911 in #12399
- fix(ui): preserve query params in ResizableImage custom loader by @MatrixA in #12386
- chore: fix turbo and bump to 2.8.13 by @nimarb in #12384
- chore(events-table): show filters + columns for trace level scores by @nimarb in #12385
- fix(llm-models): update pattern for newer Claude Sonnet 4.6 model plus global by @nathanlb in #12367
- fix: Add client test for sidebar notification badge URL by @maxdeichmann in #12411
- fix(events-table): show trace scores on top level node in tree by @nimarb in #12412
New Contributors
- @rushabhvaria made their first contribution in #12074
- @markwoodford made their first contribution in #12300
- @hassiebbot made their first contribution in #12344
- @riltonfranzonee made their first contribution in #12369
- @MatrixA made their first contribution in #12386
Full Changelog: v3.155.1...v3.156.0