Skip to content

[pull] master from getsentry:master#1853

Merged
pull[bot] merged 18 commits into
KingDEV95:masterfrom
getsentry:master
Apr 7, 2026
Merged

[pull] master from getsentry:master#1853
pull[bot] merged 18 commits into
KingDEV95:masterfrom
getsentry:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 7, 2026

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 : )

Migrates the personal API tokens settings pages (`apiNewToken.tsx` and
`apiTokenDetails.tsx`) from the deprecated `ApiForm`/`Form`+`FormModel`
system to the new `useScrapsForm` + `fetchMutation` pattern, consistent
with the org auth tokens implementation.

**What changed:**

- `apiNewToken.tsx`: replaces the deprecated `ApiForm` wrapper with
`useScrapsForm` + `useMutation`/`fetchMutation`. Permissions remain
local `useState` — scopes are derived via `permissionStateToList` at
submit time rather than through the old form model's `scopes` field. The
disabled `TextareaField` preview becomes a read-only `FieldGroup`.
- `apiTokenDetails.tsx`: replaces `Form` + the `useMutateApiToken` hook
with `useScrapsForm` + an inline `useMutation`. Read-only fields (token
preview, scopes) move from disabled `TextField`/`FieldGroup` to plain
`FieldGroup` with a `<div>`, matching the org tokens pattern. Query
cache updates are preserved.
- `permissionSelection.tsx`: exports `permissionStateToList` so callers
can compute the full hierarchical scope list independently; guards
`this.context.form?.setValue` with optional chaining so the component
works outside a legacy `FormModel` context tree.
- Deletes `useMutateApiToken.tsx` — no remaining consumers after the
details page migration.
- Expands test coverage: adds success modal appearance, API error
handling, initial render state (name/preview/scopes), and fetch error
state; renames the misnamed `describe('ApiNewToken')` block in the
details spec.

Fixes DE-965
Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Priscila Oliveira <priscila.oliveira@sentry.io>
@pull pull Bot locked and limited conversation to collaborators Apr 7, 2026
@pull pull Bot added the ⤵️ pull label Apr 7, 2026
@github-actions github-actions Bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Apr 7, 2026
priscilawebdev and others added 2 commits April 7, 2026 06:55
Remove `overflow: hidden` from `StepDetails` in the `GuidedSteps`
component.

### Background

