What's Changed
- LAM-1903: virtualize debugger session timeline with lazy batched trace loading by @laminar-coding-agent[bot] in #2028
- include md headings in user fingerprint by @dinmukhamedm in #2055
- feat: save button, trace chat fix, copy tooltips fix, order preservation, tests by @olzhik11 in #2056
- LAM-1879: dual-write trace aggregates to ClickHouse AggregatingMergeTree by @laminar-coding-agent[bot] in #2001
- fix: read chat from url to open chat by @olzhik11 in #2057
- Revert "Merge pull request #2055 from lmnr-ai/fix/extend-user-fp-to-md" by @dinmukhamedm in #2060
- Sp meaningful dynamic parts by @Rainhunter13 in #2059
- LAM-1959: log full request error of llm client by @laminar-coding-agent[bot] in #2062
- static sp make labels shorter by @Rainhunter13 in #2063
- Rename Hobby tier display name to Starter (LAM-1954) by @laminar-coding-agent[bot] in #2053
- fix: opt Radix Select out of browser translation (translate="no") by @kolbeyang in #2069
- feat: add column sorting to the sessions table by @mopi1402 in #2068
- feat: span input token breakdown tooltip (LAM-1924) by @kolbeyang in #2034
- Skip signals project for sp extraction by @Rainhunter13 in #2071
- fix: replace confusing 'yesterday' relative timestamp with '1d ago' (LAM-1961) by @laminar-coding-agent[bot] in #2070
- update prompt for user input extraction after running evals by @dinmukhamedm in #2072
- feat: add cache tokens, unify formatting, simplify quering by @olzhik11 in #1821
- fix: guard template picker fetch by @olzhik11 in #2077
- feat: revamp evaluations page placeholder (LAM-1948) by @kolbeyang in #2075
- anthropic enable thinking summaries, gpt5.6 support by @Rainhunter13 in #2080
- LAM-1983: traces_agg — replace status/trace-type bitmasks with enum arrays by @laminar-coding-agent[bot] in #2085
- LAM-1983: drop legacy traces_agg bitmask columns by @laminar-coding-agent[bot] in #2086
- LAM-1983: squash traces_agg migrations, drop unused subagent columns by @dinmukhamedm in #2087
- LAM-1980: Labeling queue Esc-to-blur + SQL editor result UX by @laminar-coding-agent[bot] in #2079
- LAM-1985: Hide quick-save button on default view, make it less prominent on saved views by @laminar-coding-agent[bot] in #2088
- LAM-1982: Lower chart drag-zoom minimum range from 1 hour to 5 minutes by @laminar-coding-agent[bot] in #2081
- LAM-1987: Disable checkpoints (agent versions) pipeline behind CHECKPOINTS_ENABLED env var by @laminar-coding-agent[bot] in #2090
- don't version stamp metadata by @dinmukhamedm in #2091
- LAM-1930: add markdown rendering mode to ContentRenderer by @laminar-coding-agent[bot] in #2039
- LAM-1994: send cache tokens in realtime trace updates by @laminar-coding-agent[bot] in #2096
- LAM-1993: Per-project rate limit on /v1/sql by @laminar-coding-agent[bot] in #2095
- feat(evals): multi-score cards with reorder/hide + dim hidden runs by @kolbeyang in #2064
- LAM-1992: Make project delete idempotent so retries succeed after a failed ClickHouse purge by @laminar-coding-agent[bot] in #2093
- feat: fix circular barrel import by @olzhik11 in #2098
- fix: circular imports with madge by @olzhik11 in #2099
- fix: lock file by @olzhik11 in #2100
- fix: leaf cluster pick by @olzhik11 in #2102
- LAM-1998: Filter invalid-API-key errors from Sentry, downgrade Bedrock 503 to warn by @laminar-coding-agent[bot] in #2103
- feat: posthog inject head, move providers to body by @olzhik11 in #2105
- Fix/hydration 2 by @olzhik11 in #2106
- fix: hydration-3 by @olzhik11 in #2107
- fix: pass next deployment id by @olzhik11 in #2108
- feat: webpack by @olzhik11 in #2109
- trace input output with RMT for payloads by @dinmukhamedm in #2104
- reduce user task lock ttl from 6 hours to 90 minutes by @dinmukhamedm in #2110
- on aggregating path don't input and output to the aggregated metadata by @dinmukhamedm in #2112
- expose metadata map, add partitioning by @dinmukhamedm in #2113
- openai responses by @Rainhunter13 in #2092
- fix metadata patch and max end_time by @dinmukhamedm in #2114
- allow reasoning effort with tools for openai if known by @Rainhunter13 in #2115
- feat: add cache read input token cost to custom model costs (LAM-2000) by @laminar-coding-agent[bot] in #2111
- feat: upgrade next by @olzhik11 in #2117
- fix agent output extraction to same path as input, simplify the lock by @dinmukhamedm in #2118
- fix: raw sanitize rendering by @olzhik11 in #2127
- feat: add update evaluation endpoint (LAM-2007) by @laminar-coding-agent[bot] in #2121
- fix: treat Gemini 499 CANCELLED as retryable (LAM-2016) by @laminar-coding-agent[bot] in #2136
- LAM-2006: read agent outputs from separate trace_outputs_v0 view by @dinmukhamedm in #2120
- LAM-2014: Order projects alphabetically in project pickers by @laminar-coding-agent[bot] in #2130
- fix: end realtime SSE stream gracefully on upstream loss (LAM-2013) by @laminar-coding-agent[bot] in #2128
- feat: perf sessions by @olzhik11 in #2142
- perf: rendering by @olzhik11 in #2139
- LAM-2026: decouple write-once (static) trace columns into traces_static by @laminar-coding-agent[bot] in #2143
- cleanup migration, small followup by @dinmukhamedm in #2146
- Feat/lam 1997 evals improvements by @kolbeyang in #2135
- feat: eval score direction (isHigherBetter) with LLM defaults + project overrides by @kolbeyang in #2078
- LAM-2004: Render command blocks in debugger sessions by @laminar-coding-agent[bot] in #2116
- fix: rendering by @olzhik11 in #2147
- fix: column resize, swr cache seed by @olzhik11 in #2148
- feat: carry agent_input live on realtime trace-update payload by @kolbeyang in #2153
- Drop traces_agg columns superseded by traces_static (LAM-2026) by @laminar-coding-agent[bot] in #2150
- cache heavy placeholder query in PG by @dinmukhamedm in #2157
- feat(evals): Unique Evals Scores Colors and minor Evals UI fixes by @kolbeyang in #2152
- feat: realtime for traces agg by @olzhik11 in #2149
- common changes for updated signal event triggers by @dinmukhamedm in #2158
- remove v2 suffix from triggers cache key by @dinmukhamedm in #2160
- fix(LAM-2032): sort project names case-insensitively by @laminar-coding-agent[bot] in #2159
- feat: update debugger to agg traces by @olzhik11 in #2161
- LAM-2030: fix "open traces with same user id" button applying no filter by @laminar-coding-agent[bot] in #2155
- LAM-2020: migrate to traces_agg/traces_static fully by @laminar-coding-agent[bot] in #2163
- feat: RabbitMQ Streams transport for span + Quickwit ingest (LAM-2024) by @laminar-coding-agent[bot] in #2145
- LAM-2036: send rich trace deltas to the debugger realtime channel by @laminar-coding-agent[bot] in #2162
- fix compression memory leak by @skull8888888 in #2169
- remove compression by @skull8888888 in #2170
- LAM-2041: Rework ingestion rate limit — default for all projects, Redis override, HTTP coverage by @laminar-coding-agent[bot] in #2168
- LAM-2018: backfill historical traces into traces_agg/traces_static by @laminar-coding-agent[bot] in #2172
- fix(charts): restore the five brand colors outside evals, simplify palette API by @kolbeyang in #2177
- bump some vulnerable deps by @dinmukhamedm in #2171
- LAM-2050: return an actionable body on HTTP 413 by @laminar-coding-agent[bot] in #2173
- fix: eval stat shields ignore the aggregation picker (always show average) by @kolbeyang in #2165
- LAM-2049: key user-input extraction on the system prompt's first sentence by @laminar-coding-agent[bot] in #2174
- Revert "bump some vulnerable deps" by @Rainhunter13 in #2180
- feat: get rid of react scan by @olzhik11 in #2181
- feat: bump react grid layout by @olzhik11 in #2182
- fix(a11y): add accessible labels to search, chart, cli-auth, and email controls by @kolbeyang in #2156
- span compression by @skull8888888 in #2187
- LAM-2074: audit CLAUDE.md — cut historic narration, fix stale references by @laminar-coding-agent[bot] in #2185
- LAM-2070: sample Sentry spans by duration and status by @laminar-coding-agent[bot] in #2184
- New owner-aware Redis lock method, cache keys, and realtime waiting queue by @laminar-coding-agent[bot] in #2186
- feat/blog styling by @kolbeyang in #2188
- LAM-2092: replace Axion Ray logo with Vorflux on landing by @laminar-coding-agent[bot] in #2191
- Bound ClickHouse system log retention by @niharikag09 in #2190
- feat(sql): SQL schema endpoint by @kolbeyang in #2192
- LAM-2028: Update privacy notice, terms, and add data-use page by @laminar-coding-agent[bot] in #2193
- remove date trigger by @skull8888888 in #2195
- Add span names to signal filters by @laminar-coding-agent[bot] in #2197
- feat/blog styling 2 by @kolbeyang in #2194
- LAM-2116: drop lmnr.span.input/output from attributes on the producer by @laminar-coding-agent[bot] in #2201
- system prompt versioning by @laminar-coding-agent[bot] in #2200
- allow disable quickwit processing by @dinmukhamedm in #2202
- chore sp versioning by @Rainhunter13 in #2205
- fix: pass system prompt properly by @olzhik11 in #2206
- LAM-2120: Add new models to playground by @laminar-coding-agent[bot] in #2207
- feat/search trace uuid by @kolbeyang in #2196
- feat: copy changes by @olzhik11 in #2208
- input extraction use small model by @Rainhunter13 in #2210
- LAM-2115: fix content dict cache config + point-read granularity by @laminar-coding-agent[bot] in #2209
- stream package fork by @skull8888888 in #2213
- LAM-2107: Create / update / delete Signals from the CLI (app-server) by @laminar-coding-agent[bot] in #2199
- Revert "allow disable quickwit processing" by @dinmukhamedm in #2214
- fix: don't strip custom xml non-html tags by @olzhik11 in #2215
- LAM-2038: make signal triggers and filters self-explanatory by @laminar-coding-agent[bot] in #2166
- Feat/surfaces by @kolbeyang in #2175
- split claude md by @skull8888888 in #2218
- LAM-2126: separate signal trigger, filters, and mode in the API by @laminar-coding-agent[bot] in #2217
- feat: duplicate dashboard widget (LAM-2122) by @laminar-coding-agent[bot] in #2211
- LAM-2130: render string table cells without JSON quotes by @laminar-coding-agent[bot] in #2219
- system prompt versions based input extraction (LAM-2132) by @laminar-coding-agent[bot] in #2221
- LAM-2071: Increase custom model costs cache TTL to 30 days by @laminar-coding-agent[bot] in #2212
- fix: pick the user-task span per agent instead of by depth + roster by @laminar-coding-agent[bot] in #2227
- feat(landing): scrollytelling landing page — single trace, signal clusters, Slack thread by @kolbeyang in #2229
- LAM-2153: drop unused ClickHouse tables by @laminar-coding-agent[bot] in #2233
- LAM-2157: don't re-run the traces_agg backfill on every boot by @laminar-coding-agent[bot] in #2235
- fix: show every cluster a signal event belongs to in the trace-view card by @kolbeyang in #2236
- fix: render span content as text, not markdown (LAM-2134) by @laminar-coding-agent[bot] in #2223
- LAM-2152: pre-release migrations integrity check workflow by @laminar-coding-agent[bot] in #2232
- feat: sharpen Failure Detector signal template (LAM-2161) by @laminar-coding-agent[bot] in #2239
- remove 'most runs have no errors' from default signal template by @dinmukhamedm in #2242
- raise default dict size in cells x2 128ki -> 256ki by @dinmukhamedm in #2243
New Contributors
- @mopi1402 made their first contribution in #2068
- @niharikag09 made their first contribution in #2190
Full Changelog: v0.2.1...v0.2.2