From 4eac9853bce0880e7c657b96c0241832cd666700 Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Wed, 15 Apr 2026 18:16:06 +0200 Subject: [PATCH] changelog rss --- apps/www/.env.local.example | 4 + .../Changelog/ChangelogRssButton.tsx | 20 + .../Changelog/ChangelogV5Explorer.tsx | 8 +- .../Changelog/ChangelogV6Explorer.tsx | 7 +- apps/www/data/Footer.ts | 4 + apps/www/lib/changelog-rss.mjs | 67 + apps/www/lib/changelog.utils.ts | 3 + apps/www/lib/rss.tsx | 39 +- apps/www/pages/changelog-v2.tsx | 6 +- apps/www/pages/changelog-v3-modal.tsx | 6 +- apps/www/pages/changelog-v3.tsx | 7 +- apps/www/pages/changelog-v3/[number].tsx | 20 +- apps/www/pages/changelog-v4.tsx | 7 +- apps/www/pages/changelog.tsx | 6 +- apps/www/public/changelog-rss.xml | 1108 +++++++++++++++++ .../data/changelog-deleted-discussions.json | 21 + apps/www/scripts/generateStaticContent.mjs | 149 ++- 17 files changed, 1447 insertions(+), 35 deletions(-) create mode 100644 apps/www/components/Changelog/ChangelogRssButton.tsx create mode 100644 apps/www/lib/changelog-rss.mjs create mode 100644 apps/www/public/changelog-rss.xml create mode 100644 apps/www/scripts/data/changelog-deleted-discussions.json diff --git a/apps/www/.env.local.example b/apps/www/.env.local.example index 9300dad6376..e5fd6a3d306 100644 --- a/apps/www/.env.local.example +++ b/apps/www/.env.local.example @@ -22,3 +22,7 @@ NEXT_PUBLIC_SUPABASE_URL=https://xguihxuzqibwxjnimxev.supabase.co NEXT_PUBLIC_UI_LIBRARY_URL=http://localhost:3004 NEXT_PUBLIC_URL=http://localhost:3000 SUPABASE_COM_SERVICE_ROLE_KEY=secret + +# GITHUB_CHANGELOG_APP_ID= +# GITHUB_CHANGELOG_APP_INSTALLATION_ID= +# GITHUB_CHANGELOG_APP_PRIVATE_KEY= diff --git a/apps/www/components/Changelog/ChangelogRssButton.tsx b/apps/www/components/Changelog/ChangelogRssButton.tsx new file mode 100644 index 00000000000..3918e32bfd4 --- /dev/null +++ b/apps/www/components/Changelog/ChangelogRssButton.tsx @@ -0,0 +1,20 @@ +import { Rss } from 'lucide-react' +import Link from 'next/link' +import { Button, cn } from 'ui' + +type Props = { + className?: string +} + +export function ChangelogRssButton({ className }: Props) { + return ( + + ) +} diff --git a/apps/www/components/Changelog/ChangelogV5Explorer.tsx b/apps/www/components/Changelog/ChangelogV5Explorer.tsx index fa264f9f0b9..a0dba9158c6 100644 --- a/apps/www/components/Changelog/ChangelogV5Explorer.tsx +++ b/apps/www/components/Changelog/ChangelogV5Explorer.tsx @@ -1,5 +1,6 @@ 'use client' +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import type { ChangelogTimelineIndexItem } from '~/lib/changelog-github' import { githubChangelogLabelFilterUrl } from '~/lib/changelog.utils' import mdxComponents from '~/lib/mdx/mdxComponents' @@ -313,7 +314,10 @@ export function ChangelogV5Explorer({ items }: Props) { <>

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
@@ -324,7 +328,7 @@ export function ChangelogV5Explorer({ items }: Props) {
diff --git a/apps/www/components/Changelog/ChangelogV6Explorer.tsx b/apps/www/components/Changelog/ChangelogV6Explorer.tsx index c4ac1919e86..e6d56986d0c 100644 --- a/apps/www/components/Changelog/ChangelogV6Explorer.tsx +++ b/apps/www/components/Changelog/ChangelogV6Explorer.tsx @@ -7,9 +7,9 @@ import dayjs from 'dayjs' import { ChevronsUpDown } from 'lucide-react' import type { MDXRemoteSerializeResult } from 'next-mdx-remote' import { MDXRemote } from 'next-mdx-remote' -import Link from 'next/link' import { parseAsInteger, useQueryState } from 'nuqs' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import { Badge, cn, @@ -174,7 +174,10 @@ export function ChangelogV6Explorer({ items }: Props) { <>

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
{/* Sticky combobox navigator */} diff --git a/apps/www/data/Footer.ts b/apps/www/data/Footer.ts index 5fa08c94530..186c2fdb12e 100644 --- a/apps/www/data/Footer.ts +++ b/apps/www/data/Footer.ts @@ -124,6 +124,10 @@ const footerData = [ text: 'RSS', url: '/rss.xml', }, + { + text: 'Changelog RSS', + url: '/changelog-rss.xml', + }, ], }, { diff --git a/apps/www/lib/changelog-rss.mjs b/apps/www/lib/changelog-rss.mjs new file mode 100644 index 00000000000..dbf39a416fe --- /dev/null +++ b/apps/www/lib/changelog-rss.mjs @@ -0,0 +1,67 @@ +/** + * Pure ESM changelog RSS document builder (used by generateStaticContent.mjs and re-exported from rss.tsx). + * @typedef {{ title: string; url: string; sortDate: string }} ChangelogRssItemInput + */ +import dayjs from 'dayjs' +import utc from 'dayjs/plugin/utc.js' +import advancedFormat from 'dayjs/plugin/advancedFormat.js' + +dayjs.extend(utc) +dayjs.extend(advancedFormat) + +function xmlEncodeRss(str) { + if (str === undefined || str === null) return '' + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} + +function formatRssPubDate(isoOrDate) { + return dayjs(isoOrDate) + .utcOffset(0, true) + .startOf('day') + .format('ddd, DD MMM YYYY HH:mm:ss [-0700]') +} + +/** @param {ChangelogRssItemInput[]} entries */ +export function generateChangelogRssXml(entries) { + const visible = entries.filter((e) => !e.title.includes('[d]')) + const sorted = [...visible].sort( + (a, b) => dayjs(b.sortDate).valueOf() - dayjs(a.sortDate).valueOf() + ) + + const lastBuildDate = sorted[0]?.sortDate + ? formatRssPubDate(sorted[0].sortDate) + : formatRssPubDate(dayjs().toISOString()) + + const itemsXml = sorted + .map((e) => { + const encodedTitle = xmlEncodeRss(e.title) + const encodedLink = xmlEncodeRss(e.url) + const pubDate = formatRssPubDate(e.sortDate) + return ` + ${encodedLink} + ${encodedTitle} + ${encodedLink} + ${pubDate} +` + }) + .join('\n') + + return ` + + + Supabase Changelog + https://supabase.com/changelog + Product updates and improvements from Supabase + en + ${lastBuildDate} + + ${itemsXml} + + +` +} diff --git a/apps/www/lib/changelog.utils.ts b/apps/www/lib/changelog.utils.ts index 9c2b3598d6b..0fbfea17d3b 100644 --- a/apps/www/lib/changelog.utils.ts +++ b/apps/www/lib/changelog.utils.ts @@ -1,6 +1,9 @@ // hackery to fix Terry accidentally deleting // a bunch of releases and their associted discussions in Dec 2023 // checks if titles match and grabs this original createdAt timestamp +// +// When editing entries with `createdAt`, also sync `scripts/data/changelog-deleted-discussions.json` +// (title + createdAt only) — used by generateStaticContent.mjs for changelog-rss.xml. export const deletedDiscussions = [ { title: 'Platform updates: October 2023', diff --git a/apps/www/lib/rss.tsx b/apps/www/lib/rss.tsx index 4fbd2fcb558..ab25258d0b3 100644 --- a/apps/www/lib/rss.tsx +++ b/apps/www/lib/rss.tsx @@ -5,23 +5,22 @@ var advancedFormat = require('dayjs/plugin/advancedFormat') dayjs.extend(utc) dayjs.extend(advancedFormat) -const generateRssItem = (post: any): string => { - const xmlEncode = (str: string) => { - if (str === undefined || str === null) { - return '' - } - - return str - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') +export function xmlEncodeRss(str: string | undefined | null): string { + if (str === undefined || str === null) { + return '' } + return str + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') +} - const encodedTitle = xmlEncode(post.title) - const encodedPath = xmlEncode(post.path) - const encodedDescription = xmlEncode(post.description) +const generateRssItem = (post: any): string => { + const encodedTitle = xmlEncodeRss(post.title) + const encodedPath = xmlEncodeRss(post.path) + const encodedDescription = xmlEncodeRss(post.description) const formattedDate = dayjs(post.date) .utcOffset(0, true) .startOf('day') @@ -37,9 +36,19 @@ const generateRssItem = (post: any): string => { ` } +export type ChangelogRssItemInput = { + title: string + url: string + sortDate: string +} + +/** Implemented in `./changelog-rss.mjs` (used by `scripts/generateStaticContent.mjs`). */ +export { generateChangelogRssXml } from './changelog-rss.mjs' + // This utility generates RSS feeds for specialized content: // 1. Customer stories RSS feed (customers-rss.xml) - used by pages/customers.tsx via getStaticProps // 2. Author-specific PlanetPG RSS feeds (planetpg-{authorID}-rss.xml) - filtered feeds for individual authors +// 3. Changelog RSS (changelog-rss.xml) — built in generateStaticContent.mjs via ./changelog-rss.mjs // // Note: The main blog RSS feed (rss.xml) containing all blog posts is generated separately // in generateStaticContent.mjs during the build process. This file is NOT used for the main blog feed. diff --git a/apps/www/pages/changelog-v2.tsx b/apps/www/pages/changelog-v2.tsx index 7d52789186b..ced1c327c8d 100644 --- a/apps/www/pages/changelog-v2.tsx +++ b/apps/www/pages/changelog-v2.tsx @@ -3,6 +3,7 @@ import { createAppAuth } from '@octokit/auth-app' import { Octokit } from '@octokit/core' import { paginateGraphql } from '@octokit/plugin-paginate-graphql' import { Octokit as OctokitRest } from '@octokit/rest' +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' import { discussionDisplayDate, githubChangelogLabelFilterUrl } from '~/lib/changelog.utils' @@ -385,7 +386,10 @@ function ChangelogV2Page({ changelogIndex, changelog, pageInfo, restPage }: Chan >

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
diff --git a/apps/www/pages/changelog-v3.tsx b/apps/www/pages/changelog-v3.tsx index a75e8491924..ae5b8f32562 100644 --- a/apps/www/pages/changelog-v3.tsx +++ b/apps/www/pages/changelog-v3.tsx @@ -1,3 +1,4 @@ +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import { ChangelogV3TimelineList } from '~/components/Changelog/ChangelogV3TimelineList' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' @@ -5,7 +6,6 @@ import type { ChangelogTimelineIndexItem } from '~/lib/changelog-github' import { getChangelogTimelineSortedIndex } from '~/lib/changelog-github' import type { GetServerSideProps } from 'next' import { NextSeo } from 'next-seo' -import Link from 'next/link' type PageProps = { changelogIndex: ChangelogTimelineIndexItem[] @@ -40,7 +40,10 @@ function ChangelogV3Page({ changelogIndex }: PageProps) {

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
diff --git a/apps/www/pages/changelog-v3/[number].tsx b/apps/www/pages/changelog-v3/[number].tsx index f641547c7b2..de971c30314 100644 --- a/apps/www/pages/changelog-v3/[number].tsx +++ b/apps/www/pages/changelog-v3/[number].tsx @@ -1,4 +1,5 @@ import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/outline' +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' import { @@ -113,14 +114,17 @@ function ChangelogV3DetailPage({ />
- +
+ + +

{title}

diff --git a/apps/www/pages/changelog-v4.tsx b/apps/www/pages/changelog-v4.tsx index 73fe212b947..713de89e954 100644 --- a/apps/www/pages/changelog-v4.tsx +++ b/apps/www/pages/changelog-v4.tsx @@ -1,3 +1,4 @@ +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import { ChangelogMonthTabExplorer } from '~/components/Changelog/ChangelogMonthTabExplorer' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' @@ -5,7 +6,6 @@ import type { ChangelogTimelineIndexItem } from '~/lib/changelog-github' import { getChangelogTimelineSortedIndex } from '~/lib/changelog-github' import type { GetServerSideProps } from 'next' import { NextSeo } from 'next-seo' -import Link from 'next/link' import { NuqsAdapter } from 'nuqs/adapters/next/pages' type PageProps = { @@ -40,7 +40,10 @@ export default function ChangelogV4MonthTabsPage({ changelogIndex }: PageProps)

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
diff --git a/apps/www/pages/changelog.tsx b/apps/www/pages/changelog.tsx index 5c724c4b0d5..842a28b32c7 100644 --- a/apps/www/pages/changelog.tsx +++ b/apps/www/pages/changelog.tsx @@ -3,6 +3,7 @@ import { createAppAuth } from '@octokit/auth-app' import { Octokit } from '@octokit/core' import { paginateGraphql } from '@octokit/plugin-paginate-graphql' import { Octokit as OctokitRest } from '@octokit/rest' +import { ChangelogRssButton } from '~/components/Changelog/ChangelogRssButton' import CTABanner from '~/components/CTABanner' import DefaultLayout from '~/components/Layouts/Default' import { @@ -311,7 +312,10 @@ function ChangelogPage({ changelog, pageInfo, restPage }: ChangelogPageProps) { >

Changelog

-

New updates and product improvements

+
+

New updates and product improvements

+ +
{/* Content */} diff --git a/apps/www/public/changelog-rss.xml b/apps/www/public/changelog-rss.xml new file mode 100644 index 00000000000..adf86ecf850 --- /dev/null +++ b/apps/www/public/changelog-rss.xml @@ -0,0 +1,1108 @@ + + + Supabase Changelog + https://supabase.com/changelog + Product updates and improvements from Supabase + en + Thu, 09 Apr 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/44713 + Developer Update - April 2026 + https://github.com/orgs/supabase/discussions/44713 + Thu, 09 Apr 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/43644 + Edge Functions rate limits on recursive/nested Edge Functions calls + https://github.com/orgs/supabase/discussions/43644 + Wed, 11 Mar 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/43465 + Developer Update - March 2026 + https://github.com/orgs/supabase/discussions/43465 + Thu, 05 Mar 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/42949 + Breaking Change: Removing access to OpenAPI spec via the anon key + https://github.com/orgs/supabase/discussions/42949 + Tue, 17 Feb 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/42531 + Developer Update - February 2026 + https://github.com/orgs/supabase/discussions/42531 + Thu, 05 Feb 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/42460 + Queue table Inserts, edits and deletes on the table editor + https://github.com/orgs/supabase/discussions/42460 + Wed, 04 Feb 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/42180 + Breaking Change: pg_graphql no longer enabled automatically (within approx 3 weeks from today) + https://github.com/orgs/supabase/discussions/42180 + Mon, 26 Jan 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/42031 + SQL snippets can now be saved in local Studio + https://github.com/orgs/supabase/discussions/42031 + Wed, 21 Jan 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/41796 + Developer Update - January 2026 + https://github.com/orgs/supabase/discussions/41796 + Thu, 08 Jan 2026 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/41288 + Data API upgrade to PostgREST v14 + https://github.com/orgs/supabase/discussions/41288 + Fri, 12 Dec 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/41231 + Developer Update - December 2025 + https://github.com/orgs/supabase/discussions/41231 + Wed, 10 Dec 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/40815 + [Public Alpha] Manage Vector Buckets from the dashboard + https://github.com/orgs/supabase/discussions/40815 + Wed, 26 Nov 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/40734 + Dashboard Updates (101125 - 251125) + https://github.com/orgs/supabase/discussions/40734 + Mon, 24 Nov 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/40349 + Notify users about security-sensitive actions on their accounts + https://github.com/orgs/supabase/discussions/40349 + Tue, 11 Nov 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/40116 + [Public Alpha] Manage Analytics Buckets from the dashboard + https://github.com/orgs/supabase/discussions/40116 + Tue, 04 Nov 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/40083 + Dashboard Updates (201025 - 031125) + https://github.com/orgs/supabase/discussions/40083 + Mon, 03 Nov 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39773 + Enhanced Type Inference for Embedded Functions (Computed Relationships) + https://github.com/orgs/supabase/discussions/39773 + Wed, 22 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39709 + Dashboard Updates (061025 - 201025) + https://github.com/orgs/supabase/discussions/39709 + Tue, 21 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39434 + Supabase Remote MCP server + https://github.com/orgs/supabase/discussions/39434 + Fri, 10 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39378 + Potential breaking change in pgmq from 1.4.4 to 1.5.1 and temporary halt on upgrade for existing projects + https://github.com/orgs/supabase/discussions/39378 + Wed, 08 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39292 + Dashboard Updates (220925 - 061025) + https://github.com/orgs/supabase/discussions/39292 + Mon, 06 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/39197 + Supabase JS Client Libs: Migration to Monorepo + https://github.com/orgs/supabase/discussions/39197 + Thu, 02 Oct 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38974 + Dashboard Updates (080925 - 220925) + https://github.com/orgs/supabase/discussions/38974 + Wed, 24 Sep 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38771 + Changes to Custom JWT and Signing Keys issue resolution + https://github.com/orgs/supabase/discussions/38771 + Wed, 17 Sep 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38356 + Dashboard Updates (180825 - 010925) + https://github.com/orgs/supabase/discussions/38356 + Mon, 01 Sep 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38248 + Personal Access Tokens: Expiration & Usage Tracking + https://github.com/orgs/supabase/discussions/38248 + Wed, 27 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38119 + 3x cheaper egress for cache hits + https://github.com/orgs/supabase/discussions/38119 + Fri, 22 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/38022 + OAuth 2.1 Server Capabilities for Supabase Auth + https://github.com/orgs/supabase/discussions/38022 + Tue, 19 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37941 + All regions now run Deno 2.1 compatible release + https://github.com/orgs/supabase/discussions/37941 + Fri, 15 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37869 + Change in `realtime-js` affecting Node.js < 22 + https://github.com/orgs/supabase/discussions/37869 + Tue, 12 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37798 + Deprecation Notice: Dropping support for python's gotrue and supafunc + https://github.com/orgs/supabase/discussions/37798 + Fri, 08 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37655 + Dashboard Navigation Updates: Project Settings + https://github.com/orgs/supabase/discussions/37655 + Mon, 04 Aug 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37415 + supabase v17.4.1.062 was withdrawn + https://github.com/orgs/supabase/discussions/37415 + Wed, 23 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37234 + Coming Soon: Combined View for Logs + https://github.com/orgs/supabase/discussions/37234 + Thu, 17 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37217 + Deprecation Notice: Dropping Support for Node.js 18 + https://github.com/orgs/supabase/discussions/37217 + Wed, 16 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/37041 + Realtime Settings + https://github.com/orgs/supabase/discussions/37041 + Fri, 11 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/36850 + Update to Edge Functions Regional Invocations + https://github.com/orgs/supabase/discussions/36850 + Thu, 03 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/36814 + Deno 2.1 Preview - Hosted Environment + https://github.com/orgs/supabase/discussions/36814 + Wed, 02 Jul 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35851 + Forthcoming Postgres 17 Release Notes + https://github.com/orgs/supabase/discussions/35851 + Thu, 22 May 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35636 + Feature Preview: Tabs for Table and SQL Editor + https://github.com/orgs/supabase/discussions/35636 + Tue, 13 May 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35523 + Developer Update - April 2025 + https://github.com/orgs/supabase/discussions/35523 + Wed, 07 May 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35495 + Dashboard Updates [210425 - 050525] + https://github.com/orgs/supabase/discussions/35495 + Tue, 06 May 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35172 + Project scoped roles now available in Team plans + https://github.com/orgs/supabase/discussions/35172 + Mon, 21 Apr 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/35169 + Dashboard Updates [070425 - 210425] + https://github.com/orgs/supabase/discussions/35169 + Mon, 21 Apr 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34839 + Developer Update - March 2025 + https://github.com/orgs/supabase/discussions/34839 + Tue, 08 Apr 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34794 + Dashboard Updates [240225 - 070425] + https://github.com/orgs/supabase/discussions/34794 + Mon, 07 Apr 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34634 + Supabase Management API `GET` Logs Restrictions + https://github.com/orgs/supabase/discussions/34634 + Tue, 01 Apr 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34494 + Upcoming Change: Improved Experimental Routing for Read Replica Load Balancers + https://github.com/orgs/supabase/discussions/34494 + Thu, 27 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34404 + Dedicated Pooler with PgBouncer + https://github.com/orgs/supabase/discussions/34404 + Tue, 25 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34270 + Restricting Access on Auth, Storage, and Realtime Schemas on April 21, 2025 + https://github.com/orgs/supabase/discussions/34270 + Tue, 18 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34067 + Developer Update - February 2025 + https://github.com/orgs/supabase/discussions/34067 + Fri, 07 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/34054 + Deno 2.1 Preview **local only** + https://github.com/orgs/supabase/discussions/34054 + Fri, 07 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33959 + Greatly increased Third-Party Auth MAU quota for Free and Paid Plans + https://github.com/orgs/supabase/discussions/33959 + Mon, 03 Mar 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33835 + Dashboard Updates [10/02/25 - 24/02/25] + https://github.com/orgs/supabase/discussions/33835 + Tue, 25 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33720 + Deploy and update Edge Functions using the Management API + https://github.com/orgs/supabase/discussions/33720 + Thu, 20 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33690 + Feature Preview: Inline Editor + https://github.com/orgs/supabase/discussions/33690 + Wed, 19 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33670 + Upcoming breaking change to Dashboard Navigation + https://github.com/orgs/supabase/discussions/33670 + Tue, 18 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33613 + Deploy Edge Functions from CLI without needing Docker + import files outside of supabase directory + https://github.com/orgs/supabase/discussions/33613 + Fri, 14 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33511 + Dashboard Updates [27/01/25 - 10/02/25] + https://github.com/orgs/supabase/discussions/33511 + Tue, 11 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33416 + Developer Update - January 2025 + https://github.com/orgs/supabase/discussions/33416 + Fri, 07 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33413 + Deprecation of Fly.io Postgres Managed by Supabase on April 11, 2025 + https://github.com/orgs/supabase/discussions/33413 + Fri, 07 Feb 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33144 + Dashboard Updates [13/01/25 - 27/01/25] + https://github.com/orgs/supabase/discussions/33144 + Tue, 28 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33121 + Relaxing Database Size limit on Free Plan - 0.5 GB Database Size per project + https://github.com/orgs/supabase/discussions/33121 + Mon, 27 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/33035 + Developer Update - December 2024 + https://github.com/orgs/supabase/discussions/33035 + Thu, 23 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32925 + Enhanced Type Inference for JSON Fields in supabase-js + https://github.com/orgs/supabase/discussions/32925 + Mon, 20 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32815 + Add static files to Edge Functions + https://github.com/orgs/supabase/discussions/32815 + Thu, 16 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32755 + Supabase Connection Pooler Deprecating Session Mode on Port 6543 on February 28, 2025 + https://github.com/orgs/supabase/discussions/32755 + Mon, 13 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32741 + Dashboard Updates [30/12/24 - 13/01/25] + https://github.com/orgs/supabase/discussions/32741 + Mon, 13 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32735 + Credit Balance Top Up + https://github.com/orgs/supabase/discussions/32735 + Mon, 13 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32677 + Type validation for query filter values in supabase-js + https://github.com/orgs/supabase/discussions/32677 + Thu, 09 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/32635 + Use a custom NPM registry for Edge Function dependencies + https://github.com/orgs/supabase/discussions/32635 + Tue, 07 Jan 2025 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/31318 + Dashboard Updates [09/12/24 - 23/12/24] + https://github.com/orgs/supabase/discussions/31318 + Tue, 24 Dec 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/31041 + Dashboard Updates [18/11/24 - 09/12/24] + https://github.com/orgs/supabase/discussions/31041 + Tue, 10 Dec 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30772 + Slack V1 OAuth Provider Deprecated in favour of Slack (OIDC) + https://github.com/orgs/supabase/discussions/30772 + Mon, 02 Dec 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30606 + Removal of app.settings.jwt_secret from the database + https://github.com/orgs/supabase/discussions/30606 + Fri, 22 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30526 + Dashboard Updates [04/11/24 - 18/11/24] + https://github.com/orgs/supabase/discussions/30526 + Mon, 18 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30324 + `supabase-js` release candidate `2.46.2-rc.3` incoming types inferences for PostgREST fixes and feedbacks + https://github.com/orgs/supabase/discussions/30324 + Wed, 06 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30307 + Write Edge Functions in pure JavaScript instead of using TypeScript + https://github.com/orgs/supabase/discussions/30307 + Tue, 05 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30291 + Use `deno.json` configuration file in Edge Functions + https://github.com/orgs/supabase/discussions/30291 + Tue, 05 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30264 + Dashboard Updates [21/10/24 - 04/11/24] + https://github.com/orgs/supabase/discussions/30264 + Mon, 04 Nov 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30179 + Import NPM packages from private registries in Edge Functions + https://github.com/orgs/supabase/discussions/30179 + Wed, 30 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/30005 + Dashboard Updates [07/10/24 - 21/10/24] + https://github.com/orgs/supabase/discussions/30005 + Mon, 21 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29828 + Developer Update - September 2024 + https://github.com/orgs/supabase/discussions/29828 + Thu, 10 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29798 + Improved docs information architecture + https://github.com/orgs/supabase/discussions/29798 + Wed, 09 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29710 + Dashboard Updates [23/09/24 - 07/10/24] + https://github.com/orgs/supabase/discussions/29710 + Mon, 07 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29633 + XHTML responses are only allowed with a Custom Domain enabled + https://github.com/orgs/supabase/discussions/29633 + Wed, 02 Oct 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29494 + Supabase Platform Access Control: Project Permissions Breaking Changes on October 15, 2024 + https://github.com/orgs/supabase/discussions/29494 + Tue, 24 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29447 + Dashboard Weekly Updates [16/09/24 - 23/09/24] + https://github.com/orgs/supabase/discussions/29447 + Mon, 23 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29434 + Projects on XL and larger compute add-ons can now create up to 5 Read Replicas. + https://github.com/orgs/supabase/discussions/29434 + Sun, 22 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29370 + Supabase Auth: Changes to default email provider + https://github.com/orgs/supabase/discussions/29370 + Wed, 18 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29331 + Developer Update - August 2024 + https://github.com/orgs/supabase/discussions/29331 + Mon, 16 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29289 + Supabase Auth: Asymmetric Keys support in 2025 + https://github.com/orgs/supabase/discussions/29289 + Fri, 13 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29260 + Upcoming changes to Supabase API Keys + https://github.com/orgs/supabase/discussions/29260 + Thu, 12 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29239 + Dashboard Weekly Updates [02/09/24 - 09/09/24] + https://github.com/orgs/supabase/discussions/29239 + Thu, 12 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29189 + Edge Functions are now Deno 1.45 compatible + https://github.com/orgs/supabase/discussions/29189 + Tue, 10 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29030 + Dashboard Weekly Updates [26/08/24 - 02/09/24] + https://github.com/orgs/supabase/discussions/29030 + Mon, 02 Sep 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/29004 + Dashboard Weekly Updates [26/08/24 - 30/08/24] + https://github.com/orgs/supabase/discussions/29004 + Fri, 30 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28849 + Moving to hourly usage-based billing for databases, based on disk consumption + https://github.com/orgs/supabase/discussions/28849 + Fri, 23 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28738 + Threshold for transitioning projects to physical backups lowered to 15GB + https://github.com/orgs/supabase/discussions/28738 + Mon, 19 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28519 + Developer Updates - July 2024 + https://github.com/orgs/supabase/discussions/28519 + Fri, 09 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28493 + Let's Encrypt cross-signed chain will no longer be used for Custom Domains after September 9, 2024 + https://github.com/orgs/supabase/discussions/28493 + Fri, 09 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28480 + Improved invoices and more timely usage data + https://github.com/orgs/supabase/discussions/28480 + Thu, 08 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28438 + Moving to hourly usage-based billing for IPv4, Custom Domain and Point-in-time recovery + https://github.com/orgs/supabase/discussions/28438 + Wed, 07 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28339 + Moving to hourly billing for Storage Size + https://github.com/orgs/supabase/discussions/28339 + Fri, 02 Aug 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28267 + Wrappers Wasm FDW is on Public Alpha + https://github.com/orgs/supabase/discussions/28267 + Tue, 30 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28154 + Developer Updates - June 2024 + https://github.com/orgs/supabase/discussions/28154 + Wed, 24 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28118 + DigiCert no longer being used as the CA for Supabase HTTP APIs + https://github.com/orgs/supabase/discussions/28118 + Mon, 22 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/28062 + Edge Functions: Deploy More Functions at No Extra Cost + https://github.com/orgs/supabase/discussions/28062 + Thu, 18 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27993 + Supabase Platform Access Control: Organization Permissions Breaking Changes on July 26, 2024 + https://github.com/orgs/supabase/discussions/27993 + Mon, 15 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27988 + Dashboard Weekly Updates [08/07/24 - 15/07/24] + https://github.com/orgs/supabase/discussions/27988 + Mon, 15 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27946 + Postgres 13 Deprecation Notice + https://github.com/orgs/supabase/discussions/27946 + Fri, 12 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27876 + Dashboard Weekly Updates [01/07/24 - 08/07/24] + https://github.com/orgs/supabase/discussions/27876 + Tue, 09 Jul 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27498 + Dashboard Weekly Updates [17/06/24 - 24/06/24] + https://github.com/orgs/supabase/discussions/27498 + Mon, 24 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27497 + Paused Free Plan projects are restorable for 90 days + https://github.com/orgs/supabase/discussions/27497 + Mon, 24 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27349 + Edge Functions are now Deno 1.43 compatible + https://github.com/orgs/supabase/discussions/27349 + Tue, 18 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27338 + Developer Updates - May 2024 + https://github.com/orgs/supabase/discussions/27338 + Tue, 18 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27166 + Dashboard Weekly Updates [03/06/24 - 10/06/24] + https://github.com/orgs/supabase/discussions/27166 + Tue, 11 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/27037 + @supabase/ssr updates and roadmap towards v1.0.0 + https://github.com/orgs/supabase/discussions/27037 + Wed, 05 Jun 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/26650 + Log Drains Private Alpha + https://github.com/orgs/supabase/discussions/26650 + Wed, 22 May 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/26421 + Updated deployment instructions for supabase-grafana monitoring application + https://github.com/orgs/supabase/discussions/26421 + Fri, 17 May 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/26327 + Dashboard Weekly Updates [06/05/24 - 13/05/24] + https://github.com/orgs/supabase/discussions/26327 + Wed, 15 May 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/25860 + Developer Updates - April 2024 + https://github.com/orgs/supabase/discussions/25860 + Wed, 08 May 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/25842 + JSR modules are supported in Edge Functions & Edge Runtime + https://github.com/orgs/supabase/discussions/25842 + Tue, 07 May 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/23433 + Dashboard Weekly Updates [22/04/24 - 29/04/24] + https://github.com/orgs/supabase/discussions/23433 + Tue, 30 Apr 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/23139 + Dashboard Weekly Updates [15/04/24 - 22/04/24] + https://github.com/orgs/supabase/discussions/23139 + Mon, 22 Apr 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/22525 + Platform Updates: March 2024 + https://github.com/orgs/supabase/discussions/22525 + Sat, 06 Apr 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/22484 + Realtime Broadcast and Presence Authorization + https://github.com/orgs/supabase/discussions/22484 + Thu, 04 Apr 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/22457 + Increased Supavisor Client Connection Limits Across Paid Plans + https://github.com/orgs/supabase/discussions/22457 + Thu, 04 Apr 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/22222 + Dashboard Weekly Updates [18/03/24 - 25/03/24] + https://github.com/orgs/supabase/discussions/22222 + Tue, 26 Mar 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/22135 + Migration to v2 platform architecture + https://github.com/orgs/supabase/discussions/22135 + Wed, 20 Mar 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21974 + Dashboard Weekly Updates [04/03/24 - 11/03/24] + https://github.com/orgs/supabase/discussions/21974 + Tue, 12 Mar 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21823 + Platform Updates: February 2024 + https://github.com/orgs/supabase/discussions/21823 + Wed, 06 Mar 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21732 + Dashboard Weekly Updates [26/02/24 - 04/03/24] + https://github.com/orgs/supabase/discussions/21732 + Mon, 04 Mar 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21563 + Dashboard Weekly Updates [19/02/24 - 26/02/24] + https://github.com/orgs/supabase/discussions/21563 + Mon, 26 Feb 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21386 + Paid organizations can now launch projects on bigger compute immediately + https://github.com/orgs/supabase/discussions/21386 + Tue, 20 Feb 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21366 + Dashboard Weekly Updates [12/02/24 - 19/02/24] + https://github.com/orgs/supabase/discussions/21366 + Mon, 19 Feb 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21219 + Dashboard Weekly Updates [05/02/24 - 12/02/24] + https://github.com/orgs/supabase/discussions/21219 + Tue, 13 Feb 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/21042 + Platform Updates: January 2024 + https://github.com/orgs/supabase/discussions/21042 + Tue, 06 Feb 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20863 + Dashboard Weekly Updates [22/01/24 - 29/01/24] + https://github.com/orgs/supabase/discussions/20863 + Tue, 30 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20622 + Dashboard Weekly Updates [15/01/24 - 22/01/24] + https://github.com/orgs/supabase/discussions/20622 + Mon, 22 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20522 + Supavisor starts enforcing Network Restrictions + https://github.com/orgs/supabase/discussions/20522 + Wed, 17 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20512 + IPv4 addon for projects available + https://github.com/orgs/supabase/discussions/20512 + Wed, 17 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20430 + Dashboard Weekly Updates [08/01/24 - 15/01/24] + https://github.com/orgs/supabase/discussions/20430 + Mon, 15 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20358 + Supavisor 1.1.6 + https://github.com/orgs/supabase/discussions/20358 + Thu, 11 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20346 + Platform Updates December 2023 + https://github.com/orgs/supabase/discussions/20346 + Thu, 11 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20313 + Supavisor 1.1.5 + https://github.com/orgs/supabase/discussions/20313 + Wed, 10 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20231 + Dashboard Weekly Updates [01/01/24 - 01/08/24] + https://github.com/orgs/supabase/discussions/20231 + Mon, 08 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20195 + Supavisor v1.1.2 - allow_list and client_heartbeat_interval + https://github.com/orgs/supabase/discussions/20195 + Fri, 05 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/20122 + Threshold for transitioning projects to physical backups lowered to 40GB + https://github.com/orgs/supabase/discussions/20122 + Wed, 03 Jan 2024 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19827 + Dashboard Weekly Updates [11th Dec - 18th Dec] + https://github.com/orgs/supabase/discussions/19827 + Mon, 18 Dec 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19669 + Supavisor 1.0 + https://github.com/orgs/supabase/discussions/19669 + Wed, 13 Dec 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19438 + Improved usage insights and transparency + https://github.com/orgs/supabase/discussions/19438 + Tue, 05 Dec 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19425 + Dashboard Weekly Updates [27th - 4th Dec] + https://github.com/orgs/supabase/discussions/19425 + Tue, 05 Dec 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19298 + Directly updating rows in the `cron.job` table is no longer allowed + https://github.com/orgs/supabase/discussions/19298 + Wed, 29 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19254 + Dashboard Weekly Updates [20th Nov - 27th Nov] + https://github.com/orgs/supabase/discussions/19254 + Mon, 27 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19204 + LinkedIn OAuth Provider deprecated in favour of LinkedIn (OIDC) Provider + https://github.com/orgs/supabase/discussions/19204 + Fri, 24 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18972 + Edge Functions secrets should now get updated upon resetting DB password or JWT secret + https://github.com/orgs/supabase/discussions/18972 + Wed, 15 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18861 + Improved Realtime reliability when migrations fail for a project + https://github.com/orgs/supabase/discussions/18861 + Fri, 10 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18849 + Column Encryption is SQL-only now + https://github.com/orgs/supabase/discussions/18849 + Thu, 09 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18845 + Connections to Postgres directly from an edge function are secured with SSL + https://github.com/orgs/supabase/discussions/18845 + Thu, 09 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19705 + Platform updates: October 2023 + https://github.com/orgs/supabase/discussions/19705 + Mon, 06 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18654 + Large databases now use daily physical backups + https://github.com/orgs/supabase/discussions/18654 + Thu, 02 Nov 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/18198 + Postgres 12 Deprecation Notice + https://github.com/orgs/supabase/discussions/18198 + Sat, 14 Oct 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19706 + Platform update September 2023 + https://github.com/orgs/supabase/discussions/19706 + Fri, 06 Oct 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/17817 + PGBouncer and IPv4 Deprecation + https://github.com/orgs/supabase/discussions/17817 + Fri, 29 Sep 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19704 + Platform updates: August 2023 + https://github.com/orgs/supabase/discussions/19704 + Fri, 08 Sep 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/17061 + Moving to Org-based billing + https://github.com/orgs/supabase/discussions/17061 + Thu, 31 Aug 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19703 + Platform updates June 2023 + https://github.com/orgs/supabase/discussions/19703 + Fri, 07 Jul 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19702 + Platform updates: May 2023 + https://github.com/orgs/supabase/discussions/19702 + Fri, 09 Jun 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19701 + Platform updates: April 2023 + https://github.com/orgs/supabase/discussions/19701 + Wed, 10 May 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19700 + Platform Update February 2023 + https://github.com/orgs/supabase/discussions/19700 + Thu, 09 Mar 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19699 + Platform update January 2023 + https://github.com/orgs/supabase/discussions/19699 + Wed, 08 Feb 2023 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19698 + Platform Updates November 2022 + https://github.com/orgs/supabase/discussions/19698 + Thu, 08 Dec 2022 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19697 + Platform updates: October 2022 + https://github.com/orgs/supabase/discussions/19697 + Wed, 02 Nov 2022 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19696 + Platform Update September 2022 + https://github.com/orgs/supabase/discussions/19696 + Fri, 07 Oct 2022 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/9314 + Security Patch Notice + https://github.com/orgs/supabase/discussions/9314 + Tue, 04 Oct 2022 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19695 + Platform updates: 30 Nov 2021 + https://github.com/orgs/supabase/discussions/19695 + Tue, 30 Nov 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19694 + October Beta 2021 + https://github.com/orgs/supabase/discussions/19694 + Mon, 08 Nov 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19693 + September Beta 2021 + https://github.com/orgs/supabase/discussions/19693 + Mon, 04 Oct 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19692 + August Beta 2021 + https://github.com/orgs/supabase/discussions/19692 + Mon, 13 Sep 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19691 + July Beta 2021 + https://github.com/orgs/supabase/discussions/19691 + Thu, 12 Aug 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19690 + June Beta 2021 + https://github.com/orgs/supabase/discussions/19690 + Sun, 04 Jul 2021 00:00:00 -0700 + + + https://github.com/orgs/supabase/discussions/19688 + April Beta 2021 + https://github.com/orgs/supabase/discussions/19688 + Wed, 05 May 2021 00:00:00 -0700 + + + \ No newline at end of file diff --git a/apps/www/scripts/data/changelog-deleted-discussions.json b/apps/www/scripts/data/changelog-deleted-discussions.json new file mode 100644 index 00000000000..d4d97616816 --- /dev/null +++ b/apps/www/scripts/data/changelog-deleted-discussions.json @@ -0,0 +1,21 @@ +[ + { "title": "Platform updates: October 2023", "createdAt": "2023-11-06T16:25:12Z" }, + { "title": "Platform update September 2023", "createdAt": "2023-10-06T09:23:56Z" }, + { "title": "Platform updates: August 2023", "createdAt": "2023-09-08T13:00:39Z" }, + { "title": "Platform updates June 2023", "createdAt": "2023-07-07T16:09:32Z" }, + { "title": "Platform updates: May 2023", "createdAt": "2023-06-09T16:40:16Z" }, + { "title": "Platform updates: April 2023", "createdAt": "2023-05-10T18:40:02Z" }, + { "title": "Platform Update February 2023", "createdAt": "2023-03-09T12:06:01Z" }, + { "title": "Platform update January 2023", "createdAt": "2023-02-08T18:29:41Z" }, + { "title": "Platform Updates November 2022", "createdAt": "2022-12-08T12:00:48Z" }, + { "title": "Platform updates: October 2022", "createdAt": "2022-11-02T16:07:47Z" }, + { "title": "Platform Update September 2022", "createdAt": "2022-10-07T10:18:21Z" }, + { "title": "Platform updates: 30 Nov 2021", "createdAt": "2021-11-30T10:06:55Z" }, + { "title": "October Beta 2021", "createdAt": "2021-11-08T13:14:35Z" }, + { "title": "September Beta 2021", "createdAt": "2021-10-04T18:10:57Z" }, + { "title": "August Beta 2021", "createdAt": "2021-09-13T09:47:18Z" }, + { "title": "July Beta 2021", "createdAt": "2021-08-12T13:46:14Z" }, + { "title": "June Beta 2021", "createdAt": "2021-07-04T13:23:35Z" }, + { "title": "May Beta 2021", "createdAt": "2021-06-10T11:53:14Z" }, + { "title": "April Beta 2021", "createdAt": "2021-05-05T05:17:27Z" } +] diff --git a/apps/www/scripts/generateStaticContent.mjs b/apps/www/scripts/generateStaticContent.mjs index 92c0f35b7c6..d4cd9dd6aa8 100644 --- a/apps/www/scripts/generateStaticContent.mjs +++ b/apps/www/scripts/generateStaticContent.mjs @@ -8,6 +8,60 @@ import advancedFormat from 'dayjs/plugin/advancedFormat.js' import utc from 'dayjs/plugin/utc.js' import matter from 'gray-matter' +/** + * Plain `node` does not read `.env` / `.env.local` (Next.js loads those when you run `next`). + * Minimal parser: no extra dependency; `.env` first, then `.env.local` overrides. + */ +function loadLocalEnvFiles(rootDir) { + const parseValue = (raw) => { + const val = raw.trim() + if (val.startsWith('"') && val.endsWith('"')) { + return val + .slice(1, -1) + .replace(/\\n/g, '\n') + .replace(/\\"/g, '"') + .replace(/\\\\/g, '\\') + } + if (val.startsWith("'") && val.endsWith("'")) { + return val + .slice(1, -1) + .replace(/\\n/g, '\n') + .replace(/\\'/g, "'") + .replace(/\\\\/g, '\\') + } + return val + } + + const applyLine = (line, override) => { + const trimmed = line.trim() + if (!trimmed || trimmed.startsWith('#')) return + const eq = trimmed.indexOf('=') + if (eq === -1) return + const key = trimmed.slice(0, eq).trim().replace(/^export\s+/i, '') + if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) return + const value = parseValue(trimmed.slice(eq + 1)) + if (override || process.env[key] === undefined) { + process.env[key] = value + } + } + + for (const name of ['.env', '.env.local']) { + try { + const fp = path.join(rootDir, name) + const raw = fsSync.readFileSync(fp, 'utf8') + const override = name === '.env.local' + for (const line of raw.split(/\r?\n/)) { + applyLine(line, override) + } + } catch { + /* file missing */ + } + } +} + +const wwwRoot = path.join(path.dirname(fileURLToPath(import.meta.url)), '..') +loadLocalEnvFiles(wwwRoot) + dayjs.extend(utc) dayjs.extend(advancedFormat) @@ -263,7 +317,7 @@ await fs.writeFile( console.log(`✅ Generated static content with ${latestBlogPosts.length} blog posts`) -// Generate RSS feed +// Generate blog and changelog RSS feed try { const allBlogPosts = await getAllBlogPosts() @@ -328,3 +382,96 @@ try { } catch (error) { console.warn('Error generating RSS feed:', error) } + +// Changelog RSS → public/changelog-rss.xml (same GitHub App + category as lib/changelog-github.ts) +try { + const appId = process.env.GITHUB_CHANGELOG_APP_ID + const installationId = process.env.GITHUB_CHANGELOG_APP_INSTALLATION_ID + const privateKey = process.env.GITHUB_CHANGELOG_APP_PRIVATE_KEY + + if (!appId || !installationId || !privateKey) { + console.warn('Skipping changelog RSS: missing GITHUB_CHANGELOG_APP_* env vars') + } else { + const { createAppAuth } = await import('@octokit/auth-app') + const { Octokit } = await import('@octokit/core') + const { paginateGraphql } = await import('@octokit/plugin-paginate-graphql') + + const { generateChangelogRssXml } = await import('../lib/changelog-rss.mjs') + const rewritesPath = path.join(__dirname, 'data/changelog-deleted-discussions.json') + const rewrites = JSON.parse(await fs.readFile(rewritesPath, 'utf8')) + const discussionDisplayDate = (item) => { + const dateRewrite = rewrites.find( + (r) => item.title && r.title && item.title.includes(r.title) + ) + return dateRewrite ? dateRewrite.createdAt : item.createdAt + } + + const CHANGELOG_CATEGORY_ID = 'DIC_kwDODMpXOc4CAFUr' + const changelogQuery = ` + query changelogDiscussionMetadata($cursor: String, $owner: String!, $repo: String!, $categoryId: ID!) { + repository(owner: $owner, name: $repo) { + discussions( + first: 100 + after: $cursor + categoryId: $categoryId + orderBy: { field: CREATED_AT, direction: DESC } + ) { + nodes { + number + title + createdAt + url + } + pageInfo { + hasNextPage + endCursor + } + } + } + } + ` + + const ExtendedOctokit = Octokit.plugin(paginateGraphql) + const octokit = new ExtendedOctokit({ + authStrategy: createAppAuth, + auth: { + appId, + installationId, + privateKey: privateKey.replace(/\\n/g, '\n'), + }, + }) + + const collected = [] + let cursor = null + let hasNextPage = true + while (hasNextPage) { + const { + repository: { + discussions: { nodes, pageInfo }, + }, + } = await octokit.graphql(changelogQuery, { + owner: 'supabase', + repo: 'supabase', + categoryId: CHANGELOG_CATEGORY_ID, + cursor, + }) + collected.push(...nodes) + hasNextPage = pageInfo.hasNextPage + cursor = pageInfo.endCursor + } + + const entries = collected.map((item) => ({ + title: item.title, + url: item.url, + sortDate: discussionDisplayDate({ title: item.title, createdAt: item.createdAt }), + })) + + const changelogXml = generateChangelogRssXml(entries) + const changelogRssPath = path.join(__dirname, '../public/changelog-rss.xml') + await fs.writeFile(changelogRssPath, changelogXml.trim(), 'utf8') + const visibleCount = entries.filter((e) => !e.title.includes('[d]')).length + console.log(`✅ Generated changelog RSS with ${visibleCount} entries`) + } +} catch (error) { + console.warn('Error generating changelog RSS:', error) +}