Skip to content

Caatinga v3.10.1

Choose a tag to compare

@Dione-b Dione-b released this 27 Sep 20:50
· 56 commits to main since this release
64c7738

Caatinga v3.10.1

Status

Stable release. Supersedes 3.10.0, which was versioned but never published to npm. This release ships everything since 3.9.2, focused on mainnet readiness: stricter mainnet guardrails, safer identity imports, bounded network/subprocess calls, and more honest error reporting.

Packages

  • @caatinga/cli@3.10.1
  • @caatinga/core@3.10.1
  • @caatinga/client@3.10.1
  • @caatinga/zk@3.10.1
npm install -g @caatinga/cli@latest

Compatibility

  • Node.js 22+
  • Stellar CLI minimum 23.0.0, last tested 28.0.0
  • Rust 1.91.0+ with the wasm32v1-none target (now checked by ctg doctor)
  • Contracts, examples and templates on soroban-sdk 27.0.6

Behavior changes to note

  • Mainnet always requires confirmation. requireConfirmation: false is now ignored on mainnet (detected by name or by the public network passphrase). Unattended mainnet runs must pass --yes or set CAATINGA_ASSUME_YES=true; the [MAINNET GUARDRAIL] audit log is still emitted. (#250, B18)
  • Mainnet confirmation covers more commands. deploy, upgrade, invoke, wire, rollback, regression runs and ZK invoke prompt on mainnet, the banner shows the target deployment, and automatic retries are disabled on mainnet. (#138)
  • ctg doctor fails for Rust older than 1.91.0, with rustup update stable as the fix. (#251)
  • ctg upgrade writes a relative sourcePath into caatinga.artifacts.json, matching ctg deploy. Artifacts written by earlier upgrades keep their absolute path until the next upgrade or deploy. (#253, #235)
  • Artifacts schema validates contractId / wasmHash format. Malformed values in caatinga.artifacts.json are now rejected. (#170, #135)
  • read / invoke no longer treat bare-word String arguments as identity aliases. (#206)

Added

  • ctg doctor and ctg version report when the installed CLI is ahead of or behind the npm latest tag. Never fails a command; honors CAATINGA_SKIP_UPDATE_CHECK=1. (#205, #106)
  • Subprocess and network calls are bounded by timeouts, including the Horizon lookup in deploy recovery. (#145)
  • Stellar CLI checks and feature probes are memoized.

Fixes

Security

  • Prevent tar path traversal on identity import and harden identity archive imports. (#162)
  • Refuse unverified circom downloads.
  • Harden Stellar CLI argument validation. (#204)

Core

  • Refuse to guess the contract ID when deploy output is ambiguous.
  • Classify artifacts-lock timeouts and self-heal stale locks.
  • Take the already-deployed skip before dependency verification and argument resolution.
  • Guard deploy/upgrade transient-retry callbacks. (#151)
  • Preserve the export prefix when rewriting managed .env lines. (#153)
  • Report unavailable deploy fee estimates honestly. (#160)
  • Preserve unmapped ZK error codes.
  • Key invoke hints and deploy recovery off a single signing-failure pattern. (#209)
  • Derive placeholder and expect-matcher validation from their Zod definitions. (#208)
  • Hygiene fixes: stderr warnings, history metadata, PATH precedence, sequential generates. (#207)
  • The @caatinga/core/runtime/requirements entry point no longer pulls in node:crypto / node:fs. (#251)

Client

  • Treat RPC ERROR as failed and report transaction lifecycle status.
  • Submit the prepared transaction from the XDR build.

CLI

  • Standardize next-step output on the canonical ctg binary.

Thanks

Thanks to everyone who contributed fixes in this release, including @Yasir-TechGuy (#250) and @fastcharger2000 (#251).

Full changelog: @caatinga/cli@3.9.2...v3.10.1