Releases: ohstr/cashctl
Releases · ohstr/cashctl
Release list
v0.3.0
- New
wallet protect [id]re-keys a still-shared bearer holding whenreceive's auto-protect was declined or failed. - A whole-token bearer
transfernow hands back the recipient's token and secret. - A ledger write that fails after the Hub moved money is reported with a recovery hint (
transfer,consolidate,redeem). - A bearer secret is saved before it's used and retried at spend time, so an interrupted protect can't lose it.
- An ambiguous
consolidatedelivery is checked against the Hub instead of guessed. receivebounds the Hub-reported amount and checks it against the token's signed amount; oversized amounts are rejected.- Wallet connection values never appear in
--jsonoutput or as display labels, and secret redaction in errors is stronger. paynow confirms and previews the amount before sending.decodeno longer goes online by default; its--checkprompt defaults to no.- Pasting a Nostr key (
npub,nsec, ...) intodecode/receivegets a clear message instead of a TLV error. wallet balanceleaves expired held tokens out of the total (still listed, marked expired) and names unreachable wallets instead of dropping them.wallet balance --fromon a spent token isnot_found, not its old amount.- Expired-token errors say the token expired, not the wallet; human-mode errors keep the Hub's actual reason.
- Concurrent
initand config saves no longer overwrite each other; the losinginitreportsalready_configured. - A bare
cash/wallet/connect/circleor a mistyped subcommand exits 2. -c/--connectionon commands it can't apply to is a usage error; an explicit0amount is a usage error.- Token IDs match case-insensitively;
wallet showworks without an identity;init --jsonnever adopts an ncli vault. --yesno longer replaces an existing default wallet (connect add,join).- Prompts, pick-lists and the spinner go to stderr; results stay on stdout.
- Hub/wallet text is sanitized more thoroughly (control and bidi characters), including in
list-tx,budgetandjoin. - Bumped
nmilatto v0.3.1.
v0.2.0
- All amounts (
transfer,join --max-amount,consolidate --sources,
invoice) are now in loki, not mloki. transferno longer narrates the split remainder ("keep X") — it just
confirms and reports the amount sent.transfer's target/amount positional args work in either order.jointakes its spend cap positionally too, in either order; a cap is
now required instead of silently failing at the Hub.consolidatewith no args auto-groups held tokens by minter and merges
each group, instead of only doing so as a single call across everything held.circle createrenamed tocircle join, matching the top-leveljoin.- Trimmed verbose help text and prompts across most commands.
- Fixed a stale hint pointing at
wallet showinstead ofwallet show --jsonfor a held token's ID.
v0.1.0
- Storage moved to a single SQLite database (
cashctl.db), replacing three JSON files. transfer --amountpicks which held token(s) to use, auto-consolidating same-minter tokens when none alone covers it.receiveaccepts NIP-CASH bearer gift-strings (<token>#<bearer_secret>) and auto-secures bearer receipts.decode/redeem/transfer/consolidatewarn before an action that would fail on an expired token.redeemaccounts for the Hub's redeem fee;--torenamed to--into.nconnection1...targets and NIP-05 identifiers are supported and validated before use.- Fixed several bugs: a lost update on concurrent saves, a bearer-target transfer that discarded its own secret, a secret leak in
--jsonoutput, and a duplicate-receive race. - Wire text from a Hub/wallet is sanitized before printing; error messages are more specific and less generic.
- Circle hub fee terms and forwarding-fee skim are now visible in
wallet get-info/wallet pay.
v0.0.1
- Initial release:
init,join/circle create,wallet(show/history/use/get-info/balance/budget/invoice/pay/list-tx/sign-message),connect(add/list/use/rm),receive,redeem,transfer,consolidate,cash(list-recipients/decode/verify-provenance),version.