Skip to content

Commit e4de8bf

Browse files
committed
Merge branch 'master' into antonpirker/develop/startpage
2 parents bfb33f4 + e2f0dad commit e4de8bf

File tree

240 files changed

+2163
-1912
lines changed

Some content is hidden

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

240 files changed

+2163
-1912
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,8 @@
1212
"git.ignoreLimitWarning": true,
1313
"search.exclude": {
1414
"**/src/wizard/**": true
15-
}
15+
},
16+
"cSpell.words": [
17+
"laravel"
18+
]
1619
}

app/[[...path]]/page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,14 @@ export async function generateMetadata(props: MetadataProps): Promise<Metadata>
200200
: domain;
201201
let title =
202202
'Sentry Docs | Application Performance Monitoring &amp; Error Tracking Software';
203-
let customCanonicalTag;
203+
let customCanonicalTag: string = '';
204204
let description =
205205
'Self-hosted and cloud-based application performance monitoring &amp; error tracking that helps software teams see clearer, solve quicker, &amp; learn continuously.';
206-
const images = [{url: `${previewDomain ?? domain}/meta.jpg`, width: 1200, height: 822}];
206+
// show og image on the home page only
207+
const images =
208+
((await props.params).path ?? []).length === 0
209+
? [{url: `${previewDomain ?? domain}/og.png`, width: 1200, height: 630}]
210+
: [];
207211

208212
const rootNode = await getDocsRootNode();
209213

app/globals.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,8 @@ body {
160160
opacity: 1;
161161
}
162162
}
163+
164+
#kapa-widget-portal a[href="https://sentry.io/privacy/"]
165+
{
166+
color: rgb(134, 142, 150) !important;
167+
}

app/layout.tsx

Lines changed: 17 additions & 6 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,13 +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="Please note: This is a tool that searches publicly available sources. Do not 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/)."
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-
/>
5263
</html>
5364
);
5465
}

apps/changelog/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@
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",
32+
"next-plausible": "^3.12.4",
3233
"nextjs-toploader": "^1.6.6",
3334
"nuqs": "^1.17.7",
3435
"prism-sentry": "^1.0.2",
@@ -66,4 +67,4 @@
6667
"@types/react": "npm:[email protected]",
6768
"@types/react-dom": "npm:[email protected]"
6869
}
69-
}
70+
}

apps/changelog/src/app/layout.tsx

Lines changed: 4 additions & 6 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
const rubik = Rubik({
910
weight: ['400', '500', '700'],
@@ -33,17 +34,14 @@ export const metadata: Metadata = {
3334
export default function RootLayout({children}: {children: React.ReactNode}) {
3435
return (
3536
<html lang="en">
37+
<head>
38+
<PlausibleProvider domain="changelog.sentry.io" />
39+
</head>
3640
<body className={`${rubik.variable}`}>
3741
<Theme accentColor="iris" grayColor="sand" radius="large" scaling="95%">
3842
{children}
3943
</Theme>
4044
</body>
41-
<Script
42-
defer
43-
data-domain="docs.sentry.io,rollup.sentry.io"
44-
data-api="https://plausible.io/api/event"
45-
src="https://plausible.io/js/script.tagged-events.js"
46-
/>
4745
</html>
4846
);
4947
}

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.

0 commit comments

Comments
 (0)