Skip to content

Release v0.7.0 - #54

Merged
TobiWo merged 38 commits into
mainfrom
develop
Apr 24, 2026
Merged

Release v0.7.0#54
TobiWo merged 38 commits into
mainfrom
develop

Conversation

@TobiWo

@TobiWo TobiWo commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Release v0.7.0. Headline feature is full Safe multisig support for every validator operation (switch, consolidate, withdraw, exit) via --safe <address>. Ledger hardware wallets work across the full Safe flow (propose/sign/execute) via a new EIP-1193 adapter for the Safe Protocol Kit.

Highlights

  • Safe multisig flow — three-step workflow:
    1. Propose with any validator command + --safe
    2. Co-owners run safe sign
    3. safe execute sends fully-signed transactions on-chain
  • Contract-fee staleness handling at execution time — Safe proposals freeze the EIP-7002/EIP-7251 fee at proposal time, so safe execute re-validates each transaction against the live on-chain fee before sending. Options: default bounded wait (--max-fee-wait-blocks), cancel-and-re-propose (--stale-fee-action reject), or fail-fast (--max-fee-wait-blocks 0). Works interactively or unattended (--yes).
  • File-based validator input — pass pubkeys via file (one per line, # comments) in addition to inline lists.
  • Ledger robustness — fatal device errors now stop retry loops correctly.
  • Dependency refresh (TypeScript 6, undici 8, Safe SDK, etc.).

Test plan

Automated:

  • bun test — 626 tests pass (unit + co-located service tests)
  • bun run typecheck — clean
  • bun run lint (ESLint) — clean
  • bun run format (Prettier) — clean
  • pre-commit run --all-files — all hooks pass (markdownlint, shellcheck, shfmt, yamllint, actionlint, JSON/YAML validation)
  • Safe integration test suite (scripts/integration-test/run.sh) — full propose → sign → execute flow against Kurtosis devnet with mock Safe Transaction Service, including fee validation phases (stale/sufficient/overpaid, wait/reject non-interactive paths)

Manual:

  • Manual Safe fee testing playbook (scripts/integration-test/manual/manual-fee-testing-playbook.md) — interactive scenarios for per-transaction stale fee Wait/Abort prompts, batch-level --stale-fee-action reject flow, --max-fee-wait-blocks budget edge cases, overpaid fee warnings, and happy-path switch/exit on both consolidation and withdrawal contracts. Requires Kurtosis devnet + deployed Safe; Ledger-specific paths require a physical device.

Closes #4
Closes #15
Closes #18

TobiWo and others added 21 commits March 23, 2026 09:59
* Add Disposable interface to model/ethereum.ts
* Extend IBroadcastStrategy and ISlotTimingService with Disposable
* Add dispose() to BeaconService, SequentialBroadcastStrategy, and ParallelBroadcastStrategy
* Create TransactionPipeline class owning orchestrator and disposable resources
* Rename factory to createTransactionPipeline(), return TransactionPipeline
* Call pipeline.dispose() in send-request.ts finally block

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clamp sleep duration to Math.min(receiptPollIntervalMs, remaining)
* Break immediately when remaining time reaches zero after provider call
* Add test verifying no overshoot past deadline

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Set DISCONNECTED_DURING_OPERATION_INFO.recoverable to false
* Set DISCONNECTED_INFO.recoverable to false
* Update test assertions to expect recoverable: false

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add auto-detection of file paths vs inline pubkeys in parseAndValidateValidatorPubKeys()
* Read pubkeys from file with comment and blank line support
* Report line-level errors for invalid pubkeys in files
* Print info message to stderr when reading from file
* Update help text on all four CLI commands
* Add tests for file-based input scenarios

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update contribution guidelines
* Update README with latest changes
* Simplify beacon-service and orchestrator imports
* Adjust logging color assignments for consistency
* Add shortcut for subcommand option
* Add LedgerEip1193Provider bridging Ledger hardware wallet to EIP-1193
* Support eth_requestAccounts, eth_sendTransaction, eth_chainId, eth_accounts
* Add comprehensive unit tests for all JSON-RPC method handlers
* Export new provider from signer barrel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add Safe types, network config with TX Service URLs, and constants
* Add Safe SDK factory, preflight validation, and API retry with backoff
* Add signer initialization with Ledger and private key support
* Add propose service with MultiSend batch creation and duplicate detection
* Add sign service for pending transaction signing with threshold tracking
* Add execute service with nonce-ordered on-chain execution
* Add fee validator, fee extractor, and interactive fee prompts
* Add transaction filter for Safe-originated contract interactions
* Add safe sign and safe execute CLI subcommands with --safe global option
* Add CLI validation for Safe address format and option conflicts
* Integrate Safe propose strategy into execution layer request pipeline
* Update consolidate, switch, withdraw, exit to pass Safe config through pipeline
* Add unit tests for all Safe services and CLI changes
* Add deploy-safe-infra.sh for local Safe contract deployment
* Add mock TX Service with rate limiting and transaction store
* Add create-safe.ts script for Safe creation on devnet
* Add Safe deployment constants and README documentation
* Add run.sh orchestrating full Safe propose/sign/execute flow
* Add helpers for beacon queries, transaction verification, fee checks
* Add verify-final-state.sh for post-execution validator state assertions
* Add change-threshold.ts and propose-foreign-tx.ts test utilities
* Add manual fee testing playbook documentation
* Update CLAUDE.md with Safe architecture documentation
* Add clean-code skill configuration
* Update release workflow
* Improve pre-commit configuration
* Update renovate configuration
@TobiWo TobiWo self-assigned this Apr 17, 2026
@TobiWo TobiWo added the enhancement New feature or request label Apr 17, 2026
@TobiWo
TobiWo force-pushed the develop branch 2 times, most recently from 91fca43 to 608cf56 Compare April 22, 2026 13:11
* Fix typecheck on SafeApiKit spy in safe-sdk-factory test
* Fix no-control-regex lint error in pre-request-validation test
* Fix cache key in CI to hash correct lockfile
* Replace destructured exit import with process.exit() call
* Isolate pre-request-validation module import for CI
@TobiWo
TobiWo marked this pull request as ready for review April 24, 2026 16:29
@TobiWo
TobiWo merged commit 2271d31 into main Apr 24, 2026
6 checks passed
@TobiWo

TobiWo commented Apr 24, 2026

Copy link
Copy Markdown
Contributor Author

🎉 This PR is included in version 0.7.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add integration tests Add testing Add safe support

1 participant