Skip to content

Mostro v2.0.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 02:16
· 388 commits to main since this release
v2.0.0
92c630a

⚡ Mostro v2.0.0

Non-custodial, peer-to-peer Bitcoin trading over Lightning and Nostr.

📥 Downloads

🤖 Android

File Architecture For
mostro-v2.0.0-arm64-v8a.apk v8 — ARMv8-A, 64-bit (AArch64) Modern phones. Pick this one if unsure.
mostro-v2.0.0-armeabi-v7a.apk v7 — ARMv7-A, 32-bit Old or entry-level phones that run a 32-bit Android.

Both need Android 7.0 (API 24) or later and are the same app: an APK holds
native machine code (the Flutter engine and Mostro's Rust core, which does all
the cryptography), and one file per CPU instruction set keeps each download to
a fraction of the size of a universal APK.

Which one is mine?
  • arm64-v8a (v8) targets the 64-bit ARMv8-A instruction set. Practically
    every phone released since 2016–2017 runs a 64-bit Android, Google Play has
    required 64-bit builds since August 2019, and recent devices — the Pixel 7
    and later, and any phone built on 2023-or-newer Arm cores — are
    64-bit only: they cannot run the v7 APK at all. 64-bit code is also
    noticeably faster at the elliptic-curve and encryption work the app does.
  • armeabi-v7a (v7) targets 32-bit ARMv7-A with hardware floating point.
    It is for phones with a 32-bit CPU (Cortex-A7/A9/A15 class, roughly 2015
    and earlier) and for phones whose 64-bit-capable CPU ships with a
    32-bit Android — common in budget and Android Go models with 2 GB of RAM
    or less.
  • To be sure: try v8 first. If Android answers "App not installed" or
    "package is not compatible with your phone", install v7. With a computer,
    adb shell getprop ro.product.cpu.abilist prints the supported ABIs —
    if arm64-v8a is in the list, use v8.
  • x86 devices (emulators, some Chromebooks) are not covered by these builds.

Verify a download with sha256sum -c SHA256SUMS.txt --ignore-missing. Every
release is signed with the same key, so it installs over the previous version
and keeps your data.

📋 What's changed

