Lets the suite be re-run against any ref without pushing a commit — main's HEAD had no doc-test run after the SDK bump merged precisely because there was no way to trigger one. The publish step previously assumed every non-PR run was `main` and wrote its report to the `main/` path. With manual dispatch that would let a run on any branch overwrite the main report, so a dispatched run on a non-main ref now publishes under its own `branch-<name>/` directory (and the root index lists it). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
logos-evm-keystore-module
A Logos core module (Rust, rust-first cdylib) that is the keystore for the
Logos multi-chain EVM wallet: scrypt-encrypted vaults, BIP39/BIP32 HD derivation,
and secp256k1 signing. It does no networking, and private keys never cross the
module boundary — only addresses, signed payloads, and (re-encrypted) keystore
JSON do.
Built on well-established crates: alloy
(signing, tx encoding), eth-keystore
(Web3 Secure Storage scrypt vaults), and coins-bip39/coins-bip32 (HD wallets).
Contract (KeystoreModule)
create_mnemonic, import_mnemonic, new_account, import_private_key,
import_keystore_json, export_keystore_json, list_accounts, has_address,
delete_account, unlock/timed_unlock/lock/is_unlocked,
sign_transaction (legacy EIP-155 + EIP-1559), sign_message (EIP-191). Event:
accounts_changed. All structured values cross the IPC boundary as JSON strings.
Build & test
# crypto core (no Logos runtime needed)
cd rust-lib && cargo test --no-default-features
# full module (Qt plugin) + .lgx package
nix build .#install # -> result/modules/keystore_module/
nix build .#lgx
The crypto core is feature-gated away from the Logos glue so it stays
cargo test-able on its own; the builder compiles the glue via the default
logos_module feature. See the wallet plan for the full architecture.