Resources

Change Logs

Learn about the changes and updates in each version of the Hydra SDK

August 2026 β€” core v1.5.0 (Latest)

KeysUtils.mnemonicToCliKey() returned a key that had nothing to do with the mnemonic it was derived from. This release fixes that and teaches CardanoCliWallet to read extended keys.

πŸ› The derived key did not match the wallet

Payment keys derived from a mnemonic are BIP32-Ed25519 extended keys: 64 bytes, kL | kR. mnemonicToCliKey() cut a 32-byte slice out of one and passed it to genVkey(), which read it back with PrivateKey.from_normal_bytes(). Two separate faults:

  1. The slice was taken at hex offset 4 β€” a leftover from stripping a 5820 CBOR prefix that to_raw_key().to_hex() never emits β€” so it was misaligned by two bytes.
  2. Even a correctly aligned kL cannot be read as a plain key. In BIP32-Ed25519, kL is the scalar; a plain ed25519 key is a seed that gets hashed into a scalar. The two derive different public keys.

The output was a perfectly valid keypair β€” just an arbitrary one. Its address did not match the wallet the mnemonic builds, so funds sent to one were unspendable by the other:

const account = wallet.getAccount(0, 0)
account.enterpriseAddressBech32 // addr_test1vqp8nzt7zvl8chcj6hmhluhesyfqa56kyl573udka4qw82gsk9hnm
cliWallet.getAddressBech32() // addr_test1vz36gll4gnlfmwg5wgdxmr8apvgu0dxq3ye06c4mwre76jq336zfs βœ—

πŸ’₯ Breaking β€” mnemonicToCliKey() now returns an extended pair

An extended key cannot be narrowed to a plain one, so the fix is to stop trying. mnemonicToCliKey() returns the same envelope cardano-cli writes for HD-derived keys, and both cborHex values change:

beforenow
sk.typePaymentSigningKeyShelley_ed25519PaymentExtendedSigningKeyShelley_ed25519_bip32
sk.cborHex5820… (32 bytes)5880… (128-byte xprv, prv | pub | chaincode)
vk.typePaymentVerificationKeyShelley_ed25519PaymentExtendedVerificationKeyShelley_ed25519_bip32
vk.cborHex5820… (32 bytes)5840… (64-byte xpub, pub | chaincode)
If you persisted keys produced by an earlier version, re-derive them and move any funds across. The old address is not recoverable from the new key.

The pair now resolves to the same payment credential as the wallet it came from, and signs byte-identically:

import { AppWallet, CardanoCliWallet, KeysUtils, NETWORK_ID } from '@hydra-sdk/core'

const mnemonic = AppWallet.brew()
const wallet = new AppWallet({ key: { type: 'mnemonic', words: mnemonic }, networkId: NETWORK_ID.PREPROD })
const { sk, vk } = KeysUtils.mnemonicToCliKey(mnemonic, 0, 0)

const cliWallet = new CardanoCliWallet({ skey: sk.cborHex, vkey: vk.cborHex, networkId: NETWORK_ID.PREPROD })

cliWallet.getAddressBech32() === wallet.getAccount(0, 0).enterpriseAddressBech32 // true

✨ Extended keys accepted throughout

  • CardanoCliWallet takes skey as 5820… (32-byte plain), 5840… (64-byte raw extended), 5860… (96-byte xprv) or 5880… (128-byte xprv), and vkey as 5820… or 5840… (xpub). Plain keys behave exactly as before.
  • KeysUtils.genVkey() accepts every signing-key shape above. A BIP32-Ed25519 key carries a chain code, so it yields an extended verification key; every other shape yields a plain one, unchanged.
  • New envelope helpers: KeysUtils.encodeCliKeyEnvelope(), decodeCliKeyEnvelope(), cliSkeyToPrivateKey() and cliVkeyToPublicKey() read and write cardano-cli key envelopes directly.

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.5.0
  • @hydra-sdk/transaction@1.2.3 β€” dependency bump only
  • @hydra-sdk/bridge@2.0.2 β€” dependency bump only

August 2026 β€” core v1.4.2

A single-fix patch release: @hydra-sdk/core no longer runs WASM while it is being imported.

πŸ› Importing @hydra-sdk/core could crash a browser app on startup

NETWORK_ID, NETWORK_MAGIC, PLACEHOLDER_ADDRESS and CostModels.defaultCostModels were all computed at module-evaluation time by calling into @emurgo/cardano-serialization-lib. Bundlers instantiate the WASM module asynchronously, so in a browser build the import could win the race against instantiation and throw:

TypeError: Cannot read properties of undefined (reading 'networkinfo_mainnet')

Because this happened during module evaluation β€” before any application code ran β€” it took the whole app down rather than failing at the call site. It was reproducible in a Nuxt SPA build of the playground, where /transaction-builder rendered a 500 page.

πŸ”§ What changed

  • NETWORK_ID and NETWORK_MAGIC are plain literals now. These values are fixed by the protocol, so there was never anything to look up; a test asserts they stay in sync with CardanoWASM.NetworkInfo.
  • PLACEHOLDER_ADDRESS keys off those constants instead of calling WASM.
  • CostModels.defaultCostModels builds its singleton on first access rather than at import. It remains a shared instance β€” do not free() it.