✨ Features

  • bridge: PR 3.2 — order-book delta stream over FRB (#496) by @grunch
  • core: PR 3.1 — map-backed order book with revisioned deltas (#495) by @grunch
  • push: PR-4c — web push client, behind the server (#484) by @grunch
  • push: PR-4b — iOS push configuration (#483) by @grunch
  • push: add master toggle, status and safe opt-out (#479) by @grunch
  • invoice: prefill the saved Lightning address on the add-invoice screen (#482) by @grunch
  • invoice: invoice field that asks to be filled (campo_factura) (#480) by @grunch
  • single-owner registry for per-trade subscriptions (#407) by @Forte11Cuba
  • notifications: in-app cards for trade updates and chat messages (#474) (#475) by @grunch
  • push: PR-3b — a content-free notice for a peer's chat wake (#473) by @grunch
  • push: PR-3a — wake the peer after a chat message (#472) by @grunch
  • push: PR-2 — wake handling, display-only (#471) by @grunch
  • push: PR-1d — OS-scheduled registration refresh (#470) by @grunch
  • push: PR-1c — Dart hands the token to Rust; push contract (#468) by @grunch
  • push: PR-1b — Rust-owned registration against the push server (#467) by @grunch
  • push: PR-1a — registration rules, pure (#466) by @grunch
  • push: PR-0b — app lifecycle service and resume hydration (#464) by @grunch
  • push: PR-0a — resync() after a suspended process (#463) by @grunch
  • bond: PR-5 — web store smoke, push gap, docs and dead l10n (#461) by @grunch
  • bond: PR-4b — restart coverage verified, bond rows from restore (#460) by @grunch
  • bond: PR-4a — bond-slashed dialog and durable trade notice (#459) by @grunch
  • bond: PR-3d — payout claim entry points (list, detail, notifications) (#452) by @grunch
  • bond: PR-3c — payout claim screen (#451) by @grunch
  • bond: PR-3b — payout claim protocol (dispatch, submission, filter) (#450) by @grunch
  • bond: PR-3a — bond payout claim store (SQLite and IndexedDB) (#449) by @grunch
  • account: redesign Account and the backup flow (15a–16d) (#447) by @grunch
  • bond: PR-2b — maker bond flow in the create form, pay-bond screen and My Order (#446) by @grunch
  • bond: PR-2a — maker bond correlation, expiry, abandon (Rust) (#445) by @grunch
  • bond: PR-1c — flip the taker gate, pay-bond action in trades (#444) by @grunch
  • bond: phase 1b — pay-bond screen (handoff 14a/14b) (#443) by @grunch
  • bond: phase 1a — taker bond lifecycle in the Rust core (#442) by @grunch
  • bond: phase 0 foundation — statuses, bond types, node policy (#440) by @grunch
  • invoice: redesign the add-invoice and pay-invoice screens (handoff 13a/13b) (#438) by @grunch
  • trades,chat: redesign the trades and chat tabs (handoff 11a/11b) (#436) by @grunch
  • about: redesign About per design_handoff_acerca_de (12a/12b) (#435) by @grunch
  • settings: redesign settings, relays, NWC wallet, notifications and logs (#433) by @grunch
  • mascot: give Mostro a pulse (easter eggs) (#431) by @grunch
  • settings: redesign the node selector (design_handoff_selector_nodo 9a/9b) (#430) by @grunch
  • trades: redesign the trade screen (handoff 8a–8e) (#429) by @grunch
  • order: redesign own-order and take-order screens (handoffs 6a/6b, 7a) (#428) by @grunch
  • order: redesign the create-order screen (handoff 5a/5b/5c) (#425) by @grunch
  • home: redesign the order book (handoff 4b card, 4d create button) (#424) by @grunch
  • drawer: redesign the drawer (handoff 3b dark / 3c light) (#421) by @grunch
  • ask the buyer for a new invoice when the payout fails, and keep a rejection on screen (#420) by @grunch
  • mostro node selector with trusted registry and kind 0 metadata (#384) by @Forte11Cuba
  • cashu: C4 — escrow primitives (2-of-3 NUT-11 lock, sign, redeem, reclaim) (#236) by @grunch
  • tag the dispute screen back button for automation (#414) by @grunch
  • Linux accessibility contract and Web persistence for Mortsom (#408) by @grunch
  • generate the launcher icons from the Mostro artwork (#400) by @Pivii
  • #328: source restore trade-key resync from Action::LastTradeIndex (#333) by @Forte11Cuba
  • disputes: make the dispute chat survive a restart (#256) by @grunch
  • cashu: C2 — embedded Cashu wallet over cdk (native), typed stub on web (#235) by @grunch
  • nostr: discover relays from the Mostro node's kind 10002 list (#385) by @grunch
  • core: mostro-core 0.14.6 and a maintenance-mode message (#376) by @grunch
  • take-order: improve order details UX (#372) by @Forte11Cuba
  • #337: validate market-price orders against the node's sats limits (#343) by @AndreaDiazCorreia
  • #282: validate fixed-sats order amount against the node's min/max before submitting (#302) by @codaMW
  • #217: resync trade_key_index to the max recovered index (#239) by @codaMW
  • show taker reputation on invoice and trade-detail screens (#320) by @Forte11Cuba
  • Mortsom automation contract (#307) by @grunch
  • #281: currency-aware payment method suggestions in create-order form (#297) by @codaMW
  • #280: confirm before opening a dispute (#296) by @codaMW
  • navigation: auto-open invoice screens on daemon request (#289) by @Catrya
  • logging: instrument core flows with an end-to-end debug trace (#279) by @Catrya
  • assets: real walkthrough illustrations and Mostro logo across app bars (#264) by @AndreaDiazCorreia
  • order-book: night-contrast refresh + selective glow on offer cards (#257) by @grunch
  • disputes: move the dispute chat onto the kind-14 envelope (#254) by @grunch
  • disputes: route admin-took-dispute so the app learns the solver (#253) by @grunch
  • protocol: tell the user when a node speaks a protocol we don't (#252) by @grunch
  • pow: honor pow_first_contact when mining first-contact events (#251) by @grunch
  • chat: migrate P2P chat to the gift-wrap-free envelope (#247) by @grunch
  • cashu: C1b — persist escrow-mode overrides and surface the backend in About (#234) by @grunch
  • orderbook: wire maker reputation from the Kind 38383 rating tag (#245) by @grunch
  • #215: RestoreSession handshake, send, correlate reply, subscribe (#225) by @codaMW
  • orderbook: pixel-exact Order Book screen from Claude Design mock #3 (#243) by @grunch
  • logging: platform sinks, tracing bridge, and retroactive log buffer (#242) by @AndreaDiazCorreia
  • cashu: C1a — detect the node's escrow mode from its 38385 tags (#230) by @grunch
  • cashu: C0 — upgrade mostro-core to 0.14 and pin the Cashu wire form (#229) by @grunch
  • web: deploy the web client to GitHub Pages on every merge to main (#214) by @grunch
  • display the active node's bond policy in the About screen (#207) by @AndreaDiazCorreia
  • handle bond-slashed forfeiture notices (#200) by @AndreaDiazCorreia
  • trades: surface cancel/dispute/release as visible buttons (#199) by @BraCR10
  • parse anti-abuse bond policy from kind-38385 info event (#198) by @AndreaDiazCorreia
  • add Zapstore manifest for v2 (#156) (#188) by @codaMW
  • make Rust crate wasm32-compatible (#180) by @AndreaDiazCorreia
  • transport: switch Mostro protocol traffic to NIP-44 direct (kind 14) (#111) by @Catrya
  • ui: apply Mostro UX redesign from design handoff (#106) by @grunch
  • nip59: migrate gift-wrap transport to mostro-core 0.10 (#103) by @grunch
  • nip59: migrate gift-wrap transport to mostro-core 0.9 (#102) by @grunch
  • trades: show maker orders in My Trades after creation (a3e68be)
  • wire P2P chat bridge (send, receive, chat rooms list) (#95) by @app/mostronatorcoder
  • notifications: wire Firebase/FCM push notifications and sembast (#94) by @grunch
  • settings: persist Mostro node selection and skip rating in priv… (#93) by @grunch
  • disputes: derive adminSharedKey and implement evidence submission (#92) by @grunch
  • messages: implement Blossom upload/download with Kind-24242 auth (#91) by @grunch
  • wire relay toggle, mostro node selector, log stream, and disput… (#90) by @grunch
  • nwc: wire payment and invoice widgets to Rust bridge (#89) by @grunch
  • nwc: implement real NIP-47 Nostr Wallet Connect client (#88) by @grunch
  • implement V1 flow gaps — dispute, invoice, countdown, UI polish (#87) by @grunch
  • about: implement About screen per v1 spec (#84) by @grunch
  • implement all wired TODOs across Rust and Dart layers (#82) by @grunch
  • desktop: add primary navigation to persistent sidebar (#79) by @grunch
  • theme: remove screen transition animations (1699b62)
  • trades: wire My Trades screen to real DB data with live status (#77) by @grunch
  • orders: implement take-sell order flow with LN address support (#75) by @grunch
  • account: wire mnemonic import, fix dialog crashes, selectable w… (#73) by @grunch
  • l10n: add backupConfirmCheckbox key to all 5 locales (#74) by @grunch
  • final-phase: polish & cross-cutting (#69) by @grunch
  • phase17: account & identity management (#68) by @grunch
  • phase16: settings & preferences — settings API, screens ... (#67) by @grunch
  • phase15: notifications center — card widget, Sembast ... (#66) by @grunch
  • phase14: NWC wallet integration — connect, settings, auto-pa (#65) by @grunch
  • us10: phase 13 — post-trade rating system (#64) by @grunch
  • us9: phase 12 — dispute system, admin chat, dispute list (#63) by @grunch
  • us12: phase 11 — My Trades screen, list item, providers (#61) by @grunch
  • us8: phase 10 — encrypted P2P chat, Blossom, nym avatar (#60) by @grunch
  • us6: phase 8 — buyer trade flow, invoice screens, trade detail (#57) by @grunch
  • phase2b: default configuration — relay seeds, Mostro node constants (01798da)
  • us2: phase 4 — secret words backup & notification bell (#53) by @grunch
  • us1: phase 3 — first launch & identity setup (#52) by @grunch
  • foundation: phase 2 — foundational infrastructure (#51) by @grunch
  • setup: phase 1 — project initialization (#50) by @grunch
  • implement Phase 1 & Phase 2 — Flutter+Rust scaffold and core in… (#37) by @grunch
  • add Nostr-based exchange rates spec for v2 (#36) by @app/mostronatorcoder
  • add settings, nym identity, and node selector contracts (#17) by @grunch
  • add drawer menu, Account, Settings, About screen specs (#10) by @app/mostronatorcoder
  • add anonymous chat identity (nym) system to spec (#9) by @app/mostronatorcoder

🐛 Bug Fixes

  • relay: keep long-lived subscriptions alive across offline resumes (#497) by @grunch
  • settings: lightning address save no longer crashes with a red screen (#481) by @grunch
  • keep the automation contract whole through the bond flows (#469) by @grunch
  • #417: a lost take returns to the ex-taker's book, one trade row per order (#419) by @Catrya
  • classify the missing trade row instead of writing to nothing (#412) by @Forte11Cuba
  • #404: cover every locale tag the sanitizer handles, and what it leaves behind (#406) by @Matobi98
  • home: tint the selected Sell BTC tab coral (#427) by @grunch
  • orders: publish the book on EOSE so an empty book leaves the skeleton (#426) by @grunch
  • orders: re-target live subscriptions on node switch (#423) by @grunch
  • #335: replace-not-discard the session on a confirmed retake (#375) by @Matobi98
  • ios: apply Runner.entitlements to the Runner target (#399) by @Pivii
  • ios: declare NSCameraUsageDescription (#398) by @Pivii
  • web: sanitize unparseable browser locale before engine bootstrap (#370) by @Matobi98
  • relay: close per-trade and per-order subscriptions on task exit (#365) by @grunch
  • orders: refuse status writes from an out-of-order kind-14 replay (#396) by @Catrya
  • disputes: persist the origin marker on a late-accepted open (#388) by @grunch
  • persist counterparty pubkey so the maker's chat resolves the peer (#347) by @Forte11Cuba
  • persist counterparty pubkey and create the maker's session at peer reveal (#345) by @Forte11Cuba
  • memory: drop strangers' finished orders instead of keeping them (#363) by @grunch
  • ui: let the order-book pipeline dispose with the home screen (#356) by @grunch
  • relay: broadcast connection state only when it actually changes (#364) by @grunch
  • nostr: scope the order-book query so relay replay caps cannot hide the book (#379) by @grunch
  • logging: relay payloads leaked after the 0.45 bump, plus the SDK claims it left stale (#386) by @grunch
  • storage: key notifications by id and commit bulk updates once (#368) by @grunch
  • observability: log order-book stream lag (#355) by @grunch
  • perf: publish the order book once per refetch, not once per event (#360) by @grunch
  • ui: build each theme once and make push init idempotent (#358) by @grunch
  • perf: stop cloning the whole trade-key map per daemon message (#353) by @grunch
  • perf: make daemon-message dedup a hash lookup (#352) by @grunch
  • db: apply SQLite pragmas per connection, not once per pool (#351) by @grunch
  • db: index the trade lookups that run once per order event (#350) by @grunch
  • #202: wait for the daemon reply before persisting a dispute (#275) by @AndreaDiazCorreia
  • perf: stop logging at info level once per ingested order (#349) by @grunch
  • persist rated_at marker so the rated state survives a restart (#342) by @Forte11Cuba
  • orders: don't let fingerprint restore clobber the trade-key index (#332) by @Forte11Cuba
  • #259: serialize daemon message dispatch and take persistence per order id (#331) by @AndreaDiazCorreia
  • #327: make the rated trade state reachable (#330) by @AndreaDiazCorreia
  • tests: implement update_trade_peer_reputation on the FailingStore stub (#329) by @Catrya
  • order: prevent fixed price on range orders (#323) by @Forte11Cuba
  • order: allow premium outside the default range when creating an order (#317) by @Forte11Cuba
  • #267: add bottom SafeArea insets so the system bar doesn't overlap content (#295) by @codaMW
  • home: own orders follow the tab split, with readable pills (#293) by @Catrya
  • orders: rehydrate kind-14 decryption coverage at startup (#292) by @Catrya
  • orders: handle inbound add-invoice in the kind-14 ingest (#288) by @Catrya
  • order: back from invoice screens lands on trade detail (#278) by @Catrya
  • #203: stop the public order status from driving trade actions (#271) by @AndreaDiazCorreia
  • detect waiting-state timeouts and clean up local state (#274) by @Catrya
  • order-book: parse every payment method from the multi-value pm tag (#262) by @Catrya
  • deps: pin permission_handler_html to 0.1.3+5 (#260) by @Catrya
  • identity: keep the trade-key counter durable outside mostro.db (#250) by @grunch
  • storage: keep the Linux databases out of the user's Documents folder (#248) by @grunch
  • #223: backup verify, redirect to 12 words after second wrong pick (#224) by @codaMW
  • web: route wall-clock time through rt so wasm does not panic (#211) by @grunch
  • web: convert PlatformInt64 fields before using them as int (#209) by @grunch
  • i18n: complete UI localization and harden locale fallback (#201) by @AndreaDiazCorreia
  • resolve flutter analyze lints (#179) by @AndreaDiazCorreia
  • take_order and send_invoice wait for daemon confirmation (#178) by @Catrya
  • correlate create_order replies by request_id and stop stale relay replay (#172) by @Catrya
  • persist trade key index at derivation so the counter never regresses (#171) by @Catrya
  • orders: parse multi-value fa tag so range orders show min–max (#167) by @Catrya
  • Mostro node selection now takes effect, persists, and refreshes the order book (#164) by @Catrya
  • phantom orders in order book and My Trades on daemon timeout (#159) by @Catrya
  • nip59: authenticate daemon via seal identity, not rumor sender (#104) by @grunch
  • orders: seller pay-invoice flow, NIP-13 PoW, order ID reconcilia… (#99) by @grunch
  • trades: cancel order updates status, unify detail screens (#97) by @grunch
  • trades: sync maker trade status and hold invoice from daemon (#96) by @grunch
  • db: migrate trades table from v1 to v2 schema on open (83eab87)
  • trades: remove spurious badge dot and pending status flash (#86) by @grunch
  • settings: persist user preferences across app restarts (#85) by @grunch
  • web: resolve dart2js compile errors for flutter build web (#83) by @grunch
  • order-book: subscribe to all orders so status changes are receiv… (#78) by @grunch
  • order-book: hide non-pending orders from the order book (95d411c)
  • router: eliminate first-run race condition on startup (#72) by @grunch
  • review: loading state for unresolved amountSats, guard overlapping order polls (71c3ab7)
  • android: 16 KB page-size alignment for librust.so (#62) by @app/mostronatorcoder
  • set bundle ID to foundation.mostro.app (#58) by @app/mostronatorcoder
  • rewrite ORDER_BOOK.md Order List Item with correct card layout (#43) by @app/mostronatorcoder
  • correct v1-reference docs (BIP-39 mnemonic and encrypted messaging) (#25) by @Catrya
  • PaymentFailed is an Action, not a Status (#15) by @app/mostronatorcoder
  • disputes only available in active/fiat-sent states (#13) by @app/mostronatorcoder
  • ORDER_STATES.md post-merge corrections (#12) by @grunch

⚡ Performance

  • relay: PR 3.6 + the 2.5 gap — batch key derivation, coalesced DM filter and Online sync (#493) by @grunch
  • trades: finish PR 3.4 — trade screens follow a doorbell, not a poll (#492) by @grunch
  • instant trade status — push-driven UI and first-OK publish (#488) by @grunch
  • ui: repaint the countdown, not the screen, once a second (#367) by @grunch
  • ui: build the order card's number formatters once per locale (#357) by @grunch
  • bridge: coalesce relay-driven book updates into one emission (#377) by @Catrya
  • ui: look orders up by id instead of scanning the whole book (#366) by @grunch
  • ingest: cache trade-key misses so strangers' orders skip the DB (#362) by @grunch
  • chat: O(1) dedupe, debounced mark-read, and no scroll hijack (#369) by @grunch

♻️ Refactoring

  • invoice: one judge for payment destinations, in Rust (#441) by @grunch
  • keys: let deriving be the mnemonic validation, and parse once (#387) by @grunch
  • orders: move the request registry and status rules off the bridge (#312) by @grunch
  • name the v2 transport for what it is (#313) by @grunch
  • drop every protocol-v1 gift-wrap path (#311) by @grunch

📚 Documentation

  • perf: status of the optimization plan; web persistence is no longer a stub (#491) by @grunch
  • push: status after the push plan landed; v1 reference pointer (#486) by @grunch
  • push: PR-6 — gotchas, spec final pass, dispute chat must wake (#485) by @grunch
  • push: bring web push into scope (#465) by @grunch
  • push: spec and phased plan for push notifications (#462) by @grunch
  • bond: anti-abuse bond client spec and phased implementation plan (#437) by @grunch
  • specs: drop the shared-key display from the user info panel scope (#416) by @grunch
  • plan: record why infinite scroll does not apply to the order book (#374) by @grunch
  • specs: sync and reorganize tasks.md for 004 and 005 (#340) by @Matobi98
  • note that generated code goes stale on pull, not just on edit (#359) by @grunch
  • phased performance and scalability optimization plan (#348) by @grunch
  • readme: list supported NIPs and BUDs (#336) by @Matobi98
  • readme: add Linux desktop toolchain to prerequisites (#315) by @Forte11Cuba
  • specify an authenticated announcement channel + fix the app version it targets (#318) by @grunch
  • add security policy (#285) by @AndreaDiazCorreia
  • cashu: state the real goal — a user-selectable backend, not a test harness (#232) by @grunch
  • cashu: client-side Cashu escrow spec (#228) by @grunch
  • add design mocks for low-priority issues #126 #127 #128 #129 #131 #132 #139 #149 (#185) by @grunch
  • add AGENTS.md and CONTRIBUTING.md (#186) by @grunch
  • add design mocks for medium-priority issues #115 #124 #125 #130 #136 #140 (#184) by @grunch
  • add design mocks for backlog issues #134 #135 #142 #143 #145 (#183) by @grunch
  • readme: Add progress Overview and rename to "Mostro App" (#165) by @Catrya
  • claude: rewrite CLAUDE.md as hand-maintained project guidelines (#161) by @Catrya
  • sync specs to transport v2 and document order-creation timeout (#160) by @Catrya
  • tasks: sync 004 status markers with implemented code (#113) by @Catrya
  • readme: update for transport v2 and fix stale references (#112) by @Catrya
  • transport-v2: add migration reference and implementation plan (#109) by @Catrya
  • v1-reference: add anti-abuse bond reference (#108) by @Catrya
  • readme: sync dependency versions and update setup instructions (#105) by @Catrya
  • sync v1-reference (multi-mostro, disputes, relay sync) (#107) by @Catrya
  • add comprehensive README and MIT license (2821ff3)
  • set app bundle ID to foundation.mostro.app (#47) by @app/mostronatorcoder
  • constitution: V1 Flow Guide as Core Principle VII (#46) by @app/mostronatorcoder
  • constitution: V1 Flow Guide as mandatory speckit ground truth (#45) by @app/mostronatorcoder
  • add mandatory DESIGN_SYSTEM.md warning to V1 Flow Guide (#44) by @app/mostronatorcoder
  • clarify dispute status taxonomy in DISPUTE_SYSTEM.md (#41) by @Catrya
  • V1 Flow Guide for speckit reference (#42) by @app/mostronatorcoder
  • update FCM implementation to reflect actual behavior (#40) by @AndreaDiazCorreia
  • add branch protection rules documentation (#38) by @app/mostronatorcoder
  • add Core Services specs (MostroService, ExchangeService, EncryptionService) (#35) by @app/mostronatorcoder
  • comprehensive rewrite of Logging System spec (#34) by @app/mostronatorcoder
  • add Notifications System comprehensive spec (#33) by @app/mostronatorcoder
  • add Settings and Notification Settings specs (#32) by @app/mostronatorcoder
  • add NWC cross-references across v1-reference specs (#31) by @app/mostronatorcoder
  • translate Spanish text to English in v1-reference specs (#30) by @app/mostronatorcoder
  • add rating system spec (#28) by @app/mostronatorcoder
  • add dispute system spec (#27) by @grunch
  • expand peer-to-peer chat spec (#26) by @app/mostronatorcoder
  • add MY_TRADES.md spec (#24) by @app/mostronatorcoder
  • add TRADE_EXECUTION.md spec (#23) by @app/mostronatorcoder
  • add TAKE_ORDER.md spec (#22) by @app/mostronatorcoder
  • HOME, NAVIGATION, ORDER_BOOK & ORDER_CREATION specs (#21) by @app/mostronatorcoder
  • HOME & NAVIGATION specs (#20) by @app/mostronatorcoder
  • add AUTHENTICATION.md - v1 reference spec (#19) by @app/mostronatorcoder
  • fix order state transitions and improve documentation accuracy (#18) by @Catrya
  • add comprehensive order states specification (#11) by @app/mostronatorcoder
  • update DESIGN_SYSTEM.md with exact v1 visual specs (#8) by @app/mostronatorcoder
  • add ARCHITECTURE.md - Rust/Dart boundary ADR (#7) by @app/mostronatorcoder
  • add Mostro Protocol reference as critical foundation (#3) by @app/mostronatorcoder
  • add v1 architecture reference for v2 development (#2) by @app/mostronatorcoder

🧪 Tests

👷 Build & CI

  • release: publish a GitHub release with signed APKs when a tag is pushed (#500) by @grunch
  • build the iOS app on every PR; raise the iOS minimum to 14.0 (#487) by @grunch
  • bump Flutter to 3.41.9 and migrate containsSemantics to isSemantics (#422) by @grunch
  • #154: run the web build on PRs and smoke-test the release bundle (#226) by @grunch
  • add workflow to regenerate golden test images (#189) by @AndreaDiazCorreia
  • add GitHub Actions workflow for Rust and Flutter checks (#173) by @AndreaDiazCorreia

🧹 Chores

  • regenerate bindings and localizations after #475 (#478) by @grunch
  • commit generated code and drop git hooks (#476) by @grunch
  • install the git hooks automatically instead of by memory (#432) by @grunch
  • relicense project under AGPLv3 or later (#418) by @grunch
  • bump Android NDK to 28.2 and auto-regenerate bindings after pull (#378) by @grunch
  • untrack the desktop generated plugin registrants (#314) by @grunch
  • l10n: stop tracking generated localization bindings (#276) by @AndreaDiazCorreia
  • guard flutter_rust_bridge codegen version mismatch (#206) by @grunch
  • clippy: resolve warnings to enable -D warnings gate (#166) by @AndreaDiazCorreia
  • deps: bump mostro-core 0.10 to 0.13.1 (#110) by @Catrya
  • reset to clean state for 004-mostro-p2p-client (#48) by @grunch
  • update Rust version requirement to latest stable (1.94+) (#6) by @app/mostronatorcoder

🔧 Other Changes

  • Test-environment order expiry (MORTSOM_ORDER_EXPIRY_SECS) (#413) by @grunch
  • Publish the remainder of a bought range order (#411) by @grunch
  • Range remainders, republished maker orders and automation ids for ranges and ratings (#410) by @grunch
  • Fix/381 session fallback (#382) by @Forte11Cuba
  • Add opencode and qwen speckit related files (648adb7)
  • Feat/pay with lightning wallet button (#100) by @grunch
  • Fix/gift wrap status sync (#98) by @grunch
  • Fix app id for linux (d395234)
  • Use default fiat from settings on create order (2f9f2d8)
  • Add locales for tradeWaitingForHoldInvoice (7cae35c)
  • Feat/maker order ux (#81) by @grunch
  • Feat/create order (#80) by @grunch
  • Feat/persistence db init (#76) by @grunch
  • fix/add back button to order detail screen (6463851)
  • sort orders, recent first (14c9c59)
  • fix/shimmer skeleton (93caf47)
  • fix/add missing import (9156fe7)
  • Update dependency (#71) by @grunch
  • Fix readme (50a4134)
  • Fix german text (a92299f)
  • spec(phase18): add real order book bridge + shimmer loading phase (#70) by @grunch
  • 004 mostro p2p client (#59) by @grunch
  • Phase 7 (#56) by @grunch
  • phase 6 (#55) by @grunch
  • 004 mostro p2p client (#54) by @grunch
  • Cleaning all implementation files (#49) by @grunch
  • Phase 3: User Story 3 — Onboarding & Identity Setup (#39) by @grunch
  • Finished speckit tasks (e721e44)
  • Move CURRENT_FEATURES.md to v1-reference (d5522ed)
  • Fix constitution (77116ce)
  • New features from v1-reference (#16) by @grunch
  • Dispute is only available on fiatsent or active (#14) by @grunch
  • added reference to ARCHITECTURE.md for boundary rules, (a5b2e1e)
  • plan: update artifacts for 15 states, range orders, and regenerate tasks (#5) by @grunch
  • Add dark/light theme (#4) by @grunch
  • Add specs (#1) by @grunch
  • first commit (cbba9ce)

👥 Contributors

Thanks to everyone who made this release possible:

@AndreaDiazCorreia · @BraCR10 · @Catrya · @codaMW · @Forte11Cuba · @grunch · @Matobi98 · @Pivii


History: CHANGELOG.md