v2.0.3
v2.0.3 — Fedi-first funding rail, fail-loud guard for old Fedi builds, one-tap Fedi funding panel
Compatible — no LOCK/escrow format change; drop-in over 2.0.2. Outside Fedi
the rails are unchanged (error reporting improves everywhere).
Funding rail — Fedi internal ecash is now the head of fundAndLock
- The Fedi generateEcash branch moved to the top of fundAndLock: whenever
window.fediInternal.generateEcash exists it wins over every requested
method — now including onchain — so a Fedi lock can never detour onto a
receive rail. Failures surface as "Fedi ecash funding failed: ".
Fail loud, never strand — Fedi runtime without generateEcash
- New isFediMiniAppRuntime() probe (fediInternal injected, or Fedi user
agent for builds that don't inject it). If we're in Fedi but generateEcash
is unavailable, fundAndLock now returns lock-failed with explicit guidance
("Fedi wallet ecash funding is not available in this Fedi build. Chama did
not create a Lightning invoice. Update Fedi, or use the Android APK/Tauri
for this trade.") instead of falling through to a Lightning receive that
old Fedi builds can't complete.
Fedi funding UX — one tap, no chooser
- In the Fedi WebView, AtomicFundingModal replaces the method chooser with a
FEDI WALLET FUNDING panel: a short explainer (ecash is requested from Fedi
and locked directly — no Lightning invoice, no NWC), the trade amount, and
a single "Use Fedi wallet · " button. - TradeDetail now hides the NwcStatusBanner in both the fund and claim
sections when NWC is disabled (the 2.0.2 pass missed these two banners).
Error reporting — describeError() everywhere in funding
- fundAndLock catch handles unknown errors: strings, Error messages, and
JSON-stringified error objects now reach the user instead of a generic
"Funding failed" when a provider throws a structured error.