5.4 KiB
5.4 KiB
RabbyHub/Rabby MVP Feature Inventory
Reference repository inspected: https://github.com/rabbyHub/rabby at commit 69cd265.
This document records the feature/functionality classes Rabby Wallet exposes and treats them as the MVP target for this Rust/Tauri Rabby product. The current implementation keeps these as typed Rust models and unit-tested acceptance criteria first; runtime/UI implementation should then move feature-by-feature from Modeled to RuntimeImplemented.
MVP feature list
| 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 | 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 |
| Portfolio dashboard | Dashboard, token/NFT/DeFi DB services, balance sync |
Dashboard summary renders accounts/chains/token balances/risk/activity | UI Prototype |
| Send/receive | SendToken, SendNFT, Receive, SelectToAddress |
Send request validates recipient, amount, asset, chain | Modeled |
| Swap/bridge | Swap, Bridge, rabby-swap, rabby-bridge |
Quote model validates route, assets, slippage, provider | Modeled |
| Approvals | ManageApprovals, NFTApproval, TokenApproval, batch approvals |
Approval records identify spender, allowance, risk, revoke path | Modeled |
| Dapp provider/permissions | content-script, pageProvider, providerController, RequestPermission, ConnectedSites |
Dapp request validates origin, accounts, chains, permission status | Modeled |
| 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 | 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
RabbyHub/Rabby is a browser extension wallet with these major contexts:
background: async requests, encryption, wallet/provider controllers, services.content-script: injected at document start, bridges dapps to background.pageProvider: injectswindow.ethereumand handles dapp requests.ui: notification, full tab, and popup views.
The Rust/Tauri version should map that to:
rabby-core: wallet domain models and validation.rabby-runtime: persistence, keychain, network, and OS adapters.src-tauri: command/event boundary.ui: modern Rabby-like dashboard, approvals, settings, dapp requests.
Immediate product gap
The current app can open but is still a shell. The MVP work should prioritize:
- Wallet onboarding/unlock state and local encrypted persistence.
- Account import/watch-only flows.
- Real portfolio dashboard state wired through Tauri.
- Dapp permission and approval request UI.
- Send/receive + swap/bridge request forms.
- Settings/customization: theme, language, currency, auto-lock.
Unit test coverage added
rabby-core::wallet_mvp tests now assert:
- Every MVP feature class is represented.
- Feature keys are unique and documented.
- All Rabby account source types are covered.
- Account, chain, send, swap, and dapp permission validation works.
- Unsafe/incomplete wallet requests are rejected.
- Dashboard totals and high-risk approval counts are computed.
- Settings customization defaults validate.
Implemented runtime slices
- Encrypted local wallet dashboard vault:
rabby-runtime::wallet_vault::EncryptedWalletVaultwrites 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 viasave_demo_wallet_vault/load_wallet_vault. - Local terminal command runtime:
rabby-runtime::local_terminal::LocalTerminalexecutes bounded local shell commands, captures stdout/stderr/exit code, rejects blank commands, and is exposed to Tauri viarun_local_command. - Settings/customization persistence:
load_app_config/save_app_configround-tripAppConfigthroughJsonFileConfigStore, with UI controls for theme persistence. - SSH command runtime:
rabby-runtime::ssh_runtime::SshClientbuilds validated BatchMode system-ssh commands and is exposed to Tauri viarun_ssh_command. This is a bounded remote-command slice, not yet a full interactive SSH terminal.