feat: tabbed settings, i18n, filemtime assets & readme (Epic #20) #108

Merged
manlycucumber merged 1 commit from feature/20-settings-i18n-assets into develop 2026-07-03 21:58:17 +00:00
manlycucumber commented 2026-07-03 21:57:12 +00:00 (Migrated from github.com)

Ordo O5 — settings, i18n, assets & readme (Epic #20)

Completes the standalone v0.1 plugin: the settings screen, full internationalisation,
cache-busting assets, and the distribution readme.

Settings (#21)

A tabbed Settings → Ordo screen (Calendar · Appearance · Display · About) rendered to the
approved mockup (Surface 5), on the WordPress Settings API. One whitelisted ordo_settings
option, admin-only, tabs carried in the query string (shareable, no-JS). Every control is wired:

  • Calendar preset — Universal 1962 (default), SSPX, FSSP, ICKSP → drives the engine overlay.
  • Palette — Illuminated / Parchment / Slate → reskins every surface via inline CSS.
  • Show commemorations — drives the day view.

The rubric system is shown read-only (1962 is the only system v0.1 computes); the mockup's
rubrics-in-red / Latin-names toggles are deferred (nothing to drive in v0.1 — same
accuracy-first posture as O4).

Internationalisation (#22)

  • The ordo text domain loads on init; every front-end and admin string is wrapped.
  • bin/make-pot.php → a deterministic languages/ordo.pot (119 strings), including the
    blocks' block.json title/description/keywords (core's block title|description|keyword contexts).
  • bin/check-i18n.php (new CI gate) fails on a missing/mis-positioned text domain, an untranslated
    escaped literal, or a stale .pot.
  • Latin liturgical text stays content, not translated.

Assets (#23)

Every style/script is versioned by file modification time and enqueued only where a surface
renders; the chosen palette is added as inline CSS once per request.

Distribution (#24)

A WordPress.org readme.txt with accurate headers (Requires at least: 6.3, matching the
blocks' API v3), a v0.1.0 changelog, and install steps matching the shipped surfaces.

Verification

phpcs (PSR-12) · phpstan L6 · 56 PHPUnit tests / 191 assertions · clean-room guard ·
the new i18n guard — all green. The settings screen was render-checked offline (13/13).
This change was reviewed by an adversarial multi-agent pass; the confirmed findings
(block.json extraction, _nx support, domain-position check, the WP-floor/apiVersion mismatch,
and a single-column day-view layout fix) are all folded in.

Closes #20
Closes #21
Closes #22
Closes #23
Closes #24

## Ordo O5 — settings, i18n, assets & readme (Epic #20) Completes the standalone v0.1 plugin: the settings screen, full internationalisation, cache-busting assets, and the distribution readme. ### Settings (#21) A tabbed **Settings → Ordo** screen (Calendar · Appearance · Display · About) rendered to the approved mockup (Surface 5), on the WordPress Settings API. One whitelisted `ordo_settings` option, admin-only, tabs carried in the query string (shareable, no-JS). Every control is wired: - **Calendar preset** — Universal 1962 (default), SSPX, FSSP, ICKSP → drives the engine overlay. - **Palette** — Illuminated / Parchment / Slate → reskins every surface via inline CSS. - **Show commemorations** — drives the day view. The rubric system is shown **read-only** (1962 is the only system v0.1 computes); the mockup's *rubrics-in-red* / *Latin-names* toggles are deferred (nothing to drive in v0.1 — same accuracy-first posture as O4). ### Internationalisation (#22) - The `ordo` text domain loads on `init`; every front-end **and** admin string is wrapped. - `bin/make-pot.php` → a **deterministic** `languages/ordo.pot` (119 strings), including the blocks' `block.json` title/description/keywords (core's `block title|description|keyword` contexts). - `bin/check-i18n.php` (new CI gate) fails on a missing/mis-positioned text domain, an untranslated escaped literal, or a **stale .pot**. - Latin liturgical text stays content, not translated. ### Assets (#23) Every style/script is versioned by **file modification time** and enqueued only where a surface renders; the chosen palette is added as inline CSS once per request. ### Distribution (#24) A WordPress.org `readme.txt` with accurate headers (**Requires at least: 6.3**, matching the blocks' API v3), a v0.1.0 changelog, and install steps matching the shipped surfaces. ### Verification `phpcs` (PSR-12) · `phpstan` L6 · **56 PHPUnit tests / 191 assertions** · clean-room guard · the new **i18n guard** — all green. The settings screen was render-checked offline (13/13). This change was reviewed by an adversarial multi-agent pass; the confirmed findings (block.json extraction, `_nx` support, domain-position check, the WP-floor/apiVersion mismatch, and a single-column day-view layout fix) are all folded in. Closes #20 Closes #21 Closes #22 Closes #23 Closes #24
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Ordo!108
No description provided.