New Features ✨
Aci
- Make rule stats and group history endpoints backwards compatible by @ceorourke in #110282
- Make ProjectRulesEndpoint POST method backwards compatible by @ceorourke in #109926
- Add error for unsupported condition by @ceorourke in #110025
- Dual delete Workflow/Rule if flag enabled by @ceorourke in #110003
- Make OrganizationAlertRuleDetails DELETE method backwards compatible by @ceorourke in #109845
- Make ProjectRulesEndpoint GET method backwards compatible by @ceorourke in #109744
- Make ProjectRuleDetailsEndpoint DELETE method backwards compatible by @ceorourke in #109752
- Make ProjectRuleDetailsEndpoint GET method backwards compatible by @ceorourke in #109387
- Update copy on metric alert wizard to refernce issue creation by @malwilley in #109223
- Add issue type filter to old alerts by @malwilley in #108273
- Update issue type issue handler to work with frontend by @malwilley in #108241
Ai Conversations
- Add arcade to onboarding by @obostjancic in #110296
- Sidebar label by @obostjancic in #109935
- Move to explore by @obostjancic in #109874
- Design polish by @obostjancic in #109773
- Onboarding by @obostjancic in #109651
- Remove default filter by @obostjancic in #109475
- Return only conversations with input and output by @obostjancic in #109175
- Drawer redesign by @obostjancic in #109182
Alerts
- Include single-written detectors in AlertRuleFetchMixin.fetch_metric_alerts by @kcons in #110673
- Add trace metrics support to new alert UI (detectors) by @k-fish in #108730
- Consistent logging for cases where users hit alert limits by @kcons in #109101
Assets
- Add image preview to assets summary details widget by @DominikB2014 in #109329
- Link frontend overview assets widget to assets summary dashboard by @DominikB2014 in #109323
- Add platformized assets page with dashboard migration flag by @DominikB2014 in #109240
Autofix
- Loading states for redesigned autofix by @Zylphrex in #110646
- Prompt the agent to run the step again by @Zylphrex in #110596
- Add next steps button in autofix drawer by @Zylphrex in #110476
- Add open seer button in autofix section by @Zylphrex in #110432
- Directly restart autofix when clicking on reset by @Zylphrex in #110444
- Redesigned autofix cards by @Zylphrex in #110326
- Redesigned empty state for autofix section by @Zylphrex in #110370
- Redesigned autofix previews by @Zylphrex in #110203
- Show Cursor GitHub access modal on verify-branch error by @isaacwang-sentry in #109695
- Pass on_completion_hook to explorer create PR by @Zylphrex in #109787
- Allow creating explorer autofix prs from slack by @Zylphrex in #109528
- Render diff in explorer autofix slack integration by @Zylphrex in #109396
- Add github_app field to autofix PR analytics events by @JoshFerge in #109383
- Add some debug log for explorer autofix by @Zylphrex in #109233
- Support explorer autofix responses for some slack hooks by @Zylphrex in #109103
Billing
- Add UsageService to billing platform by @dashed in #110157
- _admin page for viewing Contract information by @brendanhsentry in #109853
- Add BillingService base class and service method decorator by @volokluev in #109376
Cells
- Update_region_user RPC method to support both region_name and cell_name by @lynnagara in #110275
- Add unique constraint to projectkeymapping table by @lynnagara in #110235
- Add idx to OrganizationMapping table for synapse by @lynnagara in #110168
- Add projectkeymapping table to control silo by @lynnagara in #109831
- Update org-cell-mappings endpoint by @lynnagara in #109758
- Add synapse paginator by @lynnagara in #109412
- Expand locality/cell distinction by @lynnagara in #109538
- Add db migration for synapse by @lynnagara in #109615
Ci
- Report backend test fails by @joshuarli in #109543
- Selective testing escape hatch by @joshuarli in #109136
Code Review
- Call new endpoints by @armenzg in #109956
- Control: include github_event & action info by @armenzg in #109995
- Add option to skip code review for excluded PR authors by @srest2021 in #110101
- Validate before scheduling by @armenzg in #108545
Coding Integrations
- Limit coding agent integrations to one per organization by @sehr-m in #110690
- Add Claude logo for claude_code integration by @sehr-m in #110663
Context Engine
- Pass context engine feature flag to Seer by @Mihir-Mavalankar in #109508
- New feature flag for explorer context engine by @Mihir-Mavalankar in #109145
- New task to generate project summaries for context engine by @Mihir-Mavalankar in #108760
Core Ui
- Move fzf from profiling to utils by @JonasBa in #109142
- Allow searchMatcher to return a score for result ordering by @JonasBa in #108719
- Add searchMatcher prop to CompactSelect by @JonasBa in #108714
Dashboards
- Hide detail/summary prebuilt dashboards from list by default by @DominikB2014 in #110625
- Adds seer employee banner to AI Agents Overview insights page when using prebuilt dashboard by @edwardgou-sentry in #110566
- Update AI Agents Trace Table widget to use spans global filter by @edwardgou-sentry in #110554
- Integrate text widget visualization into product by @nikkikapadia in #110245
- Add Sentry Built nav item and remove prebuilt toggle by @DominikB2014 in #110468
- Add legendType field and support field links for breakdown charts by @DominikB2014 in #110420
- Adds Create Dashboard with Seer frontend modal and preview page by @edwardgou-sentry in #110451
- Add onlyPrebuilt filter to dashboards endpoint by @DominikB2014 in #110465
- Add optional onboarding widgets for prebuilt dashboards by @gggritso in #110244
- Add starred transaction field to widget builder by @DominikB2014 in #110450
- Add analytics events to onboarding CTAs on Project Details by @gggritso in #110368
- Adds dashboards generate endpoint by @edwardgou-sentry in #110254
- Release pre-starred prebuilt dashboards to EA by @DominikB2014 in #110305
- Deprecate issue timeseries widgets flag from backend by @edwardgou-sentry in #110236
- Separate prebuilt dashboards in starred sidebar by @DominikB2014 in #110303
- Deprecate usage of issue timeseries widget flag from frontend by @edwardgou-sentry in #110238
- Add default filters for AI Agents and MCP dashboards by @edwardgou-sentry in #110281
- Add pre-favorited sync for prebuilt dashboards by @DominikB2014 in #110209
- Add text widget visualization by @nikkikapadia in #110138
- Add toggle to hide prebuilt Sentry dashboards by @DominikB2014 in #109971
- Add favorited column to DashboardFavoriteUser by @DominikB2014 in #110096
- Add logs confidence footer to dashboard widgets by @nsdeschenes in #109940
- Support multiple filters on dashboards list endpoint by @DominikB2014 in #109973
- Add trace metrics confidence footer to dashboard widgets by @nsdeschenes in #109941
- Backend validation for text widget by @nikkikapadia in #108535
- Increase default height for Laravel table widgets by @DominikB2014 in #109966
- Link AI Prebuilt Dashboard widgets with breakdown legends to appropriate Prebuilt Dashboards by @edwardgou-sentry in #109964
- Add feature flag for insights prebuilt dashboards by @DominikB2014 in #109954
- Increase table size for Laravel overview page by @DominikB2014 in #109945
- Show save button on prebuilt dashboards when filters change by @DominikB2014 in #109902
- Add errors column to prebuilt MCP dashboards tables by @edwardgou-sentry in #109873
- AI Agent prebuilt dashboard improvements by @edwardgou-sentry in #109830
- Add moving notice banner to insight pages by @DominikB2014 in #109813
- Increase char limit on widget description by @nikkikapadia in #108529
- Adds error count column to mcp prebuilt dashboard tables by @edwardgou-sentry in #109838
- Add spans table field renderer for internal error count by @edwardgou-sentry in #109761
- Updates AI Agents Overview prebuilt dashboard Traces table to open Trace drawer by @edwardgou-sentry in #109763
- Register backend caches prebuilt dashboard module by @DominikB2014 in #109702
- Register caches prebuilt dashboard on frontend by @DominikB2014 in #109703
- Add Agents Traces Table widget to platformized AI overview dashboard by @edwardgou-sentry in #109565
- Add 'datamin' support to Mobile Session Health dashboard by @jameskeane in #109606
- Register Queues and Queue Summary prebuilt dashboards on frontend by @DominikB2014 in #109594
- Register Queues and Queue Summary prebuilt dashboards on backend by @DominikB2014 in #109595
- Add maxFontSize prop to AutoSizedText and use it in details widget by @DominikB2014 in #109577
- Add axisRange frontend types, state, wiring, and builder UI by @mtopo27 in #109390
- Add Crash Free Session Rate widget to Mobile Vitals dashboard by @gggritso in #108226
- Persist and serve axisRange on dashboard widgets by @mtopo27 in #109389
- Updates AI Agent and MCP pages render using prebuilt dashboard content when flagged by @edwardgou-sentry in #109327
- Filter Mobile Vitals tables to screens with nonzero metrics by @gggritso in #109372
- Add AI Model icons to Visualization Widget breakdown labels by @edwardgou-sentry in #109324
- Add prebuilt dashboard configs for MCP dashboards by @edwardgou-sentry in #109243
- Adds prebuilt dashboard configs for AI Agent modules by @edwardgou-sentry in #109235
- Register FRONTEND_ASSETS_SUMMARY prebuilt dashboard by @DominikB2014 in #109230
- Add FRONTEND_ASSETS_SUMMARY prebuilt config by @DominikB2014 in #109229
- Register FRONTEND_ASSETS prebuilt dashboard by @DominikB2014 in #109216
- Add blank FRONTEND_ASSETS prebuilt dashboard by @DominikB2014 in #109221
- Create laravel overview prebuilt dashboard by @DominikB2014 in #109079
- Registers initial prebuilt configs for ai modules in dashboards by @edwardgou-sentry in #109190
- Register Laravel Overview prebuilt dashboard by @DominikB2014 in #109130
- Register AI Agent and MCP prebuilt dashboard ids to backend by @edwardgou-sentry in #109086
- Adds feature flag for AI Agents and MCP modules migration to prebuilt dashboards by @edwardgou-sentry in #109085
- Add chart threshold support to dashboard widgets by @DominikB2014 in #108368
- Add insights-laravel-overview-dashboard-migration feature flag by @DominikB2014 in #109077
- Allow interval selection similar to explore by @bcoe in #108416
- Add dashboards-interval-selection feature flag by @DominikB2014 in #109073
Dev
- Prevent absolute date times by @armenzg in #110671
- Autoprovision devenv when making a new git worktree by @joshuarli in #109889
Discover
- Updates android devices mapping and update script to work without csv-parser by @edwardgou-sentry in #109669
- Allow ttid/ttfd contribution rate in arithmetic equations by @gggritso in #109521
Eslint
- Add initial no-default-export-components rule by @JoshuaKGoldberg in #110266
- Add restrict-jsx-slot-children lint rule by @JonasBa in #109169
Explore
- Adds trace_status_rate to allow list by @edwardgou-sentry in #110455
- Add multi-key support for
has:search filter by @manessaraj in #109907 - Allow clearing of last group by by @nsdeschenes in #107924
Explorer
- Gate coding tools on org feature flag and org option by @aliu39 in #110705
- Add max_iterations support to SeerExplorerClient by @cvxluo in #110006
- Add get_issue_details and get_event_details RPCs by @aliu39 in #110027
- Return meta dict from table rpcs by @aliu39 in #109359
Flags
- Remove graduated data-browsing profiling feature flags (batch 3) by @wedamija in #108780
- Remove graduated data-browsing-8 feature flags by @wedamija in #108808
- Remove graduated ecosystem feature flags by @wedamija in #108813
- Remove graduated issue-workflow feature flag by @wedamija in #108816
- Remove graduated team-replay-2 feature flags by @wedamija in #108812
- Remove graduated issue_detection feature flags by @wedamija in #108775
- Add frontend assets dashboard migration flag by @DominikB2014 in #109217
- Remove graduated ml-ai feature flags by @wedamija in #108814
- Remove graduated team-replay user-feedback AI flags by @wedamija in #108811
- Remove graduated coding-workflows feature flag by @wedamija in #108815
- Remove graduated mep-rollout-flag feature flag by @wedamija in #108810
- Remove dead issue-search-allow-postgres-only-search flag by @wedamija in #108721
- Remove graduated dashboards-mep feature flag by @wedamija in #108809
- Remove dead perf-discover-widget-split-ui and txn-summary-cleanup flags by @wedamija in #108763
Infra
- Report frontend-snapshot upload failures to Sentry by @rbro112 in #110427
- Replace full backend workflow on PRs with selective testing by @rbro112 in #109346
Insights
- Add moving notice banners to Crons and Uptime by @gggritso in #109910
- Add platformized cache module with conditional rendering by @DominikB2014 in #109707
- Add feature flag for cache module dashboard migration by @DominikB2014 in #109698
- Add prebuilt dashboard rendering for queues landing page by @DominikB2014 in #109610
Integrations
- Expand platform detection to 98% picker coverage by @jaydgoss in #109701
- Add GitHub repository platform detection by @jaydgoss in #109699
- Register platform detection feature flag by @jaydgoss in #110243
Issues
- Remove issues from stream on action w/ realtime by @scttcper in #110175
- Improve issue diff copy and loading experience by @scttcper in #110267
- Improve regression breakpoint chart experience by @scttcper in #110171
- Add open in explore to regression breakpoint by @scttcper in #109759
- Rebuild potential causes component by @scttcper in #109748
- Remove checks for issue view ai title by @scttcper in #109704
- Remove checks for issue view ai title by @scttcper in #109705
Metric Issues
- Add analytics to detector details link by @malwilley in #109925
- Track notification UUID on issue details by @malwilley in #109917
- Add attribute comparisons section (for span queries) by @malwilley in #109627
Notifications
- Improve deploy email subjects by @dcramer in #110348
- Threading service locking and followup by @Christinarlong in #109147
Occurrences On Eap
- Implement double-read performance issues query for summaries task by @shashjar in #110277
- Implement double-read query for trace errors count by @shashjar in #110251
- Update query abstractions & utils by @shashjar in #109696
- Implement double reads from EAP for organization traces API endpoint by @shashjar in #109636
- Implement double reads from EAP for monitors associated groups by @shashjar in #108008
- Implement double reads from EAP for error counts timeseries by @shashjar in #107308
- Implement double reads from EAP in organization events trace API endpoint by @shashjar in #109391
- Implement double reads from EAP for reprocessing2 flow by @shashjar in #109345
- Support debug logging for data mismatches in rollout comparator by @shashjar in #109247
Onboarding
- Add copy-as-markdown button to project creation and signup setup docs by @jaydgoss in #109237
- Add guide for setup without
--importto tanstack start by @nicohrubec in #109549 - Add logs option to Tanstack Start onboarding by @nicohrubec in #109550
- Register feature flag for copy instructions on project creation by @jaydgoss in #109232
- Add global sentry exception middlewares to tanstack start onboarding by @nicohrubec in #108351
- Design adjustments for copy markdown button by @jaydgoss in #108696
Pagefilters
- Fix sentinel toggle behavior for All/My Projects quick-select by @JonasBa in #109545
- Auto-select single project for single-project orgs by @JonasBa in #109767
Perf Detectors
- Set default enabled state of perf Detectors based on configuration by @kcons in #109961
- Make ProjectPerformanceIssueSettingsEndpoint optionally write to Detector.config by @kcons in #109623
- Consider Performance Detectors to be system created by @kcons in #109762
- Create Performance Detectors by default by @kcons in #109760
Preprod
- Navigate through snapshots with keyboard by @rbro112 in #110614
- Add auto expansion of selected tab and add links to individual items in status checks by @rbro112 in #110613
- Add launchpad-taskbroker-rollout feature flag by @NicoHinderling in #110549
- Add app name, app ID, and install columns to PR comment table by @runningcode in #110418
- Add PR comments toggle to Mobile Builds settings by @runningcode in #110051
- Add project-level toggle for build distribution PR comments by @runningcode in #110050
- Filter snapshot artifacts from builds endpoint when display is set by @NicoHinderling in #110265
- Post build distribution comments to GitHub PRs by @runningcode in #109476
- Add distribution error endpoint for launchpad by @runningcode in #109497
- Add different snapshot diff viewing options by @NicoHinderling in #109892
- Add rename detection to snapshot comparisons by @NicoHinderling in #109848
- Add public build-distribution/latest endpoint by @trevor-e in #109584
- Add snapshot diff comparison UI by @NicoHinderling in #109403
- Return snapshot URL in create snapshot response by @runningcode in #109662
- Add distribution_error_code filter to list builds by @runningcode in #109491
- Add comparisonRunInfo data to response + new extra frontend models by @NicoHinderling in #109619
- Make snapshots endpoint org scoped by @NicoHinderling in #109575
- Create admin gated recompare snapshots endpoint by @NicoHinderling in #109546
- Add public install-details endpoint and shared utilities by @trevor-e in #109583
- Add snapshot image comparison task and endpoint logic by @NicoHinderling in #109151
- Add snapshot comparison task by @NicoHinderling in #109382
- Add image comparison library with odiff batch support by @NicoHinderling in #109381
- Add public size analysis API by @trevor-e in #108789
- Add odiff server wrapper and Dockerfile binary install by @NicoHinderling in #109380
- Add detector_id to size analysis occurrence evidence data by @chromy in #109487
- Track distribution state on PreprodArtifact by @runningcode in #109062
- Enrich size analysis detector occurrences with metadata by @chromy in #109069
- Register PR comments feature flag by @runningcode in #109484
- Add size monitor UI by @chromy in #108211
- Add GitHub Enterprise support for size analysis status checks by @trevor-e in #109348
- Add distribution state fields to PreprodArtifact (EME-842) by @runningcode in #109075
- Add analytics events for status check threshold failures and approvals by @mtopo27 in #109132
- Add analytics for status check rule CRUD by @mtopo27 in #109125
- Group failed checks by bundle ID and build configuration by @mtopo27 in #108373
- Add App Clip artifact support to size checks by @cameroncooke in #108676
- Add App Clip options to size analysis UI by @cameroncooke in #108675
- Hook size analysis detector to diff by @chromy in #108209
- Add new issue type to frontend by @chromy in #108210
Processing Errors
- Add
SourcemapConfigurationType GroupTypeandCONFIGURATIONcategory by @wedamija in #109542 - Store processing errors in EAP by @wedamija in #109285
Relay
- Add feature flag for new error processing pipeline by @Dav1dde in #109866
- Register option for objectstore sample rate by @jjbayer in #109482
- Upload endpoint feature by @jjbayer in #109185
Scm
- Can returns the named set of supporting actions by @cmanallen in #110567
- Add SCM subscriptions platform publisher by @cmanallen in #107441
- Add vendor-agnostic interfaces by @cmanallen in #107360
Seer
- Register project and org option keys for seer preferences migration by @srest2021 in #110548
- Migration for SeerProjectRepository and SeerProjectRepositoryBranchOverride models by @srest2021 in #110542
- Allow installing integrations directly from within the Seer SCM treeview by @ryan953 in #110551
- Seer Code Review page allows inline editing of the connected repos in a modal by @ryan953 in #110501
- Iterate on the seer settings header, copy and visual alignment by @ryan953 in #110500
- Add a flag to control if orgs can toggle their Enable Code Generation setting by @ryan953 in #110491
- Rewrite the Seer > Project list page by @ryan953 in #109531
- Create an SCM config component to streamline seer setup by @ryan953 in #110166
- Add is_private field to repo definitions for code review by @vaind in #110190
- Detect Cursor GitHub access errors and return specific failure type by @isaacwang-sentry in #109692
- Add tooltip to ResponseDot showing step status by @chromy in #109659
- Add signed viewer context header to Seer API requests by @azulus in #109626
- Iterate on the instructions at the top of seer settings pages by @ryan953 in #109586
- Include isolated services in explorer service map by @shruthilayaj in #109330
- Add default_coding_agent field to SeerOrganizationSettings by @JoshFerge in #108762
- Simplify and consolidate the Settings > Project > Seer page by @ryan953 in #109349
- Add SeerOrganizationSettings model by @JoshFerge in #109299
- Add Explorer service map extraction pipeline by @shruthilayaj in #108379
- Add github_copilot_not_licensed failure type by @JoshFerge in #108782
Seer Explorer
- Add copy-to-clipboard button to block action bar by @aliu39 in #110224
- Add /sentry-conversation slash command for employees by @aliu39 in #108754
Size
- Kill list-builds endpoint in favor of builds endpoint by @NicoHinderling in #110272
- Migrate size compare build selection page to builds endpoint by @NicoHinderling in #110271
- Ensure builds endpoint has parity with list-builds endpoint by @NicoHinderling in #110270
Snapshots
- Fix sidebar rendering for uploads with lots of images by @NicoHinderling in #110156
- Add d3-zoom interactivity by @NicoHinderling in #109921
- Add click-to-snap interaction on wipe slider by @NicoHinderling in #110102
- Simplify color picker by @NicoHinderling in #109909
Sourcemap Issues
- Add sourcemap issue detection to post_process_group pipeline by @wedamija in #109817
- Add ensure_sourcemap_detector() provisioning function by @wedamija in #109749
- Add SourcemapDetectorHandler by @wedamija in #109633
- Add index to
DetectorStatetable by @wedamija in #109847
Span Buffer
Spans
- Distribute span payload keys across Redis cluster by @lvthanh03 in #110593
- Add per-trace segment flush limit by @lvthanh03 in #110337
- Add flusher log support to GCP log analyzer tool by @lvthanh03 in #109080
- Emitting outcomes when
accepted_outcome_emittedis false by @tobias-wilfert in #109305 - Add metric to ensure
accepted_outcome_emittedarrives by @tobias-wilfert in #109303 - Bump
sentry-kafka-schemasversion by @tobias-wilfert in #109174
Supergroups
- Add lightweight supergroups page and drawer by @cvxluo in #110232
- Lightweight RCA prototype by @cvxluo in #110191
- Add API endpoints for supergroups by @cvxluo in #109972
Tracemetrics
- Support units in monitors UI by @narsaynorath in #109732
- Alerts allow search on field by @narsaynorath in #109883
- Use units in alerts metric selector UI by @narsaynorath in #109593
- Expose unit type in metrics UI by @narsaynorath in #108036
- Add deno to available metrics platforms by @narsaynorath in #109195
Ui
- Add Claude Code integration to autofix UI and settings by @sehr-m in #109756
- Add AvatarButton with useAvatar hook by @JonasBa in #109900
Webhooks
- Composite GitHub tag by @armenzg in #110521
- Add push-based drain trigger to eliminate scheduler wait by @tnt-sentry in #109214
- Exclude mailboxes from delivery_time_ms metric by @armenzg in #108711
Other
- (actions) Log Action deduplication by @kcons in #109160
- (admin) Add Last Active column and sort to user search by @ndmanvar in #109736
- (agent-monitoring) Add LLM instructions to copy markdown button by @priscilawebdev in #109307
- (alerts-api) Add tests and fixes for OrganizationAlertRuleDetails API backward compatibility by @kcons in #110362
- (analytics) Add Amplitude tracking to project page filter by @JonasBa in #109431
- (broadcasts) Add show=latest filter to broadcast index endpoint by @JonasBa in #110323
- (button) Busy spinner with absolute position by @TkDodo in #110202
- (client-reports) Feature flag for new client report processing pipeline by @tobias-wilfert in #109860
- (codecov) Hide TA feature by @calvin-codecov in #109527
- (commits) Support Sentry issue URLs in "Fixes" references by @vaind in #106174
- (compactSelect) Use fzf for default search matching by @JonasBa in #109252
- (config-issues) Registering issue type and associated trace item by @Abdkhan14 in #110225
- (configuration-issues) Making processing_errors queryable by @Abdkhan14 in #109884
- (control) Add support for dropping unprocessed GitHub webhook events by @armenzg in #109354
- (conversations) Collapse tool calls in message bubbles by @priscilawebdev in #109176
- (cursor) Add retry with model fallback for Cursor API launches by @isaacwang-sentry in #108768
- (data-browsing) Use custom React chart legend component in
TimeSeriesWidgetVisualizationby @gggritso in #108493 - (data-forwarding) Add padding prop to FieldLayout components by @JonasBa in #108803
- (dynamic-sampling) Add new trace based health check bias with higher sample rate by @shellmayr in #109552
- (events) Add occurrences as a dataset by @wmak in #109727
- (features) Register organizations:page-frame feature flag by @JonasBa in #110264
- (form) Enhance field status indicators with lock icon for disabled state by @TkDodo in #109189
- (forms) RadioField by @TkDodo in #108819
- (frontend) Web snapshot testing by @rbro112 in #107971
- (github) Add mailbox bucketing for GitHub webhooks by @tnt-sentry in #108138
- (grouping) Parameterize hex values that are up to 128 characters long by @thetruecpaul in #109137
- (inbound-filters) Add health-check to healthcheck globs by @shellmayr in #110402
- (issue-details) Format is_active field as 'Is Active' in app context by @philipphofmann in #107047
- (issue-detection) Use title-only fingerprinting for LLM-detected issues by @roggenkemper in #109131
- (metric alerts) Add tests for differences in workflow-engine-rule-serializers output by @kcons in #109242
- (middleware) Expand AI agent guidance with docs and plugin links by @dcramer in #108938
- (models) Recreate CodeReviewEvent with updated schema [3/3] by @vaind in #109424
- (monitors) Add Mobile Builds to monitors sidebar by @mtopo27 in #110464
- (occurrences) New ingest by @thetruecpaul in #109180
- (page-filters) Use fzf for project search in ProjectPageFilter by @JonasBa in #108725
- (performance-detectors) Use config from Workflow Engine Detectors if available and enabled by @kcons in #107137
- (profiling) Back SuspectFunctionsTable with EAP by @mjq in #109293
- (queue) Register insights-queue-dashboard-migration feature flag by @DominikB2014 in #109332
- (queues) Split transaction table into producer and consumer tables by @DominikB2014 in #109683
- (replays) Convert replay console tab to tanstack virtual by @scttcper in #109292
- (repos) Replace the repo list page with the new repo tree-view by @ryan953 in #110290
- (repositories) Add danger delete button with label to repository row by @JonasBa in #108764
- (rollouts) Add comparator with timings by @thetruecpaul in #109104
- (scim) Move privilege grant/revoke to async task by @michelletran-sentry in #109129
- (sdk) Upgrade Sentry SDKs to 10.41.0-beta.0 by @billyvg in #109494
- (sentry-apps) Expose sentryAppId in SentryAppInstallation API by @souredoutlook in #109496
- (skills) Add lint skills by @natemoo-re in #110133
- (spans-buffer) Track pre-merge oversized parent sets by @lvthanh03 in #108447
- (stories) Lazy load story API type docs by @scttcper in #110332
- (symbolicator) Disable Intel symbol source by @tobias-wilfert in #109311
- (theme) Add swatch utils by @natemoo-re in #110090
- (trace-items) Update trace item search with dynamic keys by @nsdeschenes in #108121
- (traces) Add 'Open in Logs' link to Logs view by @JoshuaKGoldberg in #110311
- (traces-explorer) Pass through all chart visuals in Compare Queries by @JoshuaKGoldberg in #110153
- (typing) Enable mypy strict_equality in our strongly typed config by @kcons in #108606
- (uptime-assertions) Improving json path form by @Abdkhan14 in #109963
- (uptime-form-errors) Improving assertion error handling by @Abdkhan14 in #109352
- (uptime-trace-issues) Rendering uptime issues in traces by @Abdkhan14 in #108567
- Allow
sentry-replay-debuggeruri scheme for oauth by @billyvg in #109976 - Disable webhook forwarding to codecov by @calvin-codecov in #110023
- Add branch to use taskbroker-client by @markstory in #110001
- TanStack devtools by @TkDodo in #110032
- Add flamegraph for metric kit hangs by @noahsmartin in #106412
- Devenv syncs chromedriver to the google chrome version by @joshuarli in #109739
- Remove github-console-sdk-self-invite flag registration by @mujacica in #109493
- Remove github-console-sdk-self-invite feature flag by @mujacica in #109470
- Add endpoint to list only issues that have PRs created from Seer Explorer by @billyvg in #107850
Bug Fixes 🐛
Aci
- Add charts to contributing issues by @scttcper in #110162
- S/deactive/inactive/g by @kcons in #110137
- Single query in toggle_detector by @kcons in #109375
- Use types to ensure migration helpers aren't modifying input data by @kcons in #109379
- Use start of open period instead of event creation time on metric issue queries by @malwilley in #109353
- Don't dedup actions by workflow by @kcons in #109251
- Handle custom zoom stats periods in detector details by @malwilley in #109157
Agents
- Add error boundary around ModelsTable by @priscilawebdev in #110509
- Handle null modelId in agent monitoring page by @priscilawebdev in #110505
Ai Conversations
- Display model in span list by @obostjancic in #109774
- Support multi part messages by @obostjancic in #109076
- Select first message by @obostjancic in #109072
Alerts
- Prevent stripping 0 values from request body by @malwilley in #110470
- Remove unnecessary condition label renames by @malwilley in #110329
- Trace metrics shouldn't error on query validator by @wmak in #109824
- Actor missing for feature flag checks in detectors by @k-fish in #109603
- User_misery eap validation error by @nikkikapadia in #109604
Api
- Preserve RateLimitExceeded metadata in handle_query_errors by @cvxluo in #109821
- Fix user serializers to return emails for superusers by @wedamija in #109837
- Add missing cursor query parameter to paginated endpoint OpenAPI schemas by @MathurAditya724 in #109642
Auth
- Mask SCIM token after 5-minute visibility window by @wedamija in #108093
- Show warning when authenticated user isn't an org member by @JoshFerge in #109952
- Fix for impersonated sessions by @michelletran-sentry in #109903
- Revoke superuser/staff when user not in default org by @michelletran-sentry in #109510
- Invalidate sessions when a linked identity is disconnected by @wedamija in #108250
Autofix
- Reset sections on re-run by @Zylphrex in #110644
- Handle deleted groups in autofix tasks by @Mihir-Mavalankar in #110386
- Init explorer client with on complete callback by @Zylphrex in #109841
- Handle autofix create PR not started by @Zylphrex in #109778
- Handle explorer run status when creating PRs from slack by @Zylphrex in #109740
- Always attach group id in explorer autofix metadata by @Zylphrex in #109358
- Recognize PRs opened by Sentry GitHub app in autofix webhook by @JoshFerge in #109081
Billing
- Prevent checkout form resetting when payment details are updated by @brendanhsentry in #110669
- _admin provisioning for legacy Seer by @brendanhsentry in #110482
- Fix category display names in pending changes by @dashed in #109612
Build
- Exclude snapshot test files from rspack type-checker by @NicoHinderling in #110547
- Exclude react-select from SWC loader to fix emotion warning by @TkDodo in #109563
Ci
- Exclude .venv from pyc cache cleanup by @mchen-sentry in #110585
- Lint issue in snapshot.ts by @nsdeschenes in #110414
- Skip selenium plugin import on non-acceptance backend test shards by @mchen-sentry in #109757
- Add CODEOWNERS fastpath to selective testing by @joshuarli in #109163
Conversations
- Left-align text content in user message bubbles by @priscilawebdev in #110403
- Preserve query params on redirect to explore by @obostjancic in #110030
Dashboards
- Include hidden dashboards in linked dashboard lookup by @DominikB2014 in #110667
- Allow table widgets to have a limit up to 20 by @DominikB2014 in #110621
- Lower agent traces widget limit to 10 in pre-built dashboard by @gggritso in #110526
- Prevent dashboard manage view forwarding search parameter when navigating to dashboard by @edwardgou-sentry in #110525
- Hide table in full screen view for issues timeseries widgets by @DominikB2014 in #110532
- Validate linked dashboard fields against columns instead of fields by @DominikB2014 in #110524
- Prevent empty SQL strings from being passed to SQL formatter by @gggritso in #110475
- Pass translated options to CompactSelect dropdown by @DominikB2014 in #110421
- Open Explore in aggregate mode for widgets with aggregates by @DominikB2014 in #110417
- Register agents_traces_table display type in backend by @gggritso in #110365
- Add equation| prefix to non-allowed aggregates in prebuilt dashboards by @DominikB2014 in #110308
- Format y-axis numbers with abbreviation helper by @narsaynorath in #110360
- Enable fullscreen widget view in prebuilt dashboard renderer by @DominikB2014 in #110340
- Filter out equation aggregates from create alert menu by @DominikB2014 in #110333
- Add missing
fieldskey to non-table prebuilt widget queries by @gggritso in #110227 - Throw validation errors for incorrect dataset source by @nikkikapadia in #110240
- Add datasource to text widget validation by @nikkikapadia in #110213
- Resolve infinite render loop in ChartLegend overflow detection by @gggritso in #110187
- Moves Open in External link to bottom of cell action by @edwardgou-sentry in #110154
- Treat TOP_N display type as AREA by @DominikB2014 in #109876
- Show full aggregate name in widget legends for measurements by @gggritso in #109901
- Fixes for Agents Traces Table to display properly in widget viewer by @edwardgou-sentry in #109905
- Clamp invalid widget layouts to prevent browser crash by @gggritso in #109825
- Add backend validation for widget layout dimensions by @gggritso in #109826
- Allow editing global filters on prebuilt dashboards by @DominikB2014 in #109880
- Preserve polarity when clearing threshold values by @DominikB2014 in #109872
- Merge URL filters with saved filters instead of replacing them by @DominikB2014 in #109590
- Use correct table item limit for categorical bar charts in widget viewer by @gggritso in #109775
- Respect current time series interval in Widget Viewer by @gggritso in #109766
- Ignore stale limit on Table widgets by @gggritso in #109688
- Default axisRange to auto for existing widgets in builder by @mtopo27 in #109598
- Use equation prefix for ttid/ttfd contribution rate in Mobile Vitals by @gggritso in #109525
- Fix threshold unit selector for timeseries widgets and size data types by @DominikB2014 in #109500
- Fix prebuilt mcp overview dashboard layout by @edwardgou-sentry in #109492
- Prevent threshold lines from overlapping the chart legend by @DominikB2014 in #109488
- Support multiple aggregates and equations in categorical bar charts by @gggritso in #108071
- Fix "Other" series colour not displaying correctly in new timeseries visualization by @edwardgou-sentry in #109321
- Replace TOP_N display type with AREA in dashboard templates by @DominikB2014 in #109211
- Side nav updates on dashboard deletion by @nikkikapadia in #109197
- Preserve display type when switching display types by @DominikB2014 in #109208
storageNamespacenot being applied on prebuilt dashboards by @DominikB2014 in #109187- Widget id mismatch in dashboard details test by @nikkikapadia in #108694
Detectors
- Fix WorkflowEngineDetectorSerializer snooze field by @kcons in #110529
- Make mobile build threshold validation require at least one by @mtopo27 in #110460
- Require data sources for Detector creation by default by @kcons in #110246
Eap
- Use addFilterValue for transaction name in EAP sidebar charts by @mjq in #109089
- Fix possibly-undefined group_list in delete helper by @scttcper in #109518
- Silence possibly-undefined warning in SearchResolver by @scttcper in #109514
- Add transaction filters to SegmentSpansTable query by @mjq in #109084
Events
- Don't link to trace explorer when trace id is missing by @mrduncan in #110670
- Handle Snuba errors in group events endpoint gracefully by @shashjar in #109158
Explore
- Unify header FeedbackButton size as default sm by @JoshuaKGoldberg in #109782
- Use unique IDs in drag-and-drop column editors by @nsdeschenes in #108252
- Require query field on saved query creation and handle malformed queries in frontend by @wedamija in #108285
Explorer
- Fix issue/event formatters by @aliu39 in #110378
- Incl project id and slug in issue details response by @aliu39 in #110338
- Handle missing counts in get_filter_key_values and don't query both backends by @aliu39 in #110172
- Use sentry org for conversations url and rename slash cmd by @aliu39 in #109592
Form
- Swap
hashchangeforuseLocationby @natemoo-re in #109570 - Remove padding & negative margin from HighlightableFlex by @TkDodo in #109304
Github Copilot
- Lower problem_statement truncation limit by @JoshFerge in #110600
- Fall back to now() when started_at is missing from API response by @JoshFerge in #110638
Grouping
- Handle grouphash cache invalidation errors gracefully by @lobsterkatie in #110158
- Fix "kitchen" time parameterization regex by @lobsterkatie in #109895
- Stop parameterizing message variable in custom titles by @lobsterkatie in #109893
- Make derived rules visible to users by @thetruecpaul in #109836
- Fix ip parameterization false positives by @lobsterkatie in #109713
- Fix hex parameterization lookahead bug by @lobsterkatie in #109709
- Resolve mypy possibly-undefined errors in grouphash caching by @scttcper in #109602
- Avoid mutating class-level initial_context in grouping info endpoint by @joshuarli in #109009
- Fix UnboundLocalError in _is_race_condition_skipped_event by @mrduncan in #109393
Insights
- Hide platform selector when platformized insights is active by @DominikB2014 in #110349
- Handle nullable sentry.normalized_description by @gggritso in #110186
- EAP support for status breakdown by @mjq in #109969
- Remove tag summary from EAP Transaction Summary by @mjq in #109970
- Don't display raw JSON as user message by @obostjancic in #109065
Integrations
- Reload integrations after installing coding agent by @sehr-m in #110665
- Cache empty repo 409 responses to reduce GitHub API calls by @trevor-e in #109153
- Record 409 empty repo responses as halts instead of failures by @trevor-e in #109134
- Add interaction events for /repos and /installation/repositories by @trevor-e in #108722
Issues
- Prefer integration app name in resolution copy by @scttcper in #110242
- Always allow archived issues to be unarchived by @malwilley in #110230
- Use serialize_generic_user in GroupSeenSerializer by @mrduncan in #108576
- Fix possibly-undefined variables across issues module by @scttcper in #109540
- Add transaction to highlight defaults by @scttcper in #109246
- Remove border from start tour modal by @scttcper in #109220
Logs
- Allow vertical padding height for 'No logs found' messages by @JoshuaKGoldberg in #110321
- Pass boolean attributes object to the logs table prop by @nsdeschenes in #110544
- Simplify CellAction rendering to only be used if needed by @JoshuaKGoldberg in #109946
- Manual refresh tooltip by @k-fish in #108686
Metrics
- Enable Save as for multi-aggregate queries by @nsdeschenes in #110325
- Remove use_metrics_layer from query builder core by @wedamija in #108755
- Remove use-metrics-layer flag from endpoints and snuba signatures by @wedamija in #108752
Oauth
- Delay before allowing pressing Approve button by @oioki in #110304
- Add distributed lock to refresh token exchange to prevent race condition by @wedamija in #108193
Objectstore
- Use OrganizationReleasePermission for Objectstore endpoint by @lcian in #109865
- Change scopes type from dict to list of tuples by @lcian in #108693
Occurrences On Eap
- Fix debug log formatting by @shashjar in #109818
- Use
OP_INinstead of chainedORs for multi-group_idqueries by @shashjar in #109148
Onboarding
- Preserve user-entered project slug during platform selection by @sentry in #109609
- Fix CopyDsnField markdown + hide copy button with AI setup by @jaydgoss in #109953
- PHP renaming
trace_metrics->traceMetricsby @constantinius in #109066
Perforce
- Use P4CONFIG for per-connection trust file isolation by @mujacica in #109828
- Isolate P4 trust/ticket files per client to prevent lock contention by @mujacica in #109652
- Use tmp files for the trust locks instead of global paths by @mujacica in #109469
Performance
- Remap request.method for EAP related issues table by @mjq in #109196
- Fix EAP transaction summary method filter and duration breakdown chart by @mjq in #108483
Preprod
- Add size monitors filter support in backend by @chromy in #110523
- Allow user tokens for ProjectPreprodBuildDistributionLatestEndpoint by @chromy in #110430
- Include display param in builds API on initial load by @NicoHinderling in #110481
- Remove UI for adding distribution scopes to personal tokens by @chromy in #110216
- Mark App Store signed builds as not installable (EME-917) by @runningcode in #110422
- Strip trailing slash from objectstore base URL by @runningcode in #110409
- Expose PR comments feature flag to frontend API by @runningcode in #110407
- Update existing PR comment instead of posting a new one by @runningcode in #110399
- Skip snapshot artifacts in expiry detection by @NicoHinderling in #110288
- Prevent diff mode buttons from being cut off on small viewports by @NicoHinderling in #110221
- Check code signature in is_installable_artifact by @runningcode in #110194
- Gate comparison download query on SUCCESS state by @NicoHinderling in #109923
- Restore full token authentication on retention endpoint by @NicoHinderling in #109842
- Return 404 instead of 500 for missing objectstore images by @NicoHinderling in #109734
- Use theme-aware border color for treemap level-0 gaps by @mtopo27 in #109517
- Rename absolute_threshold to absolute in size analysis config by @chromy in #109481
- Replace transparent treemap colors with opaque composites (EME-889) by @cameroncooke in #109308
- Update default artifact type and label by @cameroncooke in #109194
Profiling
- Wrap billing banner inside DescriptionWrapper by @priscilawebdev in #109867
- Show empty state when no suspect functions found by @mjq in #109295
Replay
- Fix
customElement.defineby @billyvg in #110352 - Fix tooltips on timestamps in replay index by @billyvg in #109691
Seer
- Reduce the staletime of the SCM tree so it can refresh as integrations change by @ryan953 in #110287
- Prevent duplicate navigation in Seer settings tabs by @scttcper in #110222
- Add auth signing to grouping record delete-by-hash requests by @JoshFerge in #110205
- Set explicit timeouts for AI translate endpoints by @sentry in #109960
- Update seer_model after training mode request by @yuvmen in #109539
- Apply stacktrace length filtering to all platforms for V2 grouping model by @yuvmen in #109287
- Populate missing IssueDetails fields for explorer_index by @sentry in #109213
Settings
- Remove double url normalization by @natemoo-re in #110160
- Add team selection modal and navigation support by @TkDodo in #108669
Spans
- Convert nones to zeros for failure rate and count by @Zylphrex in #110330
- Use decompressed bytes size for oversized segment check by @lvthanh03 in #109839
- Detect subprocess crash during startup health check by @lvthanh03 in #109832
- Route spans to queue by Kafka partition by @lvthanh03 in #109490
- Handle null span attributes by @lvthanh03 in #109316
Stories
- Wrap StoryTabPanels in Stack by @natemoo-re in #110657
- Fix HMR for .stories.tsx and .mdx files in Scraps by @scttcper in #109630
Tests
- Prerequisite test fixes for xdist parallelization by @mchen-sentry in #110584
- Use relative date in EAP escalating test frozen time by @NicoHinderling in #110643
- Fix broken ci by @wedamija in #110484
- Fix pre-prod eap integration tests by @wedamija in #109852
- Fix flaky test_cross_trace_query_with_spans_and_logs by @smanes-sentry in #109572
- Remove hardcoded IDs from tests/sentry to prevent flaky tests by @joshuarli in #109409
- Use override_settings instead of direct settings mutation by @joshuarli in #109414
- Add deterministic ordering to all unordered queryset index access by @joshuarli in #109410
- Use distinct cluster name in buffer fixture to prevent cache pollution by @joshuarli in #109008
- Fix scope level pollution from span consumer tests by @joshuarli in #109105
- Combined flaky test fixes by @joshuarli in #109344
- Fix flaky ProjectUserDetailsTest Snuba data leak by @joshuarli in #108944
- Fix flaky SessionFetchProjectReleaseHealthTotalsTest timing by @joshuarli in #108959
- Fix flaky test_api_key_request Snuba data leak by @joshuarli in #109098
- Fix flaky test_slow_condition_subqueries timing issue by @joshuarli in #108784
- Use outcomes QueryDefinition in test_outcomes by @noahsmartin in #108790
Trace
- Prefer standalone span indicators over pageload span indicators by @nsdeschenes in #110297
- Handle missing groups by @wmak in #109942
Tracemetrics
- Preserve all visualizes when changing chart type by @nsdeschenes in #110618
- Hide explicit none types in UI by @narsaynorath in #110443
- Include conditions for unit:none explicitly by @narsaynorath in #110415
- Handle unit for "value" column in frontend by @narsaynorath in #110095
- Fix effective sample rate in dual write by @k-fish in #110104
- Properly handle duration scaling in alerts by @narsaynorath in #109950
- Metric select field in alerts should use isLoading by @narsaynorath in #109943
- Changing to categorical bar chart loses unit value by @narsaynorath in #109899
- Parse units off response in events request for alerts by @narsaynorath in #109608
- Allow explicitly defining none in requests by @narsaynorath in #109328
Traces
- Filter unreleased issue types from trace API by @nora-shap in #110356
- Hide LLM Detected issues from trace details view by @nora-shap in #109929
- Switch 'Edit Table' button to use the Edit icon, not Table by @JoshuaKGoldberg in #109780
- Handle heavily sampled projects by @wmak in #108750
Ui
- Align upsell modal feature list by @natemoo-re in #110677
- Move git_pr_number to number tags in explore constants by @runningcode in #110040
- Change git_pr_number field type from STRING to INTEGER by @runningcode in #110033
- Align event drawer header with sidebar header and sticky EventNavigation by @TkDodo in #109930
- Defer scroll restoration by @natemoo-re in #109885
- Hide LLM Detected issues from trace timeline by @nora-shap in #109857
- Filter null-tuple unhandled rejections by @scttcper in #109588
- Improve layout responsiveness for smaller screens by @priscilawebdev in #109173
Workflow Engine
- Skip workflow processing for inactive projects by @malwilley in #110553
- Fix Workflow.DoesNotExist issue(s) by @saponifi3d in #110169
Workflows
- Treat OrganizationWorkflowIndexEndpoint query parse errors as 400s by @kcons in #110434
- Don't report missing Environment as an error by @kcons in #109958
- Account for no associated workflow by @kcons in #109509
- Make update_workflow_action_group_statuses handle missing foreign keys by @kcons in #109149
Other
- (ai-agents) Remove platform filters by @obostjancic in #110295
- (ai-monitoring) Fix error icon bg bleed in ai trace span list by @priscilawebdev in #109177
- (attachments) Skip rate limiting for attachments already in objectstore by @jan-auer in #110035
- (AutoSaveField) Type inference for mutationOptions by @TkDodo in #110413
- (avatar) Coerce owner id and avatar name to string before trim by @JonasBa in #110598
- (broadcasts) Guard against non-array broadcasts value to prevent crash by @JonasBa in #110599
- (buffer) Allow dicts during buffer encoding by @thetruecpaul in #110024
- (button) Restore focus ring on transparent LinkButton by @JonasBa in #109735
- (cells) Fix ByCellName resolver by @lynnagara in #110217
- (charts) Break infinite render loop in
ChartLegendoverflow detection by @gggritso in #110480 - (cleanup) Move partition validation before environment setup by @joshuarli in #108404
- (code-review) Filter pr_closed webhook when no code review triggers configured by @giovanni-guidini in #109192
- (coding integrations) Setting branding + loading bug by @sehr-m in #110448
- (CompactSelect) Adjust scrollbar gutter behavior based on overflow state by @TkDodo in #109653
- (components) [SearchQueryBuilder] cap FilterWrapper width to 2xl less than parent by @JoshuaKGoldberg in #110334
- (crons) Try to fix deletion spikes from crons by @wedamija in #109388
- (cursor) Fall back to /v0/models for API key verification by @JoshFerge in #109297
- (data-browsing) Allow SQLish to parse some Unicode control characters by @gggritso in #110306
- (eco) Addresses ApiForbidden errors, IntegrationConfigurationError noise by @GabeVillalobos in #109711
- (eslint) Use optional chain in restrict-jsx-slot-children rule by @TkDodo in #109557
- (fixability) Always pass issue summary to fixability endpoint by @Mihir-Mavalankar in #109258
- (formatting) Run ruff format by @thetruecpaul in #109618
- (forms) Hash-based scroll + focus by @natemoo-re in #108536
- (gen-ai) Gracefully handle malformed JSON in AI message parsing by @sentry in #109645
- (gettingStartedDocs) Update LangGraph example to use StateGraph API by @priscilawebdev in #109551
- (github) Swallow error when getting back an error response for codeowners file by @Christinarlong in #110233
- (globalDrawer) Fix horizontal scroll on small screens by @priscilawebdev in #109168
- (gsAdmin) Handle missing abuse reason in customer stats by @priscilawebdev in #110293
- (guidedSteps) Reset to first step when currentStep exceeds totalSteps by @jaydgoss in #109501
- (interfaces) Allow 'self' as context key by @kcons in #106991
- (issue search) Route non-error issue message search through Snuba instead of truncated Postgres field by @shashjar in #109110
- (issue-details) Preserve page filters when searching issues by tag value by @yuvmen in #109102
- (issue-detection) Use LLM-resolved project_id for cross-project issue attribution by @roggenkemper in #109253
- (issue-timeseries) Allow higher granularities by @wmak in #109827
- (jira) Update error handling to handle more form errors by @Christinarlong in #109764
- (metric-issue) Defer chart request until open period has loaded by @malwilley in #109425
- (metric-issues) Handle 10k data point limit for the metric chart by @malwilley in #109882
- (migrations) Getsentry clean migration by @hubertdeng123 in #110374
- (modal) Skip ESC close when event is already handled by child by @TkDodo in #109556
- (monitors) Remove radius on schedule preview when overlapping panels by @evanpurkhiser in #108673
- (notifications) Attach occurrence to GroupEvent for test notifications by @mrduncan in #110562
- (occurrences) Filter None values out of headers by @thetruecpaul in #110355
- (pageFilters) Expand sentinel selection before unchecking a project by @JonasBa in #110274
- (processing-errors) Fix missing
receivedvalue from our processing-error TraceItems by @wedamija in #109851 - (profiles) Re-enable skipped symbolicator deobfuscation tests by @romtsn in #110379
- (projectredirect) Increase slug size by @thetruecpaul in #109968
- (releases) Sort by build number & code in semver when resolving in next release by @srest2021 in #106885
- (rules) Update escalation condition label to reflect actual behavior by @malwilley in #110328
- (safe) Handle None query parameter in safe_urlencode by @malwilley in #110367
- (scm) Rename to apps.py by @cmanallen in #110682
- (search) Preserve scroll position in multi-select filter combobox by @nsdeschenes in #108526
- (security) Only include emails in user serialization for the requesting user by @wedamija in #108287
- (sentry-apps) Handle empty webhook_url in external requests by @sentry in #109529
- (similar-issues) Deduplicate groups with multiple hashes in similar issues response by @mrduncan in #108513
- (snuba) Handle direct project.id groupby in top event conditions by @Zylphrex in #109535
- (span-buffer) Track outcome on produce errors by @evanh in #109944
- (storybook) Convert missed default imports to named by @JoshuaKGoldberg in #110535
- (taskbroker) Allow taskbroker_send_tasks to run indefinitely by @evanh in #110573
- (tempest) Add more metrics, logs and spans for monitoring by @mujacica in #107041
- (trace-waterfall) Fix duration text overlap in trace waterfall by @nsdeschenes in #108230
- (traces-explorer) Remove chart-specific restrictions on deletion logic by @JoshuaKGoldberg in #110046
- (typing) Add missing types to group-merge code by @thetruecpaul in #110229
- (useScrollLock) Fix document.documentElement locking to not break position: sticky by @TkDodo in #109663
- (vercel) Adds signature check to vercel delete endpoint by @Christinarlong in #109974
- (virtualization) Adjust height calculation to include vertical padding for scrollbar consistency by @TkDodo in #109480
- (webhooks) Eliminate head-of-line blocking in sequential mailbox drain by @tnt-sentry in #110215
- Only disable SubmitButton while form is in submitting state by @TkDodo in #110192
- Add dependency on column drop migration by @markstory in #110214
- Revert "ref(core): button busy state and form SubmitButton UX" by @natemoo-re in #109891
Documentation 📚
Skills
- Add no-toast guidance for auto-save form fields by @JonasBa in #109483
- Add setup-dev skill for dev environment setup by @HazAT in #108744
Other
- (search) Note internal wildcard operators by @nsdeschenes in #110047
- (sentry-apps) Add sentryAppId to sentry-app-installations API schema by @souredoutlook in #109628
- New form system by @TkDodo in #109861
Internal Changes 🔧
Aci
- Add feedback button to metric issue page by @malwilley in #110132
- Handle prepare_component_fields in WorkflowEngineRuleSerializer by @ceorourke in #109423
- Replace usage of legacy code to populate conditions data in WorkflowEngineRuleSerializer by @ceorourke in #109541
- Disable seer on metric issues by @malwilley in #109712
- Add feature flag for disabling issue stream detector notifications for metric issues by @malwilley in #109245
- Flip additionalProperties back to False by @ceorourke in #109241
- Update metric issue threshold copy by @malwilley in #109227
- Remove sentry_app_identifier from Action by @ceorourke in #109215
- Add render_label method for sentry apps by @ceorourke in #109123
- Automatically zoom metric issues to the event's open period by @malwilley in #109212
- Add render_label for ticketing providers by @ceorourke in #108795
Alerts
- Refactor DetailedWorkflowEngineDetectorSerializer to remove inheritance by @kcons in #110706
- Remove unused neglected rule code by @ceorourke in #110363
- Replace useRouter with specific hooks in ruleDetails by @evanpurkhiser in #110116
Api
- Remove OrganizationEventsSpansHistogramEndpoint by @cvxluo in #110339
- Remove ProjectUserStatsEndpoint by @cvxluo in #110342
- Use logs instead of capture_message by @billyvg in #109794
- Remove dead code from organization traces API endpoint by @shashjar in #109637
Attachments
- Skip V2 objectstore delete for EventAttachments during cleanup by @jan-auer in #109776
- Clean up objectstore rollout options by @jan-auer in #109674
- Remove objectstore double-write code by @jan-auer in #109671
Auth
- Replace browserHistory with useNavigate in loginForm by @evanpurkhiser in #110013
- Replace browserHistory with useNavigate in ssoForm by @evanpurkhiser in #109992
- Replace browserHistory with useNavigate in registerForm by @evanpurkhiser in #109998
Autofix
- Split explorer response into sections by @Zylphrex in #110527
- Use disclosure component for autofix cards by @Zylphrex in #110433
- Rename autofix artifacts type by @Zylphrex in #110431
- Refactor seer drawer into shared components by @Zylphrex in #109854
- Remove seer-slack-workflows-explorer by @Zylphrex in #109871
- Unify differences between seer drawers by @Zylphrex in #109686
- Add feature flag for autofix-on-explorer-v2 by @Zylphrex in #109687
Avatar
- Migrate Gravatar hash to useQuery by @JonasBa in #109784
- Consolidate Gravatar and ImageAvatar into useImageAvatar hook by @JonasBa in #109544
Billing
- Bump sentry-protos to >=0.8.3 by @dashed in #109996
- Bump protos to 0.8.2 by @krithikravi in #109855
- Remove maxAdminGift frontend limits for gifting by @mrduncan in #109426
- Reference startDate when filtering active product trials by @brendanhsentry in #108720
Cells
- Region_silo_test -> cell_silo_test by @lynnagara in #110569
- RegionSiloClient -> CellSiloClient by @lynnagara in #110579
- Remove SiloMode.REGION by @lynnagara in #110679
- Rpc method renaming and deprecation of unused methods by @lynnagara in #110586
- RegionCacheVersion -> CellCacheVersion by @lynnagara in #110678
- Rename core hybridcloud models from region -> cell by @lynnagara in #110601
- Update RegionReplicaService rpc method callers to use cell_name by @lynnagara in #110576
- Rename RegionOutbox to CellOutbox by @lynnagara in #110609
- Regional_rpc_method -> cell_rpc_method by @lynnagara in #110610
- Clean up temporary aliases needed for getsentry by @lynnagara in #110496
- SiloMode.REGION -> SiloMode.CELL by @lynnagara in #110494
- Update RegionReplicaService rpc methods to accept cell_name by @lynnagara in #110461
- Update all org provisioning rpc methods with cell terminology by @lynnagara in #110361
- More renames of core region methods by @lynnagara in #110487
- Update more decorator naming by @lynnagara in #110489
- Rename silo decorators by @lynnagara in #110458
- Update all sentry-apps module to use cells terminology instead of regions by @lynnagara in #110354
- Update caller of update_region_user rpc method by @lynnagara in #110357
- ControlOutbox.region_name -> ControlOutbox.cell_name by @lynnagara in #110344
- Get_local_region -> get_local_cell by @lynnagara in #110350
- Remove region_name param from get_organizations_by_user_and_scope by @lynnagara in #110276
- The subdomain check is now subdomain_is_locality by @lynnagara in #110278
- WebhookPayload.region_name -> WebhookPayload.cell_name by @lynnagara in #110253
- Migrate get_organizations_by_user_and_scope to use cell_name by @lynnagara in #110173
- OrganizationSlugReservationReplica.region_name -> cell_name by @lynnagara in #110220
- Rename OrganizationSlugReservation.region_name to cell_name by @lynnagara in #110177
- Remove no-longer-needed shims for getsentry by @lynnagara in #110170
- Rename region_name to cell_name in OrganizationMapping django model by @lynnagara in #109997
- Migrate hybrid cloud resolvers from region -> cell by @lynnagara in #110029
- RegionDirectory.regions -> RegionDirectory.cells by @lynnagara in #110028
- Update apigateway with region -> cell by @lynnagara in #109989
- Remove usage of Region.category by @lynnagara in #109840
- Rename Region -> Cell by @lynnagara in #109918
- Clarify the SENTRY_MONOLITH_REGION setting by @lynnagara in #109915
- Remove find_all_region_names() by @lynnagara in #109911
- Remove get_region_by_name by @lynnagara in #109833
- Generate_region_url -> generate_locality_url by @lynnagara in #109745
- More refactors from regions -> cell + locality by @lynnagara in #109622
Ci
- Add action to update
baseline-browser-mappingby @natemoo-re in #110608 - Add mdx type checking by @natemoo-re in #107776
- Refactor jest-balance job to use shared setup-node-pnpm step by @ryan953 in #110534
- Remove repo-level Warden workflow by @gricha in #110134
- Use shared setup-node-pnpm action in acceptance workflow by @hubertdeng123 in #110022
Code Review
- Remove github_event from task by @armenzg in #110639
- Use seer_path and skip request_type by @armenzg in #110416
- Remove legacy endpoint by @armenzg in #110457
- Remove unused models by @armenzg in #108546
Coding Integrations
- Update Claude environment selection with default by @sehr-m in #110662
- Minor frontend changes by @sehr-m in #110392
Components
- Convert AvatarCropper from class to function component by @JoshuaKGoldberg in #110098
- Convert GridEditable from class to function component by @JoshuaKGoldberg in #109347
- Convert BarChartZoom from class to function component by @JoshuaKGoldberg in #109600
- Convert StackedAreaChart from class to function component by @JoshuaKGoldberg in #109601
Context Engine
- Keep 1 kill switch option for all of context engine indexing by @Mihir-Mavalankar in #109226
- Organize tasks and add scheduling task by @Mihir-Mavalankar in #109156
Core
- Improve select field types by @TkDodo in #110454
- Button busy state and form SubmitButton UX by @TkDodo in #109869
Dashboards
- Updates AI insights pages to use
useHasPlatformizedInsightsby @edwardgou-sentry in #110572 - Update ai agents overview dashboard to use equations fro trace_status_rate by @edwardgou-sentry in #110456
- Remove prebuilt dashboards section from sidebar nav by @DominikB2014 in #110453
- Remove pre-favorited prebuilt dashboards feature by @DominikB2014 in #110445
- Rename prebuilt dashboard titles in frontend by @edwardgou-sentry in #110255
- Add "Details" suffix to non overview AI Dashboards by @edwardgou-sentry in #110257
- Add create alert option to span based timeseries widgets by @DominikB2014 in #110239
- Switch EventsSearchBar test to use paste by @scttcper in #110223
- Change save button text for prebuilt dashboard filters by @DominikB2014 in #110211
- Use favorited column for favorite status instead of row existence by @DominikB2014 in #110204
- Remove
dashboards-categorical-bar-chartsflag declaration by @gggritso in #109897 - Extract spans confidence footer into reusable component by @nsdeschenes in #109939
- Replace browserHistory with useNavigate in importDashboardFromFileModal by @evanpurkhiser in #109986
- Standardize table minH across prebuilt dashboards by @DominikB2014 in #109949
- Remove
dashboards-categorical-bar-chartsfeature flag from frontend by @gggritso in #109896 - Remove Widget Viewer manual caching layer by @gggritso in #109689
- Replace maxFontSize prop with Container height in details widget by @DominikB2014 in #109599
- Increase Next.js overview table widget heights to match mobile by @DominikB2014 in #109498
Db
- Add (group_id, action_id, date_added) index on NotificationMessage by @beezz in #109179
- Remove (group_id, last_seen DESC) index from GroupRelease by @beezz in #109067
Deps
- Update baseline-browser-mapping by @github-actions in #110672
- Bump django from 5.2.11 to 5.2.12 by @dependabot in #110406
- Bump werkzeug from 3.1.5 to 3.1.6 by @dependabot in #110425
- Bump sqlparse from 0.5.0 to 0.5.4 by @dependabot in #110424
- Pnpm approve native bindings by @natemoo-re in #110435
- Bump pillow from 11.0.0 to 12.1.1 by @dependabot in #109657
- Bump cryptography from 44.0.1 to 46.0.5 by @dependabot in #109655
- Bump @rspack/cli, @rspack/core, @rspack/plugin-react-refresh by @oioki in #109656
- Fix GHSA-23c5-xmqv-rm74 vulnerable minimatch in api-docs by @oioki in #109658
- Fix GHSA-fjxv-7rqg-78g4 vulnerable form-data in api-docs by @oioki in #109654
- Bump minimatch from 5.1.6 to 5.1.9 in /api-docs by @dependabot in #109536
- Bump typescript-eslint to 8.56.1 by @JoshuaKGoldberg in #109312
- Bump objectstore-client to 0.0.18 by @lcian in #109193
Discover
- Replace browserHistory with useNavigate in landing by @evanpurkhiser in #110010
- Replace browserHistory with useNavigate in actionDropdown by @evanpurkhiser in #110018
- Replace browserHistory with useNavigate in eventInputName by @evanpurkhiser in #109979
Eslint
- Enforce dynamic type-loader imports by @scttcper in #110441
- No-unnecessary-type-annotation rule by @TkDodo in #109485
- Bolster restrict-jsx-slot-children's getDisplayName by @JoshuaKGoldberg in #109725
Explore
- Remove TraceItemAttributeContext provider pattern by @nsdeschenes in #108552
- Make attribute breakdown components a little more reusable by @malwilley in #109515
Explorer
- Tool formatter and links for new issue/event tool by @aliu39 in #110234
- Register baselines rpc for proxy by @aliu39 in #109856
- Update pr widget labels to use 'PR' language by @aliu39 in #109548
- Rm unused category params from continue_run by @aliu39 in #109355
Flags
- Cleanup dead
feature-flag-suspect-flagsoption by @ryan953 in #110335 - Cleanup dead
feature-flag-suspect-flagsoption by @ryan953 in #110312 - Remove GA-graduated dynamic-sampling-count-biases flag by @wedamija in #108773
- Remove 5 GA-graduated data-browsing feature flags (batch 1) by @wedamija in #108769
Gen Ai
- Remove noisy parse exception captures in AI input by @priscilawebdev in #110400
- Remove redundant cost alert capture message by @priscilawebdev in #110398
Github
- Bucket webhooks by event type to reduce head-of-line blocking by @tnt-sentry in #109988
- Remove mailbox allowlist for drop-unprocessed-events by @armenzg in #109519
Grouping
- Improve message parameterization metrics by @lobsterkatie in #110612
- Cache parameterization on context by @lobsterkatie in #110605
- Remove
ContextValueandContextDictby @lobsterkatie in #110466 - Change where message variable is parameterized by @lobsterkatie in #110377
- Convert message parameterizer to singleton by @lobsterkatie in #110384
- Change custom fingerprint helper to return entire description by @lobsterkatie in #110380
- Move
GroupingContextto new module by @lobsterkatie in #110373 - Small normalization and parameterization refactors by @lobsterkatie in #110014
- Add fingerprinting test input for title parameterization by @lobsterkatie in #109886
- Add git SHA parameterization by @lobsterkatie in #109753
- Expand hex parameterization to include numbers with 9-15 digits by @lobsterkatie in #109751
- Remove grouphash cache expiry options by @cvxluo in #109677
- Expand datetime message parameterization by @lobsterkatie in #109706
- Clarify and add to xfail parameterization tests by @lobsterkatie in #109693
- Small parameterization refactor by @lobsterkatie in #109690
Hc
- Adds skill for outbox development and debugging by @GabeVillalobos in #108626
- Adds skill for general hybrid cloud testing by @GabeVillalobos in #108622
Insights
- Replace useRouter with specific hooks in webVitals pageOverview by @evanpurkhiser in #110118
- Replace useRouter with specific hooks in screenLoadSpansPage by @evanpurkhiser in #110120
- Replace useRouter with specific hooks in screenSummaryPage by @evanpurkhiser in #110121
- Remove unused dashboard migration feature flags by @DominikB2014 in #110044
- Consolidate platformized hooks into useHasPlatformizedInsights by @DominikB2014 in #109967
Issues
- Remove useHasStreamlinedUI from a few components by @malwilley in #110143
- Always use streamlined UI by @malwilley in #109685
- Refactor profile preview section tests by @scttcper in #109362
- Share first/last release hook + types by @scttcper in #109265
- Prefetch group.project in update group endpoint by @scttcper in #109152
- Fix N+1 project queries in bulk_transition_group_to_ongoing by @mrduncan in #108792
Llm Detected Issues
- Use new llm detected issue type by @shayna-ch in #109144
- Create new issue type for llm detected issues by @shayna-ch in #109138
Logs
- Prevent search query builder rerenders on auto-refresh by @nsdeschenes in #110320
- Fix memoization on log row content by @k-fish in #110310
Models
- Extract
EventErrorTypeStrEnum fromEventErrorby @wedamija in #109585 - Delete CodeReviewEvent table [2/3] by @vaind in #109422
- Pending-delete CodeReviewEvent table [1/3] by @vaind in #109420
Nav
- Remove navigationParentRef from context by @JonasBa in #110530
- Move whatsnew outside of its folder by @JonasBa in #110485
- Move buttonOverlay to components by @JonasBa in #110486
- Rename Nav to Navigation in navigation directory by @JonasBa in #110359
- Standardize primary nav footer button sizes by @JonasBa in #110289
- Redesign primary nav footer with vertical ButtonBar and portal overlays by @JonasBa in #109977
Objectstore
- Remove objectstore.force-stored-symbolication flag by @jan-auer in #109660
- Pass through compressed bytes when client accepts encoding by @jan-auer in #109571
Occurrences On Eap
- Use relative frozen timestamps in tests by @shashjar in #110658
- Relax reasonable match comparator for
is_escalatingread path by @shashjar in #109820 - Create e2e tests for occurrence read paths by @shashjar in #109121
- Create e2e test infrastructure by @shashjar in #108179
Onboarding
- Replace useRouter with specific hooks in platformOptionDropdown by @evanpurkhiser in #110108
- Replace useRouter with specific hooks in platformDocHeader by @evanpurkhiser in #110128
- Replace inline AI rules with sentry-for-ai skill prompts by @HazAT in #109647
- Update tanstack start vite plugin to subpath export by @nicohrubec in #107672
Ownership
- Migrate ownership settings form to AutoSaveField by @JonasBa in #109365
- Remove some empty patterns from CODEOWNERS by @kcons in #109126
Performance
- Replace useRouter with specific hooks in durationChart by @evanpurkhiser in #110123
- Replace browserHistory with useNavigate in trends chart by @evanpurkhiser in #110011
- Replace browserHistory with useNavigate in eventsTable by @evanpurkhiser in #110008
- Replace browserHistory with useNavigate in tagExplorer by @evanpurkhiser in #110012
- Replace browserHistory with useNavigate in tagValueTable by @evanpurkhiser in #110009
- Replace browserHistory with useNavigate in onboarding by @evanpurkhiser in #110017
- Replace browserHistory with useNavigate in traceWaterfall by @evanpurkhiser in #109978
- Replace browserHistory with useNavigate in metricsEnhancedSetting by @evanpurkhiser in #109991
- Convert TransactionThresholdModal from class to function component by @JoshuaKGoldberg in #109574
- Convert TransactionThresholdButton from class to function component by @JoshuaKGoldberg in #109567
- Convert OperationSort from class to function component by @JoshuaKGoldberg in #109331
- Convert TeamKeyTransactionsManager from class to function component by @JoshuaKGoldberg in #109591
- Convert Table from class to function component by @JoshuaKGoldberg in #109578
- Convert TagExplorer from class to functional component by @mjq in #109298
Preprod
- Sidebar polish by @rbro112 in #110571
- Delete no longer used buildList component by @NicoHinderling in #110259
- Replace useRouter with specific hooks in buildDetailsHeaderContent by @evanpurkhiser in #110124
- Remove duplicated project-scoped endpoints from preprod URLs by @chromy in #109878
- Remove project query param from artifact URLs by @NicoHinderling in #109877
- Use shared utils in check-for-updates endpoint by @trevor-e in #109789
- Remove projectId from URLs where possible by @chromy in #109665
- Register endpoints on organization as well as project by @chromy in #106435
- Redesign treemap tooltip to match Figma design (EME-869) by @cameroncooke in #109478
- Update manifest fields by @rbro112 in #109088
- Remove unused size analysis issues module by @chromy in #109068
- Add timing metric around snapshot transaction block by @NicoHinderling in #108242
Profiling
- Replace useRouter with specific hooks in landingWidgetSelector by @evanpurkhiser in #110125
- Replace browserHistory with useNavigate in functionTrendsWidget by @evanpurkhiser in #109980
- Replace browserHistory with useNavigate in flamegraphQueryParamSync by @evanpurkhiser in #109981
- Replace browserHistory with useNavigate in content by @evanpurkhiser in #109990
- Replace browserHistory with useNavigate in slowestFunctionsWidget by @evanpurkhiser in #109987
- Replace browserHistory with useNavigate in profileSummary by @evanpurkhiser in #109982
Relay
- Update project config snapshot for health-check glob by @oioki in #110408
- Remove metrics extraction integration test by @phacops in #109613
- Migrate ingestThroughTrustedRelaysOnly to AutoSaveField by @JonasBa in #108761
- Add rollout option for eap accepted span outcomes by @tobias-wilfert in #109078
Releases
- Replace useRouter with specific hooks in releases detail overview by @evanpurkhiser in #110129
- Replace browserHistory with useNavigate in releases overview by @evanpurkhiser in #109983
- Replace browserHistory with useNavigate in preprodBuilds by @evanpurkhiser in #109984
Replays
- Remove granular-replay-permissions flag registration by @priscilawebdev in #110397
- Clean up granular-replay-permissions feature flag (backend) by @priscilawebdev in #110036
- Clean up granular-replay-permissions flag (frontend) by @priscilawebdev in #110037
- Migrate projectReplays settings to AutoSaveField by @JonasBa in #109364
- Migrate replay network/errors virtualization to tanstack virtual by @scttcper in #108190
Repos
- Refactor Settings > Seer > Repos to use virtual rendering by @ryan953 in #108798
- Refactor useOrganizationRepositoriesWithSettings to use apiOptions & useInfiniteQuery by @ryan953 in #108295
Seer
- Remove unused SeerOrganizationSettings model and mark table for pending deletion by @srest2021 in #110656
- Add random 50% rollout for context engine in start_run by @Mihir-Mavalankar in #110574
- Trim whitespace from ASCII snapshot to reduce token usage by @Mihir-Mavalankar in #110273
- Rename useAgentHooks to seerAgentHooks by @ryan953 in #110188
- Propagate viewer_context to background tasks and utilities by @azulus in #109724
- Propagate viewer_context to Seer endpoint call sites by @azulus in #109723
- Propagate viewer_context to autofix Seer call sites by @azulus in #109722
- Propagate viewer_context to LLM detection and event manager by @azulus in #109721
- Propagate viewer_context to code review Seer call sites by @azulus in #109717
- Propagate viewer_context to explorer Seer call sites by @azulus in #109716
- Propagate viewer_context to feedback Seer call sites by @azulus in #109714
- Propagate viewer_context to anomaly detection Seer call sites by @azulus in #109720
- Propagate viewer_context to breakpoints Seer call sites by @azulus in #109718
- Propagate viewer_context to similarity Seer call sites by @azulus in #109719
- Propagate viewer_context to replays Seer call sites by @azulus in #109715
- Add viewer_context passthrough to all Seer API wrappers by @azulus in #109697
- Add typed wrappers for remaining Seer API callsites by @azulus in #109607
- Add typed wrappers for Seer API callsites by @azulus in #109589
- Batch size modifiable and retry on rate limit by @shruthilayaj in #109568
- Extract typed severity score request function by @azulus in #109507
- Refactor explorer service map query and instrumentation by @shruthilayaj in #109322
- Refactor useCodingAgentIntegrations to be based on apiOptions instead by @ryan953 in #109290
- Migrate remaining seer calls to urllib3 connection pools by @azulus in #109263
- Migrate seer endpoints to urllib3 connection pools by @azulus in #109254
- Migrate explorer to urllib3 connection pools by @azulus in #109224
- Migrate autofix and summarization to make_signed_seer_api_request by @azulus in #109205
- Remove unused allowBackgroundAgentDelegation org option - be by @ryan953 in #109083
This changelog has been truncated. See the full changelog for all changes.