Commit Graph
4495 Commits
Author SHA1 Message Date
jwinterm dd449f2594 Merge upstream Cake Wallet v6.5.0
Catches up from the May 12 fork point (v6.1.2+23) through v6.5.0: 535
upstream commits, including the Monero silent-open fix, Monero on Trezor,
Ledger/Trezor BLE fixes, the new seed and history screens, quick Bitcoin
sync, git-pinned dependencies (pubspec_overrides.yaml), frozen Hive
adapters (*.part.dart), monero_c v0.18.4.6-RC2 and Flutter 3.41.9.

Merged with both sides normalized first (import rename, 100-column
format), which took the conflict count from 614 paths to 322. The
procedure is now scripts/upstream_sync.sh.

Kept from Hash Bags:
- WalletType enum order and Hive IDs. SQLite stores WalletType.index and
  our order differs from upstream's; taking theirs would reread saved
  wallets as other chains. Our frozen adapter keeps the shipped IDs.
- The 1.0.2 legacy PIN and wallet-password decode and self-heal.
- Removed chains (Solana, Tron, Zano, Zcash, Decred, Haven) and the new
  Robinhood chain stay out; Cake Pay and non-Trocador swaps stay out.
- Default nodes (node.wownero.org, sethforprivacy, Blockstream, bysh.me),
  converted to upstream's isDefault node-list key; Wownero is back in the
  node reset list.
- Privacy: address resolvers limited to domain-anchored sources again;
  prices.neroswap.com for fiat; upstream's charts tab, which reads
  prices.cakewallet.com, sits behind FeatureFlag.isChartsEnabled = false.
- Lightning stays behind FeatureFlag.isLightningEnabled, including
  upstream's new post-seed Lightning username step.
- Our icon pipeline, branding and bundle identifiers.

