Skip to content

Releases

v0.16.2

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 05 Nov 20:03
9007de8

Veil 0.16.2

Patch release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag. The functional change is in
@provablehq/aleo-bridge-sdk; the other packages move in lockstep.

npm install @provablehq/aleo-bridge-sdk@latest

Changes

  • Add public ALEO ↔ BSC transfers through Verulink. The default registry
    declares both routes, pinned to the reviewed upstream deployment: the BSC
    contracts, the Aleo programs, the Verulink domains, and the token metadata.
  • quote reads the bridge fee from contract state. execute submits the
    source transaction on either chain. complete retrieves the attestor
    signatures, verifies quorum and membership against the current attestor
    set, checks destination consumption, and claims on the destination chain.
    Screening that redirects funds to holding is reported separately from
    successful delivery.
  • Prepared Aleo transactions are preserved in the checkpoint for recovery.
    An approval-only EVM checkpoint is ambiguous and is never resubmitted
    automatically.
  • Registry checkpoints written by earlier releases still resume.
  • Runnable examples cover a checkpointed Verulink round trip and
    bidirectional USDG transfers between Aleo and Ethereum or Solana. The
    bridge README, the examples README, and the site docs describe the new
    routes and the signer and fee requirements.

Compatibility

No type, option, or export is removed. Peer ranges for veil-aleo-devnode,
veil-aleo-sdk, and veil-aleo-wallet-adapter move to >=0.16.2 <1.0.0.

Validation

The feature PR completed a mainnet round trip on 2026-11-04 (20 ALEO to BSC
and back, with delivery verified on both chains) and passed live read-only
quotes in both directions. The root suite, the bridge build and typecheck,
the bridge examples typecheck, and the reference dApp typecheck pass on the
release branch. Packed peer ranges for veil-aleo-devnode, veil-aleo-sdk,
and veil-aleo-wallet-adapter resolve to >=0.16.2 <1.0.0.

Source: feature PR #217 and
docs PR #218.

Veil 0.16.1

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 03 Nov 02:41
61c8c46

Veil 0.16.1

Patch release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag. The functional change is in
@provablehq/veil-core and @provablehq/shield-swap-cli; the other packages
move in lockstep.

npm install @provablehq/veil-core@latest @provablehq/shield-swap-cli@latest

Changes

  • Add a floor inventory distribution. A floor treats the target record
    count as a minimum: the planner counts only records at or above
    minRecordAmount, leaves surplus records and sub-minimum dust alone, splits
    the largest record for any shortfall, and never joins. When no set of splits
    can reach the floor it throws Insufficient available inventory for target without joins before planning rather than consolidating.
  • Make floor the default distribution. An InventoryTarget without
    distribution used to mean preserve, an exact count reached by joining
    surplus or splitting; it now means floor. autoJoin asks for preserve
    explicitly, since consolidation is an exact single-record layout.
  • The Shield Swap CLI inventory policy accepts "distribution": "floor" and
    defaults to it. INVENTORY.md, the record inventory guide, and the type
    docs describe all three modes.

Compatibility

The default change is observable. A plan for { records: 1 } with no
distribution now plans nothing when any record already meets the minimum,
where 0.16.0 joined every record into one. Callers that consolidate through
the planner MUST pass distribution: 'preserve' to keep the exact-count
behaviour. preserve and balanced themselves are unchanged, and no type,
option, or export is removed. Peer ranges for veil-aleo-devnode,
veil-aleo-sdk, and veil-aleo-wallet-adapter move to >=0.16.1 <1.0.0.

Validation

The root suite passed 2,750 tests with 316 gated tests skipped across 232
test files. All ten packages build, and the reference dApp typechecks. Packed
peer ranges for veil-aleo-devnode, veil-aleo-sdk, and
veil-aleo-wallet-adapter resolve to >=0.16.1 <1.0.0. The feature PR
exercised the floor planner live on testnet through the Shield Swap MCP and
the SDK directly.

Source: feature PR #215.

Veil 0.16.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 30 Oct 18:49
f397703

Veil 0.16.0

Minor release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag. The functional change is in
@provablehq/aleo-bridge-sdk; the other packages move in lockstep.

npm install @provablehq/veil-core@latest @provablehq/aleo-bridge-sdk@latest

