Skip to content

Conversation

@jerryzhou196
Copy link
Member

@jerryzhou196 jerryzhou196 commented Nov 28, 2025

…play details

- Removed unnecessary common styles and consolidated styling for platform icons and counters.
- Updated font sizes and weights in replay metadata for better readability.
- Adjusted placeholder dimensions in replay viewers and details user badge for consistency.
- Enhanced layout in replay details metadata and breadcrumbs for improved visual hierarchy.
@linear
Copy link

linear bot commented Nov 28, 2025

@github-actions github-actions bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Nov 28, 2025
@jerryzhou196 jerryzhou196 marked this pull request as ready for review November 28, 2025 19:33
@jerryzhou196 jerryzhou196 requested review from a team as code owners November 28, 2025 19:33
@codecov
Copy link

codecov bot commented Nov 28, 2025

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
42914 2 42912 250
View the top 2 failed test(s) by shortest run time
replayDetailsUserBadge should hide LIVE badge when last received segment is more than 5 minutes ago
Stack Traces | 0.036s run time
Error: expect(received).toBeVisible()

received value must be an HTMLElement or an SVGElement.
Received has value: null
    at __EXTERNAL_MATCHER_TRAP__ (.../sentry/node_modules/.pnpm/expect@30.0..../expect/build/index.js:2237:22)
    at Object.throwingMatcher [as toBeVisible] (.../sentry/node_modules/.pnpm/expect@30.0..../expect/build/index.js:2238:6)
    at Object.toBeVisible (.../detail/header/replayDetailsUserBadge.spec.tsx:305:48)
replayDetailsUserBadge should show LIVE badge when last received segment is within 5 minutes
Stack Traces | 0.067s run time
Error: expect(received).toBeVisible()

received value must be an HTMLElement or an SVGElement.
Received has value: null
    at __EXTERNAL_MATCHER_TRAP__ (.../sentry/node_modules/.pnpm/expect@30.0..../expect/build/index.js:2237:22)
    at Object.throwingMatcher [as toBeVisible] (.../sentry/node_modules/.pnpm/expect@30.0..../expect/build/index.js:2238:6)
    at Object.toBeVisible (.../detail/header/replayDetailsUserBadge.spec.tsx:238:48)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Copy link
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Avatar overlap removed from shared component affects multiple pages

The margin-left: -8px property was removed from AvatarStyle, which eliminates the overlapping effect for avatar lists. This is a shared component used across multiple pages including replay viewers, feedback viewers, dashboards, and the releases page (which has an explicit comment: "used in releases list page to do some alignment"). Since this PR targets the replay header specifically, this change may unintentionally affect the visual appearance of avatar lists across the entire application.

static/app/components/core/avatar/avatarList.tsx#L165-L168

const AvatarStyle = (p: {theme: Theme}) => css`
border: 2px solid ${p.theme.background};
cursor: default;

Fix in Cursor Fix in Web



const StyledBreadcrumbs = styled(Breadcrumbs)`
padding: 0;
z-index: 1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

turns out it is not

AbhiPrasad and others added 12 commits December 1, 2025 18:28
AI Summary going from `10.23.0` -> `10.27.0`.

## Critical Breaking/Deprecation Changes

### 1. **Metrics Now Enabled by Default** (10.24.0)
- Metrics are now **enabled by default** (previously experimental)
- `enableMetrics` and `beforeSendMetric` moved out of `_experiments` to
top-level config
- You can disable with `enableMetrics: false` if needed
- Old `_experiments` metric options are deprecated

### 2. **Browser Profiling Changes** (10.27.0)
- **Transaction-based profiling with `profilesSampleRate` is now
deprecated**
- New **UI Profiling** with `profileSessionSampleRate` is the
recommended approach
- New `manual` lifecycle mode (default) allows manual control:
  ```javascript
  Sentry.uiProfiler.startProfiler()
  Sentry.uiProfiler.stopProfiler()
  ```

## Important Fixes

### 3. **Web Vitals Updated** (10.26.0)
- `web-vitals` bumped to 5.1.0
- May include updated metrics and thresholds for Core Web Vitals

