* refactor: migrate hardware wallet resources to `new-ui`, add Trezor model support, and streamline hardware wallet handling across services
* refactor: migrate hardware wallet resources to `new-ui`, add Trezor model support, and streamline hardware wallet handling across services
* fix: correctly check for Ledger hardware wallet type in `isHardwareWallet` logic
* refactor: unify `isConnected` method for hardware wallets, add Trezor-specific support, and update Monero sync logic
* refactor: add Trezor transaction signing support, streamline hardware wallet handling, and update Monero dependency
* refactor: improve Trezor transaction handling, adjust hardware wallet state logic, and update Monero dependency references
* fix: non-hww tx commit() in xmr
fix: prod monero_c
fix: keyImage import workaround for Trezor/Cupcake
chore: add kotlin's .salive to .gitignore
* fix: universal_ble builds on iOS
chore: remove prints
fix: proper CI prebuilt for linux
* new trezor connection ui
* fix page title
* typo
* fix page title anim
* refactor: enhance Trezor pairing flow, update state management, and simplify UI logic in hardware wallet integration
* fix: correct widget indentation in Trezor pairing failure state UI
* fix: extract Trezor pairing failure state UI to `_errorBox` widget and update Trezor dependency reference
* refactor: simplify hardware wallet pairing error UI, optimize `_errorBox` layout, and streamline widget logic
* Update cw_monero/lib/pending_monero_transaction.dart
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Update lib/buy/robinhood/robinhood_buy_provider.dart
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* feat: add USB intent filters, device filter for hardware wallets, and update Trezor dependency reference
* Update cw_monero/pubspec.yaml [skip ci]
* Update cw_wownero/pubspec.yaml [skip ci]
* Update cw_zano/pubspec.yaml [skip ci]
* fix: use CryptoCurrency.title instead of amount-refactor-only .symbol getter
new_wallet_type_page used curr.symbol, which only exists on the
amount-refactor branch (String get symbol => title). On dev the
equivalent is curr.title. Adapts the Trezor feature to dev's API
without pulling in amount-refactor.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix wallet list screen not scrollable
minor fixes
---------
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
Co-authored-by: Konstantin Ullrich <konstantin@cakewallet.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two unrelated wallet-UX fixes in one commit:
1) lib/utils/exception_handler.dart — switch the "Report Error" flow
from "open prefilled GitHub issue URL" to "copy error trace to
clipboard + open https://hash.boats/report/". The hash.boats backend
(Node service + nginx proxy + Telegram relay) was already deployed
to the suchwow server; the in-app handler just never got wired to
use it. No GitHub account required, works on every platform.
2) lib/wownero/cw_wownero.dart — add 'primaryAddress' to the keys map
returned by getKeys(). The lib/monero/cw_monero.dart equivalent
already had this; without it, WalletKeysViewModel renders zero
primary-address entry for Wownero wallets and users can't easily
read off the main address for sharing (e.g. to set up a view-only
wallet on another device). The underlying WowneroWalletBase.keys
already populated primaryAddress — only the getKeys map projection
was missing it.
* linux fixes
fix: use ints instead of bools in SQLite to prevent crashes on linux
fix: disable lightning if it's unsupported
ui: start linux app in portrait mode instead of landscape so it looks
nicer
* minor cleanup
---------
Co-authored-by: Omar <omarh.ismail1@gmail.com>
Squashed migration of node Hive→SQLite, default-node handling,
isPow/proxy support, arbitrum node updates, and related fixes.
Replays node-sqlite-migration on top of current dev without the
amount-refactor merge that the original branch carried.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat: Add memo support for swap
* fix: Error on swap page select receiver bottomsheet when picking receiveing currency that's not a wallet type
* feat: exclude providers that do not support memo when receive currency needs it, also show passed memo in confirmation and trade history sheets
* fix: overflow for destination tag on swap confirmation
* feat: add support for Zcash names resolution
* fix conflict because github is shit
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Replaced upstream Cake brand references in user-visible ARB *values*
(keys untouched, so generated S.current.<key> references still work):
- "Cake 2FA" → "Hash Bags 2FA"
- "Cake Pay" → "Hash Bags Pay" (still gated off via
FeatureFlag.isCakePayEnabled = false; rebranding the string so it
doesn't ship literal "Cake" copy if the flag ever flips)
- "Cake Wallet" → "Hash Bags"
- "Cake Labs" → "Such Software"
- "by Cake Pay" → "by Hash Bags Pay"
- "cakewallet.com" → "such.software"
English-only adjustments (other locales had their own translations):
- new_first_wallet_text "Keeping your crypto safe is a piece of
cake" → "Keeping your crypto safe shouldn't be hard" (drops the
Cake pun, which now reads odd post-rename)
- outdated_electrum_wallet_description + _receive_warning rewritten
to Hash-Bags-neutral phrasing: "Hash Bags now uses Electrum V2
wallets. Bitcoin wallets created in older builds need to be
replaced; receiving to old wallets may lose funds." Same Hash-Bags-
neutral rewrite propagated to all locales that had a translated
version of the original Cake-Electrum-V2 message.
Deliberately not touched:
- ARB *keys* (cake_2fa_preset, cake_pay_*, cakepay_*, disable_cake_2fa,
etc.) — keys must stay stable so generated S.current.x references
keep resolving.
- "Cupcake" / "cupcake" — a separate companion app referenced in
restore_*_from_cupcake strings, not part of the Cake brand we're
rebranding from.
- Internal Dart identifiers like CakeImageWidget class name.
Also fixed hardcoded titles in lib/src/screens/setup_2fa/setup_2fa.dart:
- Line 18: title 'Cake 2FA' → 'Hash Bags 2FA'
- Line 22: cake2FAGuideTitle 'Cake 2FA Guide' → 'Hash Bags 2FA Guide'
(Local variable name cake2FAGuideTitle kept as-is — it's a code
identifier, not user-visible.)
33 files touched: 31 ARBs (ar, bg, cs, de, en, es, fa, fr, gn, ha, hi,
hr, hy, id, it, ja, ko, my, nl, pl, pt, pt_BR, ru, th, tl, tr, uk, ur,
vi, yo, zh, zh_tw) + lib/src/screens/setup_2fa/setup_2fa.dart.
Cake Wallet → Hash Bags / Such Software LLC across the user-facing
platform configs:
- macos/Runner/InfoBase.plist: CFBundleDisplayName + CFBundleName
- windows/runner/main.cpp: top-level window title
- ios/Runner/InfoBase.plist: URL scheme cakewallet → hashbags,
CFBundleURLName y.at → com.suchsoftware.hashwallet
- android/app/src/main/AndroidManifestBase.xml: URL scheme
- scripts/windows/build_exe_installer.iss: full rebrand (name,
publisher, URL, exe name, AppId, DefaultDirName, output filename)
- assets/text/disclaimer_deuro.txt: legal disclaimer text
Version unification → 1.0.0 build 1 across all platforms:
- pubspec_description.yaml (was 0.0.0, description was "Cake Wallet.")
- scripts/android/app_env.sh (was 6.1.2 build 4410)
- scripts/ios/app_env.sh (was 6.1.2 build 418)
- scripts/macos/app_env.sh (was 6.1.0 build 147)
- scripts/windows/build_exe_installer.iss (was 6.1.0)
env.json (Windows) was already 1.0.0.
FAQ contact info → support@such.software / @such_software across all
13 locale faq_*.json files (was support@cakewallet.com /
@CakeWalletXMR / @cakewallet_bot).
Node lists:
- Delete assets/zano_node_list.yml — Zano not enabled in any
configure flag; file was dead code.
- Remove zcashDefaultNodeUri const from
lib/entities/default_settings_migration.dart — Zcash not in
product, const was unreferenced anywhere.
Note on BTC + LTC defaults: audit suggested these were Cake-by-default
but they were already non-Cake (blockstream and electrum-ltc.bysh.me).
Cake stays in the auto-switch pool — flagged for separate decision on
whether to disable auto-switching to Cake nodes for privacy.
* feat: Add memo support for swap
* fix: Error on swap page select receiver bottomsheet when picking receiveing currency that's not a wallet type
* feat: exclude providers that do not support memo when receive currency needs it, also show passed memo in confirmation and trade history sheets
* fix: overflow for destination tag on swap confirmation
* Update lib/view_model/exchange/exchange_view_model.dart [skip ci]
* Update lib/exchange/provider/trocador_exchange_provider.dart [skip ci]
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Avoids any confusion / potential trademark friction with HashWallet
(Spanish hardware-wallet company). Hash Bags is a more distinctive
name, harder to collide with, and we can still rank for 'hash wallet'
search via App Store / Play Store subtitle ('Hash Bags - A Wallet
for your Coins').
What changed (all user-visible strings):
- Launcher labels: android/app.properties, scripts/android/app_env.sh,
scripts/ios/app_env.sh, linux window title (CMakeLists +
my_application.cc)
- In-app text: lib/generated/i18n.dart + ARB sources under res/values/
- Brand docs: README.md, CONTRIBUTING.md, PRIVACY.md,
assets/text/Terms_of_Use.txt, assets/text/Release_Notes.txt
- hash.boats website: index.html, og-image.svg + regen og-image.png,
site.webmanifest, styles.css comment, splash/confirm/pulse/mark/
lockup svg titles, report/index.html, server/server.js
- CI workflow display names ("Hash Bags Linux build", etc.)
What did NOT change (deliberate):
- Bundle ID / Package: com.suchsoftware.hashwallet (immutable app
identity on App Store + Play Store — changing == orphaning the app)
- Binary name: hash_wallet (Linux executable)
- Dart import paths: package:hash_wallet/...
- Git repo: hash-wallet (Such-Software/hash-wallet)
- URL scheme: hashwallet:// (internal deep links)
- support@such.software (no domain change yet)
- App Store / Play Store listing names (whatever was registered there
stays; we updated launcher label only)
- hash.boats domain (still the wallet site)
Also kept the '#ash Wallet' wordplay in the nav but updated to
'#ash Bags' so the # mark still serves as the H. Nav reads:
[# mark] #ash Bags
Website hero tagline now matches the App Store sub-title concept:
'A wallet for your coins. Open-source, non-custodial, multi-chain.
Privacy-leaning by default.'
108 files modified, ~674 string replacements.
Same root cause as the bottom navbar invisibility: iconColor was set to
theme.colorScheme.primary, which on the light theme is our dark forest
green (#1A5C38) and goes invisible on dark surfaces. onSurfaceVariant
is Material's de-emphasized-foreground token and has guaranteed contrast
against the surface across all our themes.
Two fixes:
1) lib/src/screens/seed/seed_verification/seed_verification_success_view.dart
After verifying a BTC wallet's seed, the original flow pushed the user to
the lightning_username_page which suggests an @cake.cash Lightning
address. We disabled Lightning entirely (no Greenlight infra) and the
page is meaningless without it. Collapse the conditional so the button
always pops back to the wallet list. Restore the conditional if/when
Hash Wallet ever runs its own Lightning backend.
2) lib/src/screens/dashboard/widgets/new_main_navbar_widget.dart
inactiveColor was set to theme.colorScheme.primary, which is our brand
dark forest green (#1A5C38) post-retheme. That renders nearly invisible
against the navbar's semi-transparent dark surface backdrop, so the
three non-active tab icons (Wallets / Contacts / Apps) disappear and
the user just sees three blob shapes. Material's onSurfaceVariant is
the standard token for de-emphasized icons and is visible across our
light/dark/black themes.
flutter_mailer has no Linux implementation (throws MissingPluginException)
and on other platforms required users to have a configured mail client.
Vanishingly few error reports ever reached anyone. The 'Send' button on
the error popup was effectively a no-op.
Replaced with a url_launcher call that opens a prefilled GitHub issue at
github.com/Such-Software/hash-wallet/issues/new with the error trace
inlined into the body (truncated to ~6.5KB to stay under GitHub's URL
length cap; full log path is shown in the body for users who want to
attach it manually). Adds a 'bug,from-app' label and a short prompt
asking the user to describe what they were doing.
Downsides: people without a GitHub account will get nothing useful when
they hit 'Send' — they'll see GitHub's sign-up page. Net still better
than the silent no-op we had. Adding a real reporting endpoint
(Cloudflare Worker) is the obvious follow-up if low report volume
turns out to matter.
Also removed flutter_mailer from pubspec.yaml — was only used here.
The .selected computed getter always called monero!.getCurrentAccount(_wallet),
which does an internal 'wallet as MoneroWallet' cast and threw
'WowneroWallet is not a subtype of MoneroWallet' whenever the dashboard
CardsView Observer rebuilt for a Wownero wallet. The .accounts getter
above already dispatched correctly by wallet.type; .selected didn't.
Now matches the same monero/wownero dispatch pattern.
Stragglers that weren't in any agent's batch but referenced the removed
identifiers:
- tool/configure.dart: stripped 'backupSeeds(Box<HavenSeedStore>)'
abstract method from generateWownero's emitted template + the
haven_seed_store.dart import. CI regenerates lib/wownero/wownero.dart
from this template each build, so the previous lib/wownero/wownero.dart
cleanup got reverted on rebuild. This is the actual fix.
- lib/core/trade_monitor.dart + lib/view_model/trade_details_view_model.dart:
removed JupiterExchangeProvider import + ExchangeProviderDescription.jupiter
switch cases (provider + URL builder).
- lib/src/screens/dashboard/dashboard_page.dart: deleted _showHavenPopup
helper + its call site + the haven_wallet_removal_popup import.
- lib/src/widgets/haven_wallet_removal_popup.dart: deleted (no callers).
- lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart:
removed the zcash 'missing funds' InfoCard and the decred 'syncing'
InfoCard widgets, plus their _dismissZcash and _rescanInternalChangeZcash
handlers.
- lib/src/screens/settings/connection_sync_page.dart: removed the TronGrid
history toggle row.
- lib/src/widgets/bottom_sheet/payment_confirmation_bottom_sheet.dart:
_isTokenSelectionFlow now only checks evmNetworkSelection (was also
branching on solana/tronTokenSelection enum values that no longer exist).
Generated .g.dart files for dashboard_view_model and connection_sync_view_model
still reference removed methods (rescanInternalChangeZcash, dismissZcash,
canUseTronGrid, setUseTronGrid). Those will be regenerated by build_runner
on next CI run and the methods will fall out — no manual fix needed.
94 files changed, -5926 net lines. No stubs, no generators, no dead enum
values, no orphan switch branches. Removed for principled reasons (we
do not ship these chains) and to make the codebase smaller and friendlier
to contribute to.
What's gone:
- lib/{solana,tron,zano,decred,zcash,haven}/ directories
- lib/exchange/provider/jupiter_exchange_provider.dart (Solana-only)
- lib/entities/haven_seed_store.dart
- WalletType.{solana,tron,zano,decred,zcash,haven} enum values
(HiveField IDs are pinned: Wownero stays at 12, all surviving types
keep their IDs, so existing user-saved wallets deserialize unchanged)
- All ~70 lib/ files that imported the removed chain stubs or branched
on the removed WalletType values
- backupSeeds(Box<HavenSeedStore>) abstract method + Wownero implementation
- Jupiter exchange branches in send/exchange view models
- TronGrid usage settings, Zano alias lookups, Zcash transparent address
handling, Decred default-spv-nodes branches, Haven seed migration
What stays (intentional):
- CryptoCurrency.{xhv,sol,trx,dcr,zano,zec} enum entries in cw_core —
they're still used as exchange/swap currency identifiers in
address_validator.dart and elsewhere. The wallet types are gone but
the *currencies* are still tradeable through Trocador.
- cw_core/spl_token.dart and cw_core/tron_token.dart Hive adapters in
main.dart — the tokens still register as Hive types for backwards-
compat with any old box data.
- lib/buy/{moonpay,robinhood,onramper,dfx,kryptonim,meld}/ provider
source files (just stripped of solana/tron/etc references; providers
themselves remain dormant per provider_types.dart).
Pinned-ID note: WalletType enum now has gaps in @HiveField IDs (4, 10,
11, 13, 14, 18 removed). This is deliberate — re-using a freed ID later
would mis-deserialize old hive boxes. Don't renumber.
Bundled config / CI hasn't changed; configure.dart was already free of
these chains in commit 4eb7db0b7.
Delete the WyreBuyProvider + WyreOrderProviderAdapter source files,
strip imports and call sites from buy/order view models and the
buy webview, force isBitcoinBuyEnabled = false in di.dart, and drop
the three wyreSecretKey/wyreApiKey/wyreAccountId entries from
tool/utils/secret_key.dart.
BuyProviderDescription.wyre (raw: 0) is kept as a no-op legacy entry
so any old Hive-persisted order with that raw value still deserializes
without throwing. Don't wire it back to UI/services.
- Stub dashboard bulletin (was polling service-api.cakewallet.com); returns
empty ServicesResponse until we stand up our own notice service.
- Repoint changelog 'View more info' link to hash.boats (modal trigger
remains disabled; this is just for when we re-enable it).
- Replace exchange-helper.cakewallet.com with exchange-helper.such.software
in moonpay/robinhood/onramper providers. Buy providers are still dormant
(empty getAvailable*ProviderTypes); URL change is a fail-loudly placeholder
to ensure we stand up our own proxy before re-enabling any of them.
- Delete Monerocom_Terms_of_Use.txt and Monerocom_Release_Notes.txt — these
were Cake's Monero.com brand variant, never used by Hash Wallet. Collapse
the isMoneroOnly branch in disclaimer_page.dart to always load
Terms_of_Use.txt.
- Add docs/links.md (gitignored) inventorying all public-facing URLs and
emails shipped in the binary.
Cake's email was hardcoded as the recipient for the 'Send error report'
flow in ExceptionHandler and as the contact in the TransactionCommitFailed
user-facing message. Anyone tapping Send would have mailed their wallet
metadata to Cake's support team. Repointed both to support@such.software.
Python regex strip from 6ec755ec2 removed the MoonPay + Robinhood
LinkListItem entries that lived inside an 'if (!isMoneroOnly) ...[ ]'
conditional list-spread, but left the opening '...[' dangling at
line 66 with no matching close bracket. mobx_codegen and hive_generator
both threw 'Expected to find ]' at line 67.
Remove the dead conditional. Build moves past secrets-generation +
mobx-codegen + hive-generator now.
Buy providers (Robinhood Connect, DFX, Onramper, MoonPay, Kryptonim, Meld):
- lib/entities/provider_types.dart: getAvailable{Buy,Sell}ProviderTypes()
both return [] now. Each provider requires a formal partner contract
with revenue-share — no free integrations exist. Re-add to the list
once Such Software has registered the partner relationship per provider.
Buy/Sell UI surfaces (cards_view.dart's onramp button -> Routes.buySellPage)
still render but the provider list is empty, so the screen shows nothing.
- lib/view_model/support_view_model.dart: removed the third-party support
LinkListItem entries for the dead buy providers. Kept the swap-provider
support links (ChangeNow, SideShift, SimpleSwap, Exolix, SwapTrade,
Trocador) — Trocador is still active and the others are useful for
legacy users who created swaps before the trim.
Default node flip (per user request — 'someone else top choice, Cake nodes
stay in the list of others'):
- xmr-node.cakewallet.com:18081 -> node.sethforprivacy.com:443
- electrum.cakewallet.com:50002 -> electrum.blockstream.info:50002
- ltc-electrum.cakewallet.com:50002 -> electrum-ltc.bysh.me:50002
- btc-electrum.cakewallet.com:50002 -> electrum.blockstream.info:50002
Cake's nodes remain in the augmented lists (see asset/*_node_list.yml).
Silent-payments Electrs (electrs.cakewallet.com) + zcash default URI
unchanged — no good free alternative for silent payments, and zcash is
removed anyway.
URL replacements throughout lib/:
- support_view_model.dart: removed Cake's own support channels (email,
website, forum, Telegram, Telegram bot). Only GitHub Issues + Releases
remain. Third-party provider support links (ChangeNow, SideShift,
SimpleSwap, Exolix, Trocador, Onramper, DFX, MoonPay, Robinhood,
Kryptonim) kept — genuinely useful when a swap goes sideways.
- transaction_details_view_model.dart + payjoin_details_view_model.dart:
mempool.cakewallet.com -> mempool.space (canonical free public mempool,
no affiliate).
- services_updates_widget.dart: status.cakewallet.com -> our GH issues.
- 8 widget/screen files: docs.cakewallet.com / blog / cakewallet.com help
URLs repointed to github.com/Such-Software/hash-wallet (placeholder
until we have our own docs; better than dead-linking to Cake's docs).
User-facing text changes:
- walletkit_service.dart: WalletKit metadata (name/description/url/icon/
redirect) all -> Hash Wallet / Such Software repo / hashwallet:// scheme.
- di.dart: TrezorConnect callback URL + appName -> Hash Wallet.
- vulnerable_seeds_popup.dart + haven_wallet_removal_popup.dart: copy
rewritten to say 'Hash Wallet' instead of 'Cake Wallet', and point to
GH issues instead of Cake's support email.
- swap_provider_initial_preference_modal.dart: trailing 'Cake Wallet.'
-> 'Hash Wallet.'
Deep-link URL scheme cakewallet:// -> hashwallet:// in:
- lib/main.dart, lib/src/screens/root/root.dart, lib/view_model/link_view_model.dart
Means any cakewallet:// link from a payment QR / Trezor callback /
shortcut now routes via hashwallet://. No existing user base so no
migration needed.
SVG asset swaps (content replaced, filenames kept so call-sites compile
without rewriting):
- assets/new-ui/cake_squircle_icon.svg -> hash_wallet/02_app_icon.svg
- assets/new-ui/cakewallet-wordmark-light.svg -> hash_wallet/03_lockup_horizontal.svg
(dark text for light backgrounds)
- assets/new-ui/cakewallet-wordmark.svg -> hash_wallet/03_lockup_horizontal_dark.svg
(light text for dark backgrounds)
- apps_widget.dart: the conditional cakelabs-icon render became a SizedBox()
no-op. The Apps tab is gutted anyway (placeholder content); this widget
is also used elsewhere where the Cake Labs attribution badge is unwanted.
The big one. Touches 760+ files. Locks in the user's decision to break
import-line compatibility with upstream cake-tech/cake_wallet in exchange
for a binary named hash_wallet on every platform.
Changes:
- pubspec_description.yaml: project name cake_wallet -> hash_wallet
- 762 Dart files: every 'package:cake_wallet/...' import rewritten to
'package:hash_wallet/...' (lib/, cw_*/lib/, tool/, test/, integration_test/)
- linux/CMakeLists.txt: BINARY_NAME cake_wallet -> hash_wallet
- windows/CMakeLists.txt: project + BINARY_NAME (CakeWallet -> HashWallet)
- windows/runner/Runner.rc: company / file / product strings to Hash Wallet
+ Such Software LLC copyright
- macos/Runner.xcodeproj/project_base.pbxproj: cake_wallet_new.app refs
-> hash_wallet.app (macOS output bundle name)
- com.suchsoftware.HashWallet.yml (Flatpak): all binary path refs
cake_wallet -> hash_wallet (e.g. /app/hash_wallet/hash_wallet)
- linux/com.suchsoftware.HashWallet.desktop: Exec=hash_wallet
- scripts/android/copy_monero_deps.sh: CW_DIR target path
- configure_hash_wallet.sh: error message typo (old filename)
INTENTIONALLY UNCHANGED:
- cw_* subpackage names (cw_core, cw_bitcoin, cw_wownero, etc.) — they
remain as the historical 'cake wallet' naming; renaming them would
cascade through every sub-package's internal structure
- Method channel name 'com.cake_wallet/native_utils' in iOS/macOS/Android
AppDelegates and MainActivity — it's a string identifier that has to
match the Dart side exactly. Renaming requires both-sides change; it's
internal-only and not user-visible.
- ghcr.io/cake-tech/cake_wallet:debian13-... docker image references in
build scripts — that's Cake Labs' published image we use as the build
environment, not ours.
User data directory now follows the new binary name:
~/.local/share/hash_wallet/ (was ~/.local/share/cake_wallet/)
~/.config/hash_wallet/ (was ~/.config/cake_wallet/)
Existing users on the old name will need migration if any exist.
Companion to 59a6b25ff. The accent enum got renamed (cakePrimary,
tronRed, frostingPurple removed; hashGreen, suchPink, suchBlue added)
but ThemeList still referenced the old names. Rename in lock-step:
cakePrimary -> hashGreen
tronRed -> suchPink
frostingPurple -> suchBlue
Plus the corresponding ThemeList static fields (blackThemeCakePrimary
etc.) and switch cases. The integer 'raw' deserialize codes (12-17,
112-117) stay the same — existing user theme prefs will resolve to the
new accent at the same raw value.
The companion to 78edfe0bb — that commit fixed the migration step 55 but
the resetToDefault() in lib/entities/node_list.dart was still trying to
loadDefaultNodes(WalletType.zcash) on every fresh wallet creation, which
is exactly where the user's reported popup fires.
The zcash chain was removed (cw_zcash deleted, assets/zcash_node_list.yml
deleted), but two places still tried to load it at runtime:
1. lib/entities/node_list.dart's resetToDefault() unconditionally called
loadDefaultNodes(WalletType.zcash) which tried to read the deleted YAML.
2. lib/entities/default_settings_migration.dart migration step 55 called
addWalletNodeList(type: WalletType.zcash) + _changeDefaultNode for zcash,
same failure.
Both surfaced as a 'Unable to load asset: assets/zcash_node_list.yml' error
popup on every fresh wallet creation. Removing both call sites; migration
step 55 becomes a no-op (existing wallets advance through it without effect).
Also includes the new SVG variants added to assets/images/hash_wallet/:
03/04/05_*_dark.svg, 09_mark_outline.svg, 10_wordmark_only.svg,
11_vertical_lockup.svg, 12_notification_mono.svg — fills out the brand
kit with dark-theme wordmarks plus tiny/outline/wordmark-only/vertical/
notification variants for cases the existing set didn't cover.
User reported the Apps page still surfaced Cake Labs and Cake-affiliate
third parties despite all the other rebrand work — they're hardcoded in
lib/src/screens/dashboard/pages/cake_features_page.dart's _buildOldUi
and _buildNewUi.
- Cake Pay: Cake Labs' own gift-card product, already disabled via
FeatureFlag.isCakePayEnabled but still rendered here
- Cupcake: Cake's hardware wallet companion app
- NanoGPT: third-party AI service with Cake affiliate revenue
- dEuro Savings: Frankencoin savings, also affiliate
Replaced both build methods with a simple 'No apps available yet'
placeholder. Page structure / nav tab kept intact so we don't have to
restructure the dashboard nav — can repopulate with Hash Wallet /
Such Software apps later (e.g. Smirk, Wowcheckout, etc.).
Per Trocador's commercial team, webhook-driven status updates are preferred
over polling. Adding 'webhook' param to /new_trade so Trocador POSTs status
changes to our Cloudflare Worker, which caches them in KV for the wallet to
read.
This commit only adds the producer side. The wallet still polls Trocador
directly (every 5 min via trade_monitor.dart); switching the polling source
to our worker is a follow-up.