Changes

  • Refuse to bridge over a paused route. Every active route in the bridge
    registry now declares the on-chain pause flags it depends on: the pause,
    paused, or pause__ mapping of each Aleo program in the route, the
    OpenZeppelin paused() view of the xReserve contract and CCTP
    MessageTransmitter, and the pausable hook and ISM the Ethereum Hyperlane
    Mailbox runs on dispatch to and delivery from Aleo. Mapping names were
    verified against deployed bytecode on mainnet and testnet.
  • Add getRouteStatus, also bound as client.getRouteStatus and exposed as
    the bridge_get_route_status agent and MCP tool. It reads every declared
    flag in parallel through the configured public clients and reports each as
    active, paused, unknown (the read failed), or skipped (no client is
    configured for that chain).
  • Report pause state with every quote. quote results carry paused and
    routeStatus, so an application can still show the price while disabling
    submission.
  • Refuse paused routes before any wallet interaction. execute, resume,
    and complete throw BridgeRoutePausedError, which extends BridgeError,
    names the paused program or contract in its message, and carries the full
    route status. A flag that cannot be read never blocks, since the chain
    enforces the pause either way; pass skipRouteStatus: true to skip the
    reads.

Compatibility

All additions are optional. The new route field stays out of the registry
compatibility fingerprint, so plans and checkpoints saved on 0.15.0 remain
valid. Existing call sites compile and behave as before, except that a route
whose flag reads as paused is now refused up front instead of failing on
chain after proving. Peer ranges for veil-aleo-devnode, veil-aleo-sdk,
and veil-aleo-wallet-adapter move to >=0.16.0 <1.0.0.

shield and unshield are asset-keyed privacy actions with no route to look
up and are not guarded; their token programs still enforce pause__ on chain.

Validation

The root suite passed 2,746 tests with 316 gated tests skipped across 232
test files. All ten packages build, and the reference dApp typechecks. Packed
peer ranges for veil-aleo-devnode, veil-aleo-sdk, and
veil-aleo-wallet-adapter resolve to >=0.16.0 <1.0.0. A read-only live
test read every declared mainnet flag with no unknown outcome and confirmed
execute refuses a paused Aleo-to-Ethereum route before asking for a wallet.

Source: feature PR #210.

Veil 0.15.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 29 Oct 23:34
086c5b3

Veil 0.15.0

Minor release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag.

npm install @provablehq/veil-core@latest @provablehq/veil-aleo-sdk@latest

Changes

  • Support Shield-compatible xReserve private USDCx mints for local Aleo
    accounts in @provablehq/aleo-bridge-sdk. The SDK reserves a persistent
    counter, derives the secret scalar and BHP256 address commitment from the
    account's view key, checkpoints only the public commitment, and reads the
    scalar back from its identity store when it submits private_mint. A quoted
    plan carries its reserved commitment under plan.circle, so executing the
    quoted plan deposits against the quoted identity instead of reserving a
    second one.
  • Support wallet-prepared private mints. Quote, execute, and resume accept
    walletPreparedDeposit; completion accepts the matching
    privateMintNonceInput request while the wallet retains the scalar. The SDK
    validates the reviewed wrapper, canonical hook, attested commitment,
    recipient, and nonce-source exclusivity before submission.
  • Group every Circle-specific option under a circle key on the bridge
    client config and on quote, execute, resume, complete, and recover: the
    identity store, reserved commitment, wallet preparation, nonce input, and
    legacy secret nonce for xReserve, and the manual-mint and
    approval-replacement overrides for CCTP. The flat privateMintSecretNonce
    and cctp call options are deprecated and still accepted; the same field
    supplied in both forms with different values is rejected.
  • Ship fileXReservePrivateMintIdentityStore from
    @provablehq/aleo-bridge-sdk/node. It replaces files atomically with 0600
    permissions, backs up the identity file with its .counter companion, and
    locks reservations across processes that share a path. Stale-lock recovery
    reclaims only a confirmed dead owner's file; foreign or unrecognized owners
    fail closed.
  • Validate store-managed identities before funds move: a quoted identity
    that is absent from the store, or that names a different recipient, is
    rejected before source approval or deposit submission. Standalone actions
    require an explicit shared identity store rather than deriving into a
    temporary one.
  • Move @provablehq/veil-aleo-sdk and @provablehq/veil-aleo-devnode to the
    snarkVM 4.12.0 toolchain: @provablehq/sdk 0.13.0 and
    @provablehq/aleo-devnode 0.4.0. The default devnode consensus-heights list
    now matches snarkVM's built-in TEST_CONSENSUS_VERSION_HEIGHTS, and a
    ready node runs the latest consensus version before the first caller
    transaction. A caller who sets CONSENSUS_VERSION_HEIGHTS explicitly MUST
    pass twenty-two heights with the first at 0 and the rest strictly
    increasing.
  • Move @provablehq/veil-aleo-react-hooks and
    @provablehq/veil-aleo-wallet-adapter to the current aleo-dev-toolkit
    adapter releases: @provablehq/aleo-wallet-adapter-core 1.2.0, -react
    1.4.0, -shield 1.4.0, and -leo, -puzzle, -fox 1.1.3.

