From a18997d3488e5a962184e90f290845fbbb90b2d0 Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Tue, 13 Oct 2026 19:19:08 +0700 Subject: [PATCH] docs(cordn): mark i18n drift + shareable invite done; note unread needs a signed fetch --- CORDN_UX_AUDIT.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/CORDN_UX_AUDIT.md b/CORDN_UX_AUDIT.md index 551889d..9022731 100644 --- a/CORDN_UX_AUDIT.md +++ b/CORDN_UX_AUDIT.md @@ -35,13 +35,17 @@ never badge the MLS chat "On" when it hasn't been created. | 12 | Info | By design | The coordinator sees **ciphertext + metadata only**; the card and the Settings privacy note say so plainly. | ## Still open / next -- **Onboarding the first member**: the flow works (create → ask → approve) but is - three taps across two people. A shareable "join this crew's chat" link that - pre-fills the join request would remove the guesswork. -- **Unread for the Private chat** : deferred (needs a background signed request). -- **Persisted DM decrypt cache** (from the Amber audit) so the *first* load per - app start stops being a decrypt storm. -- Translate the new keys beyond en/es. +- **Unread for the Private chat**: ⚠️ needs a **signed fetch** — the MLS messages + are behind the coordinator's ContextVM RPC, with no cheap metadata peek (that + was the retired sealed-relay path). Options: a **silent-signers-only** background + fetch (no dot for Amber), or leave it. A local-only dot would be misleading. +- ~~Shareable "join this crew's chat" link~~ ✅ **done** — the panel's admin + **Invite** action shares `…/crew//?tab=mls` via the OS share sheet / + clipboard. +- ~~i18n drift~~ ✅ **done** — all 20 locales back to 100% (see AGENTS.md). +- **Persisted DM decrypt cache**: ✅ done (`src/lib/dmDecryptCache.ts`). +- **Broad polish**: still open — candidates: a "Clear cached messages" action, + entry-bundle trim, a11y, empty/error-state consistency. ## Verified `npm test` + `check-i18n` green; `?tab=mls` deep-link wired through the crew page.