Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
11c98aa
feat: evm extension
gummy789j Aug 24, 2026
58c3916
feat: help review and update & known issues fix
gummy789j Aug 24, 2026
559017c
feat: requirement alignment
gummy789j Aug 24, 2026
4bb4471
feat: drop useless
gummy789j Aug 24, 2026
ee28612
feat(lint): clear
gummy789j Aug 24, 2026
016e651
fix(ci): test timeout
gummy789j Aug 25, 2026
f5ee5a8
feat: requirement alignment review
gummy789j Aug 25, 2026
44a40ee
feat: run format
gummy789j Aug 25, 2026
c0bddb6
fix: scope chain json schemas by family
Aug 24, 2026
9f14026
chore: fix lint gate
Aug 24, 2026
902a562
style: apply prettier formatting
Aug 24, 2026
0de53d8
fix: neutralize shared chain command metadata
Aug 24, 2026
f67e4bf
refactor: share EVM unsigned tx building
Aug 24, 2026
e6e9ffc
refactor: require EVM service dependencies
Aug 24, 2026
8ee6b39
refactor: centralize EVM RPC requests
Aug 24, 2026
e8b0d35
refactor: reuse EVM ABI call encoder
Aug 24, 2026
e4bf7e6
fix: guard EVM safe integer conversions
Aug 24, 2026
b1bc761
docs: refresh EVM command metadata
Aug 24, 2026
c41b43a
chore: fix post-rebase quality gates
Aug 24, 2026
701c58c
Merge pull request #984 from grayfoxd/feat/architecture-evm-extension
gummy789j Aug 26, 2026
3913909
chore(ts): drop dead eslint block, redundant #send wrapper, and the g…
gummy789j Aug 26, 2026
7a33dcd
feat(ts): route every chain HTTP call through one transport, add per-…
gummy789j Aug 27, 2026
5389b00
docs: repoint the ts architecture reference at what still exists
gummy789j Aug 27, 2026
f723d8f
docs: drop the ADR reference — ts/docs/adr is gitignored
gummy789j Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ npm run depcruise # dependency-cruiser — enforces the architecture rules

### Architecture (hexagonal / ports & adapters)

Dependencies point inward. The source of truth is
`ts/docs/typescript-wallet-cli-architecture-source-of-truth.md` — read it before changing
boundaries, ports, command routing, or the JSON contract. `depcruise` enforces these rules in CI.
Dependencies point inward, and the table below is the rule — read it before changing boundaries,
ports, or command routing. `depcruise` enforces it in CI (`ts/.dependency-cruiser.cjs`).
`ts/docs/machine-interface.md` is the source of truth for the JSON contract (envelope, exit codes,
stdout/stderr discipline).

| Area (`ts/src/…`) | Role | May depend on | Must NOT depend on |
|---|---|---|---|
Expand Down
22 changes: 22 additions & 0 deletions ts/docs/machine-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,28 @@ wallet-cli <command> -o json [--network <id>] [--timeout <ms>] [--account <id|la
- In JSON mode, stdout carries **exactly one terminal frame** — the result envelope. Nothing else is ever written to stdout. Diagnostics go to stderr.
- Every RPC / device call is bounded by `--timeout` (milliseconds, default `config.timeoutMs`, built-in 60000).

### Startup wallet-data upgrades

Every invocation—including no arguments, `--help`, `--version`, and `--json-schema`—checks the
persisted wallet schema before handling any other surface. If it is stale, the startup gate
upgrades it first. Progress goes to stderr. A successful upgrade returns exit `0` with a single
success envelope whose `command` is `migration` and whose data includes
`originalCommandExecuted: false`; the command that triggered the upgrade is deliberately not run.
Run the original command again after inspecting the completion result. This keeps scripted and
transaction-submitting commands from continuing across an unexpected durable-state change.

In an interactive terminal, every stale wallet asks for consent before changing files. After the
user chooses `Upgrade now`, seed/private-key migrations ask for the master password while
Ledger/watch-only migrations proceed without one. Non-interactive Ledger/watch-only migrations
remain automatic; a password-bearing migration requires `--password-stdin` or returns
`migration_required`.

Interactive users may choose `Exit without upgrading`. That is a successful cancellation, not a
failure: it returns exit `0` with `command: "migration"`, `upgraded: false`, `cancelled: true`, and
`originalCommandExecuted: false`. No wallet file or backup is written. `migration_required` is
reserved for cases where migration cannot proceed, such as a non-interactive invocation without a
password source.

## Exit codes

| Code | Meaning | Envelope |
Expand Down
740 changes: 0 additions & 740 deletions ts/docs/typescript-wallet-cli-architecture-source-of-truth.md

This file was deleted.

3 changes: 2 additions & 1 deletion ts/eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import prettier from "eslint-config-prettier";

export default tseslint.config(
{
ignores: ["dist/**", "node_modules/**", ".wallet-cli/**", ".private/**"],
// standalone build/verify scripts run under Node or Bun, not the CLI's stream ports
ignores: ["dist/**", "node_modules/**", ".wallet-cli/**", ".private/**", "scripts/**"],
},
js.configs.recommended,
...tseslint.configs.recommended,
Expand Down
Loading