What's Changed
- test(traces): anchor attribute evolution tests to the migrator's rollout (#13551) @krsoninikhil
- test(storybook): make plays pass on every control value (#13538) @AshwinBhatkal
- test(alerts): stop the saved views tests timing out on CI (#13481) @AshwinBhatkal
- refactor: using X-Forwarded-For header for client.address (#13543) @swapnil-signoz
- refactor: making querier changes for audit schema (#13438) @swapnil-signoz
- test(ai-observability): explorer side panels and query builder in tab tests (#13523) @tewarig
- docs(querier): add query_range examples for every builder function (#13475) @srikanthccv
- test(saved-views): cover behaviour the current tests miss (#13301) @H4ad
- test(query-builder): add e2e suite for the query builder (#13313) @ahrefabhi
- ci(e2e): pin Node 22 (#13396) @AshwinBhatkal
- refactor(dashboards): extract list filter and saved views into shared components (#13372) @ashu8912
- test(e2e): wait for the funnel step popover to close before adding a step (#13455) @ahrefabhi
- test(e2e): scroll drivers with the mouse wheel (#13433) @ashu8912
- ci(e2e): run the suite on 10 shards (#13395) @AshwinBhatkal
🚀 Features
- feat(authz): rule FGA (#13253) @nikhilmantri0902
- feat(build-staging): release staging through the deployments repo on merges and labels (#13571) @astrobot7
- feat(api-monitoring): move the endpoint filters and group-by off v3 autocomplete (#13160) @aks07
- feat(onboarding): add Pixeltable and Claude Cowork datasources (#13512) @crazyuploader
- feat(authz): enable FGA for llm pricing rule routes (#13260) @nityanandagohain
- feat: migrate all rules to v2 schema (#13158) @namanv3
- feat(audit): emit audit logs per signoz semantic conventions (#13477) @swapnil-signoz
- feat(audit): adding kafka audit exporter (#13357) @swapnil-signoz
- feat(querier): heatmaps for the logs and traces signals (#13318) @tushar-signoz
- feat(querier): apply the having of a formula (#13452) @srikanthccv
- feat(alerts): add DSL search and saved views to alert rules list (#13322) @ashu8912
- feat(alert-channel-integrations): support self-hosted jira on the jira channel (#13424) @nikhilmantri0902
- feat: add support for offset in all query range request types (#13436) @namanv3
- feat: add support for distribution query in query range (#13379) @namanv3
- feat(ai-observability): add column options to the ai list view (#13303) @tewarig
- feat(traces-explorer): track how users open the trace details page (#13420) @aks07
- feat:ai o11y saved views (#13297) @tewarig
- feat(authz): rule state history FGA (#13252) @nikhilmantri0902
- feat(dashboard): group small pie slices into an automatic Other slice (#13428) @ahrefabhi
- feat(explorer): make the traces and logs explorer toolbars and tables match (#13411) @aks07
- feat(traces-explorer): add infinite scroll to list view; table ui update (#13392) @aks07
- feat(dashboard): add a copy dashboard ID button next to the title (#13404) @AshwinBhatkal
- feat: add nerve pod as codeowner for AI assistant (#13409) @tewarig
- feat(traces-explorer): open list rows in a span details drawer (#13361) @aks07
- feat(trace-details): show AI dot on thread tab and log empty thread with AI summary (#13380) @tewarig
🐛 Bug Fixes
- fix(navigation): keep an explicit replace: false in safeNavigate (#13556) @tewarig
- fix: remove algorithm from all rule examples and request builders (#13567) @namanv3
- fix(api): send array query params as repeated keys (#13457) @AshwinBhatkal
- fix(alerts): clean up the alert rules list styling (#13530) @ashu8912
- fix(alert-channel-integrations): describe jira auth as a flat object in the openapi spec (#13540) @nikhilmantri0902
- fix(sentry): expected 401, 403 and network failures page the frontend (#13510) @aks07
- fix(quick-filters): reject high-cardinality fields as quick filters (#13385) @krsoninikhil
- fix(alerts): match the rule state filter to the created-by filter (#13460) @AshwinBhatkal
- fix(querier): skip the cache for logs and traces queries with a limited group by (#13472) @srikanthccv
- fix(querier): do not shift the gap of a timeShift query twice (#13470) @srikanthccv
- fix(querier): validate formula limits, raw order keys, and request types (#13426) @srikanthccv
- fix(alerts): refresh the v3 rules list after rule changes (#13442) @AshwinBhatkal
- fix(ai-assistant): read alert rules from the v3 list API (#13441) @AshwinBhatkal
- fix(planned-downtime): read alert rules from the v3 list API (#13440) @AshwinBhatkal
- fix(home): read alert rules from the v3 list API (#13439) @AshwinBhatkal
- test(alertmanager): fix flaky TestAggrGroup timing and resolve checks (#12131) @srikanthccv
- fix(querybuilder): warn on unknown keys outside the filter (#13421) @srikanthccv
- fix(querybuilder): parse aggregation predicates and field names like filters (#13418) @srikanthccv
- fix(querybuilder): read an unknown body path in a column as a string (#13429) @srikanthccv
- fix(telemetrystore): return 400 for five more ClickHouse SQL mistakes (#13444) @srikanthccv
- fix(ai-assistant): disable open actions for the page already open (#13370) @tewarig
- fix(alerts): keep configuration sidebar item weight constant when active (#13432) @ashu8912
- fix(alerts): fall back to default range on invalid relativeTime (#13375) @ashu8912
- fix(logs): render json log bodies and object fields in every logs surface (#13362) @aks07
🧰 Maintenance
- chore: remove source and version from rules api schema (#13541) @namanv3
- chore: make pulse-frontend the code owner of the list filter, views and alert rules folders (#13476) @AshwinBhatkal
- chore: bump go version to 1.25 in github ci (#13480) @swapnil-signoz
- chore(ci): skip e2e when only generated api clients change (#13456) @AshwinBhatkal
- chore: update codeowners for types and tests (#13427) @therealpandey
- chore(frontend): move AI rules where agents load them and add lessons from Greptile reviews (#13338) @H4ad
- chore(infra-monitoring): drop old analytics events that newer ones cover (#13407) @AshwinBhatkal
- chore(deps): bump dompurify, sharp and source-map-js (#13416) @tewarig