New Features ✨
Action Log
- Efficient project bulk GroupDerivedData generation task by @kcons in #119664
- Feat(action_log): More GroupAction-based aggregators by @kcons in #119551
- Track pull request lifecycle activities by @malwilley in #119523
- Make OrganizationGroupIndexProgressEndpoint optionally use GroupDerivedData.progress by @kcons in #119165
- Ensure we have GroupActions for all type enums by @kcons in #119535
- Property for typed action data by @kcons in #119442
- Add ReconcileStatusAction action by @kcons in #119128
- Add backfill_group_activities by @kcons in #119162
- Outbox-based GroupActionLogEntry management by @kcons in #117836
Admin
- Flag when a user belongs to orgs in other regions by @rahulchhabria in #118112
- Probe other regions when org search lacks an exact slug match by @rahulchhabria in #118064
- Indicate when a customer exists in another data region by @rahulchhabria in #117619
Agent Monitoring
- Drop redundant stream_gen_ai_spans from Python onboarding by @obostjancic in #118714
- Drop redundant streamGenAiSpans from JS onboarding by @obostjancic in #118654
- Add setUser step to Conversations onboarding by @obostjancic in #118441
- Render placeholder for empty AI text parts by @obostjancic in #118235
- Improve conversation detail message rendering by @obostjancic in #118236
Agents
- Preview multiple tool-call arguments by @matejminar in #119107
- Promote reasoning effort in span details UI by @matejminar in #118144
Ai
- Unify XML tag collapsing across chat and span details by @ArthurKnaus in #119201
- Return input and output tokens in conversations response by @obostjancic in #118341
Ai Conversations
- Add traces link to redesigned conversation header by @priscilawebdev in #118718
- Add redesigned conversation detail header by @priscilawebdev in #118682
- Render linked issues in conversation span details by @obostjancic in #118555
- Link issues in AI conversation span details by @obostjancic in #118550
- Register gen-ai-conversations-columns flag by @obostjancic in #118008
Api
- Advertise required scopes on token-scope 403s (RFC 6750) by @gricha in #118612
- Add response schemas to private events and notes endpoints by @azulus in #118518
- Add COMMUNITY ApiOwner for endpoints from disbanded teams by @vgrozdanic in #118336
- Document issue/release/team params; mark legacy endpoints deprecated by @gricha in #117874
- Document accepted query params on issue & release list endpoints by @gricha in #117843
Auth
- Add "Verify your email" pending page by @nora-shap in #119160
- Add PendingUser model and cleanup task by @nora-shap in #118532
- Add signup email verification endpoint by @nora-shap in #117952
- Add signup email verification utility by @nora-shap in #117591
Autofix
- Render unknown PR iteration feedback sources by @joseph-sentry in #119667
- Type PR iteration feedback sources and prefer ui_text by @joseph-sentry in #119627
- Add header to autofix slack response sections by @Zylphrex in #119563
- Add optional user param to trigger_autofix_agent by @Zylphrex in #119446
- Enable CONFIGURATION issues as Autofix Automation targets by @sentry-junior in #119393
- Disable agent hand off for GitLab in Seer Drawer by @billyvg in #118465
- Make FE changes to match github mentions by @joseph-sentry in #118261
- Add Alpha badge to PR iteration feedback form by @chromy in #118559
- Add issue hyperlink to coding agent handoff by @sehr-m in #118319
- Add route analytics params for Seer setup state by @Zylphrex in #118371
- Add analytic event for set up seer button by @Zylphrex in #118354
- Enable pr_context_tools for PR iteration by @joseph-sentry in #118149
- PR iteration frontend changes by @joseph-sentry in #118049
- Pin base shas via prompt metadata by @joseph-sentry in #117956
- Handle no write permissions in autofix by @Zylphrex in #117937
- Push changes after PR iteration by @joseph-sentry in #117918
- Restore result description and fix button overflow in coding agent card by @sehr-m in #117774
- Add GroupAutofixRepos endpoint by @Zylphrex in #117848
- Add iteration_index and pr_iteration_enabled to analytics by @joseph-sentry in #117219
- Add pr_iteration endpoint step and operator activity by @joseph-sentry in #117218
Cells
- Register synapse devservices public key in cell-routing mode static relays by @lynnagara in #118315
- Set CSRF trusted origins for cell-routing mode by @lynnagara in #118306
- Use :7899 instead of :7901 for relay-edge in devservices by @lynnagara in #118308
Conversations
- Let the layout use available horizontal space by @ArthurKnaus in #119712
- Redirect to detail on single conversation ID search by @ArthurKnaus in #119616
- Add direct-hit redirect header for conversation ID search by @ArthurKnaus in #119613
- Return tool call result on conversation spans by @ArthurKnaus in #119508
- Make conversation detail resizable by @priscilawebdev in #119199
- Deselect span when closing detail by @matejminar in #119220
- Add dot separator to metric/duration meta by @ArthurKnaus in #119221
- Polish transcript layout width and spacing by @ArthurKnaus in #119218
- Drop span-detail Show More clips for scroll + role folding by @priscilawebdev in #119186
- Show selected agents first in agent selector by @priscilawebdev in #119182
- Indent nested collapsible XML tags by @obostjancic in #119110
- Make messages selectable in the transcript view by @obostjancic in #119094
- Auto-open span detail on the timeline view by @priscilawebdev in #119049
- Show saved query name in breadcrumbs by @constantinius in #118988
- Add conversation transcript redesign by @obostjancic in #118898
- Add redesigned span detail panel by @priscilawebdev in #118894
- Add saved query support for AI conversations by @constantinius in #118727
- Show AI span timeline in trace drawer behind flag by @priscilawebdev in #118892
- Redesign conversation timeline view by @priscilawebdev in #118821
- Move project and copy ID into detail breadcrumbs by @priscilawebdev in #118811
- Add input as a default table column by @priscilawebdev in #118815
- Make thinking blocks searchable and copyable by @obostjancic in #118630
- Add tool call breakdown hover card by @priscilawebdev in #118554
- Add editable, persisted table columns by @priscilawebdev in #118445
- Move LLM Calls column next to Tool Calls by @priscilawebdev in #118433
- Add redesigned conversations table by @priscilawebdev in #118428
- Add conversations-redesign feature flag by @priscilawebdev in #118335
- Add missing input/output alert by @obostjancic in #117680
Dashboards
- Add ordering changes to starred dashboards ordering by @adrianviquez in #119675
- Chunk heat map fetches by @gggritso in #119584
- Add Mobile Vitals "About this page" widget by @buenaflor in #116366
- Add ability to sync prebuilt favorited dashboards by @adrianviquez in #119575
- Add feature flag for starred dashboards by @adrianviquez in #119559
- Put in backend validation for heat map request fields by @nikkikapadia in #119145
- Disable non-distribution metrics for heat map widgets by @gggritso in #118779
- Improve the heat map widget tooltip by @gggritso in #118706
- Improve heat map axis tick placement by @gggritso in #118412
- Improve heat map color scaling by @gggritso in #118326
- Enable heat map cross-navigation by @gggritso in #118108
- Re-add Heat Map widget with heat-map-only config validation by @gggritso in #118199
Data Export
- Pass query Filter to EAP's EndpointExportTraceItem by @manessaraj in #119410
- Serve small Discover and Explore exports synchronously by @JoshuaKGoldberg in #118148
- Improve observability for failure emails by @sentry in #116917
Difs
- Redirect to Objectstore for Objectstore-backed DIF downloads by @lcian in #119392
- Set filename metadata on Objectstore-backed DIFs by @lcian in #119308
- Add capability to write new difs to Objectstore by @lcian in #117502
- Add capability to read difs from Objectstore by @lcian in #117501
Dynamic Sampling
- Replace MOD-based org bucketing with CursoredScheduler by @constantinius in #118920
- Match legacy 100% handling in per-org pipeline by @shellmayr in #118644
- Add smallest-transaction factor bucket metric by @shellmayr in #118463
- Add eap count sample debug metric by @constantinius in #118437
- Add generic metrics volume to sliding window comparison by @constantinius in #118224
- Emit last-item age debug metric for project balancing by @shellmayr in #118130
- Record EAP and outcomes volume in sliding-window comparison by @shellmayr in #118013
- Compare EAP vs outcomes org sliding-window rate by @shellmayr in #117908
- Add per-project sample rate override for custom DS by @shellmayr in #117796
Eap
- Surface a context brief for the project attribute by @DominikB2014 in #119113
- Add OTel GenAI token usage attributes by @constantinius in #117300
- Add failure_count_if formula for spans by @vgrozdanic in #118349
Explore
- Allow pinned range bounds on heat map endpoint by @gggritso in #119414
- Validate explore column editor fields by @nsdeschenes in #118377
- Added data export modal to Discover and Traces by @JoshuaKGoldberg in #117949
- Surface and apply Seer's cross-event queries by @manessaraj in #118685
- Add drag-to-zoom for metrics heat maps in Explore by @gggritso in #118945
- Show agent filter in saved queries list view by @constantinius in #118986
- Add warning message for low sampled data by @adrianviquez in #118423
- Add ai_conversations dataset to ExploreSavedQuery by @constantinius in #118725
- Increase resolution of heat map widgets by @gggritso in #118748
- Forbid selecting a heat map for non-distribution metrics by @gggritso in #118661
- Register gen_ai conversation and operation attributes as search keys by @obostjancic in #118542
- Unfurl Explore Heat Maps by @nikkikapadia in #117943
- Consistent chart expand/collapse for Logs and Traces by @JoshuaKGoldberg in #118174
- Validate spans search attributes by @nsdeschenes in #118015
- Add search suggestions to trace logs view by @JoshuaKGoldberg in #118153
- Add Chartcuterie config for Explore heat maps by @gggritso in #118253
- Add table to store metric context by @DominikB2014 in #117933
- Add sentry conventions context to trace item attributes by @DominikB2014 in #117913
- Add table to store attribute and attribute context by @DominikB2014 in #117930
- Add flagged schema hints removal to conversations by @JoshuaKGoldberg in #117715
Features
- Register organizations:ui-migration-breadcrumbs flag by @Jesse-Box in #119211
- Add data-browsing-attribute-context flag by @DominikB2014 in #117839
- Register organizations:am3-tier permanent feature flag by @chromy in #117805
Gal
- Add idempotency key to publish functions by @thetruecpaul in #119534
- Add project-level backfill task for Activity to GroupActionLog by @yuvmen in #119164
- Add reset_and_backfill task for group action log by @yuvmen in #119355
- Add bulk-publish function by @thetruecpaul in #119326
- Add single-group backfill task by @yuvmen in #119248
- Add Activity-to-GroupAction translator by @thetruecpaul in #117721
Gale
- Schedule processing task on invalidation by @ceorourke in #119166
- Invalidate derived data on merge by @ceorourke in #118378
Gsadmin
- Drop Unmatched stat card from invoice-comparison summary by @armcknight in #118060
- Rework invoice-comparison summary + link receipt cells by @armcknight in #117970
Icons
- Add bar antenna, sun, and pull request draft icons by @Jesse-Box in #118995
- Add InProgress, InReview, and Resolved status icons by @malwilley in #117697
Inbound Filters
- Add custom inbound filter detail endpoint by @shellmayr in #118726
- Add custom inbound filters list/create endpoint by @shellmayr in #118142
- Add custom inbound filter audit log event by @shellmayr in #118141
- Add model for new inbound filters v2 by @shellmayr in #116666
- Add v2 page skeleton by @shellmayr in #116665
Integrations
- Type referrer on integration analytics events by @alexsohn1126 in #118746
- Track referrer on auto-opened install modal by @alexsohn1126 in #118740
- Send custom webhook_headers on SentryApp webhooks by @billyvg in #117090
- Add
webhook_headersfield to SentryApp API by @billyvg in #117089 - Add feature flag for custom webhook headers by @billyvg in #117917
- Customizable install modal title and description by @alexsohn1126 in #118286
- Auto-open install modal from query param by @alexsohn1126 in #118285
- Default sentry-app-schema-form-migration to enabled by @priscilawebdev in #118158
- Add MCP hint to the new integration type modal by @cvxluo in #117945
Issue Details
- Add pull request closed activity type by @malwilley in #118591
- Add details tab to issue preview drawer by @malwilley in #118316
- Add action buttons to issue preview drawer by @malwilley in #118074
- Add activity feed to issue preview drawer by @malwilley in #118066
- Add issue preview drawer with header content by @malwilley in #117961
Issue Progress
- Add frontend rendering for new PR lifecycle activities by @malwilley in #119659
- Update progress on new PR lifecycle actions by @malwilley in #119582
- Update action log progress logic to support new logic by @malwilley in #119329
- Default awaiting input page to progress sort by @malwilley in #118069
- Add progress activity hovercard by @malwilley in #117858
Issue Search
- Add regressed and newness boosts to recommended_v2 by @roggenkemper in #118159
- Add suspect-commit relevance to recommended_v2 by @roggenkemper in #118160
Issues
- Add issue activity stories by @scttcper in #119686
- Redesign resolution banners by @scttcper in #119682
- Refine activity feed copy and wrapping by @scttcper in #119546
- Link commit activities to pull requests by @scttcper in #119373
- Link release resolution activities to commits by @scttcper in #119372
- Move merge/unmerge tasks to dedicated namespace by @yuvmen in #119233
- Add new-feature badge to the Recommended dropdown option by @roggenkemper in #119301
- Move Recommended sort to top of sort dropdown by @roggenkemper in #119302
- Serve recommended_v2 behind the recommended sort key by @roggenkemper in #119232
- Add new-feature badge for the Recommended sort default by @roggenkemper in #119136
- Add dedicated issues.merge task namespace by @yuvmen in #119161
- Log and count restricted large merges/unmerges by @yuvmen in #119157
- Add group links and activity section to issue preview drawer by @malwilley in #118590
- Add single line activity feed items by @scttcper in #118571
- Restrict merge/unmerge for large groups by @yuvmen in #118615
- Add merge task killswitch by @cvxluo in #118611
- Split recommended-sort default flag, add experimental sort option by @roggenkemper in #118471
- Use stored PR status for linked PRs by @scttcper in #118405
- Add attribution to pull-requests by @scttcper in #118416
- Show linked PR attribution avatars by @scttcper in #118417
- Add recommended-sort default and experimental flags by @roggenkemper in #118470
- Add recommended sort with localStorage persistence by @roggenkemper in #116320
- Record auto-resolve as a system action in the action log by @yuvmen in #117856
- Add Progress sort option to the issue stream by @roggenkemper in #117771
- Track linked pull request clicks by @scttcper in #117770
Logs
- Validate selected table columns by @nsdeschenes in #118634
- Add logging wrapper by @lobsterkatie in #119276
- Validate logs search query fields by @nsdeschenes in #118350
Onboarding
- Explain the disabled Create CTA in the SCM wizard by @jaydgoss in #117342
- Show all SCM project-creation steps at once by @jaydgoss in #117553
Ourlogs
- Add specialized exports for aggregates by @JoshuaKGoldberg in #118693
- Show pinned logs in sort order by @JoshuaKGoldberg in #118450
- Prefer message template for cell action filters if available by @JoshuaKGoldberg in #118651
- Clarify export form columns and format by @JoshuaKGoldberg in #118196
Pr Iteration
- Comment when @sentry iteration hits an ineligible PR by @joseph-sentry in #119519
- Add nudge for updating github app permissisons by @joseph-sentry in #119111
- Add github app permission nudge to autofix drawer by @joseph-sentry in #119059
Pr Iteration
- Fold PR review-comment anchor into Autofix prompt by @alexsohn1126 in #119334
- React to inline PR review comments via SCM platform by @alexsohn1126 in #119416
Pr Metrics
- Close SENTRY_APP attribution gaps for autofix PRs by @giovanni-guidini in #119628
- Add per-PR activity document model and reducer (dark) by @vaind in #119570
- Emit judge-ineligible PRs via a fallback verdict by @giovanni-guidini in #119385
- Handle synchronous delegated-agent-match response by @giovanni-guidini in #119380
- Derive ci_failing_at_close on the no-judge close path by @giovanni-guidini in #119504
- Include autofix referrers in scm.pr.closed by @giovanni-guidini in #119492
- Add human-involvement signals to scm.pr.closed by @giovanni-guidini in #119217
- Defer scm.pr.closed emission behind a cooldown by @giovanni-guidini in #119198
- Record sentry-app PR attribution on close by @giovanni-guidini in #119106
- Instrument the delegated-agent attribution funnel by @giovanni-guidini in #119036
- Derive participants_count and reviews_count by @vaind in #118956
- Constrain PullRequestActivity table size and fix activity tracking gates by @giovanni-guidini in #118734
- Add typed signal_details to SENTRY_APP attribution by @giovanni-guidini in #118738
- Call Seer delegated-agent match RPC from webhook by @giovanni-guidini in #117911
- Capture review dismissals and merge-intent signals by @vaind in #118188
- Capture check_suite/check_run CI status for the judge by @vaind in #118183
- Emit conversation-judge analysis to BigQuery by @vaind in #118028
- Restrict judge and activity capture to Seer-eligible orgs by @giovanni-guidini in #117899
- Include GroupLinks from PR activity commits in resolved group IDs by @giovanni-guidini in #117524
Preprod
- Add preprod-size-analysis-pr-comments feature flag by @mtopo27 in #119409
- Show install groups on the install page by @mtopo27 in #119312
- Prefer build_number_raw for display by @trevor-e in #119267
- Add install_groups to build-details distribution info by @mtopo27 in #119303
- Store raw build number for display purposes by @trevor-e in #119262
- Add Releases breadcrumb to install page by @mtopo27 in #119140
- Render web-UI snapshots on their canvas_theme by @jamieQ in #118903
- Add adjustable opacity to the snapshot diff overlay by @mtopo27 in #118875
- Support per-image canvas_theme in snapshot API by @jamieQ in #118749
- Sync snapshot sidebar search to URL by @mtopo27 in #118834
- Add URL route resolving to latest base snapshot by @mtopo27 in #118658
- Show existing size comparisons on the compare page by @jamieQ in #118674
- Add endpoint listing existing size comparisons for a build by @jamieQ in #118526
- Re-emit preprod.snapshots.diff.duration_s metric by @NicoHinderling in #118603
- Add org context to snapshot pipeline logs by @NicoHinderling in #118602
- Roll out TaskProducer for preprod tasks by @bmckerry in #118583
- Record client attribution on snapshot archive download by @mtopo27 in #118491
- Record client attribution on snapshot read endpoints by @mtopo27 in #118387
- Record approval analytics for web UI and auto approvals with source by @mtopo27 in #118307
- Add tracing spans to snapshot details GET handler by @NicoHinderling in #118177
- Add Download CSV button to build distribution view by @jamieQ in #117927
- Support zstd-compressed snapshot manifest uploads by @NicoHinderling in #117884
- Use one relevant-filtered link per snapshot row by @mtopo27 in #117863
- Add build distribution CSV export endpoint by @jamieQ in #117539
- Surface errored snapshot images in web viewer by @NicoHinderling in #117599
Profiling
- Support sample v2 profiles for Android by @markushi in #118849
- Add attachment download control to the flamegraph toolbar by @markushi in #118071
- Add support for profiling chunk attachments by @markushi in #118029
Project Creation
- Track returning to the detected platform by @jaydgoss in #118420
- Notification options in the SCM alert section by @jaydgoss in #118394
- Make alert frequency collapsible via ScmCollapsibleSection by @jaydgoss in #117849
- Add reusable collapsible section for create flow by @jaydgoss in #117847
- Add integration selector to repo connect step by @jaydgoss in #117731
Relay
- Remove graduated feature flag by @jjbayer in #119711
- Add a metric to verify that the billing metrics consumer is not producing outcomes. by @klochek in #119304
- Warn on Client Keys pages when a Relay DSN endpoint override is set by @ArthurKnaus in #119098
- Add option to configure attachment inline limit by @tobias-wilfert in #119034
- Add DSN endpoint override input to org Relay settings by @ArthurKnaus in #118710
- Allow a custom Relay endpoint to override DSNs by @ArthurKnaus in #118707
- Expose feature flag for minidump with extra exceptions by @jjbayer in #118431
Replays
- Support querying segment_names by @mjq in #119633
- Show mobile-specific network details setup instructions by @romtsn in #118544
- Port ingest-replay-recordings to a taskbroker task by @untitaker in #118645
Scm
- Surface installation and repository ids on webhook events by @alexsohn1126 in #119629
- Add check_suite and pull_request_review to event stream by @joseph-sentry in #119419
Scm Multi Platform Detection
- Conditional use of new multi dete… by @Abdkhan14 in #118500
- Removing parallel call of test endpoint in FE by @Abdkhan14 in #118501
- Registering flag by @Abdkhan14 in #118494
- Parallelizing repo and content reads by @Abdkhan14 in #118359
- Adding new metrics by @Abdkhan14 in #118099
- Implementing scoped matching by @Abdkhan14 in #117720
Scraps
- Add prefer-stack-for-column-flex ESLint rule by @priscilawebdev in #119397
- Add JS container-query parity via useContainerBreakpoint by @TkDodo in #118912
- Add SplitPanel core component by @priscilawebdev in #118230
Sdk
- Double-write dashboard tags to attributes by @Lms24 in #118841
- Double-write alert rule tags to attributes by @Lms24 in #118840
- Double-write remaining tags to attributes by @Lms24 in #118843
- Double-write profiling tags to attributes by @Lms24 in #118838
- Double-write performanceForSentry tag to attribute by @Lms24 in #118839
- Double-write explore spans tag to attribute by @Lms24 in #118842
- Double-write initializeSdk tags to attributes by @Lms24 in #118837
- Double-write bootstrap request tags to attributes by @Lms24 in #118836
- Migrate frontend to span streaming by @vgrozdanic in #116466
Search
- Move Ask Seer action to filter menu footer by @nsdeschenes in #119656
- Render multi-select filter values as chips by @JoshuaKGoldberg in #118191
- Always show multi-select checkboxes in value dropdown by @JoshuaKGoldberg in #118024
- Add color indicators next to severity values in search by @JoshuaKGoldberg in #118569
- Track multi-select value toggles in dropdown by @JoshuaKGoldberg in #118027
- Add issue progress sort by @roggenkemper in #117707
Seer
- Redesign the Sentry Workflows page shard and issue UI by @trevor-e in #119662
- Surface issue titles and PRs on night-shift triage results by @trevor-e in #119661
- Include low-value-span issues in night shift triage by @chromy in #119503
- Include five_whys reasoning in Slack autofix root cause u… by @Zylphrex in #119408
- Trigger autofix iteration from PR review comments by @alexsohn1126 in #119225
- Give each project its own night shift candidate quota by @trevor-e in #119265
- Scope night shift result dedupe to (run, kind, idempotency_key) by @trevor-e in #119141
- Markdown embed registry by @natemoo-re in #119159
- Record a night shift result row for every triage verdict by @trevor-e in #118976
- Block coding-agent handoff for non-GitHub projects in the table by @billyvg in #118588
- Add get_issue_ownership RPC to Seer tools by @hobzcalvin in #118802
- Detect GitLab bots in contributor seat tracking by @billyvg in #117762
- Add validate endpoint to the execute table query rpc by @wmak in #118953
- Restrict GitLab repos to Seer handoff in Autofix settings by @billyvg in #118493
- Allow custom questions on the org Seer runs endpoint by @chromy in #118929
- Mirror a SeerAgentRun for start_feature_run by @trevor-e in #118962
- Accept viewer context auth on the Seer RPC endpoint by @azulus in #118948
- Add referrer column to SeerRun by @trevor-e in #118931
- Add group filter to the org Seer runs search by @chromy in #118896
- Expose per-run one-shot outputs on the runs list via ?outputs by @chromy in #118827
- Summarize a run via the agent_question one-shot by @chromy in #118826
- Add organization Seer runs list endpoint by @chromy in #118732
- Add Seer one-shot client by @chromy in #118565
- Enable streaming animation by @natemoo-re in #118068
- Include SeerRun uuid in webhook and PR groups responses by @trevor-e in #118594
- Poll Seer Explorer by UUID by @trevor-e in #117780
- Write SeerRunPullRequest links for Seer-created PRs by @trevor-e in #118580
- Add get_organization_projects RPC method by @aliu39 in #118427
- Surface convention attribute context in built_in_fields by @DominikB2014 in #118567
- Add SeerRunPullRequest model linking runs to PRs by @trevor-e in #118572
- Persistent seer panel by @TkDodo in #117898
- Restrict night shift to an org's allowed project slugs by @trevor-e in #118411
- Send connected repos to night-shift triage by @trevor-e in #118407
- Skip night-shift projects that can't open a PR by @trevor-e in #118386
- Backfill night shift run shards from legacy seer_run by @trevor-e in #118154
- Shard night shift triage into per-chunk feature runs by @trevor-e in #118080
- Route night shift feature delivery through the outbox by @trevor-e in #118040
- Add validate_llm_proxy_key RPC endpoint by @sehr-m in #117885
- Run night shift every 12 hours by @chromy in #117929
- Add Sentry Workflows run history page by @jshchnz in #117820
- Add per-org night shift run-option overrides by @chromy in #117826
- Return sentry_run_id from runs list and dashboard generate by @trevor-e in #117808
- Return sentry_run_id from explorer chat GET by @trevor-e in #117778
- Register
seer-explorer-persistent-sidebarfeature flag by @TkDodo in #117791 - Register
seer-explorer-thinking-summaryfeature flag by @natemoo-re in #117688 - Pass
enable_tool_summaryto agent_run_options by @natemoo-re in #117689
Seer Activity
- Better communicate incompatible alerts by @leeandher in #119007
- Support webhooks for Sentry Apps by @leeandher in #118255
- Use a strategy for emailing issue owners by @leeandher in #118106
- Implement notification platform handlers for activity alerts by @leeandher in #117543
Seer Billing
- Write integration hostname to organization contributors, attempt 2 by @srest2021 in #119589
- Add nullable hostname column to organization contributors by @srest2021 in #119430
- Write organization contributor provider by @srest2021 in #119274
- Add nullable provider column to OrganizationContributors model by @srest2021 in #119272
- Cut over seat assignment to OrganizationContributorAction by @srest2021 in #118763
- Add billable contributor action processor to GitHub and GitLab for dual-writing contributor actions by @srest2021 in #118205
- Add OrganizationContributorAction model for tracking billable PRs by @srest2021 in #118194
Seer Explorer
- Add dismissible Slack reinstall nudge by @alexsohn1126 in #118684
- Dock auto sidebar right in landscape mobile by @TkDodo in #118563
Seer Infra Telemetry
- Include non-dismissed available monitoring providers in explorer chat request by @srest2021 in #119357
- Add standalone Connectors settings page for monitoring providers by @shashjar in #118967
- Add success return URL to connect/reauth monitoring provider payloads by @srest2021 in #118702
- Pass a custom OAuth return URL to the identity pipeline by @srest2021 in #118704
- Add GCP support to
McpIdentityProviderfor MCP tool calls by @shashjar in #118695 - Reauthenticate monitoring provider in explorer by @srest2021 in #118592
- Add PUT reauthenticate to monitoring provider endpoint by @srest2021 in #118577
- Scope monitoring provider connections to organizations by @shashjar in #118181
- Add Datadog PAT connect flow to monitoring providers UI by @shashjar in #118382
- Add auth method field to monitoring provider connections RPC by @srest2021 in #118283
- Add
OrganizationIdentitymodel for per-org monitoring provider connections by @shashjar in #118179 - Add get monitoring provider connections RPC by @srest2021 in #118210
- Wire up DatadogPatIdentityProvider to monitoring provider endpoints by @srest2021 in #118073
- Add a PAT-only DatadogIdentityProvider by @srest2021 in #118072
- Pass monitoring providers in explorer chat request by @srest2021 in #117768
- Add monitoring providers section to Seer Advanced Settings page by @shashjar in #117758
- Add monitoring provider refresh access token RPC by @srest2021 in #117472
- Implement monitoring provider connection API endpoints by @shashjar in #117854
- Auto create IdentityProvider for Datadog in IdentityPipeline by @srest2021 in #117705
- Store Datadog org id when building identity, to be used as IdentityProvider external id by @srest2021 in #117491
Sentry Apps
- Append text summary to claude routine webhooks by @cvxluo in #119448
- Send custom headers on all external requests by @cvxluo in #119530
- Per-event webhook subscription checkboxes by @cvxluo in #119324
- Expose exact event subscriptions as webhookEvents by @cvxluo in #118940
- Accept granular webhook events on the API by @cvxluo in #118932
- Match webhook subscriptions per-event by @cvxluo in #118928
- Allow anthropic-version and anthropic-beta webhook headers by @billyvg in #118582
- Forward integrator error status and reason from external requests by @priscilawebdev in #116956
Slack
- Log channel id on successful message sends by @alexsohn1126 in #119636
- Add referrer to issue alert reinstall nudge link by @alexsohn1126 in #118745
- Nudge per-workspace to update outdated Slack app installs by @alexsohn1126 in #118587
- Also emit alert nudge metrics to the Sentry metrics product by @alexsohn1126 in #118596
- Add metrics for slack reinstall nudge outcomes by @alexsohn1126 in #118564
- Nudge users to reinstall the Slack app on issue alerts by @alexsohn1126 in #118288
Spans
- Increase process_segment_task deadline to 65s by @lvthanh03 in #119117
- Add option to rollout process_segment task by @lvthanh03 in #119003
- Create a task for process segment by @lvthanh03 in #118950
- Set conversation_id and session_id on TraceItem by @phacops in #118419
Spans Migration
- Discover transactions to spans saved queries by @nikkikapadia in #118681
- Transactions to spans dashboard widget self hosted migration by @nikkikapadia in #104803
- Self-hosted migration for transaction alerts by @nikkikapadia in #111348
Taskbroker
- Remove Taskworker Topics from
TopicEnum by @george-sentry in #119150 - Add taskworker-process-segments to Topic enum by @lvthanh03 in #119061
- Add
taskworker-launchpad-pushto Topic enum by @evanh in #118161
Taskworker
- Make merge/unmerge self-chaining idempotent by @yuvmen in #118966
- Make the router default topic configurable by @enochtangg in #119238
- Add
--min-concurrencyFlag to Taskworker by @george-sentry in #118850 - Add --prometheus-port to run taskworker by @enochtangg in #118780
Trace
- Add operation-type icons to AI span details title by @obostjancic in #119093
- Add compressed timeline mode by @nsdeschenes in #116686
Trace Items
- Add endpoint to create/update metric context by @DominikB2014 in #119431
- Add endpoint to create/update attribute context by @DominikB2014 in #118498
- Serve context for Sentry-defined attributes by @DominikB2014 in #118759
- Add context to Sentry-defined attributes by @DominikB2014 in #118739
- Match attribute context by convention, not source by @DominikB2014 in #118509
- Ungate sentry-conventions attribute context by @DominikB2014 in #118362
- Always return context key when expand=context by @DominikB2014 in #118157
Traces
- Use new transcript in AI trace tabs by @obostjancic in #119039
- Use redesigned AI span detail panel across trace views by @priscilawebdev in #118987
- Show value counts in item search dropdown by @JoshuaKGoldberg in #117426
Utils
- Add mismatch logging options to
SafeRolloutComparatorby @lobsterkatie in #119665 - Add exact match callback option to rollout comparator by @lobsterkatie in #118965
- Add callsite-specific sample rates to rollout comparator by @lobsterkatie in #117629
Weekly Report
- Add batching for all + removing FF by @amy-chen23 in #119679
- Total Issues chart rendering by @amy-chen23 in #119229
- Update notification page for project customization by @amy-chen23 in #118934
- Add API endpoints and report filtering by @amy-chen23 in #118696
- Add WeeklyReportProjectExclusion model by @amy-chen23 in #118522
- Remove "Most Frequent Transactions" section by @amy-chen23 in #118396
- Add "Past Resolved Issues" by @amy-chen23 in #117751
Weekly Reports
- Combine error and performance issues into top issues by @amy-chen23 in #119677
- Add data layer for Total Issues graph by @amy-chen23 in #119154
Other
- (action log) Use derived data for search and sort by @ceorourke in #119423
- (activity) Emit group activity when a linked PR is closed by @malwilley in #118524
- (ai-spans) Adjust JSON expansion defaults by @constantinius in #119505
- (alerts api) Double frequency of deprecation brownouts by @kcons in #119536
- (api-docs) Publish group integration details endpoint by @cvxluo in #118698
- (assisted-query) Support org-level flags in the assisted query agent by patching via Sentry Request by @manessaraj in #118744
- (billing-platform) Register getsentry over-usage shadow referrer by @armenzg in #118677
- (broadcasts) Add sdk_update broadcast category by @sfanahata in #117476
- (claude-code) Persist vault per GitHub installation by @sehr-m in #118271
- (cmdk) Route "api key" search to auth token settings pages by @JoshFerge in #117693
- (core) Add xs size variant to Radio by @jaydgoss in #118374
- (dev) Add CMD+K command to toggle analytics debug mode on/off by @ryan953 in #118290
- (developer-settings) Add webhook headers field to custom integrations by @billyvg in #117091
- (discover) Errors product relocation info banner by @nikkikapadia in #119306
- (ecosystem) Add activity for created external issues by @scttcper in #117428
- (events) Add more information to the id errors by @wmak in #118485
- (frontend) Add route-map generator by @azulus in #118195
- (github) Handle new_permissions_accepted installation webhook by @joseph-sentry in #119006
- (gitlab) Track merge request lifecycle state on PullRequest by @malwilley in #118604
- (grouping) Add more context to Seer exception-type mismatch log by @yuvmen in #118391
- (ingest-metrics) Ensure billing metrics consumer avoids outcome double-billing by @klochek in #117186
- (insights) Add analytics events for AI trace interactions by @obostjancic in #117906
- (issue-list) Add issue preview drawer for awaiting input page by @malwilley in #117934
- (issue-preview) Add autofix tab to issue preview drawer by @malwilley in #118292
- (issue-workflow) Action log derived data by @kcons in #117238
- (issueList) Add ProgressState enum and progress column icons by @malwilley in #117736
- (llm-proxy) Add internal endpoint for JWT key generation by @sehr-m in #119138
- (merge) Separate start task names for merge and unmerge chains by @yuvmen in #119641
- (metrics) Validate metrics search filters by @nsdeschenes in #118355
- (migration) Add
webhook_headersfield to SentryApp by @billyvg in #117088 - (nav) Open starred issue views in a new tab on modifier-click by @cvxluo in #117879
- (notif-platform) Support in-paragraph link blocks by @leeandher in #118280
- (onboarding-multi-platform-detection) Updating UI for multiple detected platforms by @Abdkhan14 in #118930
- (outcomes) Begin porting track_outcomes to TaskProducer by @bmckerry in #118487
- (platform) Add service worker proxy by @cmanallen in #117814
- (processing_errors) Roll out TaskProducer to EAP producer by @bmckerry in #118585
- (producer) Start rolling out rdkafka poll metrics by @bmckerry in #119565
- (quotas) Add value-based equality and ordering to QuotaConfig by @armenzg in #118861
- (releases) Improve release bubble interactions by @scttcper in #119440
- (rollout) Allow overriding rollout comparison metric sample rate by @lobsterkatie in #118474
- (scm-onboarding-multi-platform-detection) Removing test endpoint… by @Abdkhan14 in #118621
- (sdk-crashes) Add is_anr_or_apphang tag to sdk crash monitoring metrics by @romtsn in #118983
- (search-query-builder) Convert to filter key on comparison ops by @nsdeschenes in #117207
- (span buffer) Add span-first slow DB span detector by @lobsterkatie in #117551
- (startup) Add SENTRY_TRACE_STARTUP instrumentation for initialize_app by @untitaker in #118444
- (taskworkers) Add option to set skip_await_futures by @bmckerry in #118462
- (text) Allow responsive display prop, exclusive with ellipsis by @TkDodo in #118908
- (tracemetrics) Add standard metric attributes to query builder by @nsdeschenes in #114708
- (unmerge) Add killswitch by @cvxluo in #118595
- (upload) GA upload endpoint by @jjbayer in #119050
- (uptime) Roll out TaskProducer to EAP producer by @bmckerry in #118584
- (validate) Use the filter mode by @wmak in #118401
- (validator) Add query validation by @wmak in #117781
- (viewer-context) Add project_id to ViewerContext by @sehr-m in #119663
- (web) Add WebMCP/agent discovery endpoints, robots.txt update, a… by @elijames-codecov in #117830
- Add organizations-explore-modal-export flag by @JoshuaKGoldberg in #119216
- Wire up examples of service-worker "requests" that return a result from the worker by @ryan953 in #119088
- Add highlight ability to compact select component by @adrianviquez in #118705
- Container queries by @TkDodo in #118724
- Add github webhook handling for PR pr_iteration_webhook by @joseph-sentry in #118050
- Support 'acks' kafka producer config by @untitaker in #118379
- Update autofix PR description footer by @joseph-sentry in #118037
- Seer drawer pictureInPicture by @TkDodo in #116670
- Options read hook by @joshuarli in #117547
Bug Fixes 🐛
Aci
- Update the resolution API to use
create_group_activityby @saponifi3d in #118854 - Add more debug information to the metric, so we can filter by detector type by @saponifi3d in #118806
- AlertRuleTriggerAction.DoesNotExist fix by @saponifi3d in #118383
- Error when updating non-Anomaly Detection to Anomaly Detection by @saponifi3d in #117947
Action Log
- Make progress gate project-level by @kcons in #119569
- Move publish API to a dependency-light module to avoid import cycles by @kcons in #119266
- Serialization improvements by @kcons in #119076
- Fail consistently on schema violation in process_group_action_log_event by @kcons in #118974
- Only send updates for columns that change by @kcons in #118048
- Change publish interface to require a Project; use it in feature gate by @kcons in #117776
Ai Conversations
- Use uniform 16px padding on conversation detail page by @priscilawebdev in #118722
- Widen AI conversations filter to include tool spans by @obostjancic in #118553
Alerts
- Scope lookup to project in path by @ceorourke in #118961
- Populate metric_alert webhook actions for native monitors by @Christinarlong in #118388
- Return fallthrough type by @ceorourke in #118404
- Stronger typing around human_desc by @kcons in #117883
Auth
- Do not update email in UserDetailsEndpoint by @nora-shap in #119253
- Avoid false no-org access on login by @JoshFerge in #118666
Autofix
- Don't treat queued PR feedback as iterating by @joseph-sentry in #119624
- Add word boundary check for @sentry mention parsing by @joseph-sentry in #119543
- Consume queued PR iteration feedback after push by @joseph-sentry in #118676
- Pin repo branch/sha at root cause by @Zylphrex in #119132
- Fix Overlapping Feedback Attribution with Feedback by @alexsohn1126 in #119086
- Fix autofix drawer UI bugs by @joseph-sentry in #118538
Avatars
- Avoid orphaning avatar file handle on resized requests by @shellmayr in #117973
- Close avatar file in get_cached_photo by @shellmayr in #117903
Conversations
- Show "no cost recorded" instead of a misleading amount by @ArthurKnaus in #119617
- Remember last selected project by @ArthurKnaus in #119620
- Fix blank detail view on mobile breakpoint by @ArthurKnaus in #119625
- Show connected issues in the span detail panel by @ArthurKnaus in #119601
- Fetch more conversation list items by @obostjancic in #119391
- Sort tools in the tool calls breakdown tooltip by @ArthurKnaus in #119386
- Stop 'Add a Column' from appending Conv. ID forever by @priscilawebdev in #119379
- Stop Last Message time bumping on row hover by @matejminar in #119314
- Show loading instead of stale rows on refetch by @priscilawebdev in #119298
- Remove 800px cap from tool and thinking blocks by @ArthurKnaus in #119283
- Don't auto-select a span in the timeline view by @ArthurKnaus in #119223
- Fix contrast in the transcript loading skeleton by @ArthurKnaus in #119222
- Align transcript turn metadata by @obostjancic in #119205
- Keep tool calls tooltip open when hovering into the card by @priscilawebdev in #119213
- Widen tool calls tooltip trigger area by @priscilawebdev in #119209
- Show skeleton for span details to avoid layout shift by @priscilawebdev in #119200
- Don't auto-select a span on the transcript view by @ArthurKnaus in #119206
- Sort agent selector options alphabetically by @priscilawebdev in #119202
- Fix size hierarchy in AI span detail card by @priscilawebdev in #119197
- Redesign the timeline loading skeleton by @priscilawebdev in #119103
- Reset agent selection when switching projects by @priscilawebdev in #119099
- Keep repeated user messages in transcript by @obostjancic in #119041
- Stop table rows growing in Safari on back-nav by @priscilawebdev in #119100
- Show 0 B for tool size when output bytes are unavailable by @obostjancic in #119095
- Make the agent selector wrap on narrow viewports by @priscilawebdev in #119096
- Scroll the whole span detail card, not just the tab content by @priscilawebdev in #119089
- Anchor summary heading tooltip to the title text by @priscilawebdev in #119091
- Keep span detail on the right at narrower widths by @priscilawebdev in #119048
- Show errors summary link in red to match table by @priscilawebdev in #119047
- Remove native tooltips on tool-calls in table by @priscilawebdev in #119045
- Increase span detail metadata font-size to 14px by @priscilawebdev in #119044
- Preserve agent filter on saved query navigation by @constantinius in #119040
- Fix AI span detail panel overflow on narrow screens by @priscilawebdev in #119035
- Tag entry-point links for referrer attribution by @ale-cota in #118816
- Preserve list filters when using detail breadcrumb by @obostjancic in #118631
- Separate AI span timeline rows on hover by @priscilawebdev in #118893
- Fix analytics event tracking by @obostjancic in #118629
- Treat "None" user fields as missing by @priscilawebdev in #118549
- Show single (no value) for redacted multi-part messages by @obostjancic in #118453
Dashboards
- Unify timeseries loading and empty state by @nikkikapadia in #119335
- Reset Heat Map aggregate to count on metric fallback by @gggritso in #119269
- Fetch attributes while typing in categorical bar X-axis by @gggritso in #119084
- Explain why Heat Map visualization is unavailable by @gggritso in #119264
- Carry Heat Map visualize when saving from Explore by @gggritso in #119255
- Show correct type badge for categorical bar X-axis attributes by @gggritso in #119071
- Fetch attributes while typing in the widget builder field dropdown by @DominikB2014 in #118664
- Align time series X axis ticks to user timezone by @gggritso in #109881
- Stop chart drag-to-zoom selecting the wrong time range by @gggritso in #119013
- Preserve spans table
timestampcolumn in Explore by @mjq in #118949 - Preserve page filters when opening an issue from a widget by @DominikB2014 in #118683
- Consider
errorfor trace.status errors by @mjq in #118497 - Keep legend breakdown when group by changes by @gggritso in #118300
- Keep saved column in widget builder dropdown when missing from attributes by @DominikB2014 in #118252
Deps
- Bump js-beautify to 2.x for minimatch ReDoS (GHSA-3ppc-4f35-3m26) by @oioki in #118989
- Bump @rsdoctor/rspack-plugin and dedupe ws to 8.21.0 (GHSA-96hv-2xvq-fx4p) by @oioki in #118996
- Bump api-docs fast-uri to 3.1.3 for host confusion (GHSA-v39h-62p7-jpjc) by @oioki in #118999
- Bump fast-uri to 3.1.3 for path traversal (GHSA-q3j6-qgpj-74h6) by @oioki in #118998
- Bump api-docs picomatch to 2.3.2 for ReDoS (GHSA-c2c7-rcm5-vvqj) by @oioki in #118997
- Raise api-docs form-data override floor to 4.0.6 (GHSA-hmw2-7cc7-3qxx) by @oioki in #118994
- Bump defu to 6.1.7 for prototype pollution (GHSA-737v-mqg7-c878) by @oioki in #118993
- Dedupe minimatch 3.1.2 to 3.1.5 for ReDoS (GHSA-7r86-cg39-jmmj) by @oioki in #118990
- Bump @figma/code-connect to pull form-data 4.0.6 by @oioki in #118902
- Bump idna to 3.18 for GHSA-65pc-fj4g-8rjx by @oioki in #118895
- Bump cryptography to 49.0.0 for GHSA-537c-gmf6-5ccf by @oioki in #118868
Discover
- Convert ColumnEditCollection to functional component by @sentry in #118796
- Coerce issue.id tag value to string for transactions by @phacops in #118222
Dynamic Sampling
- Restore 100% project fallback in per-org pipeline by @shellmayr in #118639
- Rename metric tags to avoid _id suffix stripping by @constantinius in #117783
Eap
- 400 instead of 500 for InvalidSearchQuery in trace-item attribute endpoints by @kcons in #118700
- Skip validation for empty-string sentinel in has: queries by @kcons in #118703
Explore
- Lock span id column in table editor by @nsdeschenes in #119727
- Allow numeric attrs for drilldown by @narsaynorath in #119724
- Preserve compact span count rendering by @nsdeschenes in #119548
- Dedupe logs/traces history via a shared location provider by @JoshuaKGoldberg in #118952
- Prettify validated aggregate labels by @nsdeschenes in #119540
- Respect span field definitions in tables by @nsdeschenes in #119522
- Stop Heat Map drag-to-zoom writing duplicate history entries by @gggritso in #119336
- Guard against null series entries in ECharts by @sentry in #119131
- Remove Seer project filter from search bar by @isaacwang-sentry in #118960
- Validate spans group by selections by @nsdeschenes in #118452
- Import sentry_sdk.ai submodule in conversation onboarding by @vgrozdanic in #119295
- Report aggregate sort in Seer on-page context by @shruthilayaj in #119219
- Reduce time window in trace item details by @k-fish in #118566
- Render square Heat Map cells in unfurled charts by @gggritso in #119069
- Allow agent filter in saved query serializer by @constantinius in #118982
- Keep timestamp column when opening logs widget by @JoshuaKGoldberg in #118847
- Allow max/min aggregations on timestamp column by @vgrozdanic in #118448
- Cap heat map unfurl grid to a fixed-density size by @gggritso in #118598
- Prevent grouping by the same attribute twice by @JoshuaKGoldberg in #118468
- Wait for org range before spans filters by @nsdeschenes in #118346
- Make missing description rendering consistent by @mjq in #118243
- Clarify logs export modal email copy by @JoshuaKGoldberg in #118151
- Include AI usage token fields in visualize options by @the21st in #117901
- Include AI cost fields in visualize options by @nsdeschenes in #117817
Externalissues
- Migrate ticketRuleModal API request to async/await by @sentry in #118268
- Migrate api.request to api.requestPromise in useIntegrationExternalIssues by @sentry in #117755
Feedback
- Don't orphan feedback payloads in the processing store by @evanh in #119642
- Show inline integrations on feedback details by @scttcper in #117772
Flags
- Loosen statsig webhook deserialization by @cmanallen in #118858
- Validate webhook signature before organization lookup by @skaasten in #118649
Gal
- Avoid derived-data processing on idempotency conflict by @thetruecpaul in #119579
- Allow null values in SetEscalatingAction expired_snooze by @yuvmen in #119639
Github
- Ungate inbound issue status sync from removed feature flag by @souredoutlook in #119079
- Don't set external_id on @localhost CommitAuthors by @scttcper in #117574
Gsadmin
- Render the doc integration logo preview correctly by @cvxluo in #119171
- Add CTA to reset stranded partner billing by @dashed in #118464
Integrations
- Show admin tooltip on disabled Update Now button by @joseph-sentry in #119657
- Re-register github project management feature flag by @cvxluo in #118575
- Show disabled configuration count in integration row by @souredoutlook in #118469
Issue Details
- Remove misleading author from PR closed activity by @malwilley in #118762
- Avoid leaking issue filters into trace links by @nsdeschenes in #118655
- Provide GroupIdProvider for EventGraphWidget in releases drawer by @malwilley in #118197
Issue Progress
- Keep progress column visible at smaller viewport widths by @malwilley in #119146
- Include projects in progress fetch by @malwilley in #118804
- Treat manual unresolve as a progress reset by @malwilley in #117828
Issues
- Center runtime highlight text by @scttcper in #119692
- Scope commit resolution to release projects by @scttcper in #119697
- Show activity after workflow changes by @scttcper in #119432
- Show deleted team names in activity by @scttcper in #119418
- Align activity detail text with the title and timestamp by @scttcper in #118979
- Restrict low-value span estimated cost to owners and managers by @ArthurKnaus in #119387
- Hide trace section when trace_id is synthetic by @malwilley in #119241
- Contain activity sidebar names by @scttcper in #119163
- Show logs under hydration error and rage-click replays by @JoshuaKGoldberg in #118656
- Re-parent children when filtering low-value spans by @ArthurKnaus in #118813
- Polish new issue activity feed rows by @scttcper in #118890
- Add activity actor tooltips by @scttcper in #118881
- Make activity drawer easier to open by @scttcper in #118874
- Use linked PR authors in sidebar by @scttcper in #118510
- Truncate long release names by @scttcper in #118325
- Stop pr grouplink removal from reopening issues by @scttcper in #118330
- Tighten multi-select form state (jira) by @scttcper in #118209
- Tweak linked pull request rows by @scttcper in #118043
- Return all matched short ids instead of redirecting to one by @cvxluo in #118032
- Hide linked issue title prefixes by @scttcper in #117891
- Resolve PR activity users by external actor by @scttcper in #117829
- Simplify linked issue rows by @scttcper in #117841
- Use AI_DETECTED category for code health group type by @roggenkemper in #117845
- Clean up tags drawer header by @scttcper in #117777
- Move external issue tabs into modal header by @scttcper in #117706
- Use short timestamps by @scttcper in #117592
Jira
- Prevent algorithm-confusion attack by @ceorourke in #118694
- Migrate issueActions.tsx to requestPromise by @sentry in #117726
Logs
- Set correct groupBy for Open in Explore with tables by @narsaynorath in #119721
- Extract collapse functionality into its own button by @adrianviquez in #118053
Metrics
- Stop stuck zoom selection bands by @JoshuaKGoldberg in #118691
- Use integer sentinel for empty environment filter by @phacops in #117888
O11y
- Add span first traces sampler by @alexander-alderman-webb in #119242
- Restore max_value_length by @cleptric in #118743
Onboarding
- Remove CocoaPods from Apple SDK onboarding by @philprime in #118723
- Use skills.sentry.dev URL in AI-assisted setup prompt by @evanpurkhiser in #118259
- Prevent duplicate SCM project create on repeat click by @jaydgoss in #117538
- Commit the auto-detected platform to the host by @jaydgoss in #117341
Ourlogs
- Stabilize table column widths during scrolling by @JoshuaKGoldberg in #119305
- Fetch pinned logs with a single
eventsrequest by @JoshuaKGoldberg in #119268 - Preserve pinned logs cache after unpinning by @JoshuaKGoldberg in #118454
- Keep pinned-logs actions bar from scrolling off-screen by @JoshuaKGoldberg in #118456
- Fall back to message value when a log has no template by @JoshuaKGoldberg in #118922
- Remount chart on query change to stop stuck select bands by @JoshuaKGoldberg in #118688
- Resolve release:latest and similar filters by @JoshuaKGoldberg in #118647
- Load out-of-range pinned logs via a narrow time window by @JoshuaKGoldberg in #118489
- Render pin actions row above column resize indicator by @JoshuaKGoldberg in #118460
- Clear hover highlight when unpinning a log row by @JoshuaKGoldberg in #118242
- Honor aggregate (HAVING) conditions in Explore Logs by @JoshuaKGoldberg in #117920
- Nudge truncation constant up a power of 2 by @JoshuaKGoldberg in #118023
- Don't specify numeric threshold for data export emails by @JoshuaKGoldberg in #117936
- Keep pinned logs when the time range expires by @JoshuaKGoldberg in #117086
Performance
- Exclude db.cursor spans from N+1 DB detection by @ericapisani in #118031
- Remove sample transaction creation endpoint by @mjq in #118237
- Remove sample transaction button from performance onboarding by @mjq in #118184
Pr Metrics
- Add retry to the PR-close cooldown task by @giovanni-guidini in #119615
- Keep activity open during emit cooldown by @joseph-sentry in #119497
- Stub PullRequest on check-event race by @vaind in #118628
- Match check PRs on their own repo, not the check's by @vaind in #118576
- Stub missing PullRequest on comment/review race by @vaind in #118356
Preprod
- Treat builds with an installable file as installable by @mtopo27 in #119230
- Keep metadata popup double-click from opening focus view by @mtopo27 in #118833
Project Creation
- Preserve detected selection on back-to-recommended by @jaydgoss in #118506
- Forward the SCM product selection to setup docs by @jaydgoss in #118390
Replay
- Surface recording-segment fetch errors with a Retry button by @JoshuaKGoldberg in #118291
- Stop network details content from clipping at the bottom by @DominikB2014 in #118094
Replays
- Prevent memory leak in highlightNode when wrapper is undefined by @sentry in #119363
- Make links in timeline breadcrumb tooltips clickable by @priscilawebdev in #119496
- Handle sentry.cocoa.unreal in configure replay card by @billyvg in #119235
- Fix web vital tooltip rendering in the replay timeline by @DominikB2014 in #119070
- Restore gray border on timeline mouse-hover marker by @JoshuaKGoldberg in #118467
- Resolve flaky useReplaysFromIssue test by @sentry in #118251
- Stop refetching replay-count for viewers without access by @JoshuaKGoldberg in #118182
Scraps
- Shadow not extending fully to the right by @priscilawebdev in #119400
- Skip redundant form attribute on
SubmitButtonby @natemoo-re in #119135
Sdk Crash Detection
- Allow device/os/app context fields through event stripper by @runningcode in #118916
- Allow ART memory/GC context through event stripper by @runningcode in #118915
Search
- Ignore prototype filter key matches by @scttcper in #119149
- Support configured prototype filter keys by @scttcper in #119134
- Support multi-value release.package filters by @scttcper in #118853
- Remove 'Type to search suggestions' helper text by @JoshuaKGoldberg in #117955
- Render escaped asterisks as escaped by @JoshuaKGoldberg in #118019
- Prevent recent filter row panel spacing by @nsdeschenes in #117667
Seer
- Ellipsize issue titles and show only PR number in workflows by @trevor-e in #119698
- Anchor Explorer command menu to input by @TkDodo in #119614
- Log every disqualifying reason for skipped night shift projects by @trevor-e in #119552
- Don't request embed widgets for entrypoint (Slack) agent runs by @chromy in #119396
- Stop conflating night-shift run id with Seer's run id in logs by @trevor-e in #119349
- Route issue_comment webhooks to handler for GHE by @billyvg in #119261
- Narrow night shift scheduling spread to 1 hour by @trevor-e in #119258
- Sanitize NUL chars and lone surrogates from run outbox payloads by @trevor-e in #119168
- Capitalize Slack in updateSlackAlert copy by @trevor-e in #119148
- Skip GitLab seat seeding when webhook actor is not the MR author by @billyvg in #119124
- Register get_organization_projects on internal RPC by @trevor-e in #118690
- Remove derived state for addAutofixRepoModal by @sentry in #118623
- Resolve UUID run_id in OrganizationSeerAgentUpdateEndpoint by @trevor-e in #118616
- Unstick Copilot handoff status when global_id is empty by @JoshFerge in #118415
- Forward attribute context through get_attribute_names RPC by @DominikB2014 in #118351
- Inherit org-flag agent run options on the feature-run path by @trevor-e in #118218
- Link each night shift shard to Seer Explorer in workflows by @trevor-e in #118187
- Surface night shift shard seer run ids in the workflows API by @trevor-e in #118186
- Add GitLab support to web vitals Seer eligibility hook by @billyvg in #117747
- Add GitLab support to web vitals Seer eligibility check by @billyvg in #117746
- Use URL-safe GitLab path when building owner/name by @billyvg in #118054
- Show GitLab icon for GitLab SCM links in evidence UI by @billyvg in #118055
- Route coding agent handoff CTA through seer/settings/ by @billyvg in #117622
- Capture GitLab webhook validation failures as exceptions by @billyvg in #117969
- Normalize GitLab webhook trigger_at to ISO 8601 by @billyvg in #117968
- Route stopping point and handoff changes through seer/settings/ by @billyvg in #117526
- Invalidate seer projects list after adding project via modal by @billyvg in #117868
Seer Infra Telemetry
- Strip whitespace from Datadog PAT access_token in build_identity by @srest2021 in #118507
- Wrap monitoring provider disconnect logic with transaction by @shashjar in #118402
- Add Datadog site allowlist to identity provider by @shashjar in #117541
Selective Testing
- Add more files to FST, and regression tests for deleted/moved files by @joshuarli in #118059
- Add
src/sentry/snuba/events.pyto full-suite trigger by @joshuarli in #117950 - Always run silo and backup validate meta-tests by @joshuarli in #117932
Sentry Apps
- Restrict access to external issue actions without correct scope by @ceorourke in #118968
- Dont use alarm for control webhooks by @Christinarlong in #117760
Sentry Apps
- Resolve web urls in webhook text summaries by @cvxluo in #119643
- Validate URI to prevent signed request routing to attacker hosts by @Christinarlong in #118679
Service Worker
- Register as module for WebKit 26 compatibility by @sentry in #119729
- Ignore InvalidStateError during update check by @sentry in #119726
- Skip Sentry capture for AbortErrors from update checks by @billyvg in #119459
Spans
- Parse callstack string in 'file I/O on main thread' detector by @lobsterkatie in #119181
- Retry transient process segment task failures by @lvthanh03 in #119239
span.status:internal_errorshould also considererrorby @mjq in #118476- Write span
statusfield as trace item attribute by @mjq in #118461 - Import span-first detectors rollout controller by @lobsterkatie in #118324
Stats
- Align timezone handling with user preferences and UTC params by @billyvg in #119331
- Handle duplicate user tags by @wmak in #118244
Test
- Freeze time in deprecation url_names test to avoid noon-UTC flake by @mchen-sentry in #118672
- Pass project features to GroupFixture in similarIssues.spec.tsx by @sentry in #118111
Trace
- Escape syntax-like span attribute filters by @constantinius in #119210
- Keep vital indicator line and label visible at timeline edges by @buenaflor in #118752
- Use primary alias for description by @wmak in #119011
- Expose slow/frozen frames rate vitals for EAP traces by @buenaflor in #118446
- Open Span JSON link in a new tab by @cleptric in #118219
- Expose V2 mobile app vitals for EAP traces by @nsdeschenes in #118238
- Include new web vital attributes by @nsdeschenes in #117910
Trace Waterfall
- Handle V2 mobile app vitals for EAP traces by @nsdeschenes in #118239
- Use new web vitals by @nsdeschenes in #118035
Tracemetrics
- Allow clearing equation to trigger update by @narsaynorath in #118919
- Store label format of equation so duplicates aren't clobbered by @narsaynorath in #118367
- Limit adding series in widget builder to max amount by @narsaynorath in #118156
- Disable equation field if loading metrics by @narsaynorath in #118155
- Filter out and disable rate aggregates in equations by @narsaynorath in #118045
- Literals in equations delete incorrect item by @narsaynorath in #117926
- Use portal to prevent clipping of dropdown menus by @narsaynorath in #117922
Traces
- Encode linked logs filter + row state in the URL by @JoshuaKGoldberg in #118831
- Reserve min-width for interactive object Pretty/Raw control by @ArthurKnaus in #119097
- Preserve autogroup segment bounds by @nsdeschenes in #118164
Ui
- Paint SplitPanel divider accent above pane content by @priscilawebdev in #119383
- Pin GridEditable header height in Safari on back-nav by @priscilawebdev in #119490
- Ignore 1Password in overlay search inputs by @scttcper in #119172
- Resize autosize textarea on container width changes by @TkDodo in #118855
- Give the main scrollbar on the html element secondary background color by @TkDodo in #118435
Validate
- Check attributes in query even during error by @wmak in #118018
- Make the default behaviour better by @wmak in #117962
Vercel
- Upsert env vars one target at a time to avoid ENV_CONFLICT by @Christinarlong in #118490
- It seems like we need v10 for vercel to upsert env vars by @Christinarlong in #118314
- Use upsert to set env vars when linking projects by @Christinarlong in #118207
- Redirect sentry.dev root to sentry.io by @ryan953 in #118076
- Preserve the next param through the install pipeline by @evanpurkhiser in #117855
Other
- (admin) Migrate adminRelays DELETE to async/await by @sentry in #118264
- (agent-insights) Stop trace.rendered analytics from firing twice by @obostjancic in #118541
- (agents) Keep timeline row selection visible on hover by @ArthurKnaus in #119204
- (analytics) Use the same DEBUG_ANALYTICS localstorage key in prod & dev by @ryan953 in #118373
- (api) Scope clientSecret visibility to app owner in serializer by @michelletran-sentry in #118369
- (apigateway) Preserve Content-Encoding when proxying snapshot create by @NicoHinderling in #118327
- (apigw) Update issue events route, add missing routes by @gi0baro in #118832
- (attachments) Disable preview for large text/JSON attachments by @JoshuaMoelans in #116963
- (attribute-breakdowns) Store breakdown pagination in URL by @nsdeschenes in #118233
- (automations) Allow value of 0 for frequency conditions by @souredoutlook in #118128
- (backpressure) Remove unhealthy service log by @shellmayr in #119514
- (billing) Fix billing status overlay button spacing by @cvxluo in #117867
- (charts) Preserve ECharts zoom state by @scttcper in #119237
- (ci) Fix failing
test-toolsaction by updating hardcoded YAML by @kenzoengineer in #118670 - (cmd-k) Make settings field helpText searchable in command palette by @TkDodo in #118557
- (commandPalette) Prevent useOrganization from throwing without org context by @sentry in #119362
- (configoptions) Change from YAML parsing to JSON parsing to fix float parsing issue by @kenzoengineer in #118492
- (consumers) Propagate tags to all threads by @bmckerry in #119550
- (cursor) Validate pr_url and extract branch_name from statusChange webhook by @giovanni-guidini in #117682
- (data_export) Scope export detail lookup to the requesting user by @manessaraj in #119635
- (data_forwarding) Safely convert request headers to dict by @sentry in #118124
- (dev) Symbolicator mode now depends on objectstore by @Dav1dde in #118783
- (ecosystem) Add select_related to slack activity notification task by @scttcper in #118856
- (equations) Handle count_unique by @wmak in #117714
- (errors) Add conditional Ask Seer prop by @nsdeschenes in #117789
- (formatters) Add trillion suffix to abbreviated number formatting by @skaasten in #119715
- (forms) Resolve no-callback-api-request lint error in doApiRequest by @sentry in #117727
- (frontend-tsc) Convert PermissionsObserver to functional component by @sentry in #118480
- (gitlab) Cap org IDs in webhook debug log attribute by @billyvg in #118097
- (grouping) Reject Seer matches with mismatched exception types by @yuvmen in #118202
- (groups) Normalize string
assignedTovalue before optimistic bulk update by @shashjar in #119588 - (issue details) Send time range params for specific event IDs in prev/next navigation by @shashjar in #118246
- (issue-search) Prevent overflow crash in recommended_v2 sort by @roggenkemper in #118277
- (issue-stream) Dismiss the Recommended sort badge after a sort is chosen by @roggenkemper in #119537
- (issue-views) Stop view sort changes from overwriting the feed sort by @roggenkemper in #119415
- (listBox) Fix virtualized scrolling when mouse is used by @TkDodo in #118380
- (mcp) Add mcp referrer by @wmak in #118167
- (metric-monitors) Anchor non-percentage chart y-axis at zero by @malwilley in #118384
- (middleware) Guard request.auth access in is_frontend_request by @sentry in #117966
- (mobile-vitals) Include app.start in cold/warm start transaction.op conditions by @buenaflor in #118436
- (msteams) Treat ApiUnauthorized (401) as a configuration halt, not a failure by @billyvg in #119510
- (nav) Keep mobile menu open when switching organizations by @natemoo-re in #117683
- (nav-tour) Navigate to Sentry Built dashboards in step 4 by @ale-cota in #118342
- (organizationMembers) Convert OrganizationMemberRow to function component by @sentry in #118477
- (overlay) Recalculate controlled overlay position on open by @TkDodo in #119611
- (page-frame) Standardize spacings by @TkDodo in #118451
- (pagefilters) Clamp old absolute date changes by @nsdeschenes in #118720
- (plugins) Block deprecated plugins from test-fire notifications by @Christinarlong in #118257
- (preprocessing) Handle malformed URLs and missing raw frame keys by @Christinarlong in #117816
- (processing-errors) Drop null entries from event errors by @cvxluo in #118312
- (producer) Register SingletonProducer shutdown eagerly by @untitaker in #118650
- (profiling) Detect android trace chunks by version and structure by @markushi in #119604
- (project) Skip optimistic update on project slug change by @TkDodo in #118822
- (project-settings) Migrate release token regeneration to async/await by @sentry in #118267
- (projectKeys) Migrate KeyStats to useApiQuery by @sentry in #117757
- (projectReleaseTracking) Migrate release token regeneration to useMutation by @sentry in #118270
- (query-builder) Move logging out of loop by @nsdeschenes in #118086
- (query-client) Stop retrying on 400s by @nsdeschenes in #117928
- (quotas) Add repr for quota config by @volokluev in #118601
- (redis) Fix handling of boolean values by @lobsterkatie in #117931
- (relay) Flush the organization options local cache for project recomputation by @klochek in #117602
- (reprocessing) Check for stale reprocessing by @tobias-wilfert in #118626
- (resultGrid) Migrate api.request to api.requestPromise by @sentry in #118265
- (scim) Add scimType and status to SCIM error responses by @Asynchronite in #117870
- (scm) Update error handling in project webhook task by @GabeVillalobos in #118248
- (scm-sync) Skip repo sync creation for repos scheduled for deletion by @bruno-garcia in #119332
- (sdk) Inherit parent sampling decision instead of overriding it by @Lms24 in #118736
- (serviceWorker) Gracefully handle SecurityError in sandboxed iframes by @sentry in #119170
- (slack) Ensure Slack user is member of org for Seer actions by @ceorourke in #118877
- (snapshots) Use sun icon for light/dark preview toggle by @NicoHinderling in #119120
- (spike-protection) Keep toggle value after save on project settings by @TkDodo in #118459
- (split-panel) Restore horizontal divider hit area by @TkDodo in #119623
- (splitPanel) Clamp the sized pane to its min size by @TkDodo in #118338
- (stories) Use default variant for Default button example in button.mdx by @ryan953 in #119347
- (tab) Observe the root tabs component when calculating overflowMenu by @TkDodo in #118546
- (taskworker) Add the ability to send canary tasks from taskbroker_send_tasks by @evanh in #119224
- (teamProjects) Migrate api.request to useMutation by @sentry in #118038
- (tempest) Align frontend permissions to backend checks by @mujacica in #118540
- (tests) Always run control silo URL tests by @kenzoengineer in #117862
- (textAreaAutoSize) Turn off the react compiler by @TkDodo in #119618
- (theme) Strip stale body theme class on cmd-k theme switch by @TkDodo in #118432
- (trace-item-stats) Resolve issue with pagination by @nsdeschenes in #118039
- (trace-view) Show App Start Cold/Warm vitals for app.start transactions by @buenaflor in #118438
- (uptime) Use safe HTTP for robots.txt fetch in autodetect by @michelletran-sentry in #118358
- (useResizableDrawer) Don't rely on stable options by @TkDodo in #118092
- (weekly-report) Prevent recording delivery on dry runs by @amy-chen23 in #118249
- (weekly-reports) Cache event counts after successfully sending emails by @amy-chen23 in #118309
- (workflow) Speed up workflow group history count query by @Christinarlong in #118323
- (workflow-engine) Require DataConditionGroup IDs to be ints by @kcons in #117887
- Seer header responsiveness by @TkDodo in #118924
- Forward query string verbatim in Objectstore proxy and API gateways by @lcian in #119512
- Enable ce for all orgs by @shruthilayaj in #119014
- Use a global h1 for title slot by @TkDodo in #118014
Documentation 📚
Scraps
- Point Flex column direction to Stack by @priscilawebdev in #119599
- [StatusIndicator] add non-animated usage subsection by @JoshuaKGoldberg in #118599
Other
- (api) Add download query parameter to attachment details OpenAPI schema by @jan-auer in #119105
- (cells) Update skill with better directions to run cell routing mode by @lynnagara in #118079
- (explore) Add replays and ai_conversations to dataset help text by @vgrozdanic in #118810
- (laravel) Add AI agent monitoring onboarding by @constantinius in #118363
- (metrics) Document metric tag conventions by @shellmayr in #117787
- (preprod) Clarify diff snapshots omit top-level images array by @NicoHinderling in #118198
- (seer) Update GitLab MR limitation comment by @billyvg in #117831
- Add tracing wrapper guidance to backend AGENTS.md by @cleptric in #118781
Internal Changes 🔧
Action Log
- Deduplicate pull request closed action by @malwilley in #119367
- Add test helper to assert action log publishing by @kcons in #119271
Ai Search
- Gate issue list AI search on gen-ai-issues-search flag by @aliu39 in #118425
- Add gen-ai-issues-search feature flag by @aliu39 in #118424
Alerts
- Add rendering support for resolution activities by @leeandher in #119259
- Increase legacy alerts API brownouts by @ceorourke in #118680
- Dont use legacy alerts endpoint in metric issue details by @ceorourke in #117482
- Batch detector fetches on Alerts list by @shashjar in #116798
Api
- Type group reprocessing status details info by @cvxluo in #119684
- Tighten trace endpoint response types by @cvxluo in #118955
- Tighten event serializer response types by @cvxluo in #119351
- Type event/group event-type as a Literal by @cvxluo in #119350
- Type group level as a Literal by @cvxluo in #118758
- Type event serializer occurrence by @cvxluo in #118926
- Type event serializer groupingConfig by @cvxluo in #118786
- Type group response fields as literals by @cvxluo in #118668
- Promote Telemetry Experience release endpoints to spectacular public docs (sentry-api-schema#76) by @betegon in #118005
- Reassign release endpoints from TELEMETRY_EXPERIENCE/UNOWNED to COMMUNITY by @vgrozdanic in #118339
- Use token operationIds + summary for preprod/monitors/sentry_apps/notifications/seer/feedback endpoints by @betegon in #117403
- Use token operationIds + summary for issues/integrations/releases/workflow endpoints by @betegon in #117339
- Use token operationIds + summary for core + api endpoints by @betegon in #117337
- Add control silo URL patterns for monitoring provider API endpoints by @shashjar in #117851
Apigw
- Catch more network errors on proxied requests by @gi0baro in #118729
- Prevent netloc mismatch on proxied requests by @gi0baro in #118640
- Review routes, add tests, readme by @gi0baro in #117313
Ask Seer
- Register UX Rework Flag by @nsdeschenes in #119645
- Add default to ask seer feature flag by @nsdeschenes in #118721
Autofix
- One more quick ref before adding check suite handling by @joseph-sentry in #119520
- Move pr iteration functionality around by @joseph-sentry in #119299
- Remove checkWriteAccess from useAutofixSetup by @Zylphrex in #118667
- Remove checkWriteAccess from useAutofixSetup by @Zylphrex in #118665
- Add rendering for PR Iteration activities by @joseph-sentry in #118408
Billing
- Bump sentry-protos to 0.43.3 by @armcknight in #119594
- Bump sentry-protos to 0.43.0 by @skonves in #119358
- Bump sentry-protos to 0.42.0 by @armcknight in #119178
- Add quota_config_mapping for proto/sentry QuotaConfig conversion by @volokluev in #119133
- Bump sentry-protos to 0.41.0 by @armcknight in #119143
- Remove dead overage-warning banner code by @noahsmartin in #118977
- Derive checkout categories on the frontend by @noahsmartin in #118785
- Added snapshot tests for billing details widget(REVENG-245) by @krithikravi in #118260
- Bumped sentry-protos version to 0.31.2 by @krithikravi in #117842
Billing Platform
- Bump sentry-protos 0.44.2 by @brendanhsentry in #119730
- Bump sentry-protos 0.44.1 by @brendanhsentry in #119644
- Bump sentry-protos 0.37.1 by @brendanhsentry in #118773
Cells
- Drop category filter from get_cells / get_cell_name by @lynnagara in #118070
- Updates error-embed URL to point to control by default by @GabeVillalobos in #118056
- Remove unused find_all_multitenant_cell_names function by @lynnagara in #117875
- Deprecate cells category by @lynnagara in #117844
- Remove
categoryfrom CellConfig by @lynnagara in #117558
Codeowners
- Add dashboards as owner of static/app/utils/dashboards by @DominikB2014 in #118686
- Change the owner of attachments endpoint by @olksdr in #117665
Control
- Remove control callees for Team replication by @strongs in #119647
- Actually DROP ExternalActorReplica by @strongs in #119533
- Pending deletion for dead ExternalActorReplica table by @strongs in #119532
This changelog has been truncated. See the full changelog for all changes.