From d0c854b7d58667e5d870928dd39889ff944254c5 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Wed, 8 Oct 2025 13:36:50 -0700 Subject: [PATCH 01/14] Add docs changelog --- docs/changelog.mdx | 26 ++++ src/components/changelog/docsChangelog.tsx | 141 +++++++++++++++++++ src/components/sidebar/sidebarNavigation.tsx | 4 + 3 files changed, 171 insertions(+) create mode 100644 docs/changelog.mdx create mode 100644 src/components/changelog/docsChangelog.tsx diff --git a/docs/changelog.mdx b/docs/changelog.mdx new file mode 100644 index 0000000000000..f4880fcd43ea4 --- /dev/null +++ b/docs/changelog.mdx @@ -0,0 +1,26 @@ +--- +title: Documentation Changelog +sidebar_order: 100 +description: Track recent updates to Sentry documentation with AI-generated summaries +--- + +import {DocsChangelog} from 'sentry-docs/components/changelog/docsChangelog'; + +# Documentation Changelog + +Stay up-to-date with the latest changes to Sentry's documentation. This page automatically tracks all updates with AI-generated summaries that explain what changed and why it matters. + +## Recent Updates + + + +## Alternative Views + +- [Full Content Dashboard](https://sentry-content-dashboard.sentry.dev/) - View all Sentry content (blog, videos, docs, changelog) +- [RSS Feed](https://sentry-content-dashboard.sentry.dev/api/docs/feed) - Subscribe to doc updates in your RSS reader +- [JSON API](https://sentry-content-dashboard.sentry.dev/api/docs) - Programmatically access changelog data + + + The changelog updates automatically throughout the day. Summaries are generated by AI to provide quick, user-friendly insights into each update from the [getsentry/sentry-docs](https://github.com/getsentry/sentry-docs) repository. + + diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx new file mode 100644 index 0000000000000..a9d0ff3f80156 --- /dev/null +++ b/src/components/changelog/docsChangelog.tsx @@ -0,0 +1,141 @@ +interface ChangelogEntry { + id: string; + title: string; + description: string; + url: string; + publishedAt: string; + author: string; + filesChanged?: { + added: string[]; + modified: string[]; + removed: string[]; + }; +} + +async function getChangelogEntries(): Promise { + try { + const res = await fetch('https://sentry-content-dashboard.sentry.dev/api/docs', { + next: { revalidate: 3600 }, // Cache for 1 hour + }); + + if (!res.ok) { + throw new Error('Failed to fetch changelog'); + } + + return res.json(); + } catch (error) { + console.error('Error fetching changelog:', error); + return []; + } +} + +export async function DocsChangelog() { + const entries = await getChangelogEntries(); + + if (entries.length === 0) { + return ( +
+

No changelog entries available

+

Check back later for updates.

