Add i18n key-parity guard + publish "N/M relays accepted"; fix missing translation

Two quick, high-value wins:

- i18n guard (e2e/i18n.spec.js): a pure-Node test that fails if any NOSTR_UI /
  BOARD_UI / locales dictionary is missing or has an extra key in some language.
  It immediately caught field_too_long, which was English-only — so non-English
  users saw the English "that field is too long" message. Added the missing
  translation to all 13 other languages.

- Publish transparency: the confirmation modal now shows "Relays accepted: N / M"
  (relays_accepted string × 14) and flags a zero-acceptance publish in red, so a
  weak publish is visible immediately instead of discovered later.

276 e2e across all six engines; roadmap updated.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-06-11 10:04:18 -04:00
1 parent d160542f7d
commit 78ee5bf0cf
6 files changed
+148 -3

No files matched your search

+7
View File
@@ -257,6 +257,13 @@ should follow the board's trust model.
noted so it is not mistaken for a contract.
- **Favicon — ✅ done.** A small inline SVG (`site/favicon.svg`) is linked from
both pages, so browsers no longer request (and 404 on) `/favicon.ico`.
- **i18n key-parity guard — ✅ done.** `e2e/i18n.spec.js` fails if any
`NOSTR_UI` / `BOARD_UI` / locales dictionary is missing (or has an extra) key
in some language. It immediately caught `field_too_long`, which had been
English-only across all 13 other languages.
- **Publish transparency — ✅ done.** The publish confirmation modal now reports
how many relays accepted the event ("Relays accepted: N / M") and flags a
zero-acceptance publish, so a weak publish is visible immediately.
- **WebKit/Safari coverage in CI** needs `libavif16` on Linux runners
(`sudo npx playwright install-deps`); headless WebKit is also not a perfect
stand-in for real Safari/iOS print + clipboard behavior, so a real-device