-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
refactor(replay) - reduce bottom header #104137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
…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.
❌ 2 Tests Failed:
View the top 2 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
There was a problem hiding this 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
sentry/static/app/components/core/avatar/avatarList.tsx
Lines 165 to 168 in 57bfcdd
| const AvatarStyle = (p: {theme: Theme}) => css` | |
| border: 2px solid ${p.theme.background}; | |
| cursor: default; |
…e for improved layout consistency
|
|
||
| const AvatarStyle = (p: {theme: Theme}) => css` | ||
| border: 2px solid ${p.theme.background}; | ||
| margin-left: -8px; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have you checked the other views that use this component to make sure it doesn't affect their styling?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, good point. i'll move this to a separate PR.
|
|
||
| const StyledBreadcrumbs = styled(Breadcrumbs)` | ||
| padding: 0; | ||
| z-index: 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this needed?
| const getUserSearchQuery = () => { | ||
| if (!replayRecord?.user) { | ||
| return null; | ||
| } | ||
|
|
||
| const user = replayRecord.user; | ||
| // Prefer email over id for search query | ||
| if (user.email) { | ||
| return `user.email:"${user.email}"`; | ||
| } | ||
| if (user.id) { | ||
| return `user.id:"${user.id}"`; | ||
| } | ||
| return null; | ||
| }; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's keep this functionality
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)
There was no good reason why conditional aggregates are in a separate map. Remove it and unify into the same map as all aggregate definitions.
Fixes [ISWF-719](https://linear.app/getsentry/issue/ISWF-719) When user_service.serialize_many() returns None for a deleted , the dict comprehension would crash with: TypeError: 'NoneType' object is not subscriptable The fix filters out None values when building the serialized_users dict. Views with users that can't be serialized will now have createdBy: None instead of crashing the entire endpoint.
updates the issue config for LLM detected issues to allow for Seer features fixes https://linear.app/getsentry/issue/ID-1125/add-issue-summaryautofix-to-issue-config
- 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.
Add more specific tags based on the new run from getsentry/data-analysis#80
- Removing references to eventsv2 - Merges the 2 OrganizationEvents endpoints bases together since there's no reason to separate them anymore
…rebuilt dashboards (#104133)
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.
…layout consistency
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.
|
🚨 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 |
Related to REPLAY-814
before:


after: