Skip to content

Releases: cascade-protocol/splits

cascade-cli vcli-v0.1.0

12 Dec 15:00
28cc100

Choose a tag to compare

Changelog

  • 28cc100 chore(cli): configure goreleaser for monorepo tags
  • 01065b0 chore(style): update app's style
  • ae5fa35 feat(docs): add ADR-0004 for Cascade Market Architecture
  • 537ccd8 feat(market): add OAuth 2.0 + SIWS authentication
  • 1b754f3 feat(market): add x402 facilitator, Go CLI, and upgrade gateway to v2
  • 0c648e6 feat: add spec for Base EVM support
  • c59527f feat: implement initial app scaffold
  • 0510e97 feat: improve adr specs to better utilize existing libs and align with requirements or 3rd party deps

cascade-splits-sdk-evm (Python) v0.1.0

09 Dec 21:51
1bced1b

Choose a tag to compare

Python SDK for Cascade Splits EVM

First release of the Python SDK for Cascade Splits on Base (EVM).

Installation

pip install cascade-splits-sdk-evm

Features

  • Async-first architecture with AsyncCascadeSplitsClient (recommended)
  • Sync client CascadeSplitsClient for simple scripts
  • Standalone async functions ensure_split() and execute_split() for low-level control
  • Helper functions: is_cascade_split, get_split_balance, get_split_config, has_pending_funds, get_pending_amount, get_total_unclaimed, preview_execution, predict_split_address, get_default_token
  • Result types: EnsureResult (CREATED/NO_CHANGE/FAILED), ExecuteResult (EXECUTED/SKIPPED/FAILED)
  • Type safety: Full Pydantic v2 models with frozen dataclasses
  • PEP 561 compliance: py.typed marker for type checkers
  • Support for Base Mainnet (8453) and Base Sepolia (84532)

Requirements

  • Python 3.11+
  • web3.py 7.x
  • pydantic 2.x

Quick Start

from cascade_splits_evm import AsyncCascadeSplitsClient, Recipient

client = AsyncCascadeSplitsClient(
    rpc_url="https://mainnet.base.org",
    private_key="0x...",
    chain_id=8453,
)

result = await client.ensure_split(
    unique_id=b"my-unique-split-id".ljust(32, b"\x00"),
    recipients=[
        Recipient(address="0xAlice...", share=60),
        Recipient(address="0xBob...", share=40),
    ],
)

if result.status == "CREATED":
    print(f"Split created at: {result.split}")

Links

@cascade-fyi/tabs-sdk@0.1.2

09 Dec 22:01
721e25d

Choose a tag to compare

0.1.2 (2025-12-09)

🚀 Features

  • tabs: add DemoPanel component and integrate into SmartAccountPanel (7b1604e)

@cascade-fyi/splits-sdk@0.11.1

09 Dec 22:01
721e25d

Choose a tag to compare

0.11.1 (2025-12-09)

🚀 Features

  • ⚠️ sdk: add /core entry point for kit v2.x compatibility (6e72a41)
  • python-sdk: Production-ready Python SDK for Cascade Splits EVM (#8)

⚠️ Breaking Changes

  • sdk: add /core entry point for kit v2.x compatibility (6e72a41)
    Consumers using kit v2.x must import from '@cascade-fyi/splits-sdk/core'

@cascade-fyi/splits-sdk@0.11.0

09 Dec 21:13
3d2eaca

Choose a tag to compare

0.11.0 (2025-12-09)

Implements ADR-0003: Solana splits-sdk API Design Patterns (#7)

⚠️ BREAKING CHANGES

  • Module structure flattened: Imports now from package root, not /solana subpath

    // Before
    import { executeSplit } from '@cascade-fyi/splits-sdk/solana';
    import { createSplitsClient } from '@cascade-fyi/splits-sdk/solana/client';
    
    // After
    import { executeSplit, createSplitsClient } from '@cascade-fyi/splits-sdk';
  • Removed ExecuteAndConfirmResult type: Use ExecuteResult instead

    // Before
    if (result.ok) { ... }
    
    // After
    if (result.status === 'executed') { ... }
  • Renamed seeduniqueId in estimateSplitRent()

    // Before
    estimateSplitRent(rpc, { authority, recipients, seed: labelToSeed("name") })
    
    // After
    estimateSplitRent(rpc, { authority, recipients, uniqueId: labelToSeed("name") })

✨ Features (ADR-0003 Implementation)

  • All functions now use flat object parameters consistently
  • All result types use lowercase status discriminant (created, executed, etc.)
  • splitConfig is the primary identifier for all operations (not vault)
  • Token program auto-detection enabled by default (Token-2022 just works)
  • ATA auto-creation enabled by default with opt-out via createMissingAtas: false

🔧 Internal Improvements

  • Removed redundant type assertions (as Address, as Signature)
  • Simplified conditional object building with spread syntax
  • Use getSplitConfig instead of deprecated getSplitConfigFromVault internally
  • Updated ARCHITECTURE.md with correct import paths
  • Marked ADR-0003 as "Implemented"

📦 Migration Guide

  1. Update imports: Remove /solana from import paths
  2. Update result handling: Change result.ok to result.status === 'executed'
  3. Update estimateSplitRent: Rename seed parameter to uniqueId

@cascade-fyi/splits-sdk-evm@0.1.3

09 Dec 22:01
721e25d

Choose a tag to compare

0.1.3 (2025-12-09)

This was a version bump only for @cascade-fyi/splits-sdk-evm to align it with other projects, there were no code changes.

@cascade-fyi/tabs-sdk@0.1.1

05 Dec 22:18
f6f2722

Choose a tag to compare

0.1.1 (2025-12-05)

This was a version bump only for @cascade-fyi/tabs-sdk to align it with other projects, there were no code changes.

@cascade-fyi/splits-sdk@0.10.1

05 Dec 12:38
82ae9f9

Choose a tag to compare

0.10.1 (2025-12-05)

This was a version bump only for @cascade-fyi/splits-sdk to align it with other projects, there were no code changes.

@cascade-fyi/splits-sdk-evm@0.1.1

05 Dec 12:38
82ae9f9

Choose a tag to compare

0.1.1 (2025-12-05)

This was a version bump only for @cascade-fyi/splits-sdk-evm to align it with other projects, there were no code changes.

splits-sdk v0.9.0

03 Dec 13:22
67016c5

Choose a tag to compare

[0.9.0] - 2025-12-02

Added

  • Client Factory for Browser Apps (/solana/client)

    • createSplitsClient(rpc, wallet) — stateful client with persistent wallet binding
    • SplitsWallet interface — adapter pattern for wallet flexibility
    • fromKitSigner() — kit-native adapter (WebSocket-based confirmation)
    • Methods: ensureSplit(), execute(), update(), close()
    • Discriminated union results: CREATED, UPDATED, NO_CHANGE, BLOCKED, FAILED, EXECUTED, SKIPPED, CLOSED, ALREADY_CLOSED
    • Actionable error messages in all BLOCKED/FAILED results (what happened, why, what to do)
    • Abort signal support for timeout/cancellation
  • HTTP-Only Functions (for facilitators/servers without WebSocket)

    • sendEnsureSplit() — idempotent create/update with polling confirmation
    • sendExecuteSplit() — distribute vault with polling confirmation
    • sendUpdateSplit() — update recipients with polling confirmation
    • sendCloseSplit() — close split with polling confirmation
    • Configurable polling: confirm: { maxRetries, retryDelayMs } or fire-and-forget
  • WebSocket Functions (thin wrappers using client internals)

    • ensureSplitConfig() — idempotent create/update
    • closeSplit() — idempotent close with rent recovery
    • updateSplit() — update recipients with pre-validation
    • All use fromKitSigner internally for WebSocket-based confirmation
  • Wallet Adapter Support (/solana/web3-compat)

    • fromWalletAdapter(wallet, connection) — convert wallet-adapter to SplitsWallet
    • toWeb3Transaction() — convert kit messages to web3.js VersionedTransaction
    • WalletDisconnectedError, WalletRejectedError — typed wallet errors
  • Rent Estimation

    • estimateSplitRent() — pure rent calculation before committing
  • Label-Based Seeds (cross-chain compatible)

    • labelToSeed(label) — convert human-readable label to hashed Address
    • seedToLabel(seed) — reverse conversion (if recoverable)
    • seedBytesToAddress(bytes) — raw bytes to Address
  • Token Program Detection

    • detectTokenProgram() — auto-detect SPL Token vs Token-2022 from mint
    • Cached per mint for efficiency
  • Recipient Helpers

    • recipientsEqual() — set equality comparison (order-independent)
    • checkRecipientAtas() — check which recipient ATAs are missing
  • New Error Types

    • MintNotFoundError — mint account doesn't exist
    • RecipientAtasMissingError — lists missing recipient ATAs
  • Architecture Documentation

    • ARCHITECTURE.md — design rationale for API layers and decisions

Changed

  • Export Structure: New /solana/client subpath for client factory
  • Result Types: Unified EnsureResult, ExecuteResult, UpdateResult, CloseResult across all API layers

Internal

  • New client/ module: index.ts, types.ts, ensure.ts, execute.ts, update.ts, close.ts, buildTransaction.ts, messages.ts, errors.ts, wallet-errors.ts
  • Kit-signer adapter: client/adapters/kit-signer.ts
  • Transaction conversion: web3-compat/transactions.ts
  • Comprehensive test coverage for all client operations