- Relocate seed.sql to scripts/ so wrangler d1 migrations apply
doesn't treat it as a migration; update package.json, setup.mjs,
README, and all AGENTS.md references.
- Add src/lib/schema-org.ts builders (LocalBusiness, FAQPage,
BlogPosting, BreadcrumbList) and emit JSON-LD via Base.astro.
- Add lastmod to sitemap entries.
- Set real site domain, worker route, and D1/KV ids.
- Improve image loading hints and heading semantics across site
components; switch BlogIndex to client:idle.
Introduce a schema-first validation layer and an AI blog generation
feature, plus one-command Cloudflare provisioning.
- src/schemas/ holds Zod input schemas for post, content, case,
settings, AI, and keywords; parseForm() in src/lib/form.ts validates
FormData and returns per-field errors.
- Migrate all admin POST handlers to parseForm, showing field-level
errors and only redirecting once validation passes.
- Add blog_keywords table and posts.focus_keyword (migration 0002);
uniqueSlug() centralised in src/data/content.ts.
- Add src/lib/ai.ts (OpenAI-compatible chat completions + optional
Tavily research) and /admin/ai for AI settings, keyword queue, and
draft generation.
- Add scripts/setup.mjs (npm run setup) to provision D1/KV, set
secrets, and optionally migrate, seed, and deploy.
- Document AI secrets, Workers Builds deploy flow, and new schemas
across README and AGENTS docs.