Commit 152fe8b
feat: service worker as single backend for extension reads (#163)
* feat: service worker as single backend for extension reads
After sync, the SW reads notes + vault assets from the warm WASM client
and broadcasts SyncCompleted with the full data payload. The frontend
reads from Zustand only — no WASM client needed for reads.
- SW broadcasts notes + vault assets via SyncCompleted after each sync
- Frontend useClaimableNotes dispatches to extension (Zustand) or local (WASM) hook
- Frontend useAllBalances skips WASM polling on extension
- Skip eager WASM client init on extension (lazy-init on first write)
- Cross-tab claim coordination via NoteClaimStarted broadcast
- Remove getConsumableNotesFromWarmClient (replaced by broadcast push)
- Remove orphaned GetConsumableNotes* types
- Add updateBalancesFromSyncData utility with tests
* docs: add 1.13.3 changelog entries for PRs #162 and #163
* fix: poll chrome.storage.local for notes instead of relying on intercom broadcast
The intercom broadcast (port.postMessage) was unreliable when popup/fullpage
were open — notes never appeared. The mount-time seed from chrome.storage.local
worked, so switch to the same mechanism on a 3s polling interval.
- useExtensionClaimableNotes: poll miden_cached_consumable_notes every 3s
- useIntercomSync: poll miden_sync_data every 3s for balances/vault assets
- SW writes both keys to chrome.storage.local on every sync (was already doing notes)
- SyncCompleted broadcast is now just a signal (no data payload)
* chore: bump version to 1.13.3
* feat: popup as pure frontend — all WASM ops in service worker (#165)
* feat: popup as pure frontend — all WASM ops in service worker
Move all WASM client operations from the extension popup to the service
worker. The popup now communicates exclusively via intercom messages and
reads cached data from chrome.storage.local / Dexie.
- Add ProcessTransactionsRequest, ImportNoteBytesRequest, ExportNoteRequest,
GetInputNoteDetailsRequest intercom message types
- Add transaction-processor.ts: SW-side tx loop with alarm keepalive,
orphan recovery on startup, dedup via isProcessing + navigator.locks
- Claims fire-and-forget to SW (no modal needed, inline spinners)
- Sends route through SW, modal becomes pure observer
- Note import/export/state-check via intercom request-response
- Unify dApp tx processing with new transaction processor
- All changes gated behind isExtension() — mobile/desktop unchanged
* fix: keep claim spinner on extension until note disappears from list
* fix: instant token balance display — SW pre-fetches metadata for vault assets
* fix: show all token balances instantly on popup open
The chrome.storage.local poll was firing on mount when currentAccount
was still null (initial state fetch in-flight), causing the first poll
to short-circuit. Tokens only appeared 3s later on the next poll, which
coincided with sync completing — making it look like they waited for sync.
Fix: depend on currentAccount so the poll re-fires as soon as the
account is available, reading cached sync data immediately.
* fix: register alarm listener at top level so SW wakes for background sync
Chrome MV3 requires event listeners to be registered synchronously at the
top level of the service worker. Our alarm listener was inside start().then()
which is async — when the SW was woken by an alarm with the popup closed,
the event fired before the listener was registered and was dropped. The SW
then terminated before doSync() could complete.
Move the onAlarm listener to the top level of background.ts so it catches
alarm events immediately on SW wake. doSync() checks vault state
independently, so it's safe to call before start() completes.
* feat: UI Revamp (#118)
* change the font to geist
* feat: revamp ui onboarding
* feat: main banner in explore page
* feat: receive screen
* feat: history revamp
* feat: send revamp
* fix: display correct date on activities page
* feat: faucet page revamp
* chore: update translation files
* chore: prevent the extension in opening in full page when installing
* minor refactor
* make navigation header aligned with the new design
* Update tailwind to v4 (#121)
* bump up tailwind and update the postcss config for tailwind v4
* chore: make tailwind v4 work and address breaking changes
* make tailwind config lean and add tw-animate-css dep
* chore: add drawer for the receive page and enable animations on the extension in general and remove the mobile-slide-in animations if it is extension
* tweak current designs and refactor to be as dry as possible
* feat: standardize timestamps to seconds and UI improvements
- Convert all transaction timestamps (initiatedAt, completedAt, processingStartedAt) to seconds
- Add custom Miden loading SVG and replace progress indicator
- Replace ReviewSheet with reusable Drawer component
* feat: update account creation and selection UI
* feat: main settings page revamp
* feat: update footer
* feat: make settings active component show navigation header
* feat: update general settings
* feat: address book
* feat: address book
* feat: encrypted wallet flow
* feat: advanced settings
* feat: authorized dapps page
* feat: updated explore page
* feat: new send details
* feat: updated onboarding flow header and review sheet
* chore: update translation files
* feat: update transaction generation and success states, make receive scrollable
* chore: update translation files
* chore: add changelog
* chore: update tests
* chore: lint
* chore: fix review issues across UI revamp
- Fix broken CSS classes, invalid Tailwind v4 syntax (bg-opacity/5)
- Adapt shadcn/ui components to project design tokens
- Add CSS variable --radius-md for shadcn/ui compatibility
- Replace radix-ui meta-package with @radix-ui/react-slot
- Internationalize hardcoded strings (On/Off, Balance, Testnet, etc.)
- Remove debug console.log statements across 8 files
- Fix typos (AccountCreatedSucess, labelDiscriptionClassName, verflow-y-auto)
- Fix floating-point timestamps with Math.floor(Date.now() / 1000)
- Fix wrong blockchain name ALEO -> MIDEN in InputAmount
- Fix JSX SVG attributes (fill-rule -> fillRule)
- Remove unused state, imports, and dead FooterIconWrapper component
- Guard token! non-null assertion in SendManager
- Use Globe icon for browser footer button
* chore: update translation files
* fix: translate script was silently returning English for all languages
require('translate') returns a module object, not the translate function.
The actual function is at .default. Every call threw TypeError which the
catch block swallowed, falling back to the English source text.
* chore: remove untranslated entries to force re-translation
1206 entries across 12 languages had message === englishSource because
the translate script was broken (silently returning English). Removing
these entries so the CI translation job re-translates them properly.
* fix: add fill=currentColor to globe SVG so it renders in footer
* chore: update translation files
* fix: use stroke-based globe icon consistent with other footer icons
* fix: replace vaul Drawer with simple bottom sheet for QR code in Receive page
* fix: improve Receive empty state - center vertically, darker text, modern banknote icon
* fix: make private payment icon orange to match delegate proving icon
* fix: stable send layout, calendar bottom sheet, accounts back nav
* fix: stable send layout, address input ellipsis, continue button positioning
* fix: back button visibility, consistent send headers, continue button spacing
* fix: reduce activity list padding to match tokens list
* fix: use back chevron instead of X button on TokenHistory and SelectRecipient
* fix: remove background scale/fade animation to prevent flicker on modal present
* fix: instant activity tab by using isLoading instead of isValidating for SWR
* feat: support hardware protector for revealing mnemonic and encrypted wallet file, handle checkbox sizing on mobile and fix recall blocks code, and handle the send manager
* chore: update translation files
* chore: make things more even across settings and fix minor animation hiccups for encrypted wallet file and reveal secret
* fix: settings UI polish - button alignment, encrypted wallet file in tab layout, icon fixes
- Bottom-align unlock buttons in encrypted wallet file and reveal seed phrase
- Render encrypted wallet file inside settings tab layout (keeps bottom toolbar)
- Rotate encrypted wallet file icon to horizontal orientation
- Prevent icon container shrink in menu items
- Restyle settings toggles, language, and advanced settings
* chore: update translation files
* fix: bolder receive/faucet icons and hide sort-by label in activities
* fix: onboarding bottom-aligned buttons and back navigation
- Add back chevron button to onboarding header (hidden on confirmation step)
- Fix flex chain in navigator to allow children to fill available height
- Bottom-align action buttons with consistent pb-8 padding on all screens
* fix: Show advanced toggle in send
* chore: update translation files
* change bg of the entire app
* change the background color during onbaording
* update the onboarding to the latest designs
* chore: update translation files
* move the settings button to top of home page and revamp the settings fullpage, adapt the drawer component to latest design
* chore: update translation files
* new general settings
* new reveal seed phrase flow
* chore: update translation files
* new encrypted wallet file flow, advanced settings, dapp connections flow
* chore: update translation files
* remove vaul for drawer as it shifts layout in mobile and make your own drawer instead
* new header and footer
* new explore page
* chore: update translation files
* tokens revamp, add logos for well known tokens and activities revamp
* feat: add price feed from binance api for known symbols
* chore: update translation files
* feat: token detail, new icons for faucet , receive, send and fetch uikline data from binance for charts
* chore: update translation files
* feat: dark mode
* chore: update translation files
* feat: new transaction detail page, reuse the `DetailCard` and
`DetailRow` components across the transaction detail and send review,
new send details design
* fix: resolve all tsc errors after rebase on utk-revamp-ui
* fix: resolve all test failures after rebase
* fix: address review issues from rebase
- Remove debug console.logs from fetchBalances
- Replace 'as any' cast with proper NoteTypeEnum type in claimable-notes
- Remove dead fetchMissingMetadata option from FetchBalancesOptions
- Use Zustand price data in updateBalancesFromSyncData instead of hardcoding 0
- Move sdk-bridge/ to .gitignore instead of tsconfig exclude
* fix: UI polish — buttons, layout, badges, scrolling, onboarding spacing
* fix: cursor-pointer across all interactive elements, faucet layout, send details, create password text placement
* fix: toggle switch styling and drawer backdrop blur visibility
* fix: claim timestamp bug, review tx layout, floating nav pill with glass blur, note details handler
* fix: cache token metadata before RPC, clarify metadata pre-fetch comment, fix stale tx test timestamps
* fix: mobile build — update PostCSS to @tailwindcss/postcss for Tailwind v4, remove stale ~ imports
* fix: mobile white screen — mock webextension-polyfill in mobile webpack, restore Tailwind v4 CSS
* fix: mobile bottom padding — ensure action buttons aren't cut off on notched devices
* fix: move favourites above recent sites in browser, add scroll padding for floating nav
* fix: receive header icon weight, separate amount and token name on send details
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Wiktor Starczewski <poszerny@gmail.com>
---------
Co-authored-by: Utkarsh Sharma <114555115+0xnullifier@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
---------
Co-authored-by: Utkarsh Sharma <114555115+0xnullifier@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>1 parent 9189ebc commit 152fe8b
File tree
328 files changed
+14106
-5946
lines changed- fonts
- GeistMono/webfonts
- Geist/webfonts
- ios/App/App.xcodeproj
- project.xcworkspace
- public
- _locales
- de
- en_GB
- en
- es
- fr
- ja
- ko
- pl
- pt
- ru
- tr
- uk
- zh_CN
- zh_TW
- src
- app
- atoms
- icons
- logos
- settings
- v2
- layouts
- PageLayout
- ChangelogOverlay
- Header
- pages
- Explore
- templates
- SendForm
- history
- components
- explore
- lib
- adapter
- desktop
- miden-chain
- miden
- activity
- back
- db
- front
- metadata
- sdk-bridge
- sdk
- prices
- settings
- store
- hooks
- utils
- ui
- screens
- biometric-unlock
- consuming-note
- encrypted-file-flow
- generating-transaction
- onboarding
- common
- create-wallet-flow
- forgot-password-flow
- import-wallet-flow
- send-flow
- utils
- utility
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
328 files changed
+14106
-5946
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
30 | 33 | | |
31 | 34 | | |
32 | 35 | | |
| |||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
0 commit comments