No API changed: CostModels.defaultCostModels and CostModels.buildCostModels behave exactly as before, and the fix needs no code change on your side beyond upgrading.

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.4.2
  • @hydra-sdk/transaction@1.2.2 β€” dependency bump only
  • @hydra-sdk/bridge@2.0.1 β€” dependency bump only (next tag)

July 2026 β€” bridge v2.0.0 (next tag)

@hydra-sdk/bridge 2.0.0 retargets the bridge from hydra-node v1 to the v2 line (verified against 2.3.0). The bridge major version now tracks the hydra-node major version, and 1.x is end of life.

Published under the next dist-tag. latest still resolves to 1.3.2. Install with pnpm add @hydra-sdk/bridge@next.

πŸ’₯ Breaking β€” hydra-node v2 removed the commit phase

v2 implements ADR-33: a head opens directly, with no commit phase to abort. Funds enter an open head through incremental deposits instead.

  • commands.abort() and HydraCommand.GetUTxO removed
  • commands.initSync() resolves on HeadIsOpen, not HeadIsInitializing
  • Tags removed: HeadIsInitializing, Committed, HeadIsAborted, CommitIgnored, GetUTxOResponse, PeerHandshakeFailure
  • HeadIsOpen is { headId, parties } β€” it no longer carries utxo
  • HeadIsFinalized.utxo renamed to finalizedUTxO
  • HydraHeadStatus drops Initializing and Final (Final never existed in any released hydra-node)
  • HydraHeadInfo is a discriminated union over Idle | Open | Closed
  • SubmitTxResponse rebuilt from Hydra.Chain.PostTxError
  • Greetings, InvalidInput and every ClientMessage carry no seq / timestamp

✨ New

  • Commands safeClose(), sideLoadSnapshot(), partialFanout()
  • submitL2Tx() β€” submits over POST /transaction and lets the node return the verdict, instead of racing WebSocket messages against a client timeout
  • pendingDeposits() and recoverDeposit() for the deposit lifecycle
  • getRawProtocolParameters() exposing costModels / protocolVersion for ExUnits budgeting under PV11
  • bridge.syncedStatus and bridge.nodeVersion; the bridge now fails fast on RejectedInputBecauseUnsynced instead of hanging until timeout

πŸ› Found by testing against a live node

The v2 types were derived from the hydra Haskell source, then checked against a running hydra-node 2.3.0. That check found five defects a source read alone had missed:

  • Greetings.env has no signingKey β€” the node's ToJSON deliberately omits it
  • Greetings Maybe fields are omitted rather than null, so hydraHeadId / snapshotUtxo are optional
  • InvalidInput arrives with no tag; the connectors now stamp one so the payload union stays discriminated
  • POST /transaction takes the bare tx envelope, not { submitL2Tx: … }
  • Chain-waiting endpoints timed out client-side at 30s while the node works to its own 300s api-transaction-timeout β€” DELETE /commits reported failure for a recovery the node had completed

🧹 Housekeeping

  • The bridge's duplicated protocol-parameter constants are gone; it now uses @hydra-sdk/core, which carries the PV11 cost models. toProtocol() routes through castProtocol, so a zero utxoCostPerByte β€” what the node reports inside a head β€” is preserved rather than replaced by the L1 default.

See MIGRATION-v2.md for the full upgrade path.


July 2026 Release β€” transaction v1.2.0 Β· core v1.4.1 Β· bridge v1.3.2 Β· cardano-wasm v1.0.0

The headline is @hydra-sdk/transaction v1.2.0 β€” a memory-safety and features release for TxBuilder. @hydra-sdk/cardano-wasm also reaches its first stable v1.0.0.

🧠 Memory Safety β€” @hydra-sdk/transaction

  • WASM memory leak & progressive slowdown fixed: every @emurgo/cardano-serialization-lib object lives in WASM linear memory and is only reclaimed by .free(). CSL's FinalizationRegistry cleanup is non-deterministic and cannot keep up under a tight build loop, so the WASM heap grew unbounded and per-transaction build time degraded steadily. complete() now frees every internally-allocated CSL object deterministically after build_tx(). Measured result: flat WASM memory (~0 KB/iter) and steady throughput across 10,000 builds; 280 existing tests unchanged. Caller-supplied objects (datum / redeemer / script) are never freed.
  • completeCbor(): Promise<string> (new): builds the transaction and returns its CBOR hex, freeing the intermediate Transaction immediately β€” the leak-free path for high-volume workloads where you only need the serialized bytes. complete() still returns a live Transaction; the caller is responsible for calling .free() on it.
  • dispose() + [Symbol.dispose] (new): release all WASM memory held by a builder. Works with the using keyword (using tx = new TxBuilder()); recommended for high-volume / spike workloads instead of relying on the GC.