+
+ ); + } + + return ( +
+ {entries.map(entry => { + const date = new Date(entry.publishedAt); + const totalFiles = + (entry.filesChanged?.added.length || 0) + + (entry.filesChanged?.modified.length || 0) + + (entry.filesChanged?.removed.length || 0); + + return ( +
+
+

+ + {entry.title.replace('Docs Update: ', '')} + +

+
+ + + by {entry.author} + {totalFiles > 0 && ( + <> + + {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed + + )} +
+
+ +

{entry.description}

+ + {entry.filesChanged && totalFiles > 0 && ( +
+ + View changed files + +
+ {entry.filesChanged.added.length > 0 && ( +
+ Added: +
    + {entry.filesChanged.added.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.modified.length > 0 && ( +
+ Modified: +
    + {entry.filesChanged.modified.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.removed.length > 0 && ( +
+ Removed: +
    + {entry.filesChanged.removed.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} +
+
+ )} +
+ ); + })} +
+ ); +} + diff --git a/src/components/sidebar/sidebarNavigation.tsx b/src/components/sidebar/sidebarNavigation.tsx index fb2502e3de077..88de1485506fc 100644 --- a/src/components/sidebar/sidebarNavigation.tsx +++ b/src/components/sidebar/sidebarNavigation.tsx @@ -44,6 +44,10 @@ const productSidebarItems = [ title: 'Concepts & Reference', root: 'concepts', }, + { + title: 'Documentation Changelog', + root: 'changelog', + }, ]; export async function SidebarNavigation({path}: {path: string[]}) { From 47f7a92c118bc89800ace0e4411dc14a6b402a3e Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Wed, 8 Oct 2025 13:45:50 -0700 Subject: [PATCH 02/14] clean up copy --- docs/changelog.mdx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/changelog.mdx b/docs/changelog.mdx index f4880fcd43ea4..0e511c1aa26ad 100644 --- a/docs/changelog.mdx +++ b/docs/changelog.mdx @@ -1,14 +1,11 @@ --- title: Documentation Changelog sidebar_order: 100 -description: Track recent updates to Sentry documentation with AI-generated summaries +description: Track recent updates to Sentry docs --- import {DocsChangelog} from 'sentry-docs/components/changelog/docsChangelog'; -# Documentation Changelog - -Stay up-to-date with the latest changes to Sentry's documentation. This page automatically tracks all updates with AI-generated summaries that explain what changed and why it matters. ## Recent Updates From ba5af217ae2b88acd836b26839f5ecb505165aeb Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Wed, 8 Oct 2025 16:03:38 -0700 Subject: [PATCH 03/14] fix undefined arrays bug --- src/components/changelog/docsChangelog.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index a9d0ff3f80156..b22d03e24bd71 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -46,9 +46,9 @@ export async function DocsChangelog() { {entries.map(entry => { const date = new Date(entry.publishedAt); const totalFiles = - (entry.filesChanged?.added.length || 0) + - (entry.filesChanged?.modified.length || 0) + - (entry.filesChanged?.removed.length || 0); + (entry.filesChanged?.added?.length || 0) + + (entry.filesChanged?.modified?.length || 0) + + (entry.filesChanged?.removed?.length || 0); return (
- {entry.filesChanged.added.length > 0 && ( + {entry.filesChanged.added && entry.filesChanged.added.length > 0 && (
Added:
    @@ -105,7 +105,7 @@ export async function DocsChangelog() {
)} - {entry.filesChanged.modified.length > 0 && ( + {entry.filesChanged.modified && entry.filesChanged.modified.length > 0 && (
Modified:
    @@ -117,7 +117,7 @@ export async function DocsChangelog() {
)} - {entry.filesChanged.removed.length > 0 && ( + {entry.filesChanged.removed && entry.filesChanged.removed.length > 0 && (
Removed:
    From 117944c00ac5ce3eeb02651090f319a122002050 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Wed, 8 Oct 2025 16:40:03 -0700 Subject: [PATCH 04/14] Fix linting errosr --- src/components/changelog/docsChangelog.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index b22d03e24bd71..6a6388449426e 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -1,10 +1,12 @@ +import React from 'react'; + interface ChangelogEntry { + author: string; + description: string; id: string; + publishedAt: string; title: string; - description: string; url: string; - publishedAt: string; - author: string; filesChanged?: { added: string[]; modified: string[]; @@ -15,7 +17,7 @@ interface ChangelogEntry { async function getChangelogEntries(): Promise { try { const res = await fetch('https://sentry-content-dashboard.sentry.dev/api/docs', { - next: { revalidate: 3600 }, // Cache for 1 hour + next: {revalidate: 3600}, // Cache for 1 hour }); if (!res.ok) { @@ -24,7 +26,7 @@ async function getChangelogEntries(): Promise { return res.json(); } catch (error) { - console.error('Error fetching changelog:', error); + // Error fetching changelog - return empty array return []; } } @@ -77,10 +79,10 @@ export async function DocsChangelog() { by {entry.author} {totalFiles > 0 && ( - <> + {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed - + )}
From dcc3903ca7509ae6ae777a79069fbf43b4c61ba0 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Wed, 8 Oct 2025 17:32:07 -0700 Subject: [PATCH 05/14] Fix react issues --- src/components/changelog/docsChangelog.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 6a6388449426e..5c9f0f0a02827 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - interface ChangelogEntry { author: string; description: string; @@ -78,12 +76,8 @@ export async function DocsChangelog() { by {entry.author} - {totalFiles > 0 && ( - - - {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed - - )} + {totalFiles > 0 && } + {totalFiles > 0 && {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed}
From 554621ebb4ba92a5d45426ccef503ed314713ffa Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 00:33:01 +0000 Subject: [PATCH 06/14] [getsentry/action-github-commit] Auto commit --- src/components/changelog/docsChangelog.tsx | 66 +++++++++++----------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 5c9f0f0a02827..ebb24c1a48f1f 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -17,11 +17,11 @@ async function getChangelogEntries(): Promise { const res = await fetch('https://sentry-content-dashboard.sentry.dev/api/docs', { next: {revalidate: 3600}, // Cache for 1 hour }); - + if (!res.ok) { throw new Error('Failed to fetch changelog'); } - + return res.json(); } catch (error) { // Error fetching changelog - return empty array @@ -51,10 +51,7 @@ export async function DocsChangelog() { (entry.filesChanged?.removed?.length || 0); return ( -
+

by {entry.author} {totalFiles > 0 && } - {totalFiles > 0 && {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed} + {totalFiles > 0 && ( + + {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed + + )}

@@ -101,30 +102,32 @@ export async function DocsChangelog() { )} - {entry.filesChanged.modified && entry.filesChanged.modified.length > 0 && ( -
- Modified: -
    - {entry.filesChanged.modified.map(file => ( -
  • - {file} -
  • - ))} -
-
- )} - {entry.filesChanged.removed && entry.filesChanged.removed.length > 0 && ( -
- Removed: -
    - {entry.filesChanged.removed.map(file => ( -
  • - {file} -
  • - ))} -
-
- )} + {entry.filesChanged.modified && + entry.filesChanged.modified.length > 0 && ( +
+ Modified: +
    + {entry.filesChanged.modified.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.removed && + entry.filesChanged.removed.length > 0 && ( +
+ Removed: +
    + {entry.filesChanged.removed.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} )} @@ -134,4 +137,3 @@ export async function DocsChangelog() { ); } - From 05741b7144782ce4253ea911f7cc8ee091d1a858 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Tue, 14 Oct 2025 11:21:13 -0700 Subject: [PATCH 07/14] resolve merge conflicts --- src/components/changelog/docsChangelog.tsx | 60 +++++++++++----------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index ebb24c1a48f1f..0da6d6fbedcbb 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -34,7 +34,7 @@ export async function DocsChangelog() { if (entries.length === 0) { return ( -
+

No changelog entries available

Check back later for updates.

@@ -86,48 +86,46 @@ export async function DocsChangelog() { {entry.filesChanged && totalFiles > 0 && (
- + View changed files -
+
{entry.filesChanged.added && entry.filesChanged.added.length > 0 && (
- Added: + Added:
    {entry.filesChanged.added.map(file => ( -
  • +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.modified && entry.filesChanged.modified.length > 0 && ( +
+ Modified: +
    + {entry.filesChanged.modified.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.removed && entry.filesChanged.removed.length > 0 && ( +
+ Removed: +
    + {entry.filesChanged.removed.map(file => ( +
  • {file}
  • ))}
)} - {entry.filesChanged.modified && - entry.filesChanged.modified.length > 0 && ( -
- Modified: -
    - {entry.filesChanged.modified.map(file => ( -
  • - {file} -
  • - ))} -
-
- )} - {entry.filesChanged.removed && - entry.filesChanged.removed.length > 0 && ( -
- Removed: -
    - {entry.filesChanged.removed.map(file => ( -
  • - {file} -
  • - ))} -
-
- )}
)} From e3bae5ac0c807dcdda341a35e053a7acd88720f7 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Tue, 14 Oct 2025 13:06:43 -0700 Subject: [PATCH 08/14] Enable backfill workflow --- src/components/changelog/docsChangelog.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 0da6d6fbedcbb..61399e0f0fe6b 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -19,11 +19,13 @@ async function getChangelogEntries(): Promise { }); if (!res.ok) { - throw new Error('Failed to fetch changelog'); + throw new Error(`Failed to fetch changelog: ${res.status} ${res.statusText}`); } return res.json(); } catch (error) { + // eslint-disable-next-line no-console + console.error('Error fetching changelog:', error); // Error fetching changelog - return empty array return []; } From e5574f2c844b389a18a01d53f5465206fae67cf7 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Tue, 14 Oct 2025 15:33:34 -0700 Subject: [PATCH 09/14] Update dark mode text color --- src/components/changelog/docsChangelog.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 61399e0f0fe6b..296749375354a 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -65,7 +65,7 @@ export async function DocsChangelog() { {entry.title.replace('Docs Update: ', '')}
-
+
-

{entry.description}

+

{entry.description}

{entry.filesChanged && totalFiles > 0 && (
From 6abc4989e9cae7a1d62d7fd8251e14ca445b9f97 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 23:50:12 +0000 Subject: [PATCH 10/14] [getsentry/action-github-commit] Auto commit --- src/components/changelog/docsChangelog.tsx | 62 +++++++++++++--------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 296749375354a..f8582547e92c9 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -84,7 +84,9 @@ export async function DocsChangelog() {
-

{entry.description}

+

+ {entry.description} +

{entry.filesChanged && totalFiles > 0 && (
@@ -94,7 +96,9 @@ export async function DocsChangelog() {
{entry.filesChanged.added && entry.filesChanged.added.length > 0 && (
- Added: + + Added: +
    {entry.filesChanged.added.map(file => (
  • @@ -104,30 +108,36 @@ export async function DocsChangelog() {
)} - {entry.filesChanged.modified && entry.filesChanged.modified.length > 0 && ( -
- Modified: -
    - {entry.filesChanged.modified.map(file => ( -
  • - {file} -
  • - ))} -
-
- )} - {entry.filesChanged.removed && entry.filesChanged.removed.length > 0 && ( -
- Removed: -
    - {entry.filesChanged.removed.map(file => ( -
  • - {file} -
  • - ))} -
-
- )} + {entry.filesChanged.modified && + entry.filesChanged.modified.length > 0 && ( +
+ + Modified: + +
    + {entry.filesChanged.modified.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )} + {entry.filesChanged.removed && + entry.filesChanged.removed.length > 0 && ( +
+ + Removed: + +
    + {entry.filesChanged.removed.map(file => ( +
  • + {file} +
  • + ))} +
+
+ )}
)} From 46143aaa2c8d51a5fbdd5c7abd71200098c7ef0c Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Thu, 16 Oct 2025 13:53:37 -0700 Subject: [PATCH 11/14] Update to show most recent entries (#15254) ## DESCRIBE YOUR PR *Tell us what you're changing and why. If your PR **resolves an issue**, please link it so it closes automatically.* ## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs to go live. - [ ] Urgent deadline (GA date, etc.): - [ ] Other deadline: - [ ] None: Not urgent, can wait up to 1 week+ ## SLA - Teamwork makes the dream work, so please add a reviewer to your PRs. - Please give the docs team up to 1 week to review your PR unless you've added an urgent due date to it. Thanks in advance for your help! ## PRE-MERGE CHECKLIST *Make sure you've checked the following before merging your changes:* - [ ] Checked Vercel preview for correctness, including links - [ ] PR was reviewed and approved by any necessary SMEs (subject matter experts) - [ ] PR was reviewed and approved by a member of the [Sentry docs team](https://github.com/orgs/getsentry/teams/docs) ## 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. ## EXTRA RESOURCES - [Sentry Docs contributor guide](https://docs.sentry.io/contributing/) Co-authored-by: Alex Krawiec --- src/components/changelog/docsChangelog.tsx | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index f8582547e92c9..a7f7599aa88ec 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -43,9 +43,12 @@ export async function DocsChangelog() { ); } + // Show only the 20 most recent entries + const recentEntries = entries.slice(0, 20); + return (
- {entries.map(entry => { + {recentEntries.map(entry => { const date = new Date(entry.publishedAt); const totalFiles = (entry.filesChanged?.added?.length || 0) + @@ -144,6 +147,31 @@ export async function DocsChangelog() {
); })} + {entries.length > 20 && ( +
+

+ Showing the 20 most recent updates. View the{' '} + + full content dashboard + + {' '}or subscribe to the{' '} + + RSS feed + + . +

+
+ )} ); } From 0fa70529489be53cca9d28936460a7db8117755a Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Thu, 16 Oct 2025 14:23:38 -0700 Subject: [PATCH 12/14] remove names from changelog --- src/components/changelog/docsChangelog.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index a7f7599aa88ec..e9adf482aaa92 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -76,13 +76,13 @@ export async function DocsChangelog() { day: 'numeric', })} - - by {entry.author} - {totalFiles > 0 && } {totalFiles > 0 && ( - - {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed - + <> + + + {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed + + )} From 8c483b130d0998f440f491658312b23783dcc873 Mon Sep 17 00:00:00 2001 From: Alex Krawiec Date: Thu, 16 Oct 2025 15:17:26 -0700 Subject: [PATCH 13/14] Fix eslint issue --- src/components/changelog/docsChangelog.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index e9adf482aaa92..0a461af9c3041 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -76,13 +76,11 @@ export async function DocsChangelog() { day: 'numeric', })} + {totalFiles > 0 && } {totalFiles > 0 && ( - <> - - - {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed - - + + {totalFiles} file{totalFiles !== 1 ? 's' : ''} changed + )} From 4f12876b1924bc1380011e6747b8f4954accb6e1 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 22:18:14 +0000 Subject: [PATCH 14/14] [getsentry/action-github-commit] Auto commit --- src/components/changelog/docsChangelog.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/changelog/docsChangelog.tsx b/src/components/changelog/docsChangelog.tsx index 0a461af9c3041..6c8f3c6a2a9b0 100644 --- a/src/components/changelog/docsChangelog.tsx +++ b/src/components/changelog/docsChangelog.tsx @@ -156,8 +156,8 @@ export async function DocsChangelog() { className="text-primary hover:underline" > full content dashboard - - {' '}or subscribe to the{' '} + {' '} + or subscribe to the{' '}