### 4. **Spotlight in Development Bundles** (10.25.0)
- Spotlight debugging tool now included in development bundles
- Helpful for local debugging during development
… dropdown options (#104132)

Filters out prebuilt dashboards from the add to dashboard modal options,
since prebuilt dashboards cannot be edited.
…#104096)

* Show warning when connection is good, but no errors are available
knip got better and finds more stuff now 🙌
…#104097)

* Show warning when connection is good, but no errors are available
<img width="1800" height="130" alt="image"
src="https://github.com/user-attachments/assets/495ea37a-8333-48d3-8588-061557aa248e"
/>

copy feedback as markdown to make it easier to dump into LLM. 

For reviewers, talked this over with @jas-kas and see it as a
low-hanging fruit addition that could be helpful for addressing
individual feedback items
…g access control (#102013)

## Summary

Adds support for **platform-restricted builtin symbol sources** with
organization-level access control.

This enables symbol sources to be restricted to specific platforms
(e.g., console platforms like Nintendo Switch) and only accessible to
organizations with the appropriate console platform access enabled.

**Companion PR**:
[getsentry/getsentry#18867](getsentry/getsentry#18867)
- Defines the Nintendo symbol source configuration (credentials, bucket
settings, etc.)

## Changes

### Platform Filtering for Builtin Sources API
-
**[builtin_symbol_sources.py](src/sentry/api/endpoints/builtin_symbol_sources.py)**:
Add platform-based filtering
  - Filter sources by `platform` query parameter
- Check organization's `enabledConsolePlatforms` access for restricted
sources
  - Backward compatible (works without platform parameter)

### Default Symbol Sources Enhancement
-
**[default_symbol_sources.py](src/sentry/api/helpers/default_symbol_sources.py)**:
Enhanced helper for platform-specific defaults
  - Added `nintendo-switch` platform mapping to `nintendo` source
  - Check platform restrictions and org access before adding sources
  - Organization auto-fetched from project if not provided

### Shared Utility
- **[console_platforms.py](src/sentry/utils/console_platforms.py)**: New
utility module
- `organization_has_console_platform_access()` - checks if org has
access to a console platform
  - Used by both builtin sources endpoint and tempest utils

### Schema Update
- **[sources.py](src/sentry/lang/native/sources.py)**: Add `platforms`
field to source schema

### Refactoring
- **[tempest/utils.py](src/sentry/tempest/utils.py)**: Refactored to use
shared `organization_has_console_platform_access` utility
- **[team_projects.py](src/sentry/core/endpoints/team_projects.py)**:
Pass organization to `set_default_symbol_sources()`

## How It Works

### Platform Restrictions

Sources can include a `platforms` key to restrict visibility:

```python
"nintendo": {
    "type": "s3",
    "platforms": ["nintendo-switch"],  # Only visible to nintendo-switch projects
    # ... other config (defined in getsentry)
}
```

**Two-layer filtering:**
1. **Platform match**: Request's platform must match source's
`platforms` list
2. **Org access**: Organization must have platform in
`enabledConsolePlatforms`

### Default Symbol Sources

```python
DEFAULT_SYMBOL_SOURCES = {
    "electron": ["ios", "microsoft", "electron"],
    "unity": ["ios", "microsoft", "android", "nuget", "unity", "nvidia", "ubuntu"],
    "unreal": ["ios", "microsoft", "android", "nvidia", "ubuntu"],
    "godot": ["ios", "microsoft", "android", "nuget", "nvidia", "ubuntu"],
    "nintendo-switch": ["nintendo"],
}
```

## Test Plan

- [x] Unit tests pass
- [x] Pre-commit hooks pass
- [x] Mypy type checking passes
- [x] Verify Nintendo Switch project in enabled org sees the source
- [x] Verify Nintendo Switch project in non-enabled org does NOT see the
source
- [x] Verify non-Nintendo projects never see the source
- [x] Verify public sources still visible to all platforms
- [x] Verify API works without platform parameter (backward
compatibility)

---------

Co-authored-by: Priscila Oliveira <priscilawebdev@gmail.com>
Co-authored-by: Sebastian Zivota <loewenheim@users.noreply.github.com>
This type was added as a clutch at the time but doesn't seem necessary
anymore.
…s-enhanced` and `api.insights.landing-table.metrics-enhanced.primary` (#102122)

Closes getsentry/self-hosted#4003

Co-authored-by: Hubert Deng <hubert.deng@sentry.io>
Display onboarding instructions for full stack JS platforms.

- part of [TET-1469: Enable more platforms for Agent and MCP
monitoring](https://linear.app/getsentry/issue/TET-1469/enable-more-platforms-for-agent-and-mcp-monitoring)
roggenkemper and others added 25 commits December 1, 2025 18:28
- When the start and end of the query wasn't aligned the page would
error since the bucket check wouldn't match since ms were being
included. This removes ms from the start/end during this check to
resolve the issue
unused, saves bandwidth. Can be easily added back later w the dict value
format
Updated version of getsentry/getsentry#18880

1 pager with table info:
https://www.notion.so/sentry/1-Pager-AI-Code-Review-Sub-Spec-2a98b10e4b5d80e29737f9c58f54efb9

Adds a new table that will hold all of the OrganizationContributors for
a particular sentry org / integration_id combo.

If a user belongs and/or swaps to a separate Github org or sentry org,
there will be a separate entry for that individual.

num_actions gets updated every time a successful seer request occurs,
and num_actions gets cleared at the start of every billing period

Closes
https://linear.app/getsentry/issue/ENG-5929/create-organizationcontributors-table


<!--

  Sentry employees and contractors can delete or ignore the following.

-->

### 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.
…3389)

to be merged whenever we want to GA replay summaries (only for web). to
be merged with getsentry/sentry-docs#15523

<img width="479" height="148" alt="SCR-20251114-kdnc"
src="https://github.com/user-attachments/assets/7a7c030c-9980-43f8-b214-bad6729dc686"
/>
…104080)

## PR Details
+ Swaps out the [triage signals project level
flag](https://github.com/getsentry/sentry-options-automator/blob/77e0a654311dbc56c5528b655a12ecc5261755c4/options/default/flagpole.yaml#L3229)
for the [triage signals org level
flag](https://github.com/getsentry/sentry-options-automator/blob/77e0a654311dbc56c5528b655a12ecc5261755c4/options/default/flagpole.yaml#L3242).
This is so the we can run it dogfood it at the org level - more uns,
more potential edges cases, etc.
+ The project level flag was just for the Seer project and the org level
flag is for the Sentry org where Seer is one of the projects.
+ I have a frontend settings PR that I will merge after this one -
#104082
In testing the limit param for this request was flakey, but @kylemumma
confirmed this is now completely supported for prod + local
Optimization for a suboptimal query 😅. As noted in TODOs these are
needle-in-the-haystack scans subject to improvement, this just scans
backwards in hopes most traces explorer looks at are new
imo, I didn't bother with feature-flagging this it's simple
Only do special extrapolation mode for count based alerts since
thats where thresholds will matter.
> this is an associated PR for REPLAY-814, which implements a reduced
forehead replay UI, and moves in the direction of @Jesse-Box's vision
for unifying the flow between Replay Details and Span Waterfall

before
<img width="1717" height="136" alt="Screenshot 2025-11-26 at 3 43 24 PM"
src="https://github.com/user-attachments/assets/5064897d-aa7f-47b5-9ac0-f13306d66864"
/>

after
<img width="1719" height="133" alt="Screenshot 2025-11-26 at 3 43 15 PM"
src="https://github.com/user-attachments/assets/85b1080b-6b2c-4be2-90a1-bbb929502b23"
/>
This enables support for querying multiple different metrics in the same
query. It's still not possible to query all metrics and 1 specific query
in the same query but that's not important right now.
- Removing references to eventsv2
- Merges the 2 OrganizationEvents endpoints bases together since there's
no reason to separate them anymore
New styling for the cluster cards. Some notable
differences/justifications:
- deemphasize issue count
- use new tags
- remove fixability score from UI (still used for sorting + filtering)

New:
<img width="589" height="437" alt="Screenshot 2025-12-01 at 1 42 26 PM"
src="https://github.com/user-attachments/assets/c5de20e2-a40f-4cf7-b19b-b3c9a87b21e0"
/>

Old:
<img width="607" height="348" alt="Screenshot 2025-12-01 at 1 42 44 PM"
src="https://github.com/user-attachments/assets/8ffff8ae-4967-484b-8fee-bbb7b75d392f"
/>
Filter out `None` values during combined rule serialization - these are
hitting exceptions during the individual serialization and returning
`None` in the [base
serializer](https://github.com/getsentry/sentry/blob/master/src/sentry/api/serializers/base.py#L120-L122),
mainly due to RPC failures looking up related integrations. It's better
to at least return what we can rather than error completely.

Fixes SENTRY-5E0V
Follow up to #103764 - once the
migration is complete we can remove the temporary logic to support the
incorrect case.
Actually implements some of the changes from
#104197
Unskip a test that was marked flaky due to incorrect redis state during
tests. The inconsistent redis state has been corrected and this test
should be stable again.

Refs INFRENG-210
… context

This change introduces a new styled component, RelativeText, to ensure proper stacking context for tooltips in the ReplayBadge component. The Text component has been replaced with RelativeText to achieve this functionality.
This commit refactors the Replay components to utilize a new `linkQuery` structure for generating navigation paths. The changes include updates to the `ReplayPreviewPlayer`, `ReplayTable`, and `ReplayDetailsUserBadge` components, enhancing the way queries are constructed for replay navigation. This improves code consistency and prepares for future enhancements.
@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Dec 1, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 1, 2025

🚨 Warning: This pull request contains Frontend and Backend changes!

It's discouraged to make changes to Sentry's Frontend and Backend in a single pull request. The Frontend and Backend are not atomically deployed. If the changes are interdependent of each other, they must be separated into two pull requests and be made forward or backwards compatible, such that the Backend or Frontend can be safely deployed independently.

Have questions? Please ask in the #discuss-dev-infra channel.

@jerryzhou196
Copy link
Member Author

sorry gang

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.