Twelve new upstream widget tests are skipped: test and code are unchanged
from v6.5.0 apart from renames (not rerun on a pristine upstream checkout;
upstream's top_bar_test does not compile against its own TopBar).
flutter analyze lib: 0 errors; flutter test: 345 passed, 12 skipped;
flutter build bundle compiles. Built with Flutter 3.41.9.
2026-10-24 23:49:29 -04:00
jwinterm 788318a3a2 style: format Dart at 100 columns, as upstream does
Upstream reformatted its whole tree in 16ddc0837. Matching it removes
formatting from the conflict surface of this and every later sync.
2026-10-24 22:48:17 -04:00
Omar HatemandGitHub 196f5a15a9 v6.5.0 Release Candidate (#3707)
* v6.5.0 Release Candidate
Added things:
- Account education
- Account hiding
- OnRamper fix
- iOS send report fix
- Bitbox fix
- lightning toggle fix

* v6.5.0 Release Candidate
Added things:
- Account education
- Account hiding
- OnRamper fix
- iOS send report fix
- Bitbox fix
- lightning toggle fix

* v6.5.0 Release Candidate
Added things:
- Account education
- Account hiding
- OnRamper fix
- iOS send report fix
- Bitbox fix
- lightning toggle fix

* v6.5.0 Release Candidate
Added things:
- Account education
- Account hiding
- OnRamper fix
- iOS send report fix
- Bitbox fix
- lightning toggle fix

* undo remove decred [skip ci]
2026-10-12 14:32:16 +02:00
09da422470 Fix one swap tap creating multiple trades (#3709)
TradeIsCreating was only set deep inside createTrade's provider loop,
after several awaits, so the swap button stayed tappable while the
first call was still running and every extra tap started another
trade. createTrade also had no in-progress check of its own.

Now createTrade returns early if a trade is already being created,
sets TradeIsCreating synchronously before the first await, and resets
the state in a finally block so the button is usable again after
success, failure or an unexpected exception. The
ConcurrentModificationError retry now awaits the inner call instead of
re-entering createTrade, so it is not blocked by the new guard.


Claude-Session: https://claude.ai/code/session_016HdqYnWEiqnBvmvqCBQgjE

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-12 13:14:15 +02:00
Omar 8df61b4a66 fix iOS send report issue 2026-10-10 02:13:08 +02:00
20f1ceb651 CW-1513/CW-1610: Add account archival and UI improvements (#3600)
* add ability to hide accounts

* remove import

* merge

* merge

* fix loading accounts when styleSettings are not saved yet

* merge

* auto-reformat

* small fixes

* proper reload on card unhide

* block hiding last card

* fixup

* revert formatting-only changes

* liner fixes

* fix overflows

* card layout as separate class to prevent index errors

* fix mini card on addresses page

* block opening customizers if wallet is syncing

* switch to BlocProvider.value to prevent auto dispose

* imports

* fix fiat balance

* Improve homescreen layout and account access

* Add homescreen layout regression tests

* improve account management w/ education + archival flows

* reorganize wallet-specific settings

* preserve account archival during dismissal

* fix: align account visuals with design feedback

* minor account & archival visual corrections

* simplify wallet settings + account UI state

* generalise education carousel & dismissal tracking

* refactor account UI flows + minor improvements

* minor refactors and improvement

* pass account balances as Money and format at display

* use fresh full balance for account archival check

* refactor BalanceCard w/ MoneyText + cleanup

* minor card_customizer cleanup

* rework card customizer flow

---------

Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-10-10 02:07:41 +02:00
Konstantin UllrichandGitHub 9f1f82fdd4 feat: enhance Bitbox ViewModel with connection tracking and refactor imports (#3706) 2026-10-09 17:20:47 +02:00
3e5a119ea7 Use Blockchair explorer link for Litecoin unspent coins (#3705)
The "View in Block Explorer" link on the Unspent coins details screen
pointed Litecoin UTXOs at litecoin.earlyordies.com, which no longer
shows transaction info. Use the same Blockchair URL the transaction
details screen uses for Litecoin.


Claude-Session: https://claude.ai/code/session_01G9ovgVGLzHmQ1a1rE1tDgK

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-09 14:44:46 +02:00
rafael_xmrandGitHub 7fd08a16b6 feat: onramper api v2 (#3686) 2026-10-09 12:41:02 +02:00
claude[bot]andGitHub 8b05da8e86 Keep Enable Lightning toggle visible after disabling it (#3702) 2026-10-09 12:28:47 +02:00
37ef179f6e Cw 1611 fetch moon pay payment methods from their api (#3565)
* add payment method api

* add payment method limits

* Update lib/buy/moonpay/moonpay_provider.dart

* fix MoonPay payment method handling

* Handle custom MoonPay payment methods

* fix limits when max is infinite [skip ci]

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-10-08 13:02:51 +02:00
cyanandGitHub a5dc3a4add fix: dismissed transaction that finishes completing async (#3687)
can overwrite new one

GHSA-5p55-jf6f-c7wx
2026-10-08 12:49:34 +02:00
David AdegokeandGitHub 91738ea792 fix: handle wallet delete flushbar dismissal (#3697) 2026-10-08 12:28:26 +02:00
David AdegokeandGitHub 098e1ea0d3 chore: add new images for robinhood (#3689)
* fix: add new images and fix integration tests

* fix: round robinhood network icon and align card background.
2026-10-07 17:22:47 +02:00
5f04688d82 Fix compile_graphics.sh flattening subfolder SVGs (wrong Payjoin/info icons) (#3685)
* Fix compile_graphics.sh flattening subfolder SVGs into parent dirs

vector_graphics_compiler's --input-dir lists recursively and writes each
file to out-dir/<basename>.vec, so the run for res/pictures also compiled
every subfolder SVG into assets/new-ui and same-named files (payjoin.svg,
info.svg, lightning.svg) overwrote the root ones nondeterministically.
Compile only each directory's own SVGs via a temp copy.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01StzwoeTrDpPZxw5ERPaynT

* Remove explanatory comment per review

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YB4vJJnUcdupSKFD9nYpK7

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-07 16:52:30 +02:00
5f91c4d262 V6.5.0 rc (#3674)
* bump: monero_c to v0.18.5.3

* revert deprecated seeds table

* update monero_c

* update monero_c

* update monero_c

* v6.5.0 Release candidate
Things to test:
- Robinhood (new evm wallet)
- Monero update (test monero in general)
- Restore from backup that is created in previous versions
- Charts
- Bitcoin accounts (please also test that ltc, bch, doge are working fine without issues)
- quick bitcoin sync (also verify other wallets above are working fine)

* v6.5.0 Release candidate
Things to test:
- Robinhood (new evm wallet)
- Monero update (test monero in general)
- Restore from backup that is created in previous versions
- Charts
- Bitcoin accounts (please also test that ltc, bch, doge are working fine without issues)
- quick bitcoin sync (also verify other wallets above are working fine)

* bump: monero
fix: ci

* fix monero.com build

* disable exolix [skip ci]

---------

Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
2026-10-06 20:55:38 +02:00
claude[bot]andGitHub f8a992ce03 Restore FiatConversionService network error handling (#3684) 2026-10-06 17:12:25 +02:00
c6f5865a9b Don't force max brightness when showing seed QR (#3682)
Tapping Show QR on the wallet keys/seed page wrapped the navigation in
BrightnessUtil.changeBrightnessForFunction, which set the display to
full brightness and only reset it if the route returned normally,
leaving brightness stuck at max in some dismiss paths. Show the seed QR
at the user's normal brightness instead.


Claude-Session: https://claude.ai/code/session_01ADigRvS6eGMkm1YGRJusys

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-06 11:51:18 +02:00
Omar HatemandGitHub 7ce3cd75c3 v6.4.6 release candidate (#3681)
just monero patches
2026-10-06 01:19:00 +02:00
David AdegokeandGitHub ad93901ae5 fix: add new images and fix integration tests (#3679) 2026-10-05 17:41:25 +02:00
malik1004xandGitHub 1f1ba779f8 make charts respect fiat api mode (#3678)
* make charts respect fiat api mode

* remove unused blocprovider

* https -> http

* https -> http
2026-10-05 14:58:05 +02:00
bd8cc6901e Charts: detect missing older cached prices in _firstUnavailablePrice (#3675)
* Charts: detect missing older cached prices in _firstUnavailablePrice

Only the newest cached point was checked, so after loading a short range
(e.g. 30D or 1H) a longer range (1Y/ALL or 1D) skipped the API fetch and
showed only the shorter range's data. Now walk the cached points aligned
to the requested precision from the range start and return the first
missing slot (before the oldest point, in a gap, or after the newest),
tolerating a single missing slot. The existing newest-point check is kept.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHSNx4epaJ8hpwuFvWjTmy

* Charts: drop comment and logging, use explicit type in _firstUnavailablePrice

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XHSNx4epaJ8hpwuFvWjTmy

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-05 14:31:37 +02:00
046e57c598 Add Robinhood Chain (#3398)
* fix android CI

* feat: Add Robinhood Chain, all major flows done. minor issue now is our providers don't support it yet as its still pretty early, two weeks from launch

* feat: Add Robinhood Chain, all major flows done. minor issue now is our providers don't support it yet as its still pretty early, two weeks from launch

* Cleanup

* auto-reformat

* fix ui issue and contact listing for tokens

* fix: missing icons and crash for fee priority in settings

* chore: cleanup

* fixes from feedbacks

* fix: review issues and sync to latest dev
feat: switch history api to etherscan, add history toggle to privacy settings, exclude robETH from exchange pickers, skip tokens discovery for chains that moralis hasn't indexed, add tests

* fix: address Robinhood review comments

* fix: show Solana token icons in history

* fix: address review comments and default Robinhood to PublicNode

* fix:  revert filter and refuse unmapped networks in provider

---------

Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
2026-10-04 13:22:05 +02:00
cyanandGitHub 77e4b946eb chore: migrate to hosted scalable CI (#3620) 2026-10-03 15:41:27 +02:00
8661681110 cw-1683-prepare-zano-removal (#3668)
* wip zano removal

* add zano removal popup

* constantly show popup if user keeps using deprecated wallet

* add confirmation before viewing seed

* fix viewed check

* prevent wallet staying open after seed backup

* Update lib/entities/default_settings_migration.dart

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* add passphrase

* make popup scrollable

* delete deprecated seeds when wallet is deleted

* encrypt seeds

* also deprecate decred

* remove decred from available types

* remove backup logic

* showArrow: false,

* Remove deprecated wallet seeds deletion

Removed deprecated wallet seeds deletion from delete method.

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-10-03 14:39:38 +02:00
Omar 1972efd037 only check address validation once for old addresses 2026-10-03 02:17:49 +02:00
Omar 1de16191ce fix balance being stale cuz it's overriden by an old value 2026-10-03 01:23:12 +02:00
Omar ddb754882a update swap providers [skip ci] 2026-10-03 01:22:31 +02:00
d7ebf42814 Cw 1551 quick bitcoin wallet sync (#3446)
* add Wallet Accounts page and integrate UI

* account model refactor

* add walletInfoAccount table and API

* add WalletAccountList API

* add multi-account support for Electrum wallets

* add Bitcoin lightning card and card style handling

* refine account filtering and card selection

* update current account balance on wallet changes

* update configure.dar

* Use named parameters for card design

* Add Bitcoin account handling and refactor lookup

* refactor dashboard

* refactor cards UI and account balance handling

* Improve Bitcoin account selection and balances

* restrict unspent coin usage to current account

* filter transactions by current Bitcoin account

* refactor electrum wallet

* refactor address generation

* add accountIndex to address fetch logic

* Update configure.dart

* reload transactions on Bitcoin account change

* restore multiple BTC accounts and improve fetch

* show account balance with in btc

* track account index in Bitcoin transactions

* discover btc BIP39 accounts during restore

* fix account switching and card ordering bugs

* fix card customizer

* limit account name length in modal

* update BTC account list balance display

* auto-reformat

* formating fix

* skip HD map validation

* fix 0 balance issue

* minor fix

* quick bitcoin wallet sync

* restore shuffle change output

* restore address lookup fix

* Update electrum.dart

* remove account customizer

* Merge branch 'CW-1142-Add-accounts-feature-to-BTC' into CW-1551-Quick-Bitcoin-Wallet-Sync

* probe only segwit in account discovery

* add account discovery limit and tracking

* Improve Electrum sync account handling [skip ci]

* remove legacy monero account and address list UI

* rework BTC account balance refres

* avoid unnecessary BTC account reloads

* refactor account header in addresses page

* fix blank popup when editing an account

* fix: dedupe UTXO balance

* minor fix

* add Bitcoin current account API

* Apply batched suggestions from code review [skip ci]

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* address PR review comments [skip ci]

* remove account customizer and fix accounts init

* restrict extra BTC accounts to SegWit

* add BTC multi-account toggle

* Fix BTC sync gating and account balance update

* minor fix

* Update electrum_wallet.dart

* store selected account on WalletInfo

* Refine wallet account reset visibility

* refactor BTC address prep and move accounts page

* refactor account stack and customizer routing

* migrate legacy Lightning card styles

* unify dashboard account change state

* fix account routing and Electrum balances

* fix account setup and wallet cards UI

* disable Bitcoin Accounts for all hardware

* merge conflicts fix

* minor fixes

* update cards_view [skip ci]

* reverted cards view update [skip ci]

* fix asset name

* moved the transaction filtering into the electrum wallet

* localization

* disable accounts for watch-only wallets

* fix: stop card render from switching the wallet account

* fix: restore Lightning transactions in tx history

* minor fix

* fix: skip duplicate legacy address generation [skip ci]

* fix: correct account balance/design mismatch bugs

* addressing review comments

---------

Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2026-10-03 00:44:57 +02:00
0503d54290 feat: prefill rescan height with the saved Monero and Zcash restore height (#3669)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:58:28 +02:00
jwinterm d74a6aeeb6 ci(android): name the APK and AAB after the version they carry
Flutter writes app-release.{apk,aab} for every build, so each release's
artifact unzips to the same filename. A stale 1.0.3 app-release.aab in
Downloads was uploaded to the 1.0.4 Play release and refused for reusing
versionCode 13. Copy the outputs to hash-bags-<version>-build<N>.* from
pubspec_description.yaml and upload those, refusing if the version line
does not parse.
2026-10-02 13:42:11 -04:00
malik1004xandGitHub 9679f91a8c move FiatConversionService to newer charts api (#3544)
* move FiatConversionService to newer charts api

* remove debug print

* disable strict parsing on getLatestPrice

* fix for lack of toDouble

* ci
2026-09-29 12:39:43 +02:00
David AdegokeandGitHub bc302f0e24 Merge pull request #3658 from cake-tech/integration-test-fixes
fix: flaky integration test runs on the CI emulator
2026-09-27 10:17:31 +01:00
Blazebrain 88a7e72c40 fix: handle flushbar dismissal 2026-09-27 07:31:13 +01:00
jwinterm b07adfff5b ci(macos): port the prerequisites instead of guessing them, and stop printing secrets
The first macOS run died after 88 seconds on `cd scripts/monero_c: No such file
or directory`. That was the cheap failure. The workflow had been written fresh
rather than ported, and behind that missing clone it had also skipped the step
that pins the crypto salts. Had it got further it would have shipped a build
that mints random salts, which is the 2026-08-29 corrupted-seeds incident on a
new platform: wallets created on it would not decrypt after the next upgrade.

So the prerequisites are now ported step for step from build-linux.yml, the
desktop build known to pass: torch_dart, reown_flutter, bitbox (the Apple
variant, without the gomobile Android bindings), prepare_moneroc.sh, configure,
secrets generation, salt pinning with the same refusal, Trocador injection,
codegen, localization, and compile_graphics.sh. curl for wget and BSD sed's
-i.bak form, because the runner is a Mac.

Two more things the fresh version got wrong, found while porting:

configure was run without sourcing app_env.sh, and app_config.sh writes
CFBundleName, the bundle id and the version into Info.plist from variables only
app_env.sh sets. The app would have shipped with an empty name. The step now
prints the three values it wrote.

And app_env.sh hardcoded 1.0.0 (1) on macOS, 6.1.0 (79) on Linux and 1.9.0 (29)
in the fish variant, the last two being Cake Wallet's own version numbers. On
macOS PlistBuddy writes that into the bundle, so every macOS build would have
called itself 1.0.0. Linux only escaped because its substitution looks for a
version: 0.0.0 placeholder that pubspec_description.yaml does not contain. All
three now derive from pubspec_description.yaml the way Android already does, and
the two sh variants resolve to 1.0.4 (14). The fish one is unverified: fish is
not installed here and CI does not use it.

Separately, four workflows verified their secret injection by grepping
lib/.secrets.g.dart into the log, which prints the values. Android's printed the
Trocador, WalletConnect, MoonPay and exchange-helper keys. Gitea likely masks
registered secrets, but masking is a best-effort layer and values never belong
in output. Each now reports every key's name and length and nothing else.

Windows is not in this commit. Its run refused correctly, on the guard added in
c11c79b0c: the runner has Flutter 3.38.5, not the pinned 3.32.0. That is fixed on
the runner, not in the workflow.
2026-09-26 11:16:53 -04:00
c8cad835a1 Add onionbalance Tor frontends to default node lists (#3431)
* Add onionbalance Tor frontends to default node lists

Update the primary Monero and Zcash onion nodes to the new
load-balanced onionbalance frontends, add missing Cake Wallet Tor
nodes for Bitcoin and Litecoin, and use the mempool onion frontend
for Bitcoin fee fetching when Tor is enabled. All Cake Tor nodes are
marked isOfficial so they get the official-node badge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Remove per-instance Zcash Tor #2 node, superseded by onionbalance frontend

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-26 17:10:23 +03:00
Blazebrain 7e84412e02 fix: test failure due to animation 2026-09-26 14:16:07 +01:00
jwinterm 374048958a chore: 1.0.4+14
1.0.3 reached both stores carrying Cake Wallet's app icon on the About screen,
Cake's wordmark on the receive QR page, and Cake's release notes in What's New.
All three were compiled or read from files the August de-cake pass never
touched. This is the release that fixes them.

Build 14: Play wants a higher versionCode and App Store Connect wants a higher
build than 13, and both read this one file.
hash-bags-1.0.4
2026-09-26 05:15:16 -04:00
fdb8267583 fix: enter Lightning invoice amounts in sats (#3525)
LN receive remapped btcln to BTC, so the default "sats (LN)" display mode never applied and the amount field stayed in BTC.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Konstantin Ullrich <konstantin@cakewallet.com>
2026-09-26 11:10:54 +03:00
Blazebrain 63d67da5f7 fix: fail the integration tests check on branches without the test suites 2026-09-25 18:55:42 +01:00
Blazebrain 3a31bbacab fix: skip integration tests on branches without the test suites 2026-09-25 18:49:11 +01:00
Blazebrain 45e06ec9d4 fix: flaky integration test runs on the CI emulator 2026-09-25 17:20:44 +01:00
Omar HatemandGitHub 2d8d068418 Revert "Revert "fix: unify encryption across platforms (#3470)" (#3634)" (#3635)
This reverts commit dd58455ea6.
2026-09-25 13:55:44 +03:00
jwinterm 8c33061917 fix(brand): the in-app release notes were still Cake's
The What's New screen read "Add support for Bitcoin Lightning / New Design".
That file has never been touched since it was inherited; the last three commits
against it are upstream Cake release candidates. It shipped in 1.0.3.

It now describes what this release actually changed, one line per bullet, which
is the format the screen splits on.

The screen also chose between two files based on isMoneroOnly, and the
monero.com one it named does not exist in this repository. Any build where that
flag went true would have thrown on a missing asset instead of showing notes.
Hash Bags ships eleven chains so the flag is always false, which is the only
reason it never fired. One file now, and the import that existed solely for
that branch is gone.

Also removes assets/images/cupcake.png, which nothing in the repository
references. The cupcake SVG stays: HardwareWalletType.cupcake is a third-party
airgapped signer sitting in a list beside Ledger and Trezor, so it is interop,
not somebody else's branding.
2026-09-24 21:21:41 -04:00
jwinterm 47944ed9dd feat(ui): the send celebration throws WOW and XMR, not only bitcoin
The "transaction sent" animation erupted #, $ and ₿ out of the money sack. A
Wownero-first wallet that celebrates every send by throwing somebody else's
coin is advertising for them on the one screen a user reaches directly after
parting with their own money.

Adds Monero and Wownero glyphs and re-spaces the stagger across ten particles
so the fan stays even. WOW leads and is the largest, because that is the coin
this wallet is for.

The sprites are rendered at 128px from res/pictures/crypto_full_icons, which is
the same artwork the chain icons elsewhere in the app use, so the bag throws
the coins the rest of the UI draws rather than a second opinion about what they
look like. 128x128 RGBA to match the three that were already there.
2026-09-24 19:50:10 -04:00
jwinterm fff5259860 fix(brand): de-cake the actual source, not the file it is compiled over
The About screen has been showing Cake Wallet's app icon, and the receive QR
page — the screen a user screenshots to get paid — has been showing Cake's
wordmark. In CI builds only, which is why nobody caught it.

compile_graphics.sh compiles res/pictures/*.svg into assets/new-ui/*.svg.vec,
and every platform workflow runs it. That makes res/pictures the source and
assets/new-ui the output. The August de-cake pass replaced three files under
assets/new-ui and left res/pictures untouched, so each CI build faithfully
recompiled Cake's artwork straight over the top of ours. Locally it looked
right, because locally nobody re-runs the compiler.

Three files, all of them branding: hash_squircle_icon.svg, hash-wordmark.svg,
hash-wordmark-light.svg. The sources are now the Hash Bags artwork, so the
compiler produces what the filenames have claimed since August.

This is the third time somebody else's artwork has reached users through this
repo, and the second time an audit missed it, so it gets a test rather than
another careful look: any SVG present in both res/pictures and assets/new-ui
must be byte-identical. Drift means a hand-edit that the next CI build will
silently revert. The test also asserts it compared something, because a silent
zero is how the previous two got through.

AGENTS.md has had the rule the whole time: generated files are never
hand-edited, fix the source and regenerate. The trap here is that the generated
copies sit beside the sources under identical names, and the ones the Dart code
references are the generated ones.
2026-09-24 19:50:00 -04:00
malik1004xandGitHub 12634865ae change default charts range to 30 days (#3654) 2026-09-25 00:24:55 +03:00
malik1004xandGitHub 0d14b57ee2 add commit/branch overlay for ci builds (#3653)
* add commit/branch overlay for ci builds

* add ability to show/hide overlay

* add alert when disabling the overlay
2026-09-24 23:01:05 +02:00
b7247dd096 Implement apiString on the cw_core test FiatCurrency helper (#3649)
Co-authored-by: sethforprivacy <40500387+sethforprivacy@users.noreply.github.com>
2026-09-24 12:42:56 +02:00
80a8c83d02 Fix missing Material ancestor on history filters and support chat pages (#3647)
* Fix missing Material ancestor on history filters page

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CQrMvFAMkzVAPBrvAwRjL

* Fix missing Material ancestor on support chat page

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CQrMvFAMkzVAPBrvAwRjL

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-23 20:14:00 +03:00