Skip to content

v2.6.0

Choose a tag to compare

@jesuspirate jesuspirate released this 07 Jun 02:46
v2.6.0
e5f5cf9

v2.6.0 — Where's home? A full-world front door

Compatibility: SOFT — onboarding/community-picker UI, listing-price display,
and the desktop shell only. No wire-format or trade-protocol change. Existing
accounts, listings, and home communities are untouched. The only behavioral
change is which federation a NEW default-community pick lands on (see Regional
routing); held balances and existing listings carry their own fed, so nothing
is re-routed underneath anyone.

A real welcome, before the commitment

  • First launch now opens on a one-screen intro — what Chama is, the four things
    you can do (Exchange · Community Bill Pay · Marketplace · Lending), and the
    2-of-3 escrow promise — before asking you to choose anything. Once per device.

Pick your country off a spinning globe

  • "Where's home?" replaces the four Africa-region tiles with a cinematic
    spinning globe and a searchable, full-world list. Every country on Earth is
    tappable and lands on its OWN flag + local currency (full ISO 3166 → ISO 4217
    table, independently audited) — no more sending the rest of the world to a
    generic "Global · USD".

A flag is not a Chama — honest by design

  • Only places with a real, on-the-ground local community land you straight in.
    Today that's Kenya (Afribit Kibera / Bitsacco), shown under "Live Chamas". Everyone
    else — including the US — gets an honest soft-landing: "no local Chama here
    yet; an arbiter would be a stranger, far from you." You can trade now on your
    own flag + currency and switch the moment a local Chama launches, or ask the
    arbiters to start one / step up as its leader.
  • No one — including Chama's own operator — gets to claim local arbiters without
    going through the (coming) elected + bonded + rated process.

Regional routing, so every region feels the love

  • A country with no local Chama now routes to a sensible regional federation
    instead of all funneling onto one: Africa → Orange Club Africa, Latin America
    → LatNet, everywhere else → Bitcoin Life Federation. Deterministic and sticky
    — never a boot-time shuffle, so your backing federation can't change under you.

Scan it anywhere — backup QRs went high-contrast

  • Your recovery-phrase, account-key, and ecash-export QRs traded purple-on-dark
    for the same crisp black-on-white as the Lightning QR — bigger, with a proper
    quiet zone. If a scanner can read a payment QR, it can read your backups now.
    The signer-pairing QR got the same treatment.

The price you set is the price they see

  • Fiat listings now show the creator's own Chama currency to everyone. The
    converted "≈ your-currency" line is gone — it implied a precision no seller
    ever offered, and it changed depending on whether FX rates had loaded. The
    universal cross-border number stays the sats (₿), which is what actually
    settles. Display only; votes and escrow untouched.

Desktop learns to count in fiat

  • The Create form's sats↔fiat toggle was dead on the desktop app — the BTC-price
    and FX-rate reads never made it out of the WebView. They now run from the
    native shell, allow-listed to the price sources and nothing else. Pricing in
    your local currency works on desktop the way it always has on the APK.

Polish

  • The blue tap-glow on buttons is gone; focus rings now show only for keyboard
    navigation.
  • Three silent dead-ends now talk back: scanning your account-key QR at sign-in
    signs you in (with a toast), an unsupported photo pick shows an inline error
    you can tap away, and a failed local reset says why — inline, no alert boxes.

Under the hood

  • The globe is cobe (~5KB WebGL) with a static-image fallback for weak webviews.
    Generated country shells persist via the existing permissionless
    addCustomCommunity path so they resolve everywhere downstream. The old
    Africa-region picker (~430 lines) is gone.
  • Desktop market data rides the Tauri HTTP plugin — requests run Rust-side where
    WebView CORS can't eat them, allow-listed to the eight price/FX hosts, and
    lazy-loaded only on desktop (web and APK keep the plain fetch, zero bytes
    added to their bundles). Both product calls — creator-currency display and the
    desktop HTTP route — are written up in DECISIONS.md (2026-06-06).

Numbers

  • 2,216 tests green; typecheck clean; full country→currency table audited; the
    new white recovery QR round-trip-scans (encode → decode → exact phrase).