Private USDCx mints

A private xReserve mint commits the deposit to a secret scalar that is needed
again at completion. The bridge client takes an identity store as
circle.privateMintIdentities and supplies it to quote, execute, and
complete. A client built without one derives into an in-memory store, which
does not survive a restart; a durable deployment MUST pass
fileXReservePrivateMintIdentityStore or an implementation of
XReservePrivateMintIdentityStore backed by its own storage.

New derivations follow shield-core's mainnet/testnet domain separation.
Identities stored by earlier builds continue to complete with their
originally stored scalars. Transfers quoted on 0.14.0 with the implicit
0scalar nonce still complete; pass circle: { privateMintSecretNonce } to
keep producing that commitment.

Guide: private USDCx mints
· wallet-prepared mint example.

Validation

The root suite passed 2,724 tests with 314 gated tests skipped across 230
test files. All ten packages build, and the reference dApp typechecks. Packed
peer ranges for veil-aleo-devnode, veil-aleo-sdk, and
veil-aleo-wallet-adapter resolve to >=0.15.0 <1.0.0.

Source: feature PR #166,
toolchain PR #197,
fix PR #208.

Veil 0.14.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 23 Oct 17:03
f4f5aa7

Veil 0.14.0

Minor release for all ten Veil, Shield Swap, and Bridge packages, published
under npm's latest tag.

npm install @provablehq/veil-core@latest @provablehq/veil-aleo-sdk@latest

Changes

  • Add record inventory management to @provablehq/veil-core: inspect private
    records, join or split them, plan a target count and distribution, execute
    the dependent steps, and reconcile saved transactions. RecordAsset needs
    only a program; record-name and amount-field overrides cover compatible
    custom assets. Native credits, ARC20, and ARC22 records are supported.
  • Reserve execution inputs and checkpoint proved transactions for recovery.
    Record management stays off until the client sets
    recordManagement.enabled: true; attaching recordActions() alone does not
    enable it. Core exposes an injectable RecordInventoryStore and an
    in-memory implementation.
  • Prefer batch join helpers for more than two records: up to 16 inputs for
    credits or dedicated stablecoin helpers and 15 for dynamic ARC helpers.
    Explicit tokenJoin routers remain supported; tokenJoin: false selects
    native pairwise joins.
  • Support private fees on managed local-account writes in
    @provablehq/veil-aleo-sdk. Selection prefers an eligible supplied fee
    record, otherwise reserves sufficient unreserved credits alongside the
    execution inputs, through local, delegated, and devnode proving.
  • Add Shield Swap inventory wrappers that resolve underlying token programs.
    Automatic local swap record selection retries once on pre-proving
    reservation conflicts with swap terms fixed. RecordReservationConflictError
    is exported for input acquisition failures.
  • Add shield-swap inventory inspect, plan, rebalance, run, and
    status to @provablehq/shield-swap-cli, with count ranges, budgets,
    cooldowns, dry-run defaults, and a SQLite recovery journal exported from
    @provablehq/shield-swap-cli/storage. These commands require Node 22.13+.
    CLI status shows per-entry rebroadcast attempts and errors.
  • Correct the BAT, USDG, and ZEC warp-route owners in
    @provablehq/aleo-bridge-sdk after ownership rotation, restoring all five
    outbound routes from Aleo to Ethereum and Solana.
  • Document compliance proof requirements and defaults across the Shield Swap
    and Bridge SDKs.

Record management

Private token balances need consolidation for larger spends and separate
records for concurrent trades. Record management plans and executes that
work through the existing account, record-provider, and proving interfaces.

Reservations protect clients sharing the same account, chain scope, and
store. Unmanaged wallets and raw submissions bypass them. SQLite coordinates
reservations across processes; the bundled blinded-identity store does not
coordinate identity counters across processes, so concurrent trading must
coordinate those identities separately or stay in one process with a shared
store object.