`StepDetails` is a grid item in a `34px 1fr` layout. When content inside
it (like a code block with long lines) had a large intrinsic width, it
would push past its `1fr` column and break the layout on small
viewports. To prevent this, `overflow: hidden` was added — it worked,
but it also clipped everything that extended beyond the container
bounds, including focus rings on form elements (which use `box-shadow`
in Sentry's design system):

<img width="427" height="241" alt="image"
src="https://github.com/user-attachments/assets/f693c434-1027-4237-b643-52d974f94897"
/>


### What happened

On **Mar 25**, Evans noticed the clipping issue and removed `overflow:
hidden` in #111462. But without it, content started overflowing on small
screens again, so on **Mar 27** it was reverted in 939e726.

Then on **Mar 31**, Lazar landed #111657 which added `min-width: 0` to
`StepDetails` to fix a code block overflow issue in the Metrics
onboarding. Since the revert had already restored `overflow: hidden`,
the overflow was no longer visible — but `min-width: 0` was still the
right addition, and it also happens to solve the clipping issue, since
it lets the grid item respect its track width without needing to clip
its contents.

### This PR

Now that `min-width: 0` handles the overflow problem, `overflow: hidden`
is redundant and can be safely removed — finishing what Evans started in
#111462.


closes
https://linear.app/getsentry/issue/DE-1048/stepper-overflow-hidden-clips-focus-rings

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Apr 7, 2026
chromy and others added 15 commits April 7, 2026 12:37
…#112337)

Remove the unused `PreprodStaticGroupType` (type_id 11001) and
`PreprodDeltaGroupType` (type_id 11002) group types. Neither class was
referenced anywhere in the codebase. The `grouptype.py` module is
retained for its side-effect import of
`sentry.preprod.size_analysis.grouptype`.

Agent transcript:
https://claudescope.sentry.dev/share/TB-Jn6n67lNj6NQ-Hu4JOrlbup4fW28mdJdywsxjyoY
Removes the pattern of passing `delay={0}` / `displayTimeout={0}` in
specs: for _opening_ hover overlays immediately. That's now done
automatically in `useHoverOverlay` when `NODE_ENV === "test"`. This way
we don't need to manually create & pipe zero-value delay props around
various components.

Note that _closing_ timing is unchanged. That way any triggers to portal
content / async events still have a grace period in tests.

A few seemingly-unrelated tests had to be updated to account for
overlays now suddenly being available. I think this is good, actually,
because they previously were relying on timed opening not having
happened yet. See 92f3779.

Fixes ENG-7208. Fixes ENG-7211. Fixes ENG-7212.

Supersedes #111926, #111928, #111929, and #112004.
…s to apiOptions (#112347)

as discussed in last week’s TSC, we need to start moving endpoints over
to `apiOptions` so that we can re-use caches.

the quickest win would be to implement `useApiQuery` with `apiOptions`
internally, and to get there, we need to migrate endpoints that now need
`getResponseHeader` over to `apiOptions` because those headers are
exposed differently.

this PR takes the first couple of endpoints that are (mostly)
self-contained (no other usages of the url found) and moves them over.

I’ve also exposed `selectJsonWithHeaders` because the default impl only
selects `json` without `headers`.

I plan to tackle the other occurrences with an endpoint-by-endpoint
approach, as we need to identify all places where an endpoint is used
(e.g. `invalidateQueries` or `getApiQueryData` or `setApiQueryData`) and
migrate them together.
…okens (#111956)

To be able to do equations using series, we need to be able to support
UI that will allow us to reference other series definitions. To do this
I've added a `REFERENCE` token type which will be used in conjunction
with an argument passed in, `references`, which determines the available
references.

This required me to update the grammar, validators, and tokenizer to
have the right check for this "references" condition (i.e. if it's not
in the set, it's not a reference and it will fall back to free text)

The changes also follow closely to the code path for functions, so
places where it checks for functions as valid terms should also check
for references. These are used to update things like the autoformatting
and cursor placement when switching from freetext to a reference token.

I also changed some of the internals for how we handle
`static/app/components/arithmeticBuilder/action.tsx` because I want the
expression to be able to re-evaluate if the references change. If a
reference is removed, the equation should also update and render the old
reference as free text.

Since there's no UI using this at the moment, I've opted to render it in
Storybook
This PR refreshes the continue scanning logs experience to really call
out to users that they're able to continue scanning for more data, as
the previous setup was a bit harder to read.

Refs LOGS-644

---------

Co-authored-by: GPT-5.4 <noreply@openai.com>
Just adding in the content sections, no real functionality yet just
getting the layout set up.
Also added in an empty schema hints so i remember to fill it in along
with the search bar when possible💀

<img height="400" alt="image"
src="https://github.com/user-attachments/assets/0e8c1097-9f97-4399-9182-ecc456192b98"
/>
Remove dead profile insertion code (unused since
#102210; insertion now handled
by vroomrs) and the dead `_ProjectKeyKwargs` struct (unused since
#81957).
Register PREPROD in the shared `INTERNAL_TO_PUBLIC_ALIAS_MAPPINGS`
infrastructure so the EAP attributes endpoint translates
`has_installable_file` → `installable`. This makes the `installable`
boolean filter appear in the mobile builds search bar dropdown on the
Distribution view.

Previously, the PREPROD trace item type had no entry in the alias
mapping dicts in `search/eap/utils.py`, so
`translate_internal_to_public_alias()` returned the raw internal name
`has_installable_file`. The frontend `filterToAllowedKeys()` then
couldn't match it against the allowlist (which expects `installable`),
so the attribute was silently filtered out.

The mapping dict is built dynamically from
`PREPROD_SIZE_ATTRIBUTE_DEFINITIONS`, so any future aliased PREPROD
attributes will automatically be included.

Refs EME-868

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…tings (#112232)

This brings in the stopping-point dropdown to the project-specific seer
settings page

Follows: #112211

There's still more to cleanup in here, but we're well on the way.

<img width="960" height="383" alt="SCR-20260403-msjw"
src="https://github.com/user-attachments/assets/09b86dd8-6a0e-4bf5-89d9-9cd9d9649f6d"
/>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…bring back Create PR bulk edits (#112249)

<img width="279" height="198" alt="SCR-20260403-oruo"
src="https://github.com/user-attachments/assets/c8b49017-40fe-49ec-aa47-d364ed9b4d8c"
/>

---------

Co-authored-by: Claude Sonnet 4 <noreply@example.com>
We already have logging for `data-export-success`. That success log
includes the user's email, which makes it nice and easy to tell if
someone's data export has succeeded (at least this far in code). But
there's no equivalent log for failure. Which is what @narsaynorath and I
were trying to debug earlier today and having to do all sorts of
log/trace query workarounds for.

Fixes LOGS-673.
Extracts a `formatNumber` helper for the numeric field renderer. It
bypasses `formatFloat` for numbers that have over 13 digits.

Tangentially related:

* #110360
* #110858

Fixes EXP-866.

Co-authored-by: Cursor <noreply@cursor.com>
@pull pull Bot merged commit 7c7bdcb into KingDEV95:master Apr 7, 2026
2 of 4 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull Scope: Backend Automatically applied to PRs that change backend components Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.