[pull] master from getsentry:master#1839
Merged
Merged
Conversation
…110979) - Remove rule hash function - Remove constants - Remove all methods on custom dynamic sampling rules before removal of the model Contributes to TET-1957
) ## Summary - Change unique constraint on `RepositoryProjectPathConfig` from `(project, stack_root)` to `(project, stack_root, source_root)` - Update single-mapping serializer validation to include `source_root` in duplicate check - Update bulk endpoint upsert key to match on `(stack_root, source_root)` instead of just `stack_root` This allows the same stack trace root (e.g. `io/sentry/opentelemetry`) to map to multiple source paths in the repo (e.g. `sentry-opentelemetry-core/src/...` and `sentry-opentelemetry-bootstrap/src/...`), which is needed for monorepos with shared package prefixes across modules. Stack trace resolution already handles this correctly — it iterates all mappings sorted by specificity and uses the first match that resolves to a real file. ## Test plan - [x] All 63 existing tests pass (bulk + single endpoints) - [x] Updated tests to reflect new constraint semantics - [ ] Deploy migration and verify with real monorepo upload 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…11824) Removes some of the old custom styles in favor of our [standard Scraps transparent Button](https://sentry.sentry.io/stories/core/button/#priorities). <table> <thead> <tr> <th>Before</th> <th>After</th> </tr> </thead> <tbody> <tr> <td> <img width="1514" height="314" src="https://github.com/user-attachments/assets/2ff4fcf2-a6ec-4791-8b47-8c2c692320ae" /> </td> <td> <img width="1514" height="314" src="https://github.com/user-attachments/assets/8499f706-1eff-4947-a76c-7b41b441733a" /> </td> </tr> </tbody> </table> Fixes EXP-860 Made with [Cursor](https://cursor.com)
…111730) Add inline syntax highlighting for JSON embedded within log attribute values in the expanded attribute tree view. Previously (LOGS-400), only attribute values that were *entirely* valid JSON got pretty-printed with `StructuredEventData`. Values like `This is my JSON: {"it": "would be", "nice": ["to", "highlight"], "this": true}` rendered as plain text. Now, the JSON portion gets Prism-based syntax colorizing inline — keys, strings, numbers, booleans, and punctuation each get their own color — without adding newlines or changing the layout. <img width="838" height="245" alt="Screenshot of a log with a myData field showing syntax-highlighted JSON object" src="https://github.com/user-attachments/assets/7b78bb01-5be9-494e-9010-2008fde3b59c" /> The JSON extraction logic lives in a standalone utility (`extractJsonFromText`) that uses string-aware bracket matching to correctly handle braces inside quoted strings and escape sequences — unlike existing npm packages (`balanced-match`, `extract-json-from-string`) which break on these cases. I intentionally set this up so that it acts like a standalone importable utility. It'd be nifty if we could publish this as its own package... Fixes LOGS-636 Made with [Cursor](https://cursor.com) Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
…typed switch-exhaustiveness-check (#109743) Following up on #109725 (comment): our lint rules that attempt to enforce exhaustive logical handling aren't set up right. We're using ESLint's core rules that are not type-aware and so are actually buggy / problematic: * [`consistent-return`](https://eslint.org/docs/latest/rules/consistent-return): Requires `return` statements to either always or never specify values. This can be thought of as a safety point (never accidentally implicitly returning `undefined`) or a stylistic point (clearly indicating returned values). TypeScript handles the safety point. * [`default-case`](https://eslint.org/docs/latest/rules/default-case): Requires `default` cases in `switch` statements. This doesn't factor in type information for union types, resulting in a need to add a `default` even if the `switch` is already exhaustive or (e.g. for finite unions) or cannot be (e.g. for primitive types). This PR switches from them to the type-aware [`@typescript-eslint/switch-exhaustiveness-check`](https://typescript-eslint.io/rules/switch-exhaustiveness-check). That rule knows to only enforce asking for handling all cases when the `switch` is over a union type. In other words, for a `switch (value)`, if a `value` is... * `string`: nothing will require a `default:` * `"a" | "b"`: then if there isn't both `case "a":` and `case "b":`, there will need to be `default:`
Implement get_file() in PerforceClient using p4 print to fetch file contents from the depot. This enables the SCM source context feature to display inline code in stack traces for Perforce-hosted projects. Converts P4Exception to ApiError(404) so the source context caller handles errors consistently with other integrations. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This fixes a cleanup bug when conditionally rendered fields have their own field level validations --------- Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
StepDetails in GuidedSteps is a grid item in a `34px 1fr` grid layout. The default `min-width: auto` allows it to expand beyond the 1fr column when content (like a code block with long lines) has a large intrinsic width. This caused the *Metrics* onboarding step 2 to overlap the adjacent preview column. Adding `min-width: 0` lets the grid item respect its track size, so the code block's existing `overflow-x: auto` produces a horizontal scrollbar instead of breaking the layout. ## Before <img width="1090" height="861" alt="image" src="https://github.com/user-attachments/assets/2db9ba64-0424-4a25-a0e1-628fb25e1c12" /> ## After <img width="1087" height="924" alt="image" src="https://github.com/user-attachments/assets/ff638a44-c615-48fe-9d6e-5949f81279f0" /> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ails (#111815) The dashboards list page was forwarding its query parameters (`sort`, `filter`, `query`) through to dashboard detail page links. When navigating from the list to a specific dashboard, these list-page-specific params would appear in the detail URL, which could interfere with the dashboard's own filter handling (e.g., saved global filters). These query params aren't really used in dashboard details, and has potential to mess up the state of certain widgets that might confuse these params Removes query param forwarding from: - `DashboardGrid` card links - `DashboardTable` name links - `onCreate`, `loadDashboard`, and `onPreview` navigation in the manage index Fixes DAIN-1432 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…#111793) there was an issue in dashboards where a numeric literal in the equation would not fully register and only the first character would register. This is because the number was only committed on enter. We want the number to be committed on blur as well because only committing on enter is not intuitive. This left some widgets to not be saved properly (which sucks). Ticket will be linked by linear for more context.
These options will be unused and are good to be unregistered.
#111811) When all artifacts for a commit are filtered/skipped by project settings, the status check task returned early without updating any previously posted IN_PROGRESS check on GitHub. This left checks stuck as `in_progress` forever. Confirmed in production: artifact uploads would initially post an IN_PROGRESS check (before the filter decision), then a subsequent task invocation would see all artifacts as SKIPPED and hit the early return at `tasks.py:256-261` — never updating the check to a terminal state. Now the `all_skipped` branch posts a NEUTRAL completed check with a "Size analysis skipped" message and a link to configure status check rules, matching the existing pattern for the no-quota case. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
It's the second time we have a bypass of this organization setting which allowed for code gen, new branches, and new PRs. Fixing this upstream in chokepoints rather than in all the endpoints since RPC callbacks, on-complete hooks, and slack flows lacked enforcement too. Added check to: - coding_agent.py launch_coding_agents_for_run() - autofix_agent.py trigger_coding_agent_handoff() - autofix.py update_autofix() - SeerExplorerClient.push_changes() - group_autofix_update.py & organization_seer_explorer_update.py to inspect payload_type and request.data type to 403 when appropriate Plus a bunch of tests
The autofix endpoint has some special handling of PR creation for issue groups so we want to use that instead of the generic explorer update endpoint. Specifically, it'll append `Fixes ISSUE-123` to the end of the PR description so the issue is linked back to the sentry issue.
The type field is unnecessary as we can already discriminate on the `to`, `onAction` and the presence of children
This PR modifies the use of Layout.Page to something that is defined at
the root layout level as opposed to the route level.
This is done because a) folks were not aware they should use it, and we
never enforced it and b) the page frame design comes with design
opinionation which requires us to lock this down.
Because some designs were restyling the layout to hide the footer, the
actual location of the footer in the DOM order had to be moved, which
enables us to temporarily preserve the functionality before entirely
removing the footer from the DOM (pending page-frame release)
In other cases where Layout.Page was used, the usage had been converted
to `<Stack flex={1} padding={withPadding ? ... : undefined>` which
preserves the initial styling previously provided by Layout.Page
component
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Priscila Oliveira <priscila.oliveira@sentry.io>
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 : )