Skip to content

[pull] master from getsentry:master#1825

Merged
pull[bot] merged 18 commits intoKingDEV95:masterfrom
getsentry:master
Mar 26, 2026
Merged

[pull] master from getsentry:master#1825
pull[bot] merged 18 commits intoKingDEV95:masterfrom
getsentry:master

Conversation

@pull
Copy link

@pull pull bot commented Mar 26, 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 : )

getsentry-bot and others added 18 commits March 25, 2026 22:04
…1560)"

This reverts commit 318f192.

Co-authored-by: NicoHinderling <9902528+NicoHinderling@users.noreply.github.com>
Assign commandPalette to frontend-platform and regen baseline file to
fix failing codeowners check on all current branches.
…tor consumer (#111568)

Re-applies the monitor consumer portion of #111464 (reverted in
7e509b5).

The revert was caused by a `pymemcache.HashClient._retry_dead()` race
condition — Django's `CacheHandler` stores connections in a contextvar,
and `copy_context()` caused all worker threads to share a single
non-thread-safe `HashClient`. This is fixed by #111545, which gives each
thread its own client.

Depends on #111545.


Agent transcript:
https://claudescope.sentry.dev/share/bXndRR4KT3FDez_xnzf1nwcoicOkmF93CYhAl-bcoKY
…te (#111553)

Add analytics tracking to the command palette (cmd+k) to understand user
behaviour.

Three events are now tracked:

**`command_palette.opened`** — fired whenever the palette is opened,
with a `source` field (`keyboard` or `button`) so we can compare how
users discover and open it.

**`command_palette.action_selected`** — fired on every selection,
including group (submenu) navigation. The `action` field encodes the
full path using `->` as a separator (e.g. `"Integrations -> Add
Integration"`) so nested selections are queryable without a separate
parent field. The `query` field captures what the user searched for when
they made the selection.

**`command_palette.no_results`** — fired when the filtered result set is
empty and the user has typed a non-empty query. Includes the `query` and
the current `action` group context (if the user is inside a submenu).
Also emits a `Sentry.logger.info` line for the same event so it shows up
in Sentry logs.

Tracking for `opened` is centralised inside `openCommandPalette` itself
— callers now pass `organization` and `source`, avoiding duplicate
tracking at each call site.

Refs DE-1039

---------

Co-authored-by: Claude <noreply@anthropic.com>
…111581)

before

<img width="448" height="76" alt="image"
src="https://github.com/user-attachments/assets/68b0d053-e32c-47f0-9e1c-d1b7b68af8b7"
/>

after

<img width="440" height="73" alt="image"
src="https://github.com/user-attachments/assets/677547ef-186f-4b67-a26b-ff428b0a36fd"
/>

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replace the `router` parameter with `location` + `navigate` in
updateDateTime, updateProjects, updateEnvironments, and
initializeUrlState. This removes the dependency on the legacy
InjectedRouter type from all page filter action functions.
…111575)

We plan on tweaking these values as necessary, might as well make them
possible to tweak very quickly.
Adds the core frontend infrastructure for API-driven integration
pipelines: type definitions, the usePipeline hook for managing pipeline
state and step advancement, a modal component for rendering pipeline
steps, a registry for pipeline definitions, and stories.

Relates to #111422

Here's an example driving through the GitLab API Pipeline.


https://github.com/user-attachments/assets/2639db94-21b5-4f38-bf80-b62a1800fa76

