• v1.1.0-aio.2 05ebf042ac

    v1.1.0-aio.2 — NIP-17 migration
    Some checks failed
    ci.yml / Extract provision_merchant() service for shared use (pull_request) Failing after 0s
    ci.yml / Extract provision_merchant() service for shared use (push) Failing after 0s

    padreug released this 2026-05-03 15:10:07 +00:00 | 6 commits to main since this release

    Major refactor: customer-merchant communication moved from NIP-04
    (kind 4, AES-256-CBC) to NIP-17 (kind 1059 gift wraps, NIP-44 v2
    encryption + NIP-59 wrapping). Closes aiolabs/nostrmarket#1.

    Highlights:

    • New nostr/nip44.py + nostr/nip59.py (44 unit tests, validated
      against the official NIP-44 spec test vector)
    • Subscription filter: kind 4 → kind 1059
    • _handle_nip04_message replaced with _handle_gift_wrap; merchant ↔
      customer DMs flow through wrap_message / unwrap_message
    • Eliminates the merchant-as-customer routing bug previously patched
      by d3229cd — NIP-59's layered envelope is sender/recipient
      unambiguous by design

    Other improvements:

    • Account-keypair-based merchant auto-provisioning (default Online
      zone + "'s Store" stall, kind 30017 published on signup)
    • New shared services.provision_merchant() consumed by both the
      extension's lazy GET fallback and the LNbits signup hook
    • Key-rotation migration feature (PATCH /merchant/.../migrate-keys
      republishes stalls/products under the new account pubkey)
    • Subscription health monitor (auto-resubscribes after 120s of
      silence)
    • Stall re-publish on every product publish — eliminates the
      "Unknown Stall" race for new merchants

    Companion releases:

    • aiolabs/webapp#39 (merged) — customer client publishes orders
      with nip59.wrapEvent()
    • aiolabs/lnbits#11 (merged) — _create_default_merchant delegates
      to nostrmarket.services.provision_merchant()

    Breaking change: no NIP-04 fallback. Customers and merchants must
    both run NIP-17-capable clients.

    Downloads