Concurrent swaps are independent transactions. Each needs a sufficiently
large available input record and enforces its own output floor; automatic
selection does not join records during a swap. Some trades may succeed while
others fail, so each successful output must be claimed.

A missing transaction or failed broadcast does not establish rejection.
Uncertain spends retain reservations and block maintenance until reconciled.
Recovery rebroadcasts the same proof and transaction id and does not
force-unlock entries or undo completed chain operations.

Wallet RPC writes require public fees or FeeMaster and cannot enforce a
pre-broadcast fee ceiling. Nonempty wallet rebalance plans reject such
ceilings before scanning; no-op plans remain valid.

Guides: record management
· concurrent swaps example
· inventory CLI configuration and recovery.

Validation

The root suite passed 2,649 tests with 314 gated tests skipped across 227
test files. All ten packages build and typecheck, and the reference dApp
typechecks. Packed peer ranges for veil-aleo-devnode, veil-aleo-sdk, and
veil-aleo-wallet-adapter resolve to >=0.14.0 <1.0.0.

Funded testnet runs on the feature branch covered six concurrent
USDCx-to-ETH swaps with return swaps and all twelve claims, plus native joins,
restoring splits, fee-ceiling rejection before broadcast, cancellation after
submission, and journal recovery.

Source: feature PR #172,
fix PR #193,
docs PR #194.

Veil 0.13.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 22 Oct 06:56
ee09da8

Veil 0.13.0 adds automatic compliance proofs for the Shield Swap and Bridge SDKs. Local accounts generate and cache proofs against the current freezelist root; supported wallets derive them through algorithm requests. Existing supplied proofs and custom providers remain supported.

The Bridge SDK reads compliance state through its public client. Shield Swap fee-tier discovery now works without API authentication.

All ten packages are published on npm under latest.

Compliance

Proof generation is enabled by default in the Shield Swap and Bridge SDKs. With a local SDK client or a compatible wallet connected with the required algorithm grants, callers need no manual proof generation, provider, or cache. Omit proofs (Shield Swap) or merkleProof (Bridge) to use the default.

Swaps and liquidity actions on Shield swap are done compliantly in zero knowledge via Merkle Exclusion proofs that prove in zero knowledge that private addresses are not on a known freezelist. Callers construct these Merkle exclusion proofs locally and send them as private inputs into Aleo's zkSnarks. These proofs are verified locally showing that frozen addresses are absent from the freezelist without publicly revealing those addresses or the Merkle paths. These compliance checks preserve the privacy of the addresses making swaps or managing liquidity.

SDK Public function When Merkle exclusion proofs are required
Shield Swap swap(), swapMultiHop() Wrapped input-token sender; intermediate hops add no proof inputs
Shield Swap claimSwapOutput() Shield Swap signer, plus wrapped output and refund receivers when applicable
Shield Swap mint() Shield Swap signer, position recipient, withdrawal address, and any wrapped token senders
Shield Swap increaseLiquidity() Wrapped token senders
Shield Swap collect() Shield Swap position owner, withdrawal address, and any wrapped token receivers
Shield Swap rebalancePosition() Shield Swap position owner and withdrawal address, funded wrapped token senders, and wrapped token receivers
Bridge bridge.unshield() / exported unshield() ARC-22 private-to-public transfer; one signer bundle
Bridge bridge.execute() Outbound Aleo USDCx xReserve burn in private mode (the default); one signer bundle
Bridge xreserve.aleoToEvm.execute() Standalone execution of the same private burn; one signer bundle

Proof configuration guides: Shield Swap · Bridge.

Details and known limitations · Full changelog

Veil 0.13.0-rc.0

Veil 0.13.0-rc.0 Pre-release
Pre-release

Choose a tag to compare

Veil 0.13.0-rc.0

Release candidate for all ten Veil, Shield Swap, and Bridge packages. Install
with the npm rc tag; the stable latest tag remains on 0.12.1.

npm install @provablehq/veil-core@rc @provablehq/veil-aleo-sdk@rc

