mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
chore: gitignore stale committed sitemap_www.xml and ui-library llms.txt (#45289)
## Why Two auto-generated files have been tracked in git but the committed copies are stale because every Vercel deploy overrides them in the build artifact. Both have misled at least one investigation into thinking production was out of date. | File | Generator | Live (prod) | Committed (master) | |---|---|---|---| | `apps/www/public/sitemap_www.xml` | `pnpm postbuild` -> `internals/generate-sitemap.mjs` | 704 URLs, `last-modified` matches latest deploy | 604 URLs, last touched 2025-09-30 (`cb66b6b6`) | | `apps/ui-library/public/llms.txt` | `pnpm build:llms` -> `scripts/build-llms-txt.ts` (wired into `build`) | 57 entries, `Last updated: 2026-04-27` | 56 entries, `Last updated: 2026-02-20` (last touched 2026-03-17, `9bf981f3`) | Production has been correct the whole time. The git copies just look authoritative when they aren't, and they show up in audits and code searches as if they were the live data. The same gitignore pattern is already applied to `apps/www/public/sitemap.xml` at `apps/www/.gitignore:29` — this PR extends the pattern to two more files that should never have been committed. Discovered while investigating AI-bot crawl optimization for `supabase.com/llms-full.txt`. An audit initially flagged "sitemap is stale, missing 44 blog posts" — that turned out to be entirely about reading the dead git file. Same kind of false signal would happen for anyone inspecting the ui-library llms.txt locally. ## What changes **`apps/www`:** - Add `public/sitemap_www.xml` to `apps/www/.gitignore`. - `git rm --cached apps/www/public/sitemap_www.xml`. - Updated the gitignore comment to mention the regeneration path. **`apps/ui-library`:** - Add `public/llms.txt` to `apps/ui-library/.gitignore` (with a comment pointing at the generator). - `git rm --cached apps/ui-library/public/llms.txt`. Both files remain on disk locally; their respective build steps regenerate them as before. ## What does NOT change - Production behavior for either file: postbuild / build:llms remain authoritative. - Generator code: `apps/www/internals/generate-sitemap.mjs` and `apps/ui-library/scripts/build-llms-txt.ts` are untouched. - robots.txt, sitemap index, docs sitemap: unchanged. - `apps/learn/public/llms.txt`: left tracked. Its generator (`apps/learn/scripts/build-llms-txt.ts`) is **not** wired into the `build` script, so it's manually generated and committed — different pattern, leave alone. ## Test plan - [ ] After merge, trigger or wait for next prod deploy. Confirm `https://supabase.com/sitemap_www.xml` still serves a fresh ~700-URL response with current `last-modified` header. - [ ] Confirm `https://supabase.com/ui/llms.txt` still serves a fresh response with `Last updated:` matching the deploy date. - [ ] Confirm `git ls-files apps/www/public/ apps/ui-library/public/` no longer lists either file. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Improved handling of auto-generated sitemap files so they are no longer tracked in the repo after builds. * **Documentation** * Removed the published auto-generated LLMs reference page from the UI library to avoid shipping stale documentation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
1 parent
d409836ca7
commit
99447cdcbe
4 files changed
+6
-3749
No files matched your search
@@ -35,4 +35,7 @@ yarn-error.log*
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
.contentlayer
|
||||
.contentlayer
|
||||
|
||||
# Auto-generated on every Vercel build by `pnpm build:llms` -> scripts/build-llms-txt.ts
|
||||
public/llms.txt
|
||||
@@ -1,119 +0,0 @@
|
||||
# Supabase UI Library
|
||||
Last updated: 2026-02-20T06:13:03.281Z
|
||||
|
||||
## Overview
|
||||
Library of components for your project. The components integrate with Supabase and are shadcn compatible.
|
||||
|
||||
## Docs
|
||||
- [Prompts](https://supabase.com/ui/docs/ai-editors-rules/prompts)
|
||||
- Rules for AI Code Editors for Supabase
|
||||
- [FAQ](https://supabase.com/ui/docs/getting-started/faq)
|
||||
- Frequently asked questions
|
||||
- [Introduction](https://supabase.com/ui/docs/getting-started/introduction)
|
||||
- A flexible, open-source, React-based UI component library built on shadcn/ui, designed to simplify Supabase-powered projects with pre-built Auth, Storage, and Realtime features.
|
||||
- [Quick Start](https://supabase.com/ui/docs/getting-started/quickstart)
|
||||
- Install shadcn/ui and use the components in your project
|
||||
- [Infinite Query Hook](https://supabase.com/ui/docs/infinite-query-hook)
|
||||
- React hook for infinite lists, fetching data from Supabase.
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/nextjs/client)
|
||||
- Supabase client for Next.js
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/nextjs/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/nextjs/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/nextjs/password-based-auth)
|
||||
- Password-based authentication block for Next.js
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/nextjs/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Chat](https://supabase.com/ui/docs/nextjs/realtime-chat)
|
||||
- Real-time chat component for collaborative applications
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/nextjs/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Realtime Monaco](https://supabase.com/ui/docs/nextjs/realtime-monaco)
|
||||
- Real-time Monaco editor for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/nextjs/social-auth)
|
||||
- Social authentication block for Next.js
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/nuxtjs/client)
|
||||
- Supabase client for Nuxt.js
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/nuxtjs/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/nuxtjs/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/nuxtjs/password-based-auth)
|
||||
- Password-based authentication block for Nuxt.js
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/nuxtjs/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/nuxtjs/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/nuxtjs/social-auth)
|
||||
- Social authentication block for Nuxt.js
|
||||
- [Platform Kit](https://supabase.com/ui/docs/platform/platform-kit)
|
||||
- The easiest way to build platforms on top of Supabase
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/react-router/client)
|
||||
- Supabase client for React Router
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/react-router/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/react-router/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/react-router/password-based-auth)
|
||||
- Password-based authentication block for React Router
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/react-router/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Chat](https://supabase.com/ui/docs/react-router/realtime-chat)
|
||||
- Real-time chat component for collaborative applications
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/react-router/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Realtime Monaco](https://supabase.com/ui/docs/react-router/realtime-monaco)
|
||||
- Real-time Monaco editor for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/react-router/social-auth)
|
||||
- Social authentication block for React Router
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/react/client)
|
||||
- Supabase client for React Single Page Applications
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/react/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/react/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/react/password-based-auth)
|
||||
- Password-based authentication block for React Single Page Applications
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/react/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Chat](https://supabase.com/ui/docs/react/realtime-chat)
|
||||
- Real-time chat component for collaborative applications
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/react/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Realtime Monaco](https://supabase.com/ui/docs/react/realtime-monaco)
|
||||
- Real-time Monaco editor for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/react/social-auth)
|
||||
- Social authentication block for React Single Page Applications
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/tanstack/client)
|
||||
- Supabase client for TanStack Start
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/tanstack/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/tanstack/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/tanstack/password-based-auth)
|
||||
- Password-based authentication block for TanStack Start
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/tanstack/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Chat](https://supabase.com/ui/docs/tanstack/realtime-chat)
|
||||
- Real-time chat component for collaborative applications
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/tanstack/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Realtime Monaco](https://supabase.com/ui/docs/tanstack/realtime-monaco)
|
||||
- Real-time Monaco editor for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/tanstack/social-auth)
|
||||
- Social authentication block for Tanstack Start
|
||||
- [Supabase Client Libraries](https://supabase.com/ui/docs/vue/client)
|
||||
- Supabase client for Vue Single Page Applications
|
||||
- [Current User Avatar](https://supabase.com/ui/docs/vue/current-user-avatar)
|
||||
- Supabase Auth-aware avatar
|
||||
- [Dropzone (File Upload)](https://supabase.com/ui/docs/vue/dropzone)
|
||||
- Displays a control for easier uploading of files directly to Supabase Storage
|
||||
- [Password-based Authentication](https://supabase.com/ui/docs/vue/password-based-auth)
|
||||
- Password-based authentication block for Vue Single Page Applications
|
||||
- [Realtime Avatar Stack](https://supabase.com/ui/docs/vue/realtime-avatar-stack)
|
||||
- Avatar stack in realtime
|
||||
- [Realtime Cursor](https://supabase.com/ui/docs/vue/realtime-cursor)
|
||||
- Real-time cursor sharing for collaborative applications
|
||||
- [Social Authentication](https://supabase.com/ui/docs/vue/social-auth)
|
||||
- Social authentication block for Vue Single Page Applications
|
||||
+2
-1
@@ -25,8 +25,9 @@ yarn-error.log*
|
||||
!**/*/generated/**/.gitkeep
|
||||
.generated
|
||||
|
||||
# Sitemap
|
||||
# Sitemap (regenerated on every Vercel deploy by `pnpm postbuild` -> internals/generate-sitemap.mjs)
|
||||
public/sitemap.xml
|
||||
public/sitemap_www.xml
|
||||
|
||||
# Generated .md content bundle (built by scripts/generateMdContent.mjs)
|
||||
app/api-v2/md/content.generated.ts
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user