Fixes [VDY-34](https://linear.app/getsentry/issue/VDY-34)
Enables modal toggle behavior by tracking modal open state

---------

Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
…PORTS (#111585)

I thought CI wouldn't have allowed it if this were necessary, seems I
was wrong.
**End goal:**
We want to replace Zendesk with Intercom in product. Here is a helpful
diagram about how the pieces get connected in the end:
https://www.notion.so/sentry/Migration-Plan-Zendesk-to-Intercom-Chat-in-Sentry-Product-30a8b10e4b5d807c9bcdef3105761dda?source=copy_link#30a8b10e4b5d80e7aa7af9b9a58f2c47

**This PR:**
Add backend support for Intercom messenger with JWT-based identity
verification. Zendesk Auth was session based and didn't need this in the
past which is why we need a new endpoint:
- Add intercom.app-id and intercom.identity-verification-secret options
- Create OrganizationIntercomJwtEndpoint for generating signed JWTs
([docs](https://www.intercom.com/help/en/articles/10589769-authenticating-users-in-the-messenger-with-json-web-tokens-jwts))
- Add INTERCOM grant type to DataAccessGrant model for ticket tracking
- Update get_active_tickets_for_organization to include both providers
- Add organizations:intercom-support feature flag for gradual rollout
- Register /api/0/organizations/{org}/intercom-jwt/ endpoint

The JWT is signed with HS256 and includes user_id, email, name, and
organization context. Tokens expire after 5 minutes for security.

The feature flag allows gradual rollout and serves as a killswitch to
instantly revert to Zendesk without code deployment.

**E2E testing**:
Tested using ngrok and the next PR in stack. Request goes through in
happy path denied from unknown domains.

---------

Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
…sentry/tasks/seer/ (#111589)

+ The context engine indexing tasks were moved from
sentry/tasks/context_engine_index.py to
sentry/tasks/seer/context_engine_index.py in a recent refactor, but the
name= strings in the @instrumented_task decorators were not updated.
This caused the taskworker's activation.taskname to use the old dotted
path, which no longer matched the SAMPLED_TASKS key in sdk.py or the
scheduler config in server.py.
+ As a result, traces_sampler could not look up the correct sample rate
for schedule_context_engine_indexing_tasks, falling through to the low
default SENTRY_BACKEND_APM_SAMPLING rate instead of the intended 1.0.
+ Updates all four task name= strings, the SAMPLED_TASKS entry, and both
cron schedule "task" references to use the correct
sentry.tasks.seer.context_engine_index.* path.

Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
…re_history every 2min (#111550)

That should be frequent enough to make good progress, but not frequent
enough for database resources to be meaningfully impacted.
…single-written workflows (#111588)

Part of the project described in
src/sentry/workflow_engine/docs/legacy_backport.md.

Fixes ISWF-2296.
…11576)

Section headers in the snapshot diff sidebar (Modified, Added, Removed,
etc.)
displayed the number of groups rather than the total number of images.
For
example, "UNCHANGED" showed 14 (groups) instead of the actual image
count
across all groups.

Sum `images.length` or `pairs.length` within each group to show the
correct
total per section.

Co-authored-by: Claude <noreply@anthropic.com>
…le S016 (#111569)

Re-applies the non-monitor-consumer portion of #111464 (reverted in
7e509b5): occurrence consumer, result consumer, and S016 lint rule
re-enablement.

Depends on #111545 and #111568.


Agent transcript:
https://claudescope.sentry.dev/share/Jgc7K9L3nJgpb6s4imUcdeHJ3iJNAmxOcsHq09hQW4M
… state (#111555)

Improves the empty state in the supercharged (`cmd-k-supercharged`)
command palette with two changes:

- **Preloaded image**: calls React 19's `preload()` as soon as the
palette opens so the empty-state illustration is already in the browser
cache if the user gets no results, avoiding a flash of missing image.
- **Give Feedback button**: renders a `FeedbackButton` below the
no-results text, tagged with `feedback.source: command_palette`. The
button renders nothing when the Sentry Feedback SDK integration is
unavailable, so no guard is needed.

<img width="1274" height="926" alt="CleanShot 2026-03-25 at 13 22 50@2x"
src="https://github.com/user-attachments/assets/cbaa28e1-4da2-4380-a644-5ee0208d7c8a"
/>


Fixes DE-1038

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
@pull pull bot locked and limited conversation to collaborators Mar 26, 2026
@pull pull bot added the ⤵️ pull label Mar 26, 2026
@pull pull bot merged commit 6cabd8c into KingDEV95:master Mar 26, 2026
@github-actions github-actions bot added Scope: Frontend Automatically applied to PRs that change frontend components Scope: Backend Automatically applied to PRs that change backend components labels Mar 26, 2026
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.