Changes

  • Generate compliance Merkle proofs automatically for Shield Swap actions and
    Bridge ARC-22 unshielding and private xReserve burns. Local SDK accounts check
    the current chain root and cache verified witnesses while that root is unchanged.
  • Support wallet-derived freezelist requests and constrained algorithm grants.
    Preserve supplied proof strings, wallet requests, and existing provider callbacks;
    also accept action-sized tuples and annotated compliance proofs.
  • Read Bridge compliance state through its required public client. Wallet adapters
    need only executeTransaction; account and proving metadata remain optional.
  • Preserve opaque collect/rebalance calls with supplied proof tuples or custom
    providers without withdrawalAddress. Automatic generation and providers marked
    requiresSubject report an error when the actual address cannot be recovered.
  • Allow public fee-tier discovery, matching the deployed Shield Swap API.

Validation and known limitations

The regression suite passed 2,424 tests, with 267 gated tests skipped. All 32
type tests passed. All ten packages build and install together; installed Bridge
and first-swap examples compile. Live testnet swaps and liquidity passed all 12
tests. The mainnet Arc private burn passed with a supplied proof string.

The mainnet Ethereum burn accepted automatically generated proofs and delivered
0.996501 USDC. Its delivery assertion failed because the existing registry assumes
a 2-USDC fee, while the provider charged 1.0035 USDC. This fee-quote discrepancy
remains in the candidate. The mainnet freezelist was empty during this validation.

Automatic local generation requires the SDK generator. Wallet derivation requires
algorithm support and matching grants; custom deployments require explicit
freezelist mappings. Supplied proofs and providers remain responsible for freshness.

A combined install including Bridge and optional Privy helpers may encounter their
existing Solana peer-version conflict. The package checks explicitly select
@solana/kit@^8.0.0.

Source: feature PR #188 and
release PR #189.

Veil 0.12.1

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 07 Oct 03:23
2851e8b

Veil 0.12.1 publishes all ten packages in the fixed group at the same version: @provablehq/veil-core, @provablehq/veil-aleo-sdk, @provablehq/veil-aleo-devnode, @provablehq/veil-aleo-wallet-adapter, @provablehq/veil-aleo-react-hooks, @provablehq/veil-leo, @provablehq/veil-codegen, @provablehq/shield-swap-sdk, @provablehq/shield-swap-cli, and @provablehq/aleo-bridge-sdk.

This is a patch release. The only functional change is in the Shield Swap SDK and CLI; every other package is republished so the fixed group stays on one version.

Shield Swap: application API actions and referral CLI

