docs(loyalty): record 2026-05-18 Test 1 round 2 cleanup + admin polish
All checks were successful
All checks were successful
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 <html lang="fr"> 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) <noreply@anthropic.com>
This commit is contained in:
@@ -131,6 +131,56 @@ fixed alongside the unit-test pass below.
|
|||||||
an integration test that triggers a representative email from every
|
an integration test that triggers a representative email from every
|
||||||
module and asserts an `email_logs` row appears within N seconds.
|
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 `<html lang="fr">` IS in the page source | Firefox-specific: it ignores the `lang` attribute for `<input type="date">` (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
|
||||||
|
`<span>` instead of an `<a>` (`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
|
## Status board
|
||||||
|
|
||||||
| # | Pre-launch step | State | Notes |
|
| # | Pre-launch step | State | Notes |
|
||||||
|
|||||||
Reference in New Issue
Block a user