Files
hash-wallet/CONTRIBUTING.md
T
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

4.5 KiB

Contributing to Hash Bags

Thanks for the interest. Before opening a PR, please read this.

Project shape

Hash Bags is a friendly fork of Cake Wallet. We periodically merge upstream changes and try to keep our divergence narrow. Every change you propose should be evaluated through that lens: will this make future upstream syncs harder, and if so, is the value worth the cost?

Branch model

  • dev is the integration branch — open PRs against dev.
  • main is reserved for tagged releases.
  • We do not use long-lived feature branches. Iterate on dev directly via small focused PRs.

Build environment

See the build section of README.md. Flutter version is pinned (.tool-versions + Dockerfile). Don't use a newer Flutter SDK — Cake's hive_generator / build_resolvers deps fail on Dart 3.10+ because the _macros pseudo-package was removed.

If you use mise or asdf, the right Flutter version will activate automatically.

Generated code

Several layers use code generation (MobX stores, Hive type adapters, JSON serializers, configure.dart-generated wallet entry points). Regenerate with:

dart pub run build_runner build --delete-conflicting-outputs

For the wallet-types and pubspec generation:

dart run tool/configure.dart --monero --wownero --bitcoin --bitcoinCash \
  --ethereum --polygon --base --arbitrum --bsc --nano --dogecoin

(That's the canonical Hash Bags build flag set. Don't pass --solana, --tron, --zano, --decred, or --zcash — those packages were deleted.)

Code style

  • Match the surrounding style. We have not introduced new lints beyond Cake's.
  • New observable state goes through MobX; persisted state through Hive.
  • Don't add new top-level analytics. Hash Bags ships with no telemetry by design.
  • Don't import package:cw_zano/, package:cw_tron/, package:cw_solana/, package:cw_decred/ — those packages are deleted. The corresponding WalletType.* enum values still exist in cw_core/lib/wallet_type.dart for backwards-compat but are never instantiated.
  • Avoid adding cake_*-prefixed file or symbol names in new code. Use hash_wallet-prefixed where the symbol is ours, and leave Cake-prefixed names alone where they're inherited (so upstream merges still apply cleanly).

What we generally won't accept

  • Re-enabling Solana, Tron, Zano, Decred, or Zcash. The fork exists in part to drop these — opening that door defeats the purpose.
  • New buy/sell provider integrations that require routing through Cake's exchange-helper.cakewallet.com proxy. Direct provider APIs are fine if we can register Hash Bags / Such Software LLC as the partner.
  • Lightning Network integration. Greenlight (and self-hosted alternatives) require running infrastructure we're not in a position to operate yet.
  • Cake Pay re-enable. The infrastructure is Cake Labs's; we can't run it.
  • New defaults that point at cakewallet.com hosts. We're moving away from depending on Cake's infrastructure — community nodes, our own proxies (exchange-helper.such.software, prices.neroswap.com), or both, are preferred.
  • Anything that adds telemetry, push notifications via third-party SDKs, or remote bulletin services that the user can't audit.

What we want

  • Wownero polish (every paper cut counts — it's the reason this fork exists).
  • Build reproducibility improvements (especially Docker / CI parity).
  • Privacy-leaning defaults (own-node guidance, Tor/I2P integration improvements, fewer outbound calls).
  • Wallet-core bug fixes — these we will happily upstream to Cake.
  • Documentation, especially around the build pipeline and the Cake → Hash Bags diff.

Reporting bugs

Open an issue at https://github.com/Such-Software/hash-wallet/issues. Please include:

  • Build artifact ID (the CI workflow names the artifact by commit SHA).
  • Platform + OS version.
  • Terminal output if you built and ran from a terminal — many error popups don't print to stderr; check <appDir>/error.txt (typically ~/.config/hash_wallet/error.txt on Linux).
  • Whether the bug also reproduces in the latest Cake Wallet build (so we know whether it's a Cake-upstream bug or a Hash Bags regression).

Security disclosures

See docs/SECURITY.md. Email support@such.software for anything sensitive; do not open a public issue for unpatched vulnerabilities.

License

By contributing, you agree your contribution is licensed under the MIT License, the same as the rest of Hash Bags.