Files
rabby/docs/rabbyhub-mvp-feature-inventory.md
T
Tom You fc17c44c38
test / workspace (push) Successful in 12m26s
feat(wallet): add encrypted local vault runtime
2026-07-09 00:08:24 -05:00

4.7 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 Modeled
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 UI Prototype
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: injects window.ethereum and 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:

  1. Wallet onboarding/unlock state and local encrypted persistence.
  2. Account import/watch-only flows.
  3. Real portfolio dashboard state wired through Tauri.
  4. Dapp permission and approval request UI.
  5. Send/receive + swap/bridge request forms.
  6. 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::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.