[pull] master from getsentry:master#1832
Merged
Merged
Conversation
Move IssueSearchQueryException to common exceptions module.
On the monitor list views we are only showing the directly-connected alerts. The detail pages already show the full list including project-connected alerts. This simply adds the functionality to the list view.
Currently the PR creation step is handled in the explorer update endpoint. This meant we had to feature flag it such that it can be used with just autofix-on-explorer. This change brings the PR creation step into the group ai autofix endpoint so that it is centralized in 1 place. It also serves as a place where we'll be able to inject the trailing text to say `FIXES SENTRY-123` in the PR description.
…sponds (#111685) ## PR Summary + Bug reproduction steps: + Open the Explorer chat panel with context engine + Type a message and send it + Watch the chat area — the "Thinking" block appears for a split second, then disappears + For the next 2-3 seconds, only the grey user message bubble is visible with no activity indicator + Eventually the real assistant response appears + **Bug root cause:** When a user sends a message, the frontend shows an optimistic "Thinking..." assistant block immediately. The backend acknowledges the user message synchronously and returns, then enqueues a Celery task to run the actual agent. The frontend polls for session updates and detects the server signature has changed (the user block now exists server-side), which triggers the optimistic clearing logic. But at this point the Celery worker hasn't produced an assistant block yet — so the "Thinking" block disappears and the UI shows just the grey user message with no activity indicator for 2-3 seconds until the worker responds. + **It's there on regular explorer too but it's worse with context engine:** The Celery worker runs context retrieval synchronously before starting the main explorer agent. With context engine enabled, this includes an additional LLM call (via domain_context stage) on top of Sentry docs retrieval and org-project embedding lookups. This adds 2-3 extra seconds of processing before any assistant block is produced, making the "dead" UI gap much more noticeable. + **Fix**: Instead of clearing optimistic state on any signature change, the effect now checks whether the server actually has an assistant response block at or after the insert index. The "Thinking" block persists until either:A real assistant block appears in the polled data, or A 30-second safety timeout expires (in case the Celery worker fails entirely) --------- Co-authored-by: Claude Opus <noreply@anthropic.com>
…11715) This is a forward compatibility step. By wrapping the raw response with the data key we can add more keys later to communicate more information (if needed) without breaking existing callers. I decided to add the headers to the raw response for completeness.
Contain the traces table scroll area inside the panel and switch the table layout to Scraps layout primitives. The overflow regression came from the traces table content escaping its panel boundary when the table needed horizontal scrolling. This keeps the scrollable area inside the panel while preserving the existing table structure. Also replaced the custom grid wrapper and header styling with `Container`, `Grid`, and a scoped header wrapper so the layout is expressed directly in the component tree. That makes the overflow behavior easier to reason about and avoids depending on a bespoke styled grid container. Refs EXP-845 Made with [Cursor](https://cursor.com)
… ame message (#111721) + When a user rethinks and re-sends the same message, the clearing effect was matching stale pre-truncation server blocks, causing deleted blocks to briefly reappear and the thinking indicator to vanish. Store the session updated_at as a baseline when setting optimistic state and skip the clearing effect until the server has actually processed the request. + Was introduced when fixing another bug in this PR: #111685 Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
As noted in #110842 (comment), we have a lot of very similar drag-to-reorder buttons. This extracts a shared `DragReorderButton` component for all of them. One notable change: `style={{cursor: 'grab'}}` was only added in one existing component, under rules/uptime/assertions. Now it's in the shared one. ~I'm checking with design today and we might end up changing it - but I don't think the single cursor style should block review.~ Confirmed we prefer the grabby one. Fixes EXP-856
Add a generic API-mode step that handles the full OAuth2 authorization code flow in a single step: returns the authorize URL for the frontend to open in a popup, then accepts code/state from the trampoline callback and exchanges it for an access token. Includes a configurable bind_key for controlling where token data is stored in pipeline state. Refs VDY-37
…ines (#111539) Add a new REST endpoint that allows driving integration pipelines via JSON API requests instead of the legacy redirect-based flow. The endpoint supports initializing a pipeline (POST with action=initialize), retrieving the current step info (GET), and advancing through steps (POST with step-specific data). Uses ControlSiloOrganizationEndpoint as the base class since integration models live in the control silo, requiring the RPC service layer to resolve organizations from slugs. The endpoint rejects pipelines that don't support API mode with a 400, and returns structured errors for invalid providers, missing sessions, and unsupported pipeline names. Refs VDY-36 Requires #111454 --------- Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
…ty (#111717) The dropdown menu renders in a React portal, so its DOM lives outside the row. This adds a DOM containment check: before toggling, verify `event.currentTarget.contains(event.target)`. Portal-originating events fail this check since their DOM subtree is separate from the row's. Fixes LOGS-638 Made with [Cursor](https://cursor.com)
Add pretty-printing for JSON attribute values in the logs attributes
tree.
String attribute values that contain valid JSON (`{` or `[` that pass
`JSON.parse`) are now rendered using `StructuredEventData` instead of
plain text, providing a collapsible, syntax-highlighted tree view.
Simple JSON where all values are primitives (e.g. `{"boop": "bop"}`)
renders compactly inline via CSS overrides, while nested structures get
the full expandable tree with toggle buttons. The styled wrapper also
resets `<pre>` default margins to keep the tree row grid layout properly
aligned.
<img width="833" height="425" alt="Screenshot of logs with object and
array attribute values syntax-highlighted"
src="https://github.com/user-attachments/assets/8ad56817-da1f-44cb-83e8-829a63c1d4dc"
/>
Fixes LOGS-400
Made with [Cursor](https://cursor.com)
…ma workflow (#111720) <!-- Describe your PR here. --> We added the new default rulesets that requires all commit to go through PRs and that breaks this workflow. Added the following changes to fix it - created a new dedicated github app for this - added the github app to allowlist in the ruleset - update the workflow to use the new github app instead of `getSantry` - added the app-id and private key through org secrets and variables - replaced `getsentry/action-github-app-token` with `actions/create-github-app-token` so that we have options to control the repo scope of the short-live token - update the git commit info to use the github app
Refs [VDY-32: Migrate integration setup pipelines to API-driven flows](https://linear.app/getsentry/issue/VDY-32/migrate-integration-setup-pipelines-to-api-driven-flows)
…binedRuleIndexEndpoint.get (#111692) The JIT is expensive and being used when we don't need it. We can try to work around it or restructure the query to avoid the jit threshold, but just scoped disabling gets us exactly what we want. I've confirmed the JIT impact by analyzing sample queries and observing that the vast majority of the time is spent in JIT, but with JIT disabled the query is much faster. Demo at https://redash.getsentry.net/queries/10853 I've also confirmed in traces that this query is consistently slow (280ms-450ms) and issued twice per request. NB: The workflow engine variant of this endpoint isn't yet released, so the risk here should be quite low.
#111660) Replaces the raw source ID (`preprod-size-analysis:4510398352719872`) in Slack alert notifications from size analysis monitors with a structured, human-readable single-line evidence display. **Before:** ``` preprod-size-analysis:4510398352719872 State: New First Seen: Just now ``` **After:** ``` Install Size, Absolute Diff > 1.0 MB (+1.0 MB) ``` More examples: ``` Uncompressed Size, Relative Diff > 5% (+5.1%) # Android Download Size, Absolute Size > 50.0 MB (52.3 MB) # absolute threshold ``` Changes: - Build a single-line evidence string in `create_occurrence()` with format: `{measurement}, {threshold_type} > {threshold} ({actual_value})` - Platform-aware labels: "Uncompressed Size" for Android, "Install Size" for iOS - Set `notification_config` with `context=[]` and `text_code_formatted=False` to remove meaningless Events/Users/State/First Seen context and code formatting - Extract `format_bytes_base10` to shared `preprod/utils.py` for reuse refs eme-984 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
I didn't realize you already could filter by detector type so this PR just documents it better and adds a test to make sure filtering by `type:issue_stream` works.
) Closes FS-228. ### Legal Boilerplate Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. and is gonna need some rights from me in order to utilize my contributions in this here PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.
This check already exists on the frontend, no need to check it twice. This also lets us use to for non seat based seer plans.
Emit some metrics for when explorer autofix is triggered along with referrers so we know what triggered it.
once this is deployed everywhere we can update the dispatch code to send the new name also updated agent instructions around celery and taskworker deploy safety
This flag isnt used anymore.
) Issue: https://sentry.sentry.io/issues/5865067343/?project=1&query=is%3Aunresolved&referrer=issue-stream&statsPeriod=7d This PR addresses the `seer.delete_grouping_records.project.failure` errors, which saw a significant spike recently. The root cause was a mismatch in how Sentry was calling the Seer API endpoint for deleting grouping records by project (`/v0/issues/similar-issues/grouping-record/delete`). Specifically, two issues were identified: 1. **Incorrect HTTP Method**: Sentry was sending a `POST` request, while the Seer endpoint was defined as a `GET`. 2. **Incorrect Parameter Location**: Sentry was sending the `project_id` in the request body, but Seer expected it as a **path parameter** (e.g., `/v0/issues/similar-issues/grouping-record/delete/{project_id}`). This change updates the `make_delete_grouping_records_by_project_request` function in `src/sentry/seer/signed_seer_api.py` to: * Use the `GET` HTTP method. * Construct the URL with the `project_id` included as a path parameter. * Send an empty body, as `GET` requests typically do not carry a body. This fix ensures that Sentry correctly communicates with the Seer service for project grouping record deletions, resolving the 404 errors and allowing these background tasks to complete successfully. Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com>
If legacy autofix has run, we should at least auto trigger explorer autofix to run root cause.
introduce config that isn't used yet. once this config is set in prod, we can flip usages in the codebase
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 : )