v0.5.2

Wait 5 sec.

Wire format unchanged — v0.5.2 interoperates with 0.5.0 and 0.5.1 both ways. (0.4.x remains incompatible; see the v0.5.0 notes.) One floor moves: builds now target ES2022 — Chrome/Edge 89+, Firefox 89+, Safari 15+, all 2021.Twelve languagesEnglish, Spanish, Brazilian Portuguese, French, German, Italian, Russian, Hindi, Simplified Chinese, Japanese, Korean, and Arabic — with full right-to-left layout. Asked for in #14.Every language is its own page tree (/es/send/, /ar/receive/, …): translated titles, social cards, and hreflang alternates, so a Spanish search finds a Spanish page. The footer switcher navigates; nothing redirects on browser language, so a shared link always shows the page that was shared. The home page offers your language once, dismissibly.Installing from a tree installs that language — per-locale PWA manifests, every tree precached, offline in all twelve.The standalone files embed all twelve catalogs and pick the reader's language when opened; the switcher swaps in place, no reload — localStorage is unreliable under file://, and a reload that forgot the choice would put the old language back.A localized sender shares its own language's receiver: the QR on /es/send/ hands the other device /es/receive/.Unreviewed translations say soEvery non-English catalog is machine-drafted and carries one quiet footer line in that language saying so, linked to the issue tracker. A native review is a PR that fixes the wording and flips that language's reviewed flag — the note disappears on the next build. Reviews are the most useful small contribution this project can take.Under the hoodProtocol errors and wire-version verdicts travel as codes and localize at display time. The English wording stays the reference, pinned by test, so every client in a given language words the same failure the same way.A language missing a key, or the page copy drifting from the catalog, fails the build — the rule the %TOKEN%s already lived under. Catalogs are code-split per language; the receive chunk stays under its tripwire.Node is pinned: .nvmrc is the single source, CI reads it, and engine-strict makes the wrong Node fail an install instead of warning past it.