Skip to content

Releases: invalidcredentials/cardano-easy-mint

v4.6.3 - Install zip, Plugin Check pass, repo cleanup

Choose a tag to compare

@invalidcredentials invalidcredentials released this 05 Oct 19:05

Install: download cardano-easy-mint.zip below, then in WordPress go to Plugins → Add New → Upload Plugin. (The permanent link releases/latest/download/cardano-easy-mint.zip always points at the newest version.) Don't use GitHub's green "Download ZIP" button; it unpacks under the wrong folder name.

Housekeeping release on top of the 4.6.2 security fixes. No changes to how minting works.

Added

  • Ready-to-install cardano-easy-mint.zip at the repo root and on every release.

Fixed (WordPress Plugin Check + PHPCompatibility pass)

  • Admin pages escape everything they print (nonces, URLs, counters, recovery words); stored NFT metadata is safely re-encoded before it's printed into the Mint Manager script.
  • gmdate() / wp_parse_url(), text domain matches the plugin slug, readme.txt tags and short description within wordpress.org limits.
  • PHP 7.4 compatibility scan is clean.

Changed / Removed

  • Asset Upgrades admin page describes the shipped feature instead of "coming in later phases".
  • Internal planning docs removed from the repo; example placeholders made generic.

Full details in CHANGELOG.md.

v4.6.2 - Security release: policy key only signs server-built transactions

Choose a tag to compare

@invalidcredentials invalidcredentials released this 05 Oct 17:24

Security release. Every site running 4.6.1 or earlier should update. No schema changes; drop-in replacement.

Security

  • The policy key only co-signs transactions this site built. Previously the mint submit paths (checkout, REST /mint/submit, /upgrade/submit) signed whatever transaction a visitor posted. Every build is now recorded server-side by transaction id and can be submitted once, within 30 minutes; anything else is refused. Supply, per-wallet counts, alt-pay invoices and discount commits come from that record, not from the request.
  • Merchant payout address always comes from Plugin Setup, never from the browser.
  • Asset-upgrade re-mint requires this site's burn of the same asset, from the same wallet, to be confirmed on-chain; one re-mint per burn. The upgrade modal waits for the burn and can resume an interrupted re-mint.
  • Alt-pay invoices are bound to their mint, cover one asset, and are consumed atomically, so one payment backs one mint.
  • Discount codes are always committed, so single-use codes stay single-use.
  • Timeouts or server errors during submit no longer hand single-use state back (the tx may have gone through); only a definite rejection does.

Fixed

  • Image URLs and royalty addresses over 64 bytes (e.g. CIDv1 IPFS links) are chunked per CIP-25 / CIP-27, so they no longer fail the build.
  • The BTC / ETH / SOL wallet tabs load on PHP 7.4 again.
  • The embeddable widget can submit mints again.

Full details in CHANGELOG.md.

v4.6.1 - How to Use page points to the GitHub README

Choose a tag to compare

@invalidcredentials invalidcredentials released this 03 Sep 04:34

The in-admin How to Use page now opens with a notice pointing to the GitHub README as the most up-to-date guide, and its banner shows the real plugin version via CARDANO_MINT_VERSION.

Install: upload cardano-easy-mint-4.6.1.zip via Plugins > Add New > Upload Plugin.

v4.6.0 - Cleanup release + policy wallet generation fix

Choose a tag to compare

@invalidcredentials invalidcredentials released this 03 Sep 04:15

Cleanup release. No schema changes and no behaviour changes for customers or
operators, plus one real bug fix that surfaced while verifying the cleanup.

Fixed

  • Generating a policy wallet could fatal with Class "Ed25519Compat" not found.
    CardanoWalletPHP.php guarded itself with a class-exists check placed before
    its own require_once of the Ed25519 compat layer. PHP binds the class at compile
    time, so the guard was already true when the file ran and the require never
    executed. It only worked when something earlier in the same request had loaded
    the transaction signer (which loads the compat layer too). The require now comes
    first. Verified on a live site: preprod and mainnet wallets generate with a
    24-word mnemonic, addresses, and extended signing key.

Changed

  • All server logging goes through cardanomint_log() (includes/helpers/log.php).
    Debug-level messages only reach the PHP error log when WP_DEBUG is on or the
    cardano_mint_debug_log filter returns true; failure paths log at error level and
    always appear. Four admin handlers that dumped the raw $_POST body to the log no
    longer do.
  • Browser console noise is gated the same way. cardano-nft-mint.js routes its
    tracing through cmDebug(), a no-op unless WP_DEBUG is on (localized as
    cardanoMint.debug). console.warn / console.error are untouched.
  • The plugin entry file is a third of its old size. The Plugin Setup page, the
    Mint Manager / Active Mints pages, the How to Use page, and the one-time
    migrations moved verbatim into includes/admin/. Plugin paths resolve through
    new CARDANO_MINT_PLUGIN_DIR / _URL / _FILE constants; CARDANO_MINT_VERSION
    is defined as well.
  • CardanoCLI is now an honest 78-line facade over the pure-PHP signer and wallet
    generator (its public signatures are unchanged).

