From f68a30a820cfe08f45aaf22e44c7eb16d6957072 Mon Sep 17 00:00:00 2001 From: Samir Boulahtit Date: Mon, 18 May 2026 23:42:16 +0200 Subject: [PATCH] docs(loyalty): record 2026-05-18 Test 1 round 2 cleanup + admin polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit End-of-day update. Adds a new section to the go-live readiness doc covering today's three shipped commits: - 236fee01 — enrollment-success CTA rename (Continuer mes achats -> Retour à l'accueil) - ab3e133a — flatpickr birthday picker so Firefox honors dd/mm/yyyy on FR. Firefox-specific limitation (Mozilla bug #1344625) — Chrome / Safari / Edge already respected from earlier fix. - 5f288502 — admin program form now warns when terms fields are both empty and disables save until at least one is filled, so a merchant can't accidentally ship a program with a non-clickable Conditions Générales link on the storefront. Marks Test 1 fully done (all 6 originally-reported bugs B1-A..B1-F plus today's 2 follow-up nits resolved end-to-end on prod). Carries forward the remaining items from yesterday's queue: Test 2, Hetzner doc check, unit tests for the B1-F chain, prospecting tasks/__init__ fix, and the other-module email-path audit. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/proposals/loyalty-go-live-readiness.md | 50 +++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/docs/proposals/loyalty-go-live-readiness.md b/docs/proposals/loyalty-go-live-readiness.md index ae2cbef5..6cc126f4 100644 --- a/docs/proposals/loyalty-go-live-readiness.md +++ b/docs/proposals/loyalty-go-live-readiness.md @@ -131,6 +131,56 @@ fixed alongside the unit-test pass below. an integration test that triggers a representative email from every module and asserts an `email_logs` row appears within N seconds. +## 2026-05-18 update — Test 1 round 2 cleanup + admin polish + +Both follow-up #1 items from yesterday shipped + verified by user. +Plus a bonus polish on the admin program form, surfaced when the user +spotted a non-clickable "Conditions Générales" link on the storefront +and asked why. + +### Test 1 nits resolved + +| Bug | Diagnosis | Fix | Commit | +|---|---|---|---| +| Birthday picker shows mm/dd/yyyy on FR even though `` IS in the page source | Firefox-specific: it ignores the `lang` attribute for `` (Mozilla bug #1344625, open since 2017). Chrome/Safari/Edge respect it. | Swap to flatpickr on both `loyalty/storefront/enroll.html` and `loyalty/store/enroll.html`. Configured `dateFormat: 'Y-m-d'` (ISO to API) + `altInput: true` + `altFormat: 'd/m/Y'` (dd/mm/yyyy visible) + `maxDate: 'today'` + `locale: '{{ current_language }}'` for month/day name translations. Loaded via `extra_head` + `extra_scripts` blocks. | `ab3e133a` | +| "Continuer mes achats" CTA on enrollment success page makes no sense for a loyalty-only storefront with no catalog | Same destination is fine (`{{ base_url }}`), only the label needed to change. | Renamed i18n key `continue_shopping` → `back_to_home` in all four locales: EN "Back to Home" / FR "Retour à l'accueil" / DE "Zurück zur Startseite" / LB "Zréck op d'Haaptsäit". | `236fee01` | + +### Admin program-form polish (bonus) + +User noticed the storefront's "Conditions Générales" link wasn't +clickable. Root cause: the program had both `terms_text` and +`terms_cms_page_slug` empty. The storefront then renders a plain +`` instead of an `` (`enroll.html:122-124`) — intentional, so +the link doesn't open an empty modal, but easy to accidentally publish +a program in this broken state. + +Two changes to `loyalty/shared/program-form.html`: + +1. Yellow warning banner inside the Terms section, visible only when + both fields are empty. Tells the admin exactly what the storefront + will look like and what to fix. +2. Save button disabled until at least one of the two terms fields is + filled. The button gets a localised `:title` tooltip explaining + why it's disabled, with `disabled:cursor-not-allowed` so the + disabled state is obvious on hover. + +Three new i18n keys (`terms_required_warning`, `terms_text_hint`, +`terms_required_tooltip`) added in en/fr/de/lb. Shipped as +`5f288502`. + +### Test 1 status + +All 6 originally-reported bugs (B1-A through B1-F) plus the 2 +follow-up nits are now resolved end-to-end on prod. Test 1 is +**fully done**. + +### Remaining follow-ups (carry over to next session) + +From the 2026-05-17 list, items #2 (Test 2), #3 (Hetzner doc check), +#4 (unit tests for the B1-F chain), #5 (prospecting `tasks/__init__.py` +missing import), and #6 (other-module email audit) are still queued. +Items #1 (Test 1 nits) are now closed by this session's commits. + ## Status board | # | Pre-launch step | State | Notes |