Skip to content

polish leftovers: preview wraps + a11y motion + smoke-test doc#55

Draft
epicexcelsior wants to merge 4 commits into
anonmesh:v3from
epicexcelsior:epic/polish-leftovers
Draft

polish leftovers: preview wraps + a11y motion + smoke-test doc#55
epicexcelsior wants to merge 4 commits into
anonmesh:v3from
epicexcelsior:epic/polish-leftovers

Conversation

@epicexcelsior
Copy link
Copy Markdown
Collaborator

Summary

Mop-up wave on top of the four in-flight substantive PRs (#50-#53). Four small, low-conflict commits.

  • chore(preview): Wrap dead Yield/Swap/Send panel CTAs in <PreviewedActions> + add <PreviewBadge> headers. Panels are not exported from components/wallet/index.ts today but their source still ships — if anything ever does render them, the affordance now reads as preview-only.
  • feat(a11y): Honor useReducedMotion() on MeshMap (me-node pulse + ghost skeleton breathe) and RadarScan (rotation sweep + center pulse). Same pattern PR feat(network): NetworkBanner + a11y motion guards + empty-state copy #52 used for PulseDot / Skeleton / sonar. Pinned mid-frame so indicators still read.
  • docs(release): Add docs/SMOKE_TEST.md — 7-step, 5-minute manual gate for tester APK releases. Each step links an AUDIT / ROADMAP ID. Includes sign-off table. Adapted from § 10 of OFFGRID_FALLBACK_AUDIT.md.
  • chore(diagnostics): Replace 5 empty catch {} blocks with console.warn so operators can spot beacon malformed responses, clipboard failures, and identity/group registry corruption. No UI changes.

What did not ship

  • Pill consolidation (components/ui/Pill.tsx vs components/primitives/Pill.tsx) — different APIs (variant+dot vs tone). Eight call sites would need migration and the ui/Pill variant carries a dot prop the primitives version lacks. Too much churn for a polish PR; deferred.
  • NoPeersScreen extraction from screens/MessagesScreen.tsx — would conflict directly with PR feat(network): NetworkBanner + a11y motion guards + empty-state copy #52's reduce-motion guard on the same component.
  • The other ~13 silent-failure sites (S-6 .. S-21) — most need UI surface work (banner / inline error), not just diagnostics.

Test plan

  • tsc --noEmit clean
  • expo lint clean
  • Manual: enable iOS Reduce Motion → MeshMap pulse + ghost halo, RadarScan sweep all stop
  • Manual: tap a dead Yield vault button → "yield not yet active" hint surfaces; no state change
  • Manual: run docs/SMOKE_TEST.md against the next tester APK

…Actions

These three wallet panels are not exported from `components/wallet/index.ts`
today (per PR anonmesh#47) but the source still ships in the bundle and contains
live Pressables that look real. Wrap the dead CTAs in <PreviewedActions>
and add a <PreviewBadge label="…coming soon"> above each panel so that if
anything ever does render them, the affordance reads as preview-only.

- YieldPanel: deposit/withdraw vault buttons wrapped (the expand/collapse
  Pressable is purely local UI state, left alone).
- SwapPanel: SWAP + "new order" CTAs wrapped (flip-asset Pressable left).
- SendPanel: "send privately" + "new transfer" CTAs wrapped (asset picker
  and MAX shortcut left — local state only).

Per AUDIT A6 / ROADMAP § 0.A.8.
Two of the largest infinite Animated.loop / withRepeat(-1) sites that were
deferred from PR anonmesh#52. Adds `useReducedMotion()` guards using the same
pattern as PulseDot / Skeleton / NetworkStatusBadge / PigeonLoader.

- MeshMap: the "me" node pulse halo + ghost skeleton breathe both honor
  reduce-motion. Pinned to mid-frame opacity so the indicators still read
  but don't loop. No structural changes.
- RadarScan: rotation sweep pinned at 0deg + center dot held at resting
  scale under reduce-motion. Static ring guides still convey state.

Both visual-only — happy path unchanged.

Per ROADMAP Tier 4.1 (a11y motion audit).
Adds `docs/SMOKE_TEST.md` — the 5-minute manual gate that runs before
every tester APK release. Seven numbered steps with explicit pass/fail
criteria, each linked to an AUDIT / ROADMAP ID for traceability.

Steps:
1. Cold install + onboarding
2. Local wallet generation
3. DEVNET banner visible (Tier 0.5 / B1)
4. Send 0.001 SOL to self (PR anonmesh#45 confirmation)
5. Nodes screen honesty (no fixture data)
6. Seed reveal biometric gate
7. Airplane-mode toggle

Adapted from § 10 of LOCAL_NOTES/REVIEW-2026-05-13/raw-tracks/
OFFGRID_FALLBACK_AUDIT.md ("Off-grid testing playbook") for the
team's actual release workflow. Includes a sign-off table.
Replaces five empty `catch {}` blocks with `console.warn` calls so
operators can diagnose previously-invisible failure modes. Conservative
scope — no behavior change, no UI surface, just diagnostics.

- S-1 MeshRpcAdapter: malformed beacon response now logged. Pending
  request still times out on its own clock.
- S-2 TxDetailModal: clipboard write failure logged.
- S-3 ReceivePanel: clipboard write failure logged.
- S-4 LxmfContext.loadOrMigrateIdentity: identity-blob parse failure
  logged — previously this silently destroyed recoverable history by
  letting autostart regenerate a fresh identity.
- S-5 LxmfContext group registry load: malformed groups blob logged —
  previously the user appeared to have left all groups with no signal.

Per AUDIT § 3 (silent failure inventory). 5 of 21 sites; the rest are
either intentional fallbacks (S-15, S-16) or require UI work (S-10
partial-failure rendering, S-11 dead error state).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant