branding
settings
aggregation
github
Branding page, scheduled aggregation, PR‑merge support, and settings reorg
- Branding page — customise the public changelog look — A new Branding page lets you set the changelog title and SEO description, upload favicon and light/dark logos, pick theme and primary colours for light/dark mode, and choose heading/body Google Fonts. Uploaded assets are stored in a dedicated Supabase Storage bucket and used by the public changelog.
- Scheduled aggregation and PR‑merge publishing — You can now publish entries by schedule (daily/weekly/monthly) or by PR merge. A background aggregation pipeline generates period summaries, an hourly scheduler queues due projects, and switching to scheduled publishing automatically backfills historical period summaries.
Added
- Branding page: a full settings form to set changelog title, SEO description, favicon/logo uploads, theme, light/dark primary colours, and heading/body Google Fonts.
- Branding uploads API and storage: server-side upload route that validates images (≤5 MiB) and stores them in a new public Supabase Storage bucket (project-assets).
- Aggregation pipeline: new modules and durable functions to generate daily/weekly/monthly period summaries, including an hourly scheduler, LLM prompt builder/writer, and a backfill job to regenerate history.
- On-demand generation API: UI can trigger generation/backfill for a specific period; existing entries are returned immediately or generation is queued.
- PR merge support: merged GitHub pull requests now produce a single, unified changelog entry summarising all commits in the PR.
- Tooling: a production seeding helper (scripts/seed-prod.mjs) and pnpm db:seed:prod were added; .env.local.example now documents PROD_DB_URL for running seeds against production.
- New prompts seeded for period summaries (daily, weekly, monthly) and a curated set of section/component types to shape aggregated entries.
Changed
- Project settings reorganised: tabs are now General, Repositories, LLM, Publishing, and Danger — the GitHub tab is renamed to Repositories and the Changelog tab is now LLM.
- Publishing model simplified: a single trigger_type controls publishing (on_commit | on_pr_merge | scheduled). When scheduled is selected you can choose frequency, time, timezone and week start.
- Branding applied at runtime: public changelog pages now inject scoped CSS and (optionally) Google Fonts so chosen fonts and primary colours are reflected immediately on the public page.
- Public changelog visuals: accent borders and the thin top bar now use the configured primary colour variable instead of a hardcoded colour.
Fixed / Improved
- Display date accuracy: changelog entries now show the real activity date (commit/merge) by preferring period_start over published_at/created_at, so public dates reflect when changes actually happened.
- Entry write behaviour: entries written by the pipeline now store the commit/merge timestamp so aggregated and PR entries display correct dates.
Tooling & Ops
- Seed and production DB support: added scripts/seed-prod.mjs, pnpm db:seed:prod, and a documented PROD_DB_URL example to help run database seeds safely against production.
- Supabase storage config: project-assets bucket added to config with size/mimetype limits and RLS policies for public read + service-role uploads.
Backlog & Next steps
- Planned entitlement gating for aggregation views (day/week/month) to tie period summaries to plan tiers.
- Third‑party analytics integrations (PostHog, GA, GTM) for the public changelog page are proposed but not yet wired into the UI.
- GitLab support and workspace-level VCS installation management are included in the backlog; the Repositories tab prepares the UI for multi‑VCS support.