Skip to content

Commit b7f5dc3

Browse files
committed
Merge branch 'master' into martinhaintz/fix-flutter-multiview
* master: (121 commits) Bump API schema to 1ce35106 (#11467) Bump API schema to fe37a3fa (#11465) Bump API schema to e9717315 (#11464) fix(remix): Add verify step to manual guide (#11463) Bump API schema to ff5880ca (#11457) docs(cron): Add note about luxon timezones (#11451) Bump API schema to f0e51113 (#11454) Add User Feedback alerts to main Alerts docs page (#11446) fix: Bun import (#11450) Bump API schema to d8309de0 (#11447) Update Intro to Sentry page (#11443) fix(releases): Document `release:latest` filter behaviour (#11423) Bump API schema to d6663c91 (#11442) feat(js): Document dataloaderIntegration released with 8.31.0 (#11416) docs(go): Add custom instrumentation page for tracing (#11429) ref(onboarding): Update word (#11440) feat(nuxt): Update server setup docs (#11415) Update docs on running getsentry locally (#11428) Callout to add .env to .gitignore #11430 fix(dart): beforeSend code snippet (#11197) ...
2 parents 4b69eae + e8c469e commit b7f5dc3

File tree

263 files changed

+4563
-2240
lines changed

Some content is hidden

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

263 files changed

+4563
-2240
lines changed

.github/workflows/prepare-release.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ on:
88
force:
99
description: Force a release even when there are release-blockers (optional)
1010
required: false
11-
schedule:
12-
# This is when we release the self-hosted repo
13-
- cron: "1 18 15 * *"
1411
jobs:
1512
release:
1613
runs-on: ubuntu-latest

app/globals.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
--foreground-secondary: var(--gray-11);
1313
--accent: var(--accent-purple);
1414
--foreground: var(--gray-12);
15+
--cursor-checkbox: pointer;
1516
::selection {
1617
background-color: var(--accent-a7);
1718
}

apps/changelog/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"@radix-ui/react-icons": "^1.3.0",
2222
"@radix-ui/react-toolbar": "^1.0.4",
2323
"@radix-ui/themes": "^2.0.3",
24-
"@sentry/nextjs": "8.20.0",
24+
"@sentry/nextjs": "8.29.0",
2525
"@spotlightjs/spotlight": "^2.1.1",
2626
"next": "^15.0.0-canary.83",
2727
"next-auth": "^4.24.5",
Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
import {Fragment, Suspense} from 'react';
1+
import {Fragment, Suspense, useActionState} from 'react';
22
import Link from 'next/link';
33

44
import {prismaClient} from '@/server/prisma-client';
5-
import {editChangelog} from '@/server/actions/changelog';
6-
import {TitleSlug} from '@/client/components/titleSlug';
7-
import {FileUpload} from '@/client/components/fileUpload';
8-
import {Select} from '@/client/components/ui/Select';
9-
import {ForwardRefEditor} from '@/client/components/forwardRefEditor';
10-
import {Button} from '@/client/components/ui/Button';
5+
import {EditChangelogForm} from '@/client/components/forms/editChangelogForm';
116

127
export default async function ChangelogCreatePage({params}: {params: {id: string}}) {
138
const categories = await prismaClient.category.findMany({
@@ -38,59 +33,7 @@ export default async function ChangelogCreatePage({params}: {params: {id: string
3833

3934
return (
4035
<section className="overflow-x-auto col-start-3 col-span-8">
41-
<form action={editChangelog} className="px-2 w-full">
42-
<input type="hidden" name="id" value={changelog.id} />
43-
<TitleSlug defaultSlug={changelog.slug} defaultTitle={changelog.title} />
44-
<FileUpload defaultFile={changelog.image || ''} />
45-
<div className="my-6">
46-
<label htmlFor="summary" className="block text-xs font-medium text-gray-700">
47-
Summary
48-
<Fragment>
49-
&nbsp;<span className="font-bold text-secondary">*</span>
50-
</Fragment>
51-
</label>
52-
<textarea name="summary" className="w-full" required>
53-
{changelog.summary}
54-
</textarea>
55-
<span className="text-xs text-gray-500 italic">
56-
This will be shown in the list
57-
</span>
58-
</div>
59-
<div>
60-
<Select
61-
name="categories"
62-
className="mt-1 mb-6"
63-
label="Category"
64-
placeholder="Select Category"
65-
defaultValue={changelog.categories.map(category => ({
66-
label: category.name,
67-
value: category.name,
68-
}))}
69-
options={categories.map(category => ({
70-
label: category.name,
71-
value: category.name,
72-
}))}
73-
isMulti
74-
/>
75-
</div>
76-
77-
<Suspense fallback={null}>
78-
<ForwardRefEditor
79-
name="content"
80-
defaultValue={changelog.content || ''}
81-
className="w-full"
82-
/>
83-
</Suspense>
84-
85-
<footer className="flex items-center justify-between mt-2 mb-8">
86-
<Link href="/changelog/_admin" className="underline text-gray-500">
87-
Return to Changelogs list
88-
</Link>
89-
<div>
90-
<Button type="submit">Update</Button>
91-
</div>
92-
</footer>
93-
</form>
36+
<EditChangelogForm changelog={changelog} categories={categories} />
9437
</section>
9538
);
9639
}

apps/changelog/src/app/changelog/%5Fadmin/confirm.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
'use client';
22

3-
import type {PropsWithChildren} from 'react';
3+
import {ServerActionPayloadInterface} from '@/server/actions/serverActionPayload.interface';
4+
import {useActionState, type PropsWithChildren} from 'react';
45

56
export default function Confirm({
67
action,
78
changelog,
89
children,
910
}: PropsWithChildren<{
10-
action: (formData: FormData) => Promise<void | {
11-
message: string;
12-
}>;
11+
action: (
12+
currentFormState: ServerActionPayloadInterface,
13+
formData: FormData
14+
) => Promise<ServerActionPayloadInterface>;
1315
changelog: {id: string};
1416
}>) {
17+
const [_state, formAction] = useActionState(action, {});
1518
return (
1619
<form
17-
action={action}
20+
action={formAction}
1821
className="inline-block"
1922
onSubmit={e => {
2023
e.preventDefault();
2124
// eslint-disable-next-line no-alert
2225
if (confirm('Are you sure?')) {
23-
action(new FormData(e.currentTarget));
26+
formAction(new FormData(e.currentTarget));
2427
}
2528
}}
2629
>
Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
import {Fragment} from 'react';
2-
import Link from 'next/link';
31
import {prismaClient} from '@/server/prisma-client';
4-
import {createChangelog} from '@/server/actions/changelog';
5-
import {TitleSlug} from '@/client/components/titleSlug';
6-
import {FileUpload} from '@/client/components/fileUpload';
7-
import {Select} from '@/client/components/ui/Select';
8-
import {ForwardRefEditor} from '@/client/components/forwardRefEditor';
9-
import {Button} from '@/client/components/ui/Button';
2+
103
import {getServerSession} from 'next-auth/next';
114
import {notFound} from 'next/navigation';
125
import {authOptions} from '@/server/authOptions';
6+
import {CreateChangelogForm} from '@/client/components/forms/createChangelogForm';
137

148
export default async function ChangelogCreatePage() {
159
const session = await getServerSession(authOptions);
@@ -26,48 +20,7 @@ export default async function ChangelogCreatePage() {
2620

2721
return (
2822
<section className="overflow-x-auto col-start-3 col-span-8">
29-
<form action={createChangelog} className="px-2 w-full">
30-
<TitleSlug />
31-
<FileUpload />
32-
<div className="my-6">
33-
<label htmlFor="summary" className="block text-xs font-medium text-gray-700">
34-
Summary
35-
<Fragment>
36-
&nbsp;<span className="font-bold text-secondary">*</span>
37-
</Fragment>
38-
</label>
39-
<textarea name="summary" className="w-full" required />
40-
<span className="text-xs text-gray-500 italic">
41-
This will be shown in the list
42-
</span>
43-
</div>
44-
<div>
45-
<Select
46-
name="categories"
47-
className="mt-1 mb-6"
48-
label="Category"
49-
placeholder="Select Category"
50-
options={categories.map(category => ({
51-
label: category.name,
52-
value: category.name,
53-
}))}
54-
isMulti
55-
/>
56-
</div>
57-
58-
<ForwardRefEditor name="content" className="w-full" />
59-
60-
<footer className="flex items-center justify-between mt-2">
61-
<Link href="/changelog/_admin" className="underline text-gray-500">
62-
Return to Changelogs list
63-
</Link>
64-
<div>
65-
<Button type="submit">Create (not published yet)</Button>
66-
<br />
67-
<span className="text-xs text-gray-500 italic">You can publish it later</span>
68-
</div>
69-
</footer>
70-
</form>
23+
<CreateChangelogForm categories={categories} />
7124
</section>
7225
);
7326
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
'use client';
2+
3+
import {createChangelog} from '@/server/actions/changelog';
4+
import {TitleSlug} from '@/client/components/titleSlug';
5+
import {FileUpload} from '@/client/components/fileUpload';
6+
import {Select} from '@/client/components/ui/Select';
7+
import {ForwardRefEditor} from '@/client/components/forwardRefEditor';
8+
import {Button} from '@/client/components/ui/Button';
9+
import {Fragment, useActionState} from 'react';
10+
import Link from 'next/link';
11+
import {Category} from '@prisma/client';
12+
13+
export const CreateChangelogForm = ({categories}: {categories: Category[]}) => {
14+
const [_state, formAction] = useActionState(createChangelog, {});
15+
return (
16+
<form action={formAction} className="px-2 w-full">
17+
<TitleSlug />
18+
<FileUpload />
19+
<div className="my-6">
20+
<label htmlFor="summary" className="block text-xs font-medium text-gray-700">
21+
Summary
22+
<Fragment>
23+
&nbsp;<span className="font-bold text-secondary">*</span>
24+
</Fragment>
25+
</label>
26+
<textarea name="summary" className="w-full" required />
27+
<span className="text-xs text-gray-500 italic">
28+
This will be shown in the list
29+
</span>
30+
</div>
31+
<div>
32+
<Select
33+
name="categories"
34+
className="mt-1 mb-6"
35+
label="Category"
36+
placeholder="Select Category"
37+
options={categories.map(category => ({
38+
label: category.name,
39+
value: category.name,
40+
}))}
41+
isMulti
42+
/>
43+
</div>
44+
45+
<ForwardRefEditor name="content" className="w-full" />
46+
47+
<footer className="flex items-center justify-between mt-2">
48+
<Link href="/changelog/_admin" className="underline text-gray-500">
49+
Return to Changelogs list
50+
</Link>
51+
<div>
52+
<Button type="submit">Create (not published yet)</Button>
53+
<br />
54+
<span className="text-xs text-gray-500 italic">You can publish it later</span>
55+
</div>
56+
</footer>
57+
</form>
58+
);
59+
};
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
'use client';
2+
3+
import {editChangelog} from '@/server/actions/changelog';
4+
import {TitleSlug} from '@/client/components/titleSlug';
5+
import {FileUpload} from '@/client/components/fileUpload';
6+
import {Select} from '@/client/components/ui/Select';
7+
import {ForwardRefEditor} from '@/client/components/forwardRefEditor';
8+
import {Button} from '@/client/components/ui/Button';
9+
import {Fragment, Suspense, useActionState} from 'react';
10+
import {Changelog, Category} from '@prisma/client';
11+
import Link from 'next/link';
12+
13+
export const EditChangelogForm = ({
14+
changelog,
15+
categories,
16+
}: {
17+
changelog: Changelog;
18+
categories: Category[];
19+
}) => {
20+
const [_state, formAction] = useActionState(editChangelog, {});
21+
return (
22+
<form action={formAction} className="px-2 w-full">
23+
<input type="hidden" name="id" value={changelog.id} />
24+
<TitleSlug defaultSlug={changelog.slug} defaultTitle={changelog.title} />
25+
<FileUpload defaultFile={changelog.image || ''} />
26+
<div className="my-6">
27+
<label htmlFor="summary" className="block text-xs font-medium text-gray-700">
28+
Summary
29+
<Fragment>
30+
&nbsp;<span className="font-bold text-secondary">*</span>
31+
</Fragment>
32+
</label>
33+
<textarea name="summary" className="w-full" required>
34+
{changelog.summary}
35+
</textarea>
36+
<span className="text-xs text-gray-500 italic">
37+
This will be shown in the list
38+
</span>
39+
</div>
40+
<div>
41+
<Select
42+
name="categories"
43+
className="mt-1 mb-6"
44+
label="Category"
45+
placeholder="Select Category"
46+
defaultValue={categories.map(category => ({
47+
label: category.name,
48+
value: category.name,
49+
}))}
50+
options={categories.map(category => ({
51+
label: category.name,
52+
value: category.name,
53+
}))}
54+
isMulti
55+
/>
56+
</div>
57+
58+
<Suspense fallback={null}>
59+
<ForwardRefEditor
60+
name="content"
61+
defaultValue={changelog.content || ''}
62+
className="w-full"
63+
/>
64+
</Suspense>
65+
66+
<footer className="flex items-center justify-between mt-2 mb-8">
67+
<Link href="/changelog/_admin" className="underline text-gray-500">
68+
Return to Changelogs list
69+
</Link>
70+
<div>
71+
<Button type="submit">Update</Button>
72+
</div>
73+
</footer>
74+
</form>
75+
);
76+
};

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

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -492,38 +492,10 @@ const NAV_ITEMS: NavItemsProps[] = [
492492
{
493493
id: 'blog',
494494
title: 'Blog',
495-
type: 'button',
495+
type: 'a',
496+
to: 'https://blog.sentry.io',
496497
variant: 'ghost',
497498
className: '',
498-
children: [
499-
{
500-
id: 'blogMenu',
501-
title: '',
502-
children: [
503-
{
504-
id: 'sentryBlog',
505-
title: 'Sentry Blog',
506-
to: 'https://blog.sentry.io/',
507-
variant: 'ghost',
508-
type: 'a',
509-
},
510-
{
511-
id: 'enggBlog',
512-
title: 'Engineering Blog',
513-
to: 'https://sentry.engineering/',
514-
variant: 'ghost',
515-
type: 'a',
516-
},
517-
{
518-
id: 'changelog',
519-
title: 'Changelog',
520-
to: 'https://sentry.io/changelog/',
521-
variant: 'ghost',
522-
type: 'a',
523-
},
524-
],
525-
},
526-
],
527499
},
528500
{
529501
id: 'sandbox',

0 commit comments

Comments
 (0)