Verifying the Release
In order to verify the release, you'll need to have gpg or gpg2 installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:
curl https://raw.githubusercontent.com/MostroP2P/mostrix/main/keys/negrunch.asc | gpg --import
curl https://raw.githubusercontent.com/MostroP2P/mostrix/main/keys/arkanoider.asc | gpg --importOnce you have the required PGP keys, you can verify the release (assuming manifest.txt.sig.negrunch, manifest.txt.sig.arkanoider and manifest.txt are in the current directory) with:
gpg --verify manifest.txt.sig.negrunch manifest.txt
gpg --verify manifest.txt.sig.arkanoider manifest.txt
gpg: Signature made fri 10 oct 2025 11:28:03 -03
gpg: using RSA key 1E41631D137BA2ADE55344F73852B843679AD6F0
gpg: Good signature from "Francisco Calderón <fjcalderon@gmail.com>" [ultimate]
gpg: Signature made fri 10 oct 2025 11:28:03 -03
gpg: using RSA key 2E986CA1C5E7EA1635CD059C4989CC7415A43AEC
gpg: Good signature from "Arkanoider <github.913zc@simplelogin.com>" [ultimate]
That will verify the signature of the manifest file, which ensures integrity and authenticity of the archive you've downloaded locally containing the binaries. Next, depending on your operating system, you should then re-compute the sha256 hash of the archive with shasum -a 256 <filename>, compare it with the corresponding one in the manifest file, and ensure they match exactly.
What's Changed in 0.2.5
🚀 Features
- Observer reads with disclosed K_conv (step 6) by @arkanoider
- gate legacy GiftWrap receive behind dual-read flag by @arkanoider
- Step 4 client security — LRU, rate limit, durable inner ids by @arkanoider
- expose solver dispute chat by @Vidarte-Alberto
- add user-to-solver messaging by @Vidarte-Alberto
- persist solver chat metadata by @Vidarte-Alberto
- clamp since cursors and pin mostro-core 0.14.2 by @arkanoider
- let users open a dispute from My Trades by @amuntri
🐛 Bug Fixes
- retain NIP-33 publish stamp beside dispute open time by @arkanoider
- prefer kind-38386 created_at tag for Pending Created by @arkanoider
- restore user-solver chat exports after merge by @arkanoider
- park list scrollbar thumb at bottom on last row by @arkanoider
- shrink shell chrome so short terminals keep content by @arkanoider
- single-column pending disputes under 43 cols by @arkanoider
- align Orders and Disputes Pending scroll selection by @arkanoider
- sync scrollbar with table viewport and add compact layouts by @Catrya
- fix(disputes): scroll pending disputes table to keep selection visible by @Catrya
- guard Shift+C/F/R against duplicate submits by @amuntri
- ignore stale Observer fetches and keep status visible by @arkanoider
- clipboard lost after thread exits on X11 by @ekzyis
- require inner-signer allow-list on unwrap by @arkanoider
- open Add Invoice on take-sell instead of create success by @arkanoider
- accept npub or hex for Mostro pubkey in settings by @arkanoider
- show dispute shortcut in My Trades footer by @ca-ruz
- harden unsubscribe and notification stream handling by @arkanoider
- compact help on narrow terminals by @Vidarte-Alberto
- keep help visible on short terminals by @Vidarte-Alberto
- retain live chat metadata by @Vidarte-Alberto
- abort send when transcript save fails by @Vidarte-Alberto
- surface rejected trade actions by @Vidarte-Alberto
- fsync transcript writes before treating save as durable by @arkanoider
- persist inner ids only after transcript save succeeds by @arkanoider
- display timestamps in local time by @ca-ruz
- address review - widen giftwrap backfill + normalize future cursors by @arkanoider
- ignore Shift+D while a dispute request is pending by @amuntri
- preserve grapheme boundaries in order input by @ca-ruz
- keep My Trades input visible while typing by @ca-ruz
- persist orders table state for smooth scrolling by @misaelzb
💼 Other
- fix(admin): prefer kind-38386 created_at tag for Pending Created by @arkanoider in #131
- Revert "fix(admin): retain NIP-33 publish stamp beside dispute open time" by @arkanoider
- docs(chat): Step 8 — kind-14 acceptance for #102 by @arkanoider in #130
- docs(chat): Step 7 — GiftWrap docs sweep + chat filter tests by @arkanoider in #129
- fix(ui): restore user-solver chat exports after merge by @arkanoider in #128
- feat(chat): add user-to-solver dispute chat by @arkanoider in #119
- Merge branch 'main' into feat/user-solver-chat by @arkanoider
- fix(disputes): scroll pending disputes table to keep selection visible by @arkanoider in #125
- fix(mytrades): guard Shift+C/F/R against duplicate submits by @arkanoider in #123
- feat(chat): Step 6 — Observer K_conv disclosure UX by @arkanoider in #126
- fix(clipboard): clipboard lost after thread exits on X11 by @arkanoider in #127
- Merge remote-tracking branch 'origin/main' into feat/user-solver-chat by @Vidarte-Alberto
- feat(chat): Step 5 — dual-read GiftWrap flag by @arkanoider in #124
- fix(chat): require inner-signer allow-list on unwrap by @arkanoider in #122
- fix: accept npub or hex for Mostro pubkey by @arkanoider in #121
- Fix(ui): Show dispute shortcut in My Trades footer by @arkanoider in #118
- chore: migrate to nostr-sdk 0.45.1 and mostro-core 0.14.3 by @arkanoider in #120
- Merge remote-tracking branch 'origin/main' into feat/user-solver-chat by @Vidarte-Alberto
- feat(chat): Step 4 — outer LRU, rate limit, durable inner-id dedup by @arkanoider in #117
- Fix(ui): Display timestamps in local time by @arkanoider in #115
- feat(chat): Step 3 — clamp since cursor + mostro-core 0.14.2 by @arkanoider in #104
- feat(dispute): let users open a dispute from My Trades by @arkanoider in #106
- Fix(ui): Keep My Trades input visible while typing by @arkanoider in #112
- fix: persist orders table state for smooth scrolling by @arkanoider in #113
- docs: add security policy by @arkanoider in #105
📚 Documentation
- Step 8 — kind-14 acceptance matrix for #102 by @arkanoider
- Step 7 — sweep GiftWrap-only P2P wording and harden tests by @arkanoider
- describe kind-14 as the active chat transport by @arkanoider
- clarify dual-read chat routing and admin signer allow-list by @arkanoider
- sync Mostro pubkey comments with npub/hex flow by @arkanoider
- add SECURITY.md with vulnerability reporting policy by @AndreaDiazCorreia
⚙️ Miscellaneous Tasks
- use rustls ring via rustls-no-provider by @arkanoider
- bump crypto deps and adapt chacha20poly1305 0.11 API by @arkanoider
- migrate to nostr-sdk 0.45.1 and mostro-core 0.14.3 by @arkanoider
- align chat type imports by @Vidarte-Alberto
- update comments by @arkanoider
- fix cargo fmt by @arkanoider
Contributors
- @arkanoider made their contribution in #131
- @ekzyis made their contribution
- @Vidarte-Alberto made their contribution
- @Catrya made their contribution
- @amuntri made their contribution
- @ca-ruz made their contribution
- @misaelzb made their contribution
- @AndreaDiazCorreia made their contribution
Full Changelog: v0.2.4...0.2.5