πŸš€ New Features β€” @hydra-sdk/transaction

  • Stake certificates are now built: registerStake(), deregisterStake(), and delegateStake() previously staged certificates that were silently dropped at build time β€” they are now applied via set_certs, so the built transaction actually contains the certificate(s). The stake credential is resolved from the bech32 reward (stake) address; an invalid reward address now throws instead of being ignored. PoolRegistration / PoolRetirement throw a clear "not supported yet" error.
  • totalCollateral() is now applied to the built transaction via set_total_collateral (previously the value was stored but never written).
  • Optional script exUnits evaluation: TxBuilder accepts an evaluator?: IEvaluator (plus a txEvaluationMultiplier? safety margin). When supplied and the transaction contains Plutus redeemers, complete() runs a second build pass β€” the draft transaction is evaluated to obtain real exUnits, those are written back into the redeemers (SPEND matched by input txHash#index, MINT by policy id), and the transaction is rebuilt so the fee is accurate. Without an evaluator (e.g. for Hydra, which has no on-chain script evaluation), behaviour is unchanged. The IEvaluator / EvalAction / Budget types mirror MeshJS for interoperability. Current limits: only SPEND and MINT budgets are remapped, and no offline evaluator is bundled yet β€” supply a provider-backed one (Blockfrost / Ogmios / Demeter) or a UPLC evaluator.

πŸ› Bug Fixes β€” @hydra-sdk/transaction

  • Script-transaction fee fix: the builder config previously hardcoded ex_unit_prices to zero and ref_script_coins_per_byte to 15/1, so the script-execution fee component (priceMemΒ·exMem + priceStepΒ·exSteps) was omitted and reference-script pricing ignored the protocol params β€” under-funding script transactions. Both are now sourced from the protocol parameters (priceMem, priceStep, minFeeRefScriptCostPerByte). Non-script transfers were already correct.
  • reset() use-after-free fixed (the metadata container was freed but not recreated) and the constructor no longer double-allocates the underlying TransactionBuilder when params is supplied.

πŸ“¦ @hydra-sdk/cardano-wasm v1.0.0 β€” first stable release

  • The WASM wrapper reaches v1.0.0. It selects the correct @emurgo/cardano-serialization-lib build via package.json exports conditions (browser β†’ browser WASM, node β†’ Node.js), with the asm.js fallback opt-in at the @hydra-sdk/cardano-wasm/asmjs subpath. Now that it is stable, pin it like any other dependency (^1.0.0).

πŸ”§ @hydra-sdk/core v1.4.1 & @hydra-sdk/bridge v1.3.2

  • @hydra-sdk/bridge@1.3.2: syncs the updated Cardano v11 protocol parameters and cost models; depends on core@1.4.1 and cardano-wasm@1.0.0.
  • @hydra-sdk/core@1.4.1: dependency bump to @hydra-sdk/cardano-wasm@1.0.0 (patch; the v11 protocol-parameter defaults landed in 1.4.0).

πŸ“¦ Updated Packages

  • @hydra-sdk/transaction@1.2.0
  • @hydra-sdk/core@1.4.1
  • @hydra-sdk/bridge@1.3.2
  • @hydra-sdk/cardano-wasm@1.0.0

Version 1.4.0 - July 2026

πŸš€ New Features β€” @hydra-sdk/core

  • RedeemerUtils β€” new namespace: RedeemerUtils.mkRedeemer(data, options?) wraps any PlutusData (e.g. built with DatumUtils) into a Redeemer with configurable tag / index / exUnits, ready to attach to the @hydra-sdk/transaction TxBuilder. Convenience helpers mkSpendRedeemer, mkMintRedeemer, mkUnitRedeemer, plus low-level mkRedeemerTag, mkExUnits and DEFAULT_EX_UNITS are included.
    import { RedeemerUtils, DatumUtils } from '@hydra-sdk/core'
    
    const data = DatumUtils.mkConstr(1, []) // e.g. a `Cancel` redeemer
    const redeemer = RedeemerUtils.mkRedeemer(data, { tag: 'spend', index: 0 })
    
  • DatumUtils β€” new Plutus-data encoders:
    • mkBool β€” encode an Aiken Bool (False = Constr(0, []), True = Constr(1, [])).
    • mkOption β€” encode an Option/Maybe (Some = Constr(0, [v]), None = Constr(1, [])).
    • mkBytesList / mkIntList β€” encode List<ByteArray> / List<Int>.
    • mkOutputRef β€” encode a Plutus OutputReference (Constr(0, [Bytes(txHash), Int(index)])).
    • mkAddress / parseAddress β€” convert a bech32 address to/from Plutus Address data.
  • Deserializer.deserializeAmountsFromTx(cborHex): decodes a transaction CBOR and returns every amount (lovelace + native tokens) across all outputs, merged by unit with quantities summed. Returns Asset[].
    const amounts = Deserializer.deserializeAmountsFromTx(txCborHex)
    // [{ unit: 'lovelace', quantity: '2000000' }, { unit: '<policy><assetName>', quantity: '5' }]
    

♻️ Refactor β€” @hydra-sdk/core

  • Address validation moved out of validator.util: AddressUtils.isValidAddress and the new ValidationUtils.isValidTxOutput now hold these helpers (previously in validator.util, a name easily confused with Plutus validator scripts). ValidatorUtils is retained as a deprecated re-export for backward compatibility β€” existing ValidatorUtils.isValidAddress / ValidatorUtils.isValidTxOutput calls keep working, but new code should use AddressUtils.isValidAddress / ValidationUtils.isValidTxOutput.

πŸ”§ Protocol β€” @hydra-sdk/core

  • Protocol parameters upgraded to v11: DEFAULT_PROTOCOL_PARAMETERS.minPoolCost lowered from 340000000 (340 ADA) to 170000000 (170 ADA), matching the Cardano v11 protocol parameter update.
  • Cost models synced with the v11 on-chain cost models: DEFAULT_V1_COST_MODEL_LIST / DEFAULT_V2_COST_MODEL_LIST extended with the additional Plutus builtin cost entries; DEFAULT_V3_COST_MODEL_LIST coefficients updated to the v11 values.

πŸ› Bug Fixes β€” @hydra-sdk/core

  • Resolver.resolveTxHash WASM memory leak: now calls .free() on the intermediate FixedTransaction WASM object before returning, preventing WASM heap growth in long-running processes that hash many transactions.

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.4.0

Version 1.3.2 - June 2026

πŸš€ New Features β€” @hydra-sdk/core

  • DemeterProvider β€” new provider: Blockfrost-compatible provider for Demeter hosted endpoints. Extends BlockfrostProvider and builds the authenticated endpoint URL automatically from the authToken and network fields.
    import { ProviderUtils } from '@hydra-sdk/core'
    
    const provider = new ProviderUtils.DemeterProvider({
      authToken: 'blockfrost102lx3ckhzvkjjh7677g',
      network: 'mainnet', // 'mainnet' | 'preprod' | 'preview'
    })
    
  • BlockfrostProviderConfig.baseURL: new optional field allowing callers to override the default Blockfrost endpoint URL (also used internally by DemeterProvider).
  • DatumUtils.mkList(elements): constructs a PlutusData list from an array of PlutusData elements, completing the datum builder API alongside mkInt, mkBytes, mkConstr, and mkMap.

πŸ› Bug Fixes β€” @hydra-sdk/core

  • metadataObjToMetadatum validation & logic fixes: UTF-8 byte-length validation for strings and bytes against the 64-byte Cardano limit (with descriptive errors), a Number.isInteger() guard for float values, and a dedicated Map branch (previously an empty Map silently lost data).

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.3.2

Version 1.3.1 - March 18, 2026

πŸ› Bug Fixes β€” @hydra-sdk/bridge

  • Greetings Idle head status crash: When headStatus is Idle (head not yet opened), the Greetings message does not include a snapshotUtxo field. Accessing it caused an undefined error and broke the cache seeding path. The handler now guards against the missing field before calling updateSnapshot.

πŸ› οΈ Developer Experience β€” @hydra-sdk/bridge

  • Chalk-coloured verbose logs: All console.log/warn/error calls throughout HydraBridge have been replaced with three module-level helpers (log, warn, err) backed by chalk:
    • Tag [⚑ HydraBridge] is always printed in cyan bold
    • Success events (connected, snapshot seeded) use green
    • Warnings (reconnect attempts, out-of-order snapshots) use yellow
    • Errors and disconnection events use red
    • Low-signal values (txId, slot timestamp) use gray
  • Debug dumps removed: Two leftover console.log('>>> / bridge.ts:...') statements have been deleted.

πŸ“¦ Updated Packages

  • @hydra-sdk/bridge@1.3.1

Version 1.3.0 - March 16, 2026

πŸš€ New Features β€” @hydra-sdk/bridge

  • hydra-node v1.3.0 Compatibility: Greetings message extended with four new optional fields: currentSlot, chainSyncedStatus, env, networkInfo
  • Slot-Zero Timestamp: HydraBridge.slotZeroTimestamp β€” automatically derived from Greetings.currentSlot for slot ↔ time arithmetic inside the Hydra Head
  • submitTx callback API: New Node.js error-first callback method alongside the existing submitTxSync:
    bridge.submitTx(tx, (error, result) => { ... }, { timeout: 30000 })
    
  • /head API fix: HydraHeadInfo type rewritten to match the real hydra-node v1.3.0 /head response structure
  • Auto-reconnect: Three new InitHydraBridgeOptions fields β€” autoReconnect, reconnectInterval (default 3000ms), maxReconnectAttempts (0 = unlimited)

⚑ Performance β€” @hydra-sdk/bridge

  • O(1) balance lookup: Pre-computed balanceCache: Map<address, Map<assetUnit, bigint>> β€” rebuilt once per snapshot, read per request with no I/O
  • O(1) UTxO lookup: Pre-built addressUtxoIndex: Map<address, UTxOObject> β€” queryAddressUTxO() and addressesInHead() no longer scan all UTxOs on each call
  • getAddressBalance(address): New public API for instant balance reads. Returns null on cold start (cache not yet seeded)
  • lastSnapshotNumber: Exposed as public field; cache only advances, never regresses on reconnect or out-of-order delivery
  • Greetings seeds cache: No HTTP round-trip needed on fresh connect β€” snapshotUtxo from the Greetings message seeds the index directly
  • HTTP fallback race fix: Slow HTTP response can no longer overwrite fresher WebSocket snapshot data

⚑ Performance β€” @hydra-sdk/core

  • convertUTxOObjectToUTxOWithOptions: New export accepting { maxDatumCacheSize?: number } β€” datum deserialization cache is now bounded (default 1024) with LRU eviction, preventing unbounded memory growth on large snapshots
  • Converter refactors: reduce β†’ for loops in convertUTxOToUTxOObject and convertTxOutputToWasm; for...in replaces Object.entries() in convertUTxOObjectToUTxO to avoid intermediate array allocations
  • Benchmark script: scripts/bench-converter.ts β€” CLI tool for measuring conversion throughput under configurable workloads

πŸ› Bug Fixes β€” @hydra-sdk/bridge

  • submitTxSync variable shadowing: Inner tx shadowed outer tx parameter β€” always returned the first confirmed transaction instead of the matching one
  • newTx hardcoded description: Was overwriting caller-supplied description with 'Ledger Cddl Format'; now passed through as-is
  • URL builder default port: buildUrl was emitting https://host:443/path when no explicit port was provided; default ports are now stripped

πŸ› οΈ Internal Refactoring

  • awaitHydraMessage utility (src/utils/await-hydra-message.ts): Replaces the repeated manual event-listener + timeout cleanup pattern. submitTxSync, decommit, and initHydraHead all refactored to use it β€” no more fragile multi-exit-path cleanup

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.3.0
  • @hydra-sdk/bridge@1.3.0

Version 1.1.7 - January 30, 2026

πŸš€ New Features

  • Reference Input Support: Added support for Cardano reference inputs in TxBuilder via txInReference() method
  • Reference Script Support: Added support for attaching reference scripts to transaction outputs in TxBuilder via txOutReferenceScript() method
  • CIP-8 Message Signing: Implemented signData() method in EmbeddedWallet for arbitrary data signing (CIP-8)

πŸ› οΈ Technical Improvements

  • Plutus Type Standardization: Standardized Plutus-related types (Datum, Redeemer, ScriptRef) across core and transaction packages for better consistency
  • Provider Enhancements: Updated OgmiosProvider to support structured script reference retrieval

πŸ› Bug Fixes

  • HydraBridge: Fixed noHistory option behavior in WebSocket connector

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.7
  • @hydra-sdk/transaction@1.1.7
  • @hydra-sdk/bridge@1.1.7

Version 1.1.6 - January 21, 2026

πŸš€ New Features

  • Hydra Hub Integration: Enhanced HydraBridge with support for connecting to Hydra Hub
  • Plutus Script Utilities: Added comprehensive Plutus script utilities and enhanced applyParamsToScript functionality
  • AI Assistance: Enhanced AI assistance UI and functionality with streaming responses and improved markdown rendering

πŸ› οΈ Technical Improvements

  • Web API Transition: Replaced Node.js Buffer dependency with TextEncoder/TextDecoder for better browser compatibility
  • Conversion Utilities: Enhanced hex and byte conversion utilities with improved performance and error handling
  • Key Management: Improved mnemonic-to-key conversion functionality and key utilities

πŸ§ͺ Testing & CI/CD

  • Expanded Test Coverage: Added comprehensive unit tests for TxBuilder, validator utilities, and metadata processing
  • Modernized Testing Stack: Updated Vitest to version 3.x and added shared TypeScript/ESLint configurations

πŸ“š Documentation Updates

  • Multi-language Support: Added complete Japanese documentation and synchronized English/Vietnamese versions
  • Provider Documentation: Updated documentation for Blockfrost and Ogmios providers

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.6
  • @hydra-sdk/transaction@1.1.6
  • @hydra-sdk/bridge@1.1.6

Version 1.1.5 - November 27, 2025

πŸ› οΈ Core Utilities

  • Key Management Utilities: Updated and expanded key management functions (keygen, verification key, Hydra key) in @hydra-sdk/core
    • Added unit tests for key generation functions
    • Standardized and optimized key management API for Hydra and Cardano CLI
  • Blockfrost Integration: Added configuration files and Blockfrost integration for demo applications

πŸ§ͺ Testing & Metadata

  • SDK API Metadata Extraction: Added script to automatically generate SDK API metadata (extract-sdk-api.ts)
  • Test Coverage: Added unit tests for key utilities

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.5
  • @hydra-sdk/transaction@1.1.5
  • @hydra-sdk/bridge@1.1.5

Version 1.1.3 - October 29, 2025

πŸ§ͺ Testing & CI/CD Infrastructure

  • GitHub Actions Workflows: Comprehensive CI/CD pipeline cho automated testing
    • Jest Configuration: ThΓͺm Jest config vα»›i coverage reporting vΓ  JUnit support
    • Test Workflow: Automated testing workflow vα»›i detailed reporting vΓ  coverage metrics
    • GitHub Secrets Setup: Documentation vΓ  configuration cho environment variables trong CI/CD
    • Test Commands: ThΓͺm test:ci script cho continuous integration testing

πŸ› οΈ Core Utilities Improvements

  • Metadata Utilities: ThΓͺm utility functions để convert cΓ‘c loαΊ‘i metadata khΓ‘c nhau sang CardanoWASM.TransactionMetadatum
    • Support cho Map, List, String, Number, Boolean metadata types
    • Enhanced type safety cho Plutus datum operations
  • Converter Fixes: Fix vΓ  optimize converter utilities cho UTxO transformation
    • Improved performance cho conversion operations
    • Better error handling vΓ  validation

πŸ—οΈ Package Refactoring

  • Package Rename: Rename hydra-wallet thΓ nh core để Δ‘α»“ng nhαΊ₯t vα»›i package naming convention
  • Import Updates: Refactor imports để sα»­ dα»₯ng Deserializer vΓ  Converter tα»« centralized locations

🧹 Code Quality & Maintenance

  • Debug Logs Cleanup: Remove unnecessary debug logs trong WebsocketConnector
  • Test Improvements: Remove unnecessary logs vΓ  ensure conversion performance trong tests
  • Dependencies Update: Update pnpm lock vα»›i cΓ‘c dependency mα»›i nhαΊ₯t

πŸ“š Documentation Updates

  • CI/CD Documentation: ThΓͺm comprehensive documentation cho GitHub Actions workflows
  • Secrets Management: Setup guide cho GitHub Secrets vΓ  environment variables
  • Testing Guide: Documentation cho Jest configuration vΓ  test workflows

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.3
  • @hydra-sdk/transaction@1.1.3
  • @hydra-sdk/bridge@1.1.3

πŸ”§ Developer Experience

  • Automated Testing: CI/CD pipeline tα»± Δ‘α»™ng chαΊ‘y tests trΓͺn mọi PR vΓ  push
  • Coverage Reports: Detailed coverage metrics vΓ  reporting trong GitHub Actions
  • Better Tooling: Improved development workflow vα»›i automated checks

Version 1.1.2 - October 22, 2025

πŸŽ‰ New Features

  • CardanoCliWallet Implementation: New wallet class for Cardano CLI-based key management and transaction handling
    • Key Management: Support for signing keys, verification keys, and address generation
    • Transaction Signing: Direct transaction signing using Cardano CLI wallet format
    • Node.js Integration: Seamless integration with Node.js environments for CLI-based workflows

πŸ› οΈ Technical Improvements

  • Wallet Abstraction: Added CardanoCliWallet class to @hydra-sdk/core for CLI-based wallet operations
  • Enhanced Flexibility: Support for multiple wallet types (Browser extension, CLI, Hardware)
  • Developer Experience: Simplified wallet integration for Node.js applications and automation scripts

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.2
  • @hydra-sdk/transaction@1.1.2
  • @hydra-sdk/bridge@1.1.2

πŸ“š Package Updates

  • Apps: Updated dependencies across playground, nodejs-playground, and web applications
  • Documentation: Updated to reflect new CardanoCliWallet functionality

Version 1.1.1 - October 8, 2025

πŸŽ‰ New Features

  • Hydra Concept Documentation: Comprehensive new documentation section covering Hydra Layer 2 concepts and usage
    • Why Hydra?: Complete guide explaining benefits, use cases, and when to use Hydra for your project
    • Commit to Hydra: Detailed documentation on committing UTxOs into Hydra Heads with blueprint transaction support
    • Blueprint Transaction Support: Enhanced TxBuilder with blueprint transaction functionality for Hydra deposits
    • Incremental Commit: Added support for partial deposits with blueprint transactions and change address handling

πŸ› οΈ Technical Improvements

  • TxBuilder Enhancement: Added blueprint transaction support for building transactions compatible with Hydra commit operations
  • HydraApi Extensions: New commit() and partialDeposit() methods in nodejs-playground for Hydra operations
  • Namespace Imports: Migrated from direct function imports to namespace exports (Deserializer, ParserUtils)
  • Package Export Optimization: Updated package exports to use source files for better development experience

πŸ“š Documentation Updates

  • Hydra Concept Section: Complete bilingual documentation (English/Vietnamese) for Hydra Layer 2 concepts
  • Interactive Examples: Added practical Node.js examples for empty commits and blueprint-based commits
  • Navigation Enhancement: New "Hydra Concept" section in documentation sidebar with comprehensive guides
  • Code Examples: Real-world examples for partial commits, blueprint transactions, and change address handling

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.1
  • @hydra-sdk/transaction@1.1.1
  • @hydra-sdk/bridge@1.1.1

⚑ Performance & Development Experience

  • Source-based Exports: Package exports now point to source files instead of built files for faster development
  • Enhanced Type Safety: Improved TypeScript definitions for Hydra operations
  • Better Error Handling: Enhanced error logging and debugging for Hydra transactions

Version 1.1.0 - September 26, 2025

πŸŽ‰ New Features

  • Utilities Modernization: Major update to core utilities with enhanced APIs and modern patterns
    • TimeUtils: New unixTimeToEnclosingSlot() and slotToBeginUnixTime() functions replacing deprecated resolveSlotNo()
    • SLOT_CONFIG_NETWORK: Network-specific slot configuration constants (MAINNET, PREPROD, PREVIEW)
    • Serializer/Deserializer: Namespace exports for Serializer.serializeAssetUnit() and Deserializer.deserializeAssetUnit()
    • DatumSchema: Simplified to constants-only API (Basic, Detailed) - removed deprecated methods

πŸ“š Documentation Overhaul (September 26, 2025)

  • Comprehensive Documentation Modernization: Complete rewrite of utilities examples and guides (50-75% size reduction)
  • TimeUtils API Updates: Updated all examples to use new unixTimeToEnclosingSlot() patterns with SLOT_CONFIG_NETWORK
  • API Accuracy Fixes: Corrected DatumSchema documentation to reflect actual implementation (constants only)
  • Transaction Signing Streamline: Reduced transaction signing examples from ~400 to ~150 lines, focusing on 4 core patterns
  • Working with Utilities Modernization: Updated guides with actual patterns from nodejs-playground
  • Serializer/Deserializer Patterns: Modernized all examples to use namespace exports and round-trip workflows
  • Perfect EN/VI Sync: Maintained 100% consistency between English and Vietnamese documentation

πŸ› οΈ Technical Improvements

  • Breaking API Changes: Deprecated legacy utility functions in favor of modern patterns
  • Namespace Exports: Migrated from direct function imports to namespace pattern for better organization
  • Production Patterns: All examples now based on real implementation patterns from nodejs-playground
  • Enhanced Error Handling: Added comprehensive error handling patterns for utilities
  • Performance Optimizations: Streamlined utility functions for better performance

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.1.0
  • @hydra-sdk/transaction@1.1.0
  • @hydra-sdk/bridge@1.1.0

⚠️ Breaking Changes

  • TimeUtils: resolveSlotNo() deprecated - use unixTimeToEnclosingSlot() with SLOT_CONFIG_NETWORK
  • DatumSchema: fromJSON()/toJSON() methods removed - use DatumSchema.Basic/DatumSchema.Detailed constants
  • Serializer Import: Direct serializeAssetUnit import deprecated - use Serializer.serializeAssetUnit

Version 1.0.14 - September 24, 2025

πŸŽ‰ New Features

  • Token Minting & Burning: Implemented comprehensive minting and burning functionality with policy scripts and datum utilities
  • Plutus Schema Support: Added detailed schema support for Plutus datums in DatumSchema with enhanced type safety
  • Policy Management: Added PolicyUtils for creating and managing minting policies with time-based constraints
  • Native Token Operations: Full support for Cardano native token creation, metadata handling, and lifecycle management

πŸ“š Documentation Updates

  • Mint/Burn Guide: Added comprehensive bilingual guide for token minting and burning operations
  • Code Examples: Included practical TypeScript examples for mint-burn-token operations
  • Tutorial Content: Created step-by-step tutorials covering wallet setup, UTxO management, and transaction building
  • Security Guidelines: Added security best practices and warnings for token operations

πŸ› οΈ Technical Improvements

  • DatumUtils Enhancement: Expanded datum utilities with support for complex Plutus data structures
  • Transaction Builder: Enhanced TxBuilder with native asset support and policy script integration
  • WASM Integration: Improved Cardano WASM deserializer for handling complex transaction types
  • Type Safety: Added comprehensive TypeScript types for Plutus scripts and native assets

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.0.14
  • @hydra-sdk/transaction@1.0.14
  • @hydra-sdk/bridge@1.0.14

Version 1.0.13 - September 22, 2025

οΏ½ New Features

  • GitHub Actions Integration: Added comprehensive GitHub Actions workflow for automated building and testing
  • Enhanced Contract Functionality: Implemented era summary retrieval and time-based constraints in unlock processes
  • Network Utilities: Refactored network constants and added slot configuration utilities for improved time handling

πŸ› Bug Fixes

  • Validity Range: Fixed validity range setup in transaction to correctly handle lower/upper bounds and serialization
  • Time Utilities: Added TimeUtils to core for common time conversions and helpers

πŸ“š Documentation Updates - September 23, 2025

  • Vietnamese Documentation: Added complete Vietnamese translation for all documentation pages
  • i18n Support: Implemented internationalization with language switcher (English/Vietnamese)
  • Navigation Updates: Added 'Hydra Bridge' entry to navigation and glossary localization
  • Change Logs Integration: Added 'Change Logs' link to documentation sidebar for better navigation
  • Configuration Guide: Updated configuration examples to optimize polyfills (Buffer only, disable global/process)
  • Documentation Links: Updated logo image paths and documentation links to reflect new SDK URLs
  • License Update: Updated license from MIT to Apache 2.0 across documentation
  • Support Links: Updated support banner link to point to the new funding page

οΏ½ Updated Packages

  • @hydra-sdk/core@1.0.13
  • @hydra-sdk/transaction@1.0.13
  • @hydra-sdk/bridge@1.0.13

Version 1.0.12 - September 18, 2025

πŸŽ‰ New Features

  • GitHub Actions Integration: Added comprehensive GitHub Actions workflow for automated building and testing
  • Enhanced Contract Functionality: Implemented era summary retrieval and time-based constraints in unlock processes
  • Network Utilities: Refactored network constants and added slot configuration utilities for improved time handling
  • Documentation Updates: Updated logo image paths and documentation links to reflect new SDK URLs

πŸ› Bug Fixes

  • Validity Range: Fixed validity range setup in transaction to correctly handle lower/upper bounds and serialization
  • Time Utilities: Added TimeUtils to core for common time conversions and helpers

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.0.13
  • @hydra-sdk/transaction@1.0.13
  • @hydra-sdk/bridge@1.0.13

Version 1.0.12 - September 18, 2025

πŸš€ Major Improvements

  • Transaction Builder: Complete implementation of transaction building and unlocking functionality with Plutus scripts
  • Custom Signing: Implemented custom transaction signing functionality
  • Script Enhancement: Enhanced TxBuilder with script data hash recalculation and updated redeemer builder

⚑ Performance Enhancements

  • Redeemer Handling: Refactored redeemer handling in TxBuilder to use emptyRedeemer utility for improved clarity
  • Execution Units: Added exUnits parameter to buildRedeemer and emptyRedeemer functions for customizable execution units

πŸ› Bug Fixes

  • Transaction Builder Fixes:
    • Updated descriptions for better clarity
    • Fixed redeemer builder with more options and changed default exUnits
    • Removed debug logs for cleaner output
    • Fixed calculate script hash functionality

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.0.12
  • @hydra-sdk/transaction@1.0.12
  • @hydra-sdk/bridge@1.0.12

Version 1.0.11 - September 15, 2025

πŸ“š Documentation & UI

  • Version Badges: Added version badges to package navigation in documentation
  • Code Examples: Updated code blocks in Vue.js example documentation for proper syntax highlighting
  • Full App Examples: Added comprehensive React and Vue.js application examples
  • Links Enhancement: Added links for Full React and Full Vue.js App examples

🧹 Maintenance

  • Dependencies: Removed chalk dependency from pnpm-lock.yaml
  • Package Updates: Updated version numbers and changelogs for multiple packages

πŸ“¦ Updated Packages

  • @hydra-sdk/core@1.0.11
  • @hydra-sdk/transaction@1.0.11
  • @hydra-sdk/bridge@1.0.11

Version 1.0.10 & Earlier Versions

πŸ”§ Core Development Phase

  • Unit Testing: Added comprehensive unit tests and demo code
  • API Implementation: Implemented HexcoreApi and OgmiosApi classes
  • Lock/Unlock Functionality: Added lock and unlock transaction functionality
  • Connection Management: Updated HexcoreConnector to use new API endpoints
  • Repository Migration: Updated all GitHub links to point to Vtechcom organization
  • License: Added MIT License file
  • Documentation: Created initial documentation for Hydra SDK packages

πŸ—οΈ Infrastructure Setup

  • Build Scripts: Added build script for generating documentation
  • Metadata Handling: Updated transaction metadata functionality
  • Node.js Support: Implemented Node.js compatibility
  • WebSocket Connector: Fixed auto connect with websocket connector
  • Auth System: Enhanced auth page with version display and safety notice

πŸ“¦ Package History

  • Multiple iterations of core packages (@hydra-sdk/core, @hydra-sdk/transaction, @hydra-sdk/bridge)
  • Legacy packages migration from @hydrawallet-sdk/* to @hydra-sdk/*
  • Configuration packages (@hydra-sdk/tsconfig, @hydra-sdk/eslint-config)
  • Cardano WASM integration (@hydra-sdk/cardano-wasm)

πŸ”„ Migration Notes

Package Naming Convention

Starting from version 1.0.5, all packages have been migrated from @hydrawallet-sdk/* to @hydra-sdk/* naming convention for better consistency.

For optimal performance, we recommend updating your Vite configuration:

Recommended Setup:

nodePolyfills({
    include: ['buffer'], // βœ… Only include buffer polyfill
    globals: {
        Buffer: true, // βœ… Required for cryptographic operations
        global: false, // βœ… Disabled for better performance
        process: false // βœ… Disabled for better performance
    }
})

Legacy Setup (still supported):

nodePolyfills({
    globals: {
        Buffer: true,
        global: true, // ⚠️ Not recommended but still works
        process: true // ⚠️ Not recommended but still works
    }
})

Breaking Changes

  • v1.1.0: Major TimeUtils API changes - resolveSlotNo() deprecated, use unixTimeToEnclosingSlot() with SLOT_CONFIG_NETWORK
  • v1.1.0: DatumSchema API simplified - removed fromJSON()/toJSON() methods, use constants only
  • v1.1.0: Serializer imports - use namespace exports Serializer.serializeAssetUnit() instead of direct imports
  • v1.0.14: Added mint/burn token functionality with new DatumUtils and PolicyUtils structures
  • v1.0.13: License change from MIT to Apache 2.0 (documentation only)
  • v1.0.12: Updated redeemer builder interface with new exUnits parameter
  • v1.0.11: Changed transaction validity range handling
  • v1.0.10: Repository URLs updated to Vtechcom organization

πŸ“‹ Package Overview

PackageCurrent VersionDescription
@hydra-sdk/core1.4.1Core library for building decentralized applications
@hydra-sdk/transaction1.2.0Transaction building and management utilities
@hydra-sdk/bridge1.3.2Bridge functionality for wallet connections
@hydra-sdk/cardano-wasm1.0.0Cardano WASM bindings and utilities
@hydra-sdk/tsconfig0.0.4Shared TypeScript configuration
@hydra-sdk/eslint-config0.0.4Shared ESLint configuration


Change logs are automatically generated based on Git history and semantic versioning. For detailed commit information, please refer to the GitHub repository.