This prevents `0100000000000000000000000000000000000000000000000000000000000000` from showing up and throwing during tx creation
Also bump the monero_c to fix ubuntu26.04 build issue on arm64
* Add masked token image to to currency picker items and adjust estacked badge icon for node share qr
* fix: Missing chain images in bridge flow
* chore: Update image paths
* fix: WC connection not triggering for Solana from scan qr
* fix: Wallet icon and eth currency icon displaying wrongly in various places for Base wallets
The previous Linux artifact was a zip of the Flutter bundle/ directory.
That's awkward to distribute — users have to unzip, find the binary,
chmod +x, and figure out the lib/ layout themselves. Replace with a
proper AppImage: single file, double-click to run, no install, no
Flutter knowledge required.
Build steps:
- Stage AppDir with the Flutter bundle under usr/bin/ (the binary's
RPATH=\$ORIGIN/lib already finds plugin libs there).
- Add .desktop file (Hash Bags / Office;Finance;) and 256x256 hash
icon scaled from the iOS marketing PNG.
- Download appimagetool and invoke with --appimage-extract-and-run
so it works inside the build container without FUSE.
Artifact name: hash-wallet-linux-appimage-<sha>.
* Improve token image display with mask and background
* Enhance token image bg and remove wierd halo effect that was showing, also add token bg to disclaimer and picker
* Add token bg to more locations and give another shot at halo
* fix: halo around token images
* add token background to non-transparent images only
* another shot at bg based on transparency
* refactor: enhance token image widget shape handling and add filter quality option to cake image widget
* fix: another shot
* refactor: update token image shape handling for svg, no need to clip
* fix: bnb wallet image not displaying on receive token display
* Remove svg path and render all through token image widget
* Improve token image display with mask and background
* Enhance token image bg and remove wierd halo effect that was showing, also add token bg to disclaimer and picker
* Add token bg to more locations and give another shot at halo
* fix: halo around token images
* add token background to non-transparent images only
* another shot at bg based on transparency
* refactor: enhance token image widget shape handling and add filter quality option to cake image widget
* fix: another shot
* refactor: update token image shape handling for svg, no need to clip
* fix: bnb wallet image not displaying on receive token display
* Redesign for CurrencyPicker and FiatPicker, introduce recents and currency groupings
* chore: cleanup
* refactor: switch recents to previously completed trades, specify stables to be displayed, fix scrollable and adjust badge
* refactor: switch recents to previously completed trades, specify stables to be displayed, fix scrollable, adjust badge, add fiat and multinetwork currency pickers to buy and sell flows
* fresh set of changes and fixes for new currency picker flow
* add chain label to items on search and smooth pop
* add chain pill and label to xstocks
* properly filter search results
* shorten chain pill name for BSC tokens
* Review fixes
* cleanups
* safe pop
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Android had the same hardcoded CAKEWALLET_BUILD_NUMBER=1 bug we just
fixed for iOS — bumping pubspec_description.yaml would not have moved
Play Store versionCode at all, and the second AAB upload would have
been rejected for duplicate versionCode. Mirror the iOS fix: parse
the build number from pubspec_description.yaml in scripts/android/app_env.sh.
Regenerate the 16 Tinted iOS icon slices as black bg + white hash mark.
The previous slices reused the green-bg light variant, which iOS 18+
cannot meaningfully tint (green-on-green collapses when the system
applies the home-screen accent color). Black background + white shape
gives iOS a clean luminance map to tint against.
Wownero monero! audit: cleared. Audit flagged two callsites in
fees_view_model.dart, but both wownero!.getWowneroTransactionPriority*
and monero!.getMoneroTransactionPriority* return the same
MoneroTransactionPriority singleton (cw_wownero.dart:158 +
cw_monero.dart:169), so the cross-call is inelegant but not buggy.
Bump 1.0.0+6 -> 1.0.0+7.
The "Wallet Accounts" reorder modal threw on open for Wownero wallets:
account_customizer.dart unconditionally called monero!.getCurrentAccount,
which casts the wallet to MoneroWallet internally. WowneroWallet is a
sibling type, not a subtype, so the cast blew up before the active-card
swap logic ran.
Dispatch on wallet.type and use the wownero! proxy for Wownero, matching
the pattern already in card_customizer_bloc.dart, addresses_page.dart,
and dashboard_view_model.dart. Skip the swap entirely for any other
wallet type rather than guessing.
Bump 1.0.0+5 -> 1.0.0+6.
* Improve token image display with mask and background
* Enhance token image bg and remove wierd halo effect that was showing, also add token bg to disclaimer and picker
* Add token bg to more locations and give another shot at halo
* fix: halo around token images
* add token background to non-transparent images only
* another shot at bg based on transparency
* refactor: enhance token image widget shape handling and add filter quality option to cake image widget
* fix: another shot
Bumping version in pubspec_description.yaml has had zero effect on
the iOS CFBundleVersion: app_env.sh hardcoded CAKEWALLET_BUILD_NUMBER=1,
app_config.sh substituted that literal into Info.plist's
\$(CURRENT_PROJECT_VERSION) placeholder via PlistBuddy before flutter
even saw it, and every TestFlight upload shipped as build 1 regardless
of what we bumped in pubspec. Apple rejected the +4 and +5 IPAs as
duplicates of the +3 that got through as build 1.
Make pubspec_description.yaml the single source of truth by parsing
its `version: X.Y.Z+N` line in app_env.sh.
Hash Bags' crypto is either OS-provided (TLS / CryptoKit / CommonCrypto)
or standard published algorithms shipped as MIT-licensed open source
(secp256k1, ed25519, SHA-2/3, AES, Argon2, ChaCha20). All of that
qualifies as "exempt" under BIS export controls (§740.17(b)(3)).
Declaring the answer in Info.plist skips the per-build App Store Connect
encryption questionnaire and removes the annual BIS self-classification
filing requirement.
Bump 1.0.0+4 -> 1.0.0+5 in case +4 already claimed an Apple build slot.
The iOS build was still pulling Cake Wallet's purple/orange wallet
icon from assets/images/ios_icons/cakewallet_ios_icons/ — visible
in TestFlight as the wrong brand. Replace all 69 light/dark/tinted
slices with the Hash Bags green hash mark from hash.boats/icon-512.png,
flattened against #1a5c38 so the 1024 marketing icon is opaque (no
alpha, as App Store requires) and iOS applies its own corner mask.
Rename the directory cakewallet_ios_icons -> hashwallet_ios_icons so
the repo doesn't carry Cake-branded paths. The build-time flavor is
still named "cakewallet" internally (huge blast radius to rename),
so app_icon.sh just maps that flavor to the new directory name.
Bump build 1.0.0+3 -> 1.0.0+4 for re-upload.
LibTorch.xcframework ships with each slice's Info.plist claiming
MinimumOSVersion=12.0, but the Mach-O LC_BUILD_VERSION inside the
binaries actually requires 13.0 (device) and 14.0 (simulator). Apple's
validator catches the lie and rejects TestFlight uploads with ITMS-90208
("LibTorch.framework does not support the minimum OS Version specified
in the Info.plist") regardless of the app's deployment target.
Revert the previous 15.0 deployment-target bump (which was based on the
wrong hypothesis) back to 13.0 — that's actually what LibTorch supports.
Add a workflow step that plutil-rewrites both slice Info.plists to match
the value their binary actually requires. Bump build number 1.0.0+2 ->
1.0.0+3 for the re-upload.
First TestFlight upload was accepted and processed all the way through,
then Apple's binary validation kicked back ITMS-90208 Invalid Bundle:
The bundle Runner.app/Frameworks/LibTorch.framework does not support
the minimum OS Version specified in the Info.plist.
torch_dart-v1.0.17 ships a LibTorch.xcframework whose Info.plist
declares a higher MinimumOSVersion than our app's 13.0. Apple's
notarization-style check rejects an app that claims to run on iOS
versions where a bundled framework refuses to load.
Bump the four spots iOS deployment target lives:
- ios/Podfile (was 13.0)
- ios/Flutter/AppFrameworkInfo.plist MinimumOSVersion (was 12.0)
- ios/Runner.xcodeproj/project.pbxproj — 6 IPHONEOS_DEPLOYMENT_TARGET
entries (mixed 12.0 / 13.0)
all → 15.0. iPhone 6s (2015) and newer; very wide 2026 coverage.
Also bump build number 1.0.0+1 → 1.0.0+2 in pubspec_description.yaml.
Apple rejects re-uploads with the same build number (ITMS-90478), so
the next TestFlight upload after this fix needs a fresh +N.
Workflow diagnostic step that dumps LibTorch.xcframework's Info.plist
MinimumOSVersion now lives in the "Fetch prebuilt torch_dart" step. If
15.0 still isn't enough, the log tells us exactly what to bump to next.
* UI fixes, updated icons, and temporarily revert Rescan button
* readd ping test button to node list, readd rescan to connections, fixup ui
* increase gap for node edit button
* remove rescan from connections for sp
* remove rescan from connections for mweb
---------
Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
altool bailed with "Failed to load AuthKey file. (-39) The file ...
does not contain a valid authentication key." — same shape as the
.p12 truncation we hit earlier. The .p8 stored secret is probably
truncated or has stray characters from the original web-UI paste.
Add fail-fast validation right after decoding the .p8 to disk:
prints the first + last lines (just the PEM markers, no key body)
and runs `openssl pkey -in file -noout` to actually parse it. If
either check fails the step bombs immediately with a clear "re-paste
via Gitea API" instruction, saving 30+ seconds before altool fails
the same way with a less useful error.
One of the Flutter plugins in our dep chain (sp_scanner / payjoin /
something in the cargokit family) compiles its rust component with
+nightly. The archive step ran for 27s then bombed with:
Error (Xcode): Missing manifest in toolchain 'nightly-aarch64-apple-darwin'
We were installing only stable + iOS targets. Add nightly toolchain
(minimal profile) + iOS targets for it alongside the stable ones.
~250 MB extra download once per runner workspace lifetime.
build-ios-sim.yml has the same stable-only setup but never tripped on
this — likely because the failing plugin's release-only build path
isn't exercised in the unsigned sim build. Leaving sim workflow
alone for now; copy the nightly steps over if it ever surfaces there.
* 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>
Xcode build-setting precedence puts TARGET-LEVEL pbxproj settings
ABOVE the target's xcconfig. So the earlier append to Release.xcconfig
(CODE_SIGN_STYLE = Manual etc.) was being silently overridden by the
pbxproj's CODE_SIGN_STYLE = Automatic. The build did Automatic
signing anyway and bombed with:
Error (Xcode): No Accounts: Add a new account in Accounts settings.
Error (Xcode): No profiles for 'com.suchsoftware.hashwallet' were
found: Xcode couldn't find any iOS App Development provisioning
profiles matching 'com.suchsoftware.hashwallet'.
(Note "App Development" not "App Distribution" — confirming the
project was still asking for a dev profile via Automatic signing.)
sed-patch the Runner target's Release config block in
project.pbxproj directly, scoped by the stable Release config UUID
(97C147071CF9000F007C117D) so we don't touch Debug/Profile configs.
Sets:
CODE_SIGN_IDENTITY = "Apple Distribution"
CODE_SIGN_STYLE = Manual
DEVELOPMENT_TEAM = ${APPLE_TEAM_ID}
PROVISIONING_PROFILE_SPECIFIER = ${PROFILE_NAME}
Patch runs only at CI time; the committed pbxproj stays on Automatic
signing for local Xcode dev. The dumped block at the end of the
step confirms which lines actually changed, so the next failure
mode (if any) is debuggable.