From 71f13f5620e4afba7854584ed925ab5100fcb34b Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Fri, 18 Sep 2026 14:03:43 +0200 Subject: [PATCH] docs(state): record 04-03 completion and advance to plan 04 Co-authored-by: Cursor --- .planning/REQUIREMENTS.md | 4 ++-- .planning/ROADMAP.md | 4 ++-- .planning/STATE.md | 18 +++++++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 374c078..c9cee11 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -32,7 +32,7 @@ Requirements for v1 (the Płytarium port). Each maps to roadmap phases. "User" b - [x] **I18N-01**: Translation keys use `vendor.plugin::group.key`, load from per-plugin per-locale YAML files, support parameters and CLDR plurals (go-i18n) for pl and en - [ ] **I18N-02**: Locale is resolved per request from the user's persisted preferred_locale with header fallback, and the locale endpoints stay reachable while the must-change-password lock is active -- [ ] **I18N-03**: Plugins register mail templates and layouts by dotted name with the per-locale suffix convention, rendered with html/template and sent through a driver interface (SMTP via go-mail) +- [x] **I18N-03**: Plugins register mail templates and layouts by dotted name with the per-locale suffix convention, rendered with html/template and sent through a driver interface (SMTP via go-mail) ### Data layer (DATA) @@ -171,7 +171,7 @@ Which phases cover which requirements. Updated during roadmap creation. | CLI-06 | Phase 11 | Pending | | I18N-01 | Phase 4 | Complete | | I18N-02 | Phase 7 | Pending | -| I18N-03 | Phase 4 | Pending | +| I18N-03 | Phase 4 | Complete | | DATA-01 | Phase 3 | Complete | | DATA-02 | Phase 3 | Complete | | DATA-03 | Phase 5 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index cf2fd1b..b2c053f 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -163,7 +163,7 @@ Plans: **Wave 3** *(blocked on Wave 2 completion)* -- [ ] 04-03-PLAN.md — Register, render and send plugin mail through pluggable drivers +- [x] 04-03-PLAN.md — Register, render and send plugin mail through pluggable drivers **Wave 4** *(blocked on Wave 3 completion)* @@ -367,7 +367,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → | 1. Framework kernel foundation | 4/4 | Complete | 2026-09-16 | | 2. API parity harness bootstrap | 5/5 | Complete | 2026-09-17 | | 3. First vertical slice — genres end to end | 4/4 | Complete | 2026-09-17 | -| 4. CLI scaffolding, i18n and mail | 2/4 | In Progress| | +| 4. CLI scaffolding, i18n and mail | 3/4 | In Progress| | | 5. Data layer full fidelity | 0/TBD | Not started | - | | 6. HTTP routing, auth groups and rate limiting | 0/TBD | Not started | - | | 7. User plugin and authentication | 0/TBD | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 5c683b2..053cb03 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone status: executing -stopped_at: Completed 04-02-PLAN.md -last_updated: "2026-09-18T11:54:02.503Z" +stopped_at: Completed 04-03-PLAN.md +last_updated: "2026-09-18T12:03:33.022Z" last_activity: 2026-09-18 progress: total_phases: 15 completed_phases: 3 total_plans: 17 - completed_plans: 15 + completed_plans: 16 percent: 20 --- @@ -26,11 +26,11 @@ See: .planning/PROJECT.md (updated 2026-09-16) ## Current Position Phase: 04 (cli-scaffolding-i18n-and-mail) — EXECUTING -Plan: 3 of 4 +Plan: 4 of 4 Status: Ready to execute Last activity: 2026-09-18 -Progress: [█████████░] 88% +Progress: [█████████░] 94% ## Performance Metrics @@ -60,6 +60,7 @@ Progress: [█████████░] 88% | Phase 03 P03-04 | 15 min | 2 tasks | 15 files | | Phase 04 P01 | 11 min | 3 tasks | 14 files | | Phase 04 P04-02 | 10 min | 3 tasks | 11 files | +| Phase 04 P04-03 | 6 min | 3 tasks | 15 files | ## Accumulated Context @@ -109,6 +110,9 @@ Recent decisions affecting current work: - [Phase 04]: go-i18n is used only to choose a CLDR category label; YAML message text never enters its template engine — D-03: PHP :name placeholders must remain literal - [Phase 04]: A per-locale i18n.Bundle is cached so matcher/plural rules follow the requested tag, not the English default bundle — A single English default bundle made Polish few/many look invalid - [Phase 04]: Fallback order is requested, parent, app.fallback_locale, then the raw key; framework defaults remain en/en — D-04 D-05: no Polish framework default and no extra core-locale step +- [Phase 04]: Goldmark v1.8.6 is used without html.WithUnsafe; final HTML is rejected if script/iframe, event handlers, or javascript/vbscript/data schemes remain — D-07 and T-04-08: Goldmark default rejects raw HTML; a second pass keeps layout HTML trusted only as template.HTML +- [Phase 04]: postcard.Mailer is published after Register and before Boot; each HasMailTemplates catalog is validated at that plugin Boot transition — D-20 D-21: plugin Boot can Lookup the mailer; missing files fail as party: boot with the dotted name +- [Phase 04]: mail.smtp.tls defaults to mandatory STARTTLS; none/notls is opt-in for Mailpit and is never inferred — D-18 T-04-10: no silent production TLS downgrade; Mailpit needs explicit NoTLS ### Pending Todos @@ -130,6 +134,6 @@ Items acknowledged and carried forward from previous milestone close: ## Session Continuity -Last session: 2026-09-18T11:53:44.731Z -Stopped at: Completed 04-02-PLAN.md +Last session: 2026-09-18T12:03:18.199Z +Stopped at: Completed 04-03-PLAN.md Resume file: None