[pull] master from getsentry:master#1815
Merged
pull[bot] merged 16 commits intoKingDEV95:masterfrom Mar 23, 2026
Merged
Conversation
Sort spans by `start_timestamp` instead of `end_timestamp` in the conversation hook so the AI Spans list displays spans in the order they began. The Messages panel is unaffected because `extractMessagesFromNodes` applies its own internal sort by `end_timestamp`. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ct the SCM type from the provider's capabilities (#111113) - API is compatible so minimal test coverage changes. - The static facade really helped in keeping the test coverage simple. - The static facade seems to have helped in the RPC too. - Catching AttributeErrors and re-routing to the client to handle. This is a little broad ATM. I'd like to only catch attribute errors triggered by provider/action mismatches.
- Remove `project_template_detail.py` and `project_template_option.py` from the `create_or_update` allowlist in `test_no_create_or_update_usage.py` - These files no longer exist in the codebase Part of the ongoing effort to deprecate and remove the legacy `create_or_update` in favor of Django's `update_or_create`.
#109238) ## Summary - Adds `SeerOperatorExplorerCache` class to `cache.py`, keyed by `run_id` with 1-hour TTL - Simpler than the Autofix cache (no pre/post migration) since Explorer receives a `run_id` directly from the trigger call - Adds `OPERATOR_CACHE_SET_EXPLORER` and `OPERATOR_CACHE_GET_EXPLORER` metric interaction types - Adds tests for cache key format, set, get, and cache miss ISWF-2024 --------- Co-authored-by: Leander Rodrigues <me@leander.xyz> Co-authored-by: Claude <noreply@anthropic.com>
… events tracing (#111093) Implements double reads of occurrences from EAP for the errors query in `query_trace_data` in `src/sentry/api/endpoints/organization_events_trace.py`.
…111191) Wrap the KafkaProducer with a SingletonProducer. The SingletonProducer keeps producer buffers smaller (1000 vs 10000) and ensures that produce buffers are drained during shutdown.
…erer (#109317) ## Summary - Adds `SeerExplorerResponse` dataclass and `SeerExplorerResponseTemplate` to the notification platform for Explorer completion data - Adds `SEER_EXPLORER_RESPONSE` to `NotificationSource` enum and source map - Adds `_render_explorer_response()` to `SeerSlackRenderer` — renders a section block (summary or default text) with a "View in Sentry" link button - Wires the new data type into the `SeerSlackRenderer.render()` dispatch ISWF-2025 --------- Co-authored-by: Leander Rodrigues <me@leander.xyz> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Claude Opus 4.6 <noreply@example.com>
Defense in depth and save us from loading data in memory we don't need. The group_id param is (indirectly) user controlled since seer pulls those issue IDs from PR descriptions. _group_by_short_id scoped the organization, but the ID path didn't have an org filter. We have a post-query check so i's already not a problem in the response, but there's no reason to query for this at all when we can pre-filter. Prevents loading that data in memory and makes both paths consistent.
## Summary
- Replace `create_or_update` with Django's `update_or_create` in 7 API
endpoint files
- Remove migrated files from the `create_or_update` allowlist
- Parameter mapping: `values={}` → `defaults={}`, filter kwargs
unchanged
Migrated files:
- `organization_pinned_searches.py` — return value ignored
- `prompts_activity.py` — return value ignored
- `organization_unsubscribe.py` — return value ignored
- `organization_recent_searches.py` — `[1]` index → `_, created` tuple
unpack
- `group_index/update.py` — 2 call sites: manager method + standalone
function call
- `organization_group_search_view_visit.py` — return value ignored
Part of the ongoing effort to deprecate and remove the legacy
`create_or_update` in favor of Django's `update_or_create`.
…onfigs (#111291) Ensure all prebuilt dashboard widgets with `legendType: 'breakdown'` have a limit of 3, so broken out legends show a maximum of 3 items. This is just for consistency Fixes DAIN-1380 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…1293) Only require `autofix-on-explorer` to start automations as not all orgs will have `seer-explorer`.
…roupBy (#111245) Extract the inline logic that matches time series data to table rows in the breakdown legend into a dedicated `matchTimeSeriesToTableRow` function with tests. Tested with following dashboards <img width="1298" height="728" alt="image" src="https://github.com/user-attachments/assets/3d58d931-ab3b-4397-bba6-9a87a4703a63" /> The new implementation uses `groupBy.every()` to match all groupBy keys, enabling legend breakdown for widgets with multiple group-by columns. It also handles type coercion between numeric table values and string groupBy values (e.g., `http.response_status_code: 200` in the table matching `"200"` from the backend) using Python's `str()` conversion rules. Changes: - New `matchTimeSeriestoTableRow.tsx` with the extracted matching logic and `toPythonString` helper - Tests covering: no groupBy, single groupBy, multiple groupBy, numeric-to-string coercion, no match - Removed the widget builder restriction that disabled legend breakdown for >1 group-by column - Removed unused `aggregates` variable from `visualizationWidget.tsx` Refs DAIN-1387 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Claude Opus 4.6 <noreply@example.com>
…ps (#111285) closes [TET-2129: Agree on where to use the new input output render](https://linear.app/getsentry/issue/TET-2129/agree-on-where-to-use-the-new-input-output-render)
The "Read the docs" link in the GitHub Copilot integration CTA points to `docs.sentry.io/organization/integrations/github-copilot/` which returns a 404. Removes the link from both the installed and not-installed states. The rest of the CTA copy and functionality is unchanged. The link can be re-added once the docs page exists. Agent transcript: https://claudescope.sentry.dev/share/vG5lStfoMBbmZcJ3VliZion_bLqDYH39Gfq96F-HFBA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )