diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 8f3414f2..ca790ea6 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -1573,6 +1573,33 @@ Plans: Plans: - [ ] TBD (run /msd-plan-phase 31 to break down) +### Phase 32: SEO foundation + +**Goal:** As a site editor on any SummerCMS application, I want search-engine optimisation built into the CMS, going further than WinterCMS, so that every site ships correct, editable SEO without per-site work. This covers: +- an SEO tab on every content record and a global SEO settings screen; +- title, meta description, canonical and meta robots fields, Open Graph and Twitter Card tags; +- structured data per page type (article, home page, service pages; no e-commerce yet); +- a pagination mechanism; +- the XML sitemap extended, plus a default HTML sitemap linked from the home page; +- 301/302 redirects and robots.txt, both editable in the admin; +- a correct heading hierarchy (one H1, then nested H2/H3); +- basic hreflang; +- a noindex policy for filter pages, login and signed-in user pages; +- a server-side rendering guarantee for the headless frontends, so that Googlebot sees all content and links. +**Mode:** mvp +**Depends on:** Phase 16 (vue-journal-layer), Phase 17 (sitemap plugin) +**Repos:** `summercms.go` (framework SEO seam and admin), `sm-journal-plugin`, `sm-sitemap-plugin`, a new shared plugin where the discussion decides (redirects, robots.txt, global SEO), `vue-journal-layer` and the other Nuxt layers; scope fixed in discuss-phase +**Requirements**: TBD +**Success Criteria** (what must be TRUE): + + 1. To be fixed in `/msd-discuss-phase 32`. + 2. The new code has unit tests, delivered in the phase's last plan. + +**Plans:** 0 plans + +Plans: +- [ ] TBD (run /msd-plan-phase 32 to break down) + ## Progress **Execution Order:** @@ -1626,6 +1653,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → | 20. Demo instance with every shared plugin | 0/TBD | Not started | - | | 30. Płytarium cutover | 0/TBD | Not started | - | | 31. Chat polish against WavePath clients | 0/TBD | Not started | - | +| 32. SEO foundation | 0/TBD | Not started | - | ## Backlog diff --git a/.planning/STATE.md b/.planning/STATE.md index 4d8fe639..e497c8aa 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -5,12 +5,12 @@ current_phase: "19.7" current_phase_name: Generic MCP module (INSERTED) status: verifying stopped_at: "Phase 19.7 verified human_needed (5 UAT items); next: /msd-verify-work 19.7" -last_updated: "2026-10-23T20:05:29.470Z" +last_updated: "2026-10-24T14:06:46.399Z" last_activity: 2026-10-23 last_activity_desc: "Completed 19.7-08: plugin gap closure, E-1 logo, E-2 member token scopes; paused before 19.7-09" -state_head: 85a137df246fc218ab5f463af21881d7659f7ce2 +state_head: 223f87e0f17721c37ac7150f3daa32e4c913ea7c progress: - total_phases: 45 + total_phases: 46 completed_phases: 37 total_plans: 242 completed_plans: 238 @@ -314,6 +314,7 @@ Progress: [████████░░] 82% - Phase 19.4.1 inserted after Phase 19.4: Early public demo on demo.summercms.io: today's 16 shared plugins on rome, demo accounts, journal/presentations/quizzes/OIDC pages, backend by request; Phase 20 narrows to the chat family (URGENT) - Phase 32 added: Console commands overhaul: diary logging module, bonfire global flags and Artisan-grade help, sweep of all commands, tests - Phase 19.6.1 inserted after Phase 19.6: Backend Administrators screen: admins and roles CRUD in cabana (gap found while planning 19.7: no screen to manage backend users or set the frontend link) (URGENT) +- Phase 32 added: SEO foundation: per-record and global SEO, structured data per page type, sitemap boost and HTML sitemap, pagination, redirects, robots.txt, canonical, meta robots, social tags, headings, hreflang, noindex policy, SSR for headless frontends ### Decisions diff --git a/.planning/phases/32-seo-foundation/.gitkeep b/.planning/phases/32-seo-foundation/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.planning/phases/32-seo-foundation/.gitkeep @@ -0,0 +1 @@ +