Release history
Changelog
Every release of BTX PQ Wallet, newest first: what changed, and why. The post-quantum send core
and key derivation are byte-pinned to the BTX node across all of them.
v0.28.0
2026-07-17
The wallet now gets its chain data from our own server first, with automatic failover behind it — plus a cleaner artifact detail page, a fresh look, clickable fix guides, and a batch of self-custody hardening.
Our own chain server, with failover. Balance, history, and sends now talk to our own BTX Esplora node (api.btxscan.io) first, and fall back automatically to two independent community servers (Byron Bay, minebtx) when it cannot be reached:
- If the current server stops answering, the wallet advances to the next one on its own and says so in a banner with a one-click "Try next server" — reads keep working even when a server (or your own DNS cache) has a bad day.
- Sending is deliberately different: a broadcast is never quietly re-sent to a different server, and a failed send stays on screen for you to re-confirm yourself — a flaky network can never turn one payment into two.
- The free-text server field is gone. Settings offers the three official servers only, and the app's network layer refuses everything else: only those three origins (or your own machine, for self-hosters) can ever be reached, and nothing inside the app can widen that at runtime.
- Honest small print: the Byron Bay fallback does not index unconfirmed transactions yet, so while it is the active server a just-sent payment can show up ~90 seconds late, and very long histories show only the most recent pages. Your money is unaffected — the wallet only ever spends confirmed coins, and anything it cannot verify it sets aside instead of spending.
A cleaner artifact detail page. Opening a relic or NFT now leads with its artwork in a square frame and lays the rest out so it is obvious what everything is:
- Artwork shows in a square frame that fits any picture without cropping or stretching it: a tall image gets bars on the sides, a wide image gets bars above and below, and a square one fills the frame. The quantum sigil holds the frame until you tap "Show artwork", which still fetches and verifies the image against the on-chain record before it appears, so nothing loads on its own.
- The three identifiers are now clearly labelled and no longer look alike: the artifact's own fingerprint, the IPFS address where its artwork and traits live, and the on-chain transaction that carries it, each with a one line description so it is never a guess which hash is which.
- The wall of explanatory text is gone; the facts (chest value, type, schema, minted or transferred) sit in a tidy grid.
Everything else in this release:
- A fresh look: the PQ hexagon is now the default logo on new installs, and the logo picker shows the real logos instead of describing them in words. The window is titled "PQ wallet for BTX".
- When a newer version exists, a blinking banner on the start screen points to pq-wallet.com/download. Updating stays manual and verifiable — there is still no auto-updater, on purpose.
- Every network-flavored error now carries a clickable fix guide (pq-wallet.com/fixbugs), so a DNS hiccup gets a one-click way out instead of a screenshot of a scary red message.
- Artifact protection is stricter: if the wallet cannot fully verify that a coin is not carrying a relic or NFT — say, the server's transaction data is incomplete — that coin is set aside rather than spent. A send can no longer burn an artifact because a server had a bad day.
.btxwallet files now import AND export in the official full-seed descriptor format, byte-identical to what btx.dev and the node tools produce — a bundle written here restores anywhere, and theirs restore here.
No change to the post-quantum send core or key derivation (qid.bundle.js byte-identical). Transparent funds only.
v0.27.0
2026-07-15
Sign in to a website straight from the desktop wallet, no copy-paste. When a site (btx.best) offers "Open in BTX PQ Wallet", it now launches the installed wallet with the sign-in request. The wallet shows you which site is asking, you pick which of your wallets signs, and on your click the login proof is sent back to that site automatically. You never copy or paste anything, and the site never sees a key.
- The wallet registers the btxqid:// link scheme and opens a dedicated "Sign in to <site>" screen that reuses the exact qID Sign-In picker you already have: the proof discloses only the one address you choose, your other wallets stay private, and the seed is unlocked in place and wiped right after.
- Nothing is ever signed automatically. A link only pre-fills the request and shows you the site, you still review the origin, choose a wallet, and click Sign. Every incoming link is treated as untrusted: a malformed request, or a proof URL whose origin does not match the site, is refused and nothing is signed. A qID proof is a login signature in a separate domain from transactions; it can never move funds.
- One new, tightly-scoped network action returns the proof. It refuses to send anything that is not a well-formed login proof, will only post to an https address whose origin matches the origin named inside that proof, refuses redirects and embedded credentials and cleartext http, times out fast, and discards the response, the same hardening the chain and artwork fetches already use. Copy-and-paste still works everywhere as a fallback.
v0.26.0
2026-07-15
Move a wallet in and out as a portable file. You can now restore a .btxwallet.json bundle, the kind the website, a node, or btx-cli writes, straight into the wallet, and export the open wallet back out as the same kind of file. Both directions are fully offline: the file is read through the native open/save dialog and parsed on your own machine, with no new network calls anywhere.
- Restore adopts the bundle's master key as an ordinary wallet and takes you straight to the one-time master-key backup screen, exactly like restoring any other key. The file is refused unless it is a mainnet bundle whose seed, fingerprint, and first address all agree, a corrupt or tampered file is turned away with a plain reason, and no key material is ever put on screen.
- Because a bundle is HD but this wallet watches a single address, a quiet background check looks a few addresses ahead on both change branches after you restore. If any coins sit somewhere the adopted address wouldn't see, a banner offers to sweep them with the existing recovery wizard, nothing moves on its own, and the check never blocks or slows the backup step.
- Export lives in Settings → Backup. A
.btxwallet.json has no passphrase, that is the format, it stores your master key in plain text, so exporting takes a deliberate second click that spells out the risk, then writes the file to disk only (never the clipboard) with owner-only permissions.
No new cryptography and no new network endpoints: the same key derivation the wallet already uses both writes and checks the file, and the background address check reuses the balance lookup every screen already makes.
v0.25.1
2026-07-14
History now says when an artifact moved. A transaction carrying a BZA1 payload used to render as a bare "RECEIVED +0.001 BTX", no hint that a relic changed hands. Each such history row now carries a small marker naming what happened and to what: "Artifact minted to you: …", "Artifact received: …", "Artifact sent: …", a state update says "Artifact updated" (even when the same transaction also pays someone else) and a send-to-self "Artifact sent to yourself", so a row's caption can never contradict its own header (soulbound ones get a violet accent). The tag is decoded by the same parser the Artifacts tab already uses, only from transaction data the history view already fetched, no new network calls anywhere, and a pre-computed tag arriving in explorer JSON is ignored: fresh transactions always decode locally. One naming rule now covers every view: an artifact from a collection the wallet doesn't know by name (like RELICLAB) shows its raw collection tag in the Artifacts tab, the detail page, and the history line alike, so the same artifact never carries two different names. A malformed or oddly-shaped transaction from the explorer can never blank the history view, it simply renders without a tag. Cached history rows keep no script data, so the tag is computed when the cache is written and stored with the row; the cache key was bumped (v1 → v2), which forces one ordinary re-fetch of your recent history on first open.
v0.24.0
2026-07-12
Artifacts become tappable. Every relic or NFT in the Artifacts tab now opens a full detail page on top: the big quantum sigil, all its properties, the chest value it carries, its record hash, and a link to the off-chain record on IPFS (copy or open, behind a plain safety notice). Soulbound status is unmistakable, with a lock badge and a one-line explanation.
- Forward an artifact to another wallet, straight from its detail page. The forward is carrier-preserving: the artifact's coin (and any chest value inside it) travels to the recipient untouched, and the network fee is paid from your ordinary balance, never skimmed from the chest. Soulbound artifacts are refused. Paste an address or pick a saved contact. This lives only in the Artifacts tab; the plain BTX Send screen is untouched and never mentions artifacts.
- Fixed a scan bug: a forwarded artifact is no longer shown as still held by the sender (it was mis-reading the sender's change coin), which also stops that change coin from being needlessly held back from ordinary sends. The carrier is now anchored to its fixed position (the first non-OP_RETURN output), which also correctly handles a chest carrier larger than the change.
- A forwarded artifact now keeps its collection and item number in the recipient's wallet (the TRANSFER record is decoded the same way as a mint).
- The off-chain record's IPFS address is derived directly from the on-chain commitment, with no network call: the record is a single raw IPFS block, so its CID is the commitment itself.
No change to the post-quantum send core or key derivation (qid.bundle.js byte-identical). The forward reuses the same signing path as an ordinary send. Transparent funds only.
v0.23.0
2026-07-12
A big polish pass: an update-available pill, help built into the app, an AI onboarding guide, a balance that resolves like a number, a setting for the Artifacts tab, a clearer Settings menu, and a batch of UX, copy, and accessibility refinements across every screen. No change to the post-quantum send core or key derivation (qid.bundle.js byte-identical). Transparent funds only.
- See when a new version is out. The header shows a small "Update available" pill when a newer build exists, and it opens pq-wallet.com to download it. The check runs once per launch through a pinned, hardened Rust request to pq-wallet.com/version.json (https only, size capped, no redirects, no input from the webview), so the webview still makes no network calls of its own. There is no auto-update: you always download and verify the build yourself. When the wallet is current, nothing is shown.
- Windows and Linux no longer say "Touch ID." The passkey prompts and buttons now name your platform's method, so it reads "Windows Hello" on Windows, "your passkey" elsewhere, and "Touch ID" only on a Mac.
- Unlock is keyboard friendly. The passphrase field is focused when you open a wallet and Enter submits, and the Settings dialog now closes with Escape and moves focus into itself.
- Clearer messages. The pending line no longer doubles the word "confirming, " an empty Send amount asks you to enter one instead of showing "invalid amount, " cancelling a passkey during qID signing reads cleanly, and the broadcast-blocked help suggests toggling your VPN either way plus a phone hotspot test.
- Signing-wallet unlock is fair. Unlocking a wallet to sign a qID proof no longer counts a paused wallet or a tamper refusal as a wrong passphrase, and it shows wait times as "5 min" like the rest of the app.
- Artifacts you hold always show. The Artifacts tab now finds a held relic even when its mint is older than the recent history window, by reading it straight from your current coins.
- Recovery files with punctuation in the wallet name parse correctly. A brace in the wallet name no longer truncates an EasyBTX recovery file.
- The Artifacts "View" link now follows a custom explorer, the History open-transaction arrow is keyboard operable, and the in-app "Get the latest version" button points at pq-wallet.com.
- Built-in help, on demand. Small info buttons open a clear explanation right where you are (how your wallet is protected, network fees, qID Sign-In, how updates work), so the screens stay uncluttered and the detail is one tap away.
- Get guided by your own AI. A new "Guide me with your own AI" option gives you a ready-made prompt to paste into any AI you trust. It knows the whole wallet and walks you through anything, by text or voice. Nothing leaves the app: you copy, you paste.
- Your balance resolves like a number. The decrypt animation on the balance now spins digits with the decimal point held steady, so it reads as a value locking in rather than random characters.
- Choose when the Artifacts tab shows. A new setting in Appearance keeps the Artifacts tab always visible, shows it only when you hold one, or hides it.
- A clearer Settings menu. Bigger and easier to read, with a clear marker for the section you are in, and clicking a category now jumps straight to it.
- Consistent, more accessible controls. A visible keyboard focus ring on every control, hover feedback on the tabs and fee buttons, better empty states, and clearer labels throughout.
- Quantum sigil for your artifacts. Each relic or NFT now shows a distinct, glowing "quantum sigil" drawn from its on-chain fingerprint, the same on every device. A held artifact keeps its sigil when it moves to another wallet. Fully on-chain glyphs still show their real pixels.
- Artifacts are safe from an accidental send. Send and Send-All now never spend an artifact coin as a fee, so a relic or NFT can never be burned by an ordinary transaction. If the wallet cannot check your artifacts at that moment, the send pauses rather than risk one.
v0.14.0
2026-06-11
Rebrand to BTX PQ wallet, a full theming system, and a batch of send/privacy UX fixes. The post-quantum send core and qid.bundle.js are unchanged, no new crypto, and the money-critical identifiers (the macOS Keychain service, the BTX-WALLET-RECOVERY file magic) are untouched, so existing wallets and recovery files keep working. (Supersedes the internal-only v0.13.0.)
Added
- Theming (Settings → Appearance). Three independent controls: a logo (BTX PQ wallet pixel mark · pq hex mark, which also sets the app & Dock icon), a colour (Green · Ocean · Violet · Amber), and a mode (System · Dark · Light). System follows the OS appearance live; Dark/Light pin it. Every colour works in both light and dark.
- Live macOS Dock icon matching the chosen logo+colour (new
set_dock_icon command via AppKit; a no-op on other platforms, and it never touches the on-disk .app bundle icon). - Post-send receipt. After a broadcast the send form is replaced by a clear "Sent ✓" card with the full transaction hash, a Copy button, and a View-in-explorer link. Returning to Send shows a fresh form.
- bonuz wallet promo (Settings → Links): "BTX is live in the bonuz wallet", in the bonuz brand (animated orange→pink gradient).
Changed
- Name → BTX PQ wallet across the app, window title, About, and icons.
- The privacy-eye now also masks transaction amounts in History, not just the balance.
Removed
- The "You are on mainnet" warning, and the misleading Send all button (it errored and read as "send my whole balance"). The underlying sweep still powers node-fund recovery.
Fixed
- Received is always green, Sent always red, in every theme. Direction colours had tracked the theme accent (so "received" turned cyan in the Ocean theme); they are now their own
--pos/--neg tokens that a reskin can't change.