Skip to content

Release Checklist

github-actions[bot] edited this page Nov 7, 2026 · 6 revisions

Release Checklist

Use this checklist to ship changes to GraceChords confidently and avoid stale assets. It covers the website; mobile app releases follow apps/mobile/RELEASING.md.

Before You Start

  • Node.js 20 LTS (20.19+) installed
  • PDF fonts present under apps/web/src/assets/fonts/ (Noto Sans + Noto Mono)
  • .env file configured with Supabase credentials and service role key

1) Song & Post Changes

Songs and posts are managed via the Supabase database:

  • Songs — use the Editor Portal (/editor) to add/edit songs directly in Supabase
  • Posts — use the Post editor (/portal/posts) to create or update blog posts
  • PPTX slides — upload via the PPTX widget in the song editor (stored in R2)

2) Run Tests

npm run test:mvp

Guards the approved PDF layout (spacing, columns, chord alignment). Run the full suite with npm test.

3) Build & Verify Locally (Optional)

VITE_COMMIT_SHA=$(git rev-parse HEAD) npm run build
npm run preview

This embeds the commit in the service worker cache name for clean updates.

4) Deploy

Push to main. Cloudflare Pages automatically builds the web workspace and deploys apps/web/dist/.

No manual deploy step is required. Watch the build status in the Cloudflare Pages dashboard.

5) Verify on Production

  • Check the Production smoke test workflow is green, or run npm run smoke:prod -w @gracechords/web (see Production-Readiness)
  • Hard refresh the site (Ctrl+Shift+R)
  • Confirm edited songs load (Supabase network-first)
  • Export a PDF to verify visuals (title 26pt, key 16pt gray, lyric/chord ≥12pt)
  • Confirm any new PPTX downloads work

6) Wiki Updates

Pushing changes under apps/web/public/wiki/** to main automatically triggers the wiki-sync.yml workflow, which publishes to the GitHub Wiki (requires the WIKI_PUSH_TOKEN secret). To sync manually, run the workflow from the Actions tab, or locally from the web workspace:

cd apps/web
WIKI_PUSH_TOKEN=<your_PAT> node scripts/syncWiki.mjs

Optional: Service Worker Reset

If a client appears stale:

navigator.serviceWorker.getRegistrations().then(rs => rs.forEach(r => r.unregister()))

Then reload.

Troubleshooting

  • Song changes not visible? Ensure Supabase data is correct; check browser console for query errors
  • Stale JS/CSS? Ensure VITE_COMMIT_SHA was set during the build and the CF Pages build completed
  • Missing sitemap entries? The sitemap is regenerated into dist/sitemap.xml on every production build (and weekly by the sitemap-rebuild Worker); retry the latest deployment in Cloudflare Pages

Clone this wiki locally