← Home

Changelog

Currently on v1.0.0

Auto-maintained from Conventional Commits. See the GitHub releases for tagged downloads.

Changelog

All notable changes to Crown are documented in this file.

This file is automatically maintained by release-please from Conventional Commits. The format follows Keep a Changelog. The version scheme is SemVer.

How releases happen:

  1. Push to main with a Conventional Commit (feat:, fix:, chore:, etc.).
  2. release-please opens (or updates) a single "release PR" with the next version + changelog diff.
  3. Review + merge the release PR → tag is cut, GitHub Release is published, package.json + .release-please-manifest.json are bumped.

[1.0.0] - 2026-05-23

Baseline release. Captures everything shipped in the first ~46 PRs before automated changelog management was wired up.

🚀 Features

  • Catalog pipeline — full async generation flow: pain discovery (LangGraph) → enrichment (V3, 6-layer) → TRIBUNAL (8-judge consensus) → idea generation → reports → DB
  • Auto-catalog cron — 10 GCP Cloud Scheduler slots produce ~10 catalogs/day with country-aware RSS sourcing
  • Country gate — three-rule pain-discovery gate (target-in-title accept, competing-country reject, snippet fallback) prevents cross-country catalogs
  • Admin catalog editor/admin/catalog/[id]/edit lets admins fix any field on a row + re-run the orchestrator (audit-logged)
  • Cron kill-switch/admin/crons master toggle pauses every scheduled job during incident triage
  • Catalog detail — separated Share + Build sections, WhatsApp added, vibe-coder CTAs (Lovable, Blink) cleanly distinct
  • /catalog — defaults to newest-first sort (was score)
  • Home rail — "Just researched" strip with view counts + per-card CTA + impression/click funnel
  • User-paid generation/dashboard with mandatory country dropdown, Firebase auth, credit wallet, Cloud Tasks → tribunal-worker
  • Dev stackdocker compose up boots Postgres + Next.js hot-reload with .env.local quickstart

🐛 Notable bug fixes pre-1.0

  • Country mismatch — LangGraph channels weren't propagating the gate flag; Serper queries used 2-char ISO codes instead of full country names; gate accepted any-keyword-anywhere instead of weighting title
  • Schema drift/api/user/catalogs + /api/admin/retry-catalog selected JSONB columns that prod had moved to GCS via migration 024
  • Production credentials leak — PR #35 accidentally committed a DB password; rotated immediately + tightened precommit gitleaks rules to catch the class
  • Cloud Run + Vercel deploy parity — fixed .dockerignore excluding paths the prod Dockerfile copied; added post-deploy catalog smoke workflow via Workload Identity Federation

📚 Documentation

  • CLAUDE.md — ship cycle (13 steps), deploy targets, scheduler cadence table, local-dev quickstart, env-file gotchas, emergency-stop reference
  • README — Getting Started section with prerequisites, first-time setup, daily commands, common foot-guns
  • .env.local.example — grouped by failure mode (REQUIRED / REQUIRED-FOR-FEATURE / OPTIONAL), every key the running app reads

🧹 Chores

  • GH Actions quota cut — restricted Deploy Vercel to manual-only, removed Security Scan PR trigger, added concurrency cancellation to CI
  • Master switch tablesystem_settings kv table (migration 058) backing the cron kill-switch
  • Admin audit logadmin_audit_log (migration 059) tracks every mutation with hashed key fingerprint

Future entries below this line will be appended automatically by release-please.