This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user