v12.2: Send and receive gifts (red packet); Major user experience improvement for creating a new wallet; Many bug fixes
New features:
- You can now send and receive gifts (a.k.a. red packets) in 1wallet. See the images below and this video for an illustration: https://www.youtube.com/watch?v=eybRhU5pNoQ
Major improvements
Wallet creation, main screen
- Eliminated all unnecessary text
- QR Code now looks like a button on mobile
- Added clear instructions for mobile users to tap the button
- The screen no longer zooms into little boxes when the user selects / types the authenticator code
- Made it clear that authenticator code should be copied, not memorized and typed, from authenticators (latter of which often causes expiry)
- Added a "Paste" button for mobile users to easily paste the code from authenticator
Wallet creation, deployment screen (step 2)
- Hided all text setting and explaining fund recovery address. They are visible only after the user clicks "Set a fund recovery address?"
- Fund recovery address is now always set to 1wallet treasury by default (which can be changed later), unless otherwise specified, instead of a previously created wallet (if available)
- Substantially simplified the language explaining what fund recovery address is (less than 3 lines on mobile)
- Substantially simplified the language explaining 1wallet treasury (1 simple paragraph)
Wallet creation, post-creation
- Warning messages such as "your wallet is outdated" no longer briefly appears then disappears when new wallet is created
- Address is displayed in full in the one-time box which reminds the user to save their address (this will be changed to QR code image in the upcoming version)
Miscellaneous
- Improved mobile and desktop component spacing and alignment
- Maximum spending amount now takes into account of existing spend for the current time period (e.g. how much is already spent today)
- Address input now shows addresses' names or labels correctly after they are selected
- Progress bar now shows up faster when sending tokens (previously only showing up on step 2, commit)
- Renamed local testing network to "Ganache"
Critical bug fixes
- Fixed a bug where Android users may see a blank screen after the wallet is created (caused by
.replaceAll
not supported by older Chrome browser versions)
Frontend Infrastructure
- Added support for "temporary wallet". They are not count towards total balance computation, are not be displayed on wallet listing screen, and are automatically deleted after pre-set expiration time. They are identified by a
temp
flag - Created exportable components for NFT grid items, NFT loader, NFT metadata loader, NFT balance auto-updater
- Created components for WalletCreationProgress
- Created components for Gift and Unwrap (red packet)
- Added "merge mode" for updating wallet state. They are identified by a
_merge
field in the payload. They are ideal for use cases which multiple parts of a wallet may be loaded asynchronously - Made frontend loading flow fail-safe across many components even when wallet information fails to load due to various unexpected errors
Wallet Contract
- lastOperationTime is now publicly accessible
- getNonce is now consistently computed using uint32 in all steps
Core library
- Call data can now be encoded correctly for empty calls (e.g. sending funds via
.call("")
) - Added multi-call encoder