Skip to content

Commit 7086b7a

Browse files
authored
Merge branch 'master' into feat/java-v8-changes
2 parents 88b1100 + b4c53e8 commit 7086b7a

File tree

138 files changed

+1625
-1701
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+1625
-1701
lines changed

app/layout.tsx

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {Theme} from '@radix-ui/themes';
44
import type {Metadata} from 'next';
55
import {Rubik} from 'next/font/google';
66
import Script from 'next/script';
7+
import PlausibleProvider from 'next-plausible';
78

89
import {ThemeProvider} from 'sentry-docs/components/theme-provider';
910

@@ -31,6 +32,9 @@ export const metadata: Metadata = {
3132
export default function RootLayout({children}: {children: React.ReactNode}) {
3233
return (
3334
<html lang="en" suppressHydrationWarning>
35+
<head>
36+
<PlausibleProvider domain="docs.sentry.io,rollup.sentry.io" />
37+
</head>
3438
<body className={rubik.variable} suppressHydrationWarning>
3539
<ThemeProvider
3640
attribute="class"
@@ -42,24 +46,20 @@ export default function RootLayout({children}: {children: React.ReactNode}) {
4246
{children}
4347
</Theme>
4448
</ThemeProvider>
49+
<Script
50+
async
51+
src="https://widget.kapa.ai/kapa-widget.bundle.js"
52+
data-website-id="cac7cc70-969e-4bc1-a968-55534a839be4"
53+
data-button-hide // do not render kapa ai button
54+
data-modal-override-open-class="kapa-ai-class" // all elements with this class will open the kapa ai modal
55+
data-project-name="Sentry"
56+
data-project-color="#6A5FC1"
57+
data-project-logo="https://avatars.githubusercontent.com/u/1396951?s=280&v=4"
58+
data-font-family="var(--font-rubik)"
59+
data-modal-disclaimer="Disclaimer: Welcome to our knowledge search bot! While we'd love to be able to answer all your questions, please remember this is a tool for searching our publicly available sources and not a support forum. Don't include any sensitive or personal information in your queries. For more on how Sentry handles your data, see our [Privacy Policy](https://sentry.io/privacy/). This form is protected by reCAPTCHA. Google's Privacy Policy and Google's Terms of Service apply."
60+
data-modal-example-questions="How to set up Sentry for Next.js?,What are tracePropagationTargets?"
61+
/>
4562
</body>
46-
<Script
47-
defer
48-
data-domain="docs.sentry.io,rollup.sentry.io"
49-
data-api="https://plausible.io/api/event"
50-
src="https://plausible.io/js/script.tagged-events.js"
51-
/>
52-
<Script
53-
async
54-
src="https://widget.kapa.ai/kapa-widget.bundle.js"
55-
data-website-id="cac7cc70-969e-4bc1-a968-55534a839be4"
56-
data-button-hide // do not render kapa ai button
57-
data-modal-override-open-class="kapa-ai-class" // all elements with this class will open the kapa ai modal
58-
data-project-name="Sentry"
59-
data-project-color="#6A5FC1"
60-
data-project-logo="https://docs.sentry.io/_next/static/media/sentry-logo-dark.fc8e1eeb.svg"
61-
data-font-family="var(--font-rubik)"
62-
/>
6363
</html>
6464
);
6565
}

apps/changelog/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@radix-ui/themes": "^3.1.3",
2727
"@sentry/nextjs": "8.36.0",
2828
"@spotlightjs/spotlight": "^2.1.1",
29-
"next": "15.0.3",
29+
"next": "15.1.2",
3030
"next-auth": "^4.24.5",
3131
"next-mdx-remote": "^4.4.1",
3232
"nextjs-toploader": "^1.6.6",

apps/changelog/src/client/components/list.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {Category} from '@prisma/client';
44
import {MDXRemote, MDXRemoteSerializeResult} from 'next-mdx-remote';
55
import Link from 'next/link';
66
import {parseAsArrayOf, parseAsInteger, parseAsString, useQueryState} from 'nuqs';
7-
import {Fragment} from 'react';
7+
import {Fragment, useState} from 'react';
88
import {Article} from './article';
99
import {Pagination} from './pagination';
1010
import {CategoryTag} from './tag';
@@ -35,7 +35,8 @@ function changelogEntryPublishDateToAddressableTag(date: Date) {
3535
}
3636

3737
export function ChangelogList({changelogs}: {changelogs: ChangelogEntry[]}) {
38-
const [searchValue, setSearchValue] = useQueryState('search', parseAsString);
38+
const [searchValue, setSearchValue] = useState<string | null>('');
39+
const [, setQuerySearchValue] = useQueryState('search', parseAsString);
3940

4041
const [monthAndYearParam, setMonthParam] = useQueryState('month');
4142
const [selectedCategoriesIds, setSelectedCategoriesIds] = useQueryState(
@@ -207,7 +208,9 @@ export function ChangelogList({changelogs}: {changelogs: ChangelogEntry[]}) {
207208
value={searchValue ?? ''}
208209
onChange={e => {
209210
setPageParam(null);
210-
setSearchValue(e.target.value ? e.target.value : null);
211+
const newSearchValue = e.target.value ? e.target.value : null;
212+
setSearchValue(newSearchValue);
213+
setQuerySearchValue(newSearchValue);
211214
}}
212215
placeholder="Search..."
213216
className="form-input flex-1 rounded-md border border-gray-300 bg-white px-4 py-2 text-gray-900 focus:border-primary-500 focus:ring-primary-500"
@@ -217,6 +220,7 @@ export function ChangelogList({changelogs}: {changelogs: ChangelogEntry[]}) {
217220
className={`${someFilterIsActive ? 'text-purple font-medium cursor-pointer' : 'text-gray-500 cursor-not-allowed'} hover:text-gray-700`}
218221
onClick={() => {
219222
setSearchValue(null);
223+
setQuerySearchValue(null);
220224
setSelectedCategoriesIds(null);
221225
setMonthParam(null);
222226
setPageParam(null);

develop-docs/application-architecture/feedback-architecture.mdx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ It will:
1111

1212
## Creation sources
1313

14-
When broken down, there are **5** ways to create feedback in our system 😵‍💫.
15-
(But 4 of them, related to user reports, are quite similar!) A good reference is the
14+
When broken down, there are **4** ways to create feedback in our system, with
15+
3 sharing the same data model. A good reference is the
1616
`FeedbackCreationSource(Enum)` in [create_feedback.py](https://github.com/getsentry/sentry/blob/2b642e149c79b251e1c2f4339fc73d656347d74e/src/sentry/feedback/usecases/create_feedback.py#L33-L33).
1717
The 4 ways _clients_ can create feedback are:
1818

19-
`NEW_FEEDBACK_ENVELOPE`: [The new format](https://develop.sentry.dev/sdk/data-model/envelopes/#full-examples) created by the Replay team when adding
19+
`NEW_FEEDBACK_ENVELOPE`: [The new format](/sdk/data-model/envelope-items/#user-feedback) created by the Replay team when adding
2020
the [User Feedback Widget](https://docs.sentry.io/product/user-feedback/#user-feedback-widget)
2121
to the JavaScript SDK. It allows adding more information, for example tags,
2222
release, url, etc.
2323

24-
`USER_REPORT_ENVELOPE`: [The older format](https://develop.sentry.dev/sdk/data-model/envelope-items/#user-feedback) with name/email/comments, that requires
24+
`USER_REPORT_ENVELOPE`: [The older format](/sdk/data-model/envelope-items/#user-report) with name/email/comments, that requires
2525
`event_id` to link a Sentry error event.
2626

2727
`USER_REPORT_DJANGO_ENDPOINT`: [The deprecated Web API](https://docs.sentry.io/api/projects/submit-user-feedback/)
@@ -31,7 +31,7 @@ release, url, etc.
3131
## How feedback is stored
3232

3333
On the backend, each feedback submission in Sentry's UI is **an un-grouped issue occurrence**,
34-
saved via the [issues platform](https://develop.sentry.dev/issue-platform/).
34+
saved via the [issues platform](/issue-platform/).
3535
The entrypoint is [**`create_feedback_issue()`**](https://github.com/getsentry/sentry/blob/2b642e149c79b251e1c2f4339fc73d656347d74e/src/sentry/feedback/usecases/create_feedback.py#L184-L184),
3636
which
3737

@@ -42,7 +42,7 @@ which
4242

4343
## Feedback events
4444

45-
The new and preferred way to send feedback from the SDK is in an [event envelope](https://develop.sentry.dev/sdk/data-model/envelopes/#full-examples).
45+
The preferred way of sending feedback from the SDK is in [feedback envelope](/sdk/data-model/envelope-items/#user-feedback).
4646
The format is the same as error events, except the `type` header = `"feedback"`. While
4747
user reports have an associated event, **new feedback _is_ an event**. This
4848
offers 2 improvements:
@@ -94,7 +94,7 @@ In Relay v24.5.1, we migrated feedback to its own kafka topic + consumer,
9494
### Attachments
9595

9696
We only use attachments for the widget’s screenshot feature, which allows users
97-
to submit **at most 1 screenshot per feedback**. Attachments are another [item type](https://develop.sentry.dev/sdk/data-model/envelopes/#attachment)
97+
to submit **at most 1 screenshot per feedback**. Attachments are another [item type](/sdk/data-model/envelopes/#attachment)
9898
in an envelope.
9999

100100
- SDK v8.0.0+, Relay v24.5.1+: Sends the feedback and attachment items in the same envelope.
@@ -186,9 +186,7 @@ graph TD
186186

187187
### Envelopes
188188

189-
User reports are also sent to Relay in [envelope format](https://develop.sentry.dev/sdk/data-model/envelope-items/#user-feedback).
190-
**This item type is misleadingly called “user feedback” in some of our docs, but the
191-
item header will read `"user_report"`.**
189+
User reports are also sent to Relay in envelope format, item type [user_report](/sdk/data-model/envelope-items/#user-report).
192190

193191
The SDK function that sends these is `captureUserFeedback`.
194192

develop-docs/backend/application-domains/database-migrations/index.mdx

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,6 @@ To run the test locally, run `pytest` with `--migrations` flag. For example, `py
9191

9292
If you would like to speed up the migration tests and do not require rebuilding the databases on each test run, supply `--reuse-db` as an additional option to the test command.
9393

94-
### Backup Testing
95-
When you add or change a model, an error message in CI may appear explaining that one or multiple tests "produced an `export.json` backup file that was missing the above models".
96-
In order to resolve this, there are two steps:
97-
1. Add the new or modified model to the exhaustive organization in [testutils/helpers/backups.py](https://github.com/getsentry/sentry/blob/f9e6aa610340fd41cc13490aeda71b06bbc933c2/src/sentry/testutils/helpers/backups.py#L366) by creating an instance of your model, for example by invoking MyModel.objects.create(). This ensures the presence of the new model when creating the snapshot and during testing.
98-
2. The snapshot files can be regenerated using the following command:
99-
```
100-
SENTRY_SNAPSHOTS_WRITEBACK=1 pytest tests/sentry/backup/test_sanitize.py
101-
```
102-
103-
There are also tests for model dependencies that make use of automatically generated fixtures in tests/sentry/backup/test_dependencies.py. These tests will fail if they are not updated when a new model with dependencies on other models is added, or dependencies are modified. In order to re-generate the model dependency graphs, you can run [bin/generate-model-dependency-fixtures](https://github.com/getsentry/sentry/blob/f9e6aa610340fd41cc13490aeda71b06bbc933c2/bin/generate-model-dependency-fixtures).
104-
10594
#### Notes
10695

10796
- There is a [known issue](https://github.com/getsentry/sentry/blob/e4627f093de4718e054ba9c6b002ff0b9a5b6033/tests/sentry/migrations/test_0295_backfill_alertrule_type.py#L1-L3) with the `django-pg-zero-downtime-migrations` package which causes the roll back of a `NOT NULL` constraint to fail.

develop-docs/integrations/azuredevops.mdx

Lines changed: 0 additions & 27 deletions
This file was deleted.
389 KB
Loading
36.9 KB
Loading
27.5 KB
Loading
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
title: Azure DevOps Integration
3+
sidebar_title: Azure DevOps
4+
---
5+
6+
## Create an Azure Application
7+
8+
Log into your Azure DevOps account or create a new one, and ensure you have a project set up.
9+
10+
Make sure the organization has third-party access via OAuth enabled in the organization settings.
11+
![3p-oauth](./3p-oauth.png)
12+
13+
14+
To use the Azure DevOps integration you'll need to create an application.
15+
16+
To start, you will need access to a [Microsoft Entra Admin Portal](https://entra.microsoft.com/#home)
17+
18+
![Register App](./register-app.png)
19+
20+
21+
When configuring the app, use the following values:
22+
23+
| Setting | Value |
24+
| ------------------------------- | -------------------------------------------------------------------------------------------------- |
25+
| Supported account types | Accounts in any organizational directory |
26+
| Redirect URI | `{YOUR_DOMAIN}/extensions/vsts/setup` |
27+
28+
<Note>
29+
30+
Take note of your App ID as we'll need it later.
31+
![App ID](./app-id.png)
32+
33+
</Note>
34+
35+
Next go to Manager -> API Permissions to add the following permissions:
36+
* Azure DevOps (`vso.code`, `vso.graph`, `vso.work_item`, `vso.service_endpoint`)
37+
* Microsoft Graph (`User.Read`) (This should be added by default)
38+
39+
![Permissions](./perms.png)
40+
41+
Go to the "Certificates & secrets" tab and create a new client secret. Make sure you copy the secret as we'll need it later.
42+
43+
![Client Secret](./client-secret.png)
44+
45+
Add the App ID and Client Secret to `devlocal.py` like this:
46+
47+
```python
48+
# Azure DevOps #
49+
SENTRY_OPTIONS["vsts_new.client-id"] = your-app-id
50+
SENTRY_OPTIONS["vsts_new.client-secret"] = your-client-secret
51+
```
52+
53+
You can also add the App ID and Client Secret to `config.yml` like this:
54+
55+
```yml
56+
# Azure DevOps #
57+
vsts_new.client-id: your-app-id
58+
vsts_new.client-secret: your-client-secret
59+
```
60+
61+
You will also need to enable the feature flag to use the new Azure DevOps integration.
62+
Enable the `migrate-azure-devops-integration` feature flag in your organization.
63+
Add the following to your `devlocal.py` file:
64+
65+
```python
66+
SENTRY_FEATURES["organizations:migrate-azure-devops-integration"] = True
67+
```
68+
69+
<Alert title="Feature Flag" level="info">
70+
71+
This is a temporary measure until we fully migrate to the new Azure DevOps integration and remove references to the old one.
72+
73+
</Alert>
74+
75+
Follow our [documentation on installing and configuring the Azure DevOps integration](https://docs.sentry.io/organization/integrations/source-code-mgmt/azure-devops/) to finish installation and use the integration.

0 commit comments

Comments
 (0)