Commit Graph
2960 Commits
Author SHA1 Message Date
Konstantin UllrichandGitHub 45cba318ce refactor: replace deprecated SVG resource, adjust device tap behavior, and improve wallet selection image rendering (#3276)
* refactor: replace deprecated SVG resource, adjust device tap behavior, and improve wallet selection image rendering

* fix: render wallet image and update text style on NewWalletTypePage
2026-06-02 14:12:56 +02:00
5b2a8f6755 Cw 1379 add monero support to trezor rebase dev (#3273)
* 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>
2026-06-02 02:33:17 +02:00
jwinterm b6f6f3f4da Wire error reporting to hash.boats/report, surface Wownero primary address
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.
2026-06-01 18:39:57 -04:00
6c1ee16513 new-node-list-ui-on-dev (#3259)
* node list new ui

# Conflicts:
#	cw_core/lib/node_list.dart

* increase touch target sizes

* fix scroll behavior

* fix concurrent modification

* Update lib/src/screens/settings/manage_nodes_page.dart [skip ci]

* Update lib/src/screens/nodes/node_create_or_edit_page.dart [skip ci]

* run speed test in parallel not sequential

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-06-01 21:32:12 +02:00
SerhiiandGitHub cfe332a878 fix for Mastadon lookup (#3272) 2026-06-01 19:13:07 +02:00
David AdegokeandGitHub e13d997622 Refactor WalletConnect UI components and enhance transaction approval and signing flow (#3233)
* Refactor WalletConnect UI components and enhance transaction approval and signing flow

* Refactor WalletConnect UI components and enhance transaction approval and signing flow

* Remove unused ui components

* Enhance pairing details page and remove unused ui components

* adjust buttons on details page

* Add warning banner for scam dApps on connection requests

* General cleanup

* Parse and display estimated network fee for WalletConnect approval requests

* Revamp WalletConnect pair listing view

* Remove unused action buttons and walletkit methods

* update svg and sync with dev
2026-06-01 17:27:24 +02:00
Omar 5cccde53f6 update discord link [skip ci] 2026-05-31 22:44:31 +02:00
0c3b06d3c1 feat Add gradient-only card design and icon style picker (#3054)
* feat Add gradient-only card design and icon style picker

* refactor: Migrate card icon style to index-based storage

* feat: Add new card icons/styles for icon panel

* feat: add generic cake card icon

* Update coin icons and add opacity

* Remove vector icon files

* Remove vector icon files

* add xmr-og.webp

* feat: add animated switcher to icon style panel

* Enhance icson style preview
fix special gradient bug on plain style card

* Fix card styles ignoring special gradient text color combination

* Improve icon mgmt for card design handling, other fixes also based on review too

* fix: Add bounds check to icon style index

* fix: monero classic icon not displaying

---------

Co-authored-by: tuxsudo <tuxsudo@tux.pizza>
2026-05-31 13:29:23 +02:00
tuxsudoandGitHub 4c95b85c46 Minor UI fixes (#3260)
* Fix swap wallet icons not showing up

* Fix usdt icon

* Update QR code restoration string
2026-05-28 17:13:08 +02:00
8979811de7 linux fixes (#3262)
* 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>
2026-05-28 17:10:48 +02:00
Omar HatemandGitHub 1043c8987e fix build 2026-05-26 20:21:21 +02:00
Robert Malikowski c6f6832231 fix settingsStore.reload 2026-05-26 20:10:50 +02:00
Omar a4ab691cf1 revert exception handler wrong conflic resolve [skip ci] 2026-05-26 19:34:43 +02:00
OmarandClaude Opus 4.7 ac05166e95 Rebase node-sqlite-migration onto dev
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>
2026-05-26 17:04:36 +02:00
f3de4b2588 fix: monero address display in tx history (#3249)
* fix: monero address display in tx history

* chore: Add comment for regex function [skip ci]

* chore: Add doc comment

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-05-26 15:40:03 +02:00
SerhiiandGitHub d38db977da fix:near intents fixed-rate underpayment (#3247) 2026-05-26 15:08:35 +02:00
Omar fe049577b0 minor fix [skip ci] 2026-05-26 01:44:06 +02:00
baac6eeabc feat: add support for Zcash names resolution (#3237)
* 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>
2026-05-24 13:36:16 +02:00
jwinterm bab0d252ee Rebrand: Cake Pay / Cake 2FA / Cake Wallet → Hash Bags across all 31 locale ARBs
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.
2026-05-22 12:16:32 -04:00
jwinterm a2a9c1b0aa Pre-release rebrand: core platform branding + versions + node lists
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.
2026-05-22 11:26:18 -04:00
David AdegokeandGitHub 087c2b9411 fix: Handle ethereum QR for pay anything (#3250) 2026-05-21 17:38:17 +02:00
Omar HatemandGitHub d40e4c6923 bump breez_sdk_spark_flutter to v0.14.0 (#3245)
* bump breez_sdk_spark_flutter to v0.14.0

* Fix accessing parsed address without checking if it's parsed
2026-05-20 22:37:19 +02:00
Omar e4ef1a1141 fix github stupid web editor 2026-05-20 21:57:34 +02:00
1d652c76aa feat: Add memo support for swap (#3229)
* 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>
2026-05-20 20:09:34 +02:00
d325ece6ea fix: Better handle expired session and auth data for walletconnect (#3228)
* fix: Better handle expired session and auth data for walletconnect

* fix: handle dApp disconnected sessions, reflecting the state locally

* Update lib/src/screens/wallet_connect/services/walletkit_service.dart [skip ci

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-05-20 18:22:07 +02:00
David AdegokeandGitHub c684318373 Pay anything fixes (#3224)
* fix: Default to current chain for generic evm format addresses

* fix: Handle pay anything triggers in monero.com builds
2026-05-20 17:41:04 +02:00
jwinterm e8f766dfe6 Rebrand: 'Hash Wallet' → 'Hash Bags' (visible name only)
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.
2026-05-19 07:26:45 -04:00
malik1004xandGitHub 0fadbac089 safeguards for monero subaddress list (#3242) 2026-05-19 01:58:57 +02:00
jwinterm 360556b8f7 Top-bar: use onSurfaceVariant for the gear icon (same fix as navbar)
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.
2026-05-18 14:12:36 -04:00
jwinterm 1098a1a017 Skip Lightning username onboarding + restore navbar inactive icon contrast
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.
2026-05-18 13:58:25 -04:00
Omar HatemandGitHub 4125c5fe80 Allow Exporting transaction history to a CSV file (#3230)
* Allow Exporting transaction history to a CSV file

* fix: improve safety for share dialog bounds and navigation pop
2026-05-18 16:53:06 +02:00
jwinterm 4c09950e0b Replace broken flutter_mailer error-report send with GitHub issue launcher
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.
2026-05-17 20:12:38 -04:00
jwinterm 3faa89d49d Wownero: route MoneroAccountListViewModel.selected to wownero API
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.
2026-05-17 20:03:07 -04:00
jwinterm f1fffddf90 Fix orphan references after shitcoin nuke (build round 2)
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.
2026-05-17 19:18:19 -04:00
jwinterm b57ab7cc06 Nuke Solana/Tron/Zano/Decred/Zcash/Haven from the codebase entirely
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.
2026-05-17 12:30:25 -04:00
jwinterm ef895994ae Remove Wyre buy-provider integration (shut down 2023)
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.
2026-05-17 08:22:08 -04:00
jwinterm 9296e071f5 Strip remaining cakewallet.com endpoints + delete Monerocom assets
- 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.
2026-05-16 19:55:53 -04:00
jwinterm 9e5593011a Route error reports + tx-failed support contact to support@such.software
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.
2026-05-16 19:41:56 -04:00
jwinterm 4506b82e30 Actually disable changelog modal (prior commit Edit raced the Read) 2026-05-16 19:05:13 -04:00
jwinterm d03fd909ef Fix dangling 'if (!isMoneroOnly) ...[' in support_view_model.dart
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.
2026-05-16 12:23:37 -04:00
jwinterm 6ec755ec2c Nuke buy providers + flip node defaults from Cake to community
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.
2026-05-16 12:08:02 -04:00
jwinterm 04ed46aca3 Deep Cake scrub: gut user-visible refs, swap SVG asset contents
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.
2026-05-16 11:54:49 -04:00
jwinterm 04203654f1 Rename Flutter project + binary: cake_wallet -> hash_wallet
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.
2026-05-16 11:33:25 -04:00
jwinterm c9a65da78d theme_list: sync to renamed BlackTheme accent enum entries
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.
2026-05-16 10:48:23 -04:00
jwinterm 59a6b25ff3 Theme overhaul: green primary + Such Software pink/blue accents
Tier A (theme classes):
- light_theme.dart: primary #1A5C38 (Hash green), secondary #B83278 (Such
  pink), tertiary #1F7DBF (Such blue), surface #F2F8F4 (very light minty).
  Full ColorScheme rewritten with green-family containers and green-tinted
  surface tokens.
- dark_theme.dart: primary #7FCAA0 (mint, readable on dark), secondary
  #E16FA6 (soft pink), tertiary #6AB7E6 (soft blue), surface #0B1F14
  (deep green). Containers + surface tokens tuned for the green palette.
- black_theme.dart: replaced accent enum (cakePrimary/tronRed/frostingPurple
  removed; hashGreen, suchPink, suchBlue added). bchGreen / bitcoinYellow /
  moneroOrange kept as chain identifiers.

Tier A (custom theme colors):
- light_theme_custom_colors.dart: backgroundGradient + cardGradient +
  toggleColorOffState retuned to green tints.
- dark_theme_custom_colors.dart: same for the dark variant.
- black_theme_custom_colors.dart: untouched (pure black AMOLED is brand-
  neutral on purpose).

Tier B (palette.dart):
- Cake's blue-family accents (Palette.blue, royalBlue, cornflower,
  blueCraiola family, pinkFlamingo, lavenders, oceanBlue, nightBlue,
  protectiveBlue, etc.) repainted into the green/pink/blue brand system.
- PaletteDark's night-blue surfaces wholesale repainted into deep-green
  equivalents. Original const names retained so every call-site compiles
  unchanged.
- moneroOrange, moneroLightOrange, bitcoinOrange, moneroCard, BCH green
  intentionally NOT touched — chain identifiers.
- Pure neutrals (gray, darkGray, manatee, dullGray, highContrastGray,
  shadowWhite, stateGray, granite, matrixGreen, red, error reds) kept.

Tier C deferred — hardcoded Color(0xFF...) literals scattered through
lib/ remain blue. Most should pull from ColorScheme so this should be
~80% visually rebranded already; iterate from screenshots.
2026-05-16 10:34:53 -04:00
jwinterm 4805e5b1aa Actually skip zcash in node_list.resetToDefault (previous commit missed this)
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.
2026-05-16 08:06:44 -04:00
jwinterm 78edfe0bb3 Skip zcash node loading and migration step 55 (chain removed)
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.
2026-05-16 08:06:12 -04:00
jwinterm 5531eb37c0 Strip Cake-affiliate entries from Apps tab (Cake Pay, Cupcake, NanoGPT, dEuro)
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.).
2026-05-16 07:58:01 -04:00
jwinterm f4f1bfeec1 Trocador: route status updates through prices.neroswap.com webhook
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.
2026-05-14 15:58:01 -04:00
jwinterm 8deb922eb9 Point fiat price endpoint at prices.neroswap.com (existing CF zone) 2026-05-14 11:00:43 -04:00