From ce370c740a897c793545bd4eecd26bc031937a4d Mon Sep 17 00:00:00 2001 From: Tom You Date: Thu, 9 Jul 2026 00:22:22 -0500 Subject: [PATCH] docs: record implemented runtime slices --- docs/implementation-status.md | 33 ++++++++++++++++++++++++++ docs/rabbyhub-mvp-feature-inventory.md | 8 +++++-- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 docs/implementation-status.md diff --git a/docs/implementation-status.md b/docs/implementation-status.md new file mode 100644 index 0000000..a3ca330 --- /dev/null +++ b/docs/implementation-status.md @@ -0,0 +1,33 @@ +# Rabby Implementation Status + +Current repo: `https://gitea.thetomyou.com/mistercorea/rabby` + +This file records what is now actually wired at runtime versus what is still modeled or UI-only. + +## Runtime implemented slices + +| Slice | Commit | Runtime behavior | Verification | +| --- | --- | --- | --- | +| Encrypted local wallet vault | `fc17c44` | Saves/loads the demo wallet dashboard through AES-256-GCM envelopes with Argon2id-derived keys; rejects blank/wrong passphrases; avoids plaintext wallet data in the vault file. | `cargo test -p rabby-runtime wallet_vault::tests` | +| Local terminal command bridge | `a215d91` | UI can run a local shell command through a Tauri command backed by `rabby-runtime::local_terminal`; captures stdout/stderr/exit code. | `cargo test -p rabby-runtime local_terminal::tests`; `cargo test -p rabby local_command_tauri_bridge_captures_output` | +| Customization persistence | `6e08e0e` | UI settings can persist app config/theme through the Rust `JsonFileConfigStore`. | `cargo test -p rabby save_and_load_app_config_round_trips_custom_theme` | +| SSH command bridge | `fb5a028` | UI can submit a remote command through system `ssh` using BatchMode and connect timeout. Unit tests verify argument construction/validation without requiring a real server. | `cargo test -p rabby-runtime ssh_runtime::tests`; `cargo test -p rabby ssh_command_bridge_rejects_blank_host` | + +## Still not complete + +These are still **not** full production parity: + +- Real seed/private-key import and key management. +- Real transaction signing and broadcast. +- Real browser extension `window.ethereum` provider injection. +- Real portfolio API sync for balances/NFTs/DeFi positions. +- Real swap/bridge API execution. +- Interactive PTY terminal streaming with persistent sessions; current local terminal slice runs bounded commands. +- Interactive SSH shell with PTY, key selection, known-host management, SFTP, and port forwarding; current SSH slice runs bounded remote commands through system `ssh`. + +## Next order of work + +1. Replace bounded local command execution with an interactive PTY session registry and event stream. +2. Add SSH identity/known-host management and an interactive SSH PTY session registry. +3. Add settings coverage for language/currency/autolock, not only theme/config persistence. +4. Add real wallet import/signing behind a threat-modelled key-management layer. diff --git a/docs/rabbyhub-mvp-feature-inventory.md b/docs/rabbyhub-mvp-feature-inventory.md index 516588f..ef3fddc 100644 --- a/docs/rabbyhub-mvp-feature-inventory.md +++ b/docs/rabbyhub-mvp-feature-inventory.md @@ -8,7 +8,7 @@ This document records the feature/functionality classes Rabby Wallet exposes and | Feature | RabbyHub/Rabby reference | MVP acceptance in this repo | Current status | | --- | --- | --- | --- | -| Create/unlock wallet | `Welcome`, `CreatePassword`, `Unlock`, `ForgotPassword` | Password/unlock state model and encrypted local state boundary | Modeled | +| Create/unlock wallet | `Welcome`, `CreatePassword`, `Unlock`, `ForgotPassword` | Password/unlock state model and encrypted local state boundary | RuntimeImplemented for encrypted demo vault | | Import/create accounts | `CreateMnemonics`, `ImportMnemonics`, `ImportPrivateKey`, `ImportJson`, watch address | Seed/private key/JSON/watch-only account records validate and display | Modeled | | Hardware/institutional accounts | Ledger, Trezor, Keystone, GridPlus, OneKey, BitBox02, Gnosis Safe, Coinbase, WalletConnect, Cobo Argus | Account source model covers Rabby import surface | Modeled | | Multi-chain networks | `ChainList`, `CustomRPC`, `CustomTestnet`, offline chain support | Chain config validates id, RPC URL, custom/testnet/offline flags | Modeled | @@ -20,7 +20,7 @@ This document records the feature/functionality classes Rabby Wallet exposes and | Signing/security preview | `Approval`, `securityEngine`, `rabby-action`, signing highlighter | Signing request includes message/typed-data/tx preview and risk | Modeled | | Activity/history | `Activities`, `History`, `TransactionHistory`, `SignedTextHistory` | History entries track account, chain, status, tx/signature identity | Modeled | | Contacts/whitelist | `contactBook`, `WhitelistInput`, send recipient selection | Contacts validate name/address and whitelist state | Modeled | -| Settings/customization | `AdvanceSettings`, `SwitchLang`, currency, auto-lock, metamask mode | Theme, language, currency, auto-lock, default-wallet mode | UI Prototype | +| Settings/customization | `AdvanceSettings`, `SwitchLang`, currency, auto-lock, metamask mode | Theme, language, currency, auto-lock, default-wallet mode | RuntimeImplemented for theme/config persistence; UI Prototype for full settings | | Notifications/guides/points | `notification`, `newUserGuide`, `RabbyPoints`, feedback | Dashboard can list notifications and points summary | UI Prototype | ## RabbyHub/Rabby architecture notes @@ -66,3 +66,7 @@ The current app can open but is still a shell. The MVP work should prioritize: ## Implemented runtime slices - Encrypted local wallet dashboard vault: `rabby-runtime::wallet_vault::EncryptedWalletVault` writes AES-256-GCM encrypted JSON envelopes using Argon2id-derived keys, rejects blank/wrong passphrases, avoids plaintext wallet fields in storage, and is exposed to Tauri via `save_demo_wallet_vault` / `load_wallet_vault`. +- Local terminal command runtime: `rabby-runtime::local_terminal::LocalTerminal` executes bounded local shell commands, captures stdout/stderr/exit code, rejects blank commands, and is exposed to Tauri via `run_local_command`. +- Settings/customization persistence: `load_app_config` / `save_app_config` round-trip `AppConfig` through `JsonFileConfigStore`, with UI controls for theme persistence. +- SSH command runtime: `rabby-runtime::ssh_runtime::SshClient` builds validated BatchMode system-ssh commands and is exposed to Tauri via `run_ssh_command`. This is a bounded remote-command slice, not yet a full interactive SSH terminal. +