Removed

  • includes/helpers/WalletGenerator.php: never referenced; its body was a placeholder.
  • The Deno-binary and Python fallbacks in CardanoCLI, the activation-time "fix
    binary permissions" step, and two address helpers keyed to the old binary's
    output format. Neither bin/ nor scripts/ ship with the plugin, so none of
    those paths could ever succeed; wallet generation and signing were already pure
    PHP and still are.
  • The unreachable client-side address-conversion fallbacks (a Cardano Serialization
    Library path nothing loads, and a placeholder that fabricated an addr1… string).
    If the server-side conversion fails, the raw address is passed through, which is
    what the old chain ended up doing anyway.
  • The orphaned cardano_get_connected_wallet AJAX handler (the last CardanoPress
    remnant) and the unauthenticated registration of the Anvil connectivity test
    (cardano_test_anvil_api is admin-only now; only Plugin Setup ever called it).

Install: upload cardano-easy-mint-4.6.0.zip via Plugins → Add New → Upload Plugin.

v4.5.3 - Open-source release prep + Anvil key exposure fix

Choose a tag to compare

@invalidcredentials invalidcredentials released this 03 Sep 03:56

Open-source release prep, plus one security fix.

Security

  • The Anvil API key is no longer shipped to the browser. The mint modal's
    address converter used a key localized into the page (cardanoMint.anvilApiKey)
    to call Anvil's utils/addresses/parse directly, so any visitor could read the
    operator's key from page source. The conversion now goes through a nonce-gated,
    rate-limited AJAX proxy (cardano_convert_address) and the key stays server-side.
    Behaviour is unchanged for customers; the README's "key is never exposed" claim is
    now actually true.

Fixed

  • Wallet connector no longer fights a site-wide connector (2026-06-25). The
    embedded CIP-30 manager auto-reconnected its last wallet on every page and could
    thrash against a nav-level connector. Init is now gated to pages that render the
    mint widget, connector wiring is one-shot, and there is no auto-reconnect on load.
    New assets/weldpress-bridge.js clears the saved wallet key at load and on a
    WeldPress disconnect; it is a harmless no-op on sites without WeldPress.

Changed

  • Plugin header: name is now Cardano Easy Mint (matches the repo and README),
    with License, Plugin URI, Requires at least, and Requires PHP fields.
  • 2FA: the authenticator issuer is the WordPress site title (falls back to
    "Cardano Easy Mint"), and the recovery-code download no longer hard-codes a
    site name. Existing enrollments keep working (the secret is unchanged).
  • Every PHP file now carries a direct-access guard.
  • Added LICENSE (AGPL-3.0-or-later), readme.txt, .gitignore, .distignore.
  • Removed an internal partner-onboarding note that did not belong in the repo.

Install: upload cardano-easy-mint-4.5.3.zip via Plugins → Add New → Upload Plugin.

v4.0.0 - Alt-chain payments + batch mints + wallet network gate

Choose a tag to compare

@invalidcredentials invalidcredentials released this 30 Apr 20:10

Cardano Easy Mint v4.0.0 — major release.

This is the alt-chain payments + batch mints + wallet-network gate cut. Drop-in installable to any WordPress site.

Install

  1. Download cardano-easy-mint-v4.0.0.zip from Assets below.
  2. WordPress admin → Plugins → Add New → Upload Plugin → select the zip → Install Now → Activate.
  3. Configure under Cardano Mint → Plugin Setup, then optionally Alt-Chain Payments.

Existing installs upgrade in place; no schema migration needed at activation (alt-pay tables are created lazily on first activation of the alt-chain feature).

What's new

Added

  • Alt-chain payments. Customers pay for a Cardano NFT with BTC, ETH, or SOL. Per-mint deterministic deposit addresses, server-side watcher, price-locked invoices, refund + sweep tooling per chain.
  • Batch mints. 1-5 NFTs per Cardano transaction, one wallet signature.
  • Wallet network gate. Four layers refuse to proceed when the customer's Cardano wallet is on a different network than the site (catches the "paid in BTC, can't sign because wallet was on mainnet" failure mode).
  • Resume banners for in-flight alt-chain payments. Per-chain localStorage sessions survive page reloads.
  • Refund + sweep admin tooling per chain. Real on-chain txs, signed by the same pure-PHP crypto stack.
  • filemtime() asset cache busting so any future plugin update auto-busts every browser cache.

Changed

  • AnvilAPI::buildMintTransaction signature: added $quantity = 1. Default behavior is unchanged.
  • Step 2 modal: tighter spacing so the receipt fits without scrolling.
  • Wallet picker no longer lists Nami (defunct).

Fixed

  • Receipt info note unreadable on dark theme (duplicate light-theme !important rule removed).
  • After a successful alt-pay mint, reopening the modal could leave the receipt in alt-pay state with stale totals. New kg:mint-completed event wipes the overlay between mints.
  • Quantity stepper no longer interferes with the alt-pay overlay.

Security

  • All signing keys (Cardano + alt-chain) AES-256-CBC at rest, key derived from WP salts.
  • Decrypted xprvs scrubbed via sodium_memzero + unset in try/finally.
  • Alt-pay quote endpoint rate-limited 5/IP/min, 50/IP/day.
  • HD address reuse: never. Cancelled invoices do not free the index.

See CHANGELOG.md for the full changelog and README.md for full feature docs.