@provablehq/shield-swap-sdk now exposes every non-admin operation of the deployed Shield Swap application API as a typed SDK action and as an agent and MCP tool. This covers personal referral codes and referral attribution, market discovery and analytics, compliance, price history, and wallet-session management. Admin-only operations stay excluded. The generated API types are refreshed from the deployed OpenAPI specification, and an endpoint coverage test guards the catalog against drift. (#178)

Session handling gains cookie-aware refresh and explicit logout. Browser cookies and retained Node refresh cookies are both supported, concurrent refreshes are deduplicated, and credentials are cleared when the session ends. Adopting an explicit JWT clears the previous account's refresh state and signer, and a stale in-flight refresh cannot overwrite a replacement session. Existing action names remain available; getPool24hStats carries the corrected pool-statistics response type.

@provablehq/shield-swap-cli adds a redeem command:

shield-swap redeem --code <code> --execute
shield-swap redeem --generate --execute

Both forms preview by default and require --execute to act. --code redeems a referral code and saves the account's access status on success. --generate returns the saved account's existing shareable code or requests a new one. --network and --json select the network and emit machine-readable output.

Upgrading

  1. Update every @provablehq/veil-*, @provablehq/shield-swap-*, and @provablehq/aleo-bridge-sdk dependency to 0.12.1 together. The fixed group shares one version and the peer floors on veil-core and veil-aleo-devnode now start at 0.12.1.
  2. No code changes are required. Callers of getPool24hStats may see a narrowed response type when they upgrade; it now matches what the API returns.

Per-package details are in each package's CHANGELOG.md.

Veil 0.12.0

Choose a tag to compare

@iamalwaysuncomfortable iamalwaysuncomfortable released this 02 Oct 02:23
19a595b

Veil 0.12.0 publishes all ten packages in the fixed group at the same version: @provablehq/veil-core, @provablehq/veil-aleo-sdk, @provablehq/veil-aleo-devnode, @provablehq/veil-aleo-wallet-adapter, @provablehq/veil-aleo-react-hooks, @provablehq/veil-leo, @provablehq/veil-codegen, @provablehq/shield-swap-sdk, @provablehq/shield-swap-cli, and @provablehq/aleo-bridge-sdk.

Toolchain: snarkVM 4.11.0

Every package moves to the snarkVM 4.11.0 line: @provablehq/sdk 0.12.0, @provablehq/aleo-devnode 0.3.0, and Leo 4.4.5.

snarkVM 4.11.0 adds ConsensusVersion::V21 (Varuna V3) and a V22 placeholder pinned to u32::MAX. The SDK now builds every deployment and execution against the latest Varuna version, and a node still on an earlier consensus version rejects them. The default devnode consensus-heights list has twenty-two entries and activates every live consensus version at genesis, so a devnode runs V21 from its first block.

A caller who passes an explicit CONSENSUS_VERSION_HEIGHTS MUST pass twenty-two heights or the WASM transaction builder panics, and MUST activate V21 by the first block that carries a transaction.

Peer ranges on @provablehq/veil-core and @provablehq/veil-aleo-devnode now start at 0.12.0.

Wallet adapters: aleo-wallet-adaptor-* → aleo-wallet-adapter-*

Upstream deprecated every @provablehq/aleo-wallet-adaptor-* release and renamed the line to @provablehq/aleo-wallet-adapter-*. @provablehq/veil-aleo-wallet-adapter and @provablehq/veil-aleo-react-hooks now depend on the renamed packages (core 1.1.1, react 1.3.0, shield 1.2.1, leo/puzzle/fox 1.1.1). The renamed react adapter accepts React 19 as a peer.

Exported symbol names are unchanged. A consumer MUST replace every aleo-wallet-adaptor- import and dependency with aleo-wallet-adapter- in the same change, because a provider from one package name cannot supply context to hooks from the other. The optional peer on @provablehq/veil-aleo-wallet-adapter is now @provablehq/aleo-wallet-adapter-core.

Bridge SDK

@provablehq/aleo-bridge-sdk is published as a preview and versions in lockstep with the Veil packages. Its API is subject to breaking changes between minor releases.

  • Arc mainnet and CCTP V2 routes. Add Arc mainnet USDC-to-USDCx bridging through the quote, execute, wait, resume, and complete lifecycle, and native USDC CCTP V2 routes from Ethereum, Base, and Arbitrum to Arc with Fast/Standard fees, forwarding, and checkpoint recovery. Exhaustive protocol and result switches must handle cctp and evm-cctp. New CCTP burns use Circle's version-0 forwarding frame; recovery of already-submitted version-1 burns is preserved. Saved pre-Arc plans and checkpoints for unchanged reviewed routes stay valid through pinned route fingerprints; unknown versions and altered deployments are rejected. CCTP recovery is hardened with bounded destination-event discovery, stable terminal receipts, and verified approval replacement with retained audit hashes. xReserve destination domains are now explicit, with legacy Sepolia checkpoint recovery preserved. Fee-ceiling defaults are unchanged. (#148)
  • Hyperlane Warp Routes. Add active BAT, USDG, and ZEC Warp Routes, including classic SPL Token and Token-2022 collateral transfers between Solana and Aleo, reviewed Aleo withdrawal metadata, and ARC-22 privacy wrappers. Existing native Solana metadata and builder parameter types are preserved; named SPL and combined transfer metadata types are added. (#169)
  • Privy and Dynamic server wallets. Add optional Privy and Dynamic server-wallet helpers for EVM and Solana bridge clients, exposed as the @provablehq/aleo-bridge-sdk/privy and @provablehq/aleo-bridge-sdk/dynamic entry points, with remote signature validation, preserved Solana bridge signatures, and documented configuration examples under examples/remote-wallets. The @privy-io/node and @dynamic-labs-wallet/node-* packages are optional peers. (#170)

Upgrading

  1. Update every @provablehq/veil-*, @provablehq/shield-swap-*, and @provablehq/aleo-bridge-sdk dependency to 0.12.0 together. The fixed group shares one version and the peer floors on veil-core and veil-aleo-devnode now start at 0.12.0.
  2. If the project depends on @provablehq/sdk or @provablehq/aleo-devnode directly, move them to 0.12.0 and 0.3.0.
  3. If the project imports from @provablehq/aleo-wallet-adaptor-*, switch every import and dependency to @provablehq/aleo-wallet-adapter-* in one change.
  4. If the project runs a devnode with a custom CONSENSUS_VERSION_HEIGHTS, extend the list to twenty-two entries with V21 active by the first transacting block.

Per-package details are in each package's CHANGELOG.md.