* DKS hub: open each app on its own domain
Seven tiles opened app.pezkuwichain.io routes or a front page while the app
has a domain of its own. Each now opens that domain, even where the site is
still a "coming soon" page, so the tile keeps its address when the site
arrives:
Wallet explorer front page -> cuzdan.pex.network
P2P / Buy-Sell app/p2p -> buy-sell.pezkiwi.app
B2B app/bereketli -> bereketli.pezkiwi.app
Vote app/elections -> governance.pezkuwichain.io
Proposals app/citizens/government-> governance.pezkuwichain.io
Identity app/identity -> be-citizen.pezkiwi.app
Forum app/forum -> forum.pezkuwichain.io
B2B went through a sign-in bridge that only helps a user signed in to the
web app, which the wallet's DApp browser never is: it loaded the whole web
app, then forwarded to bereketli.pezkiwi.app anyway.
* Release 1.3.0
Version 1.2.0 -> 1.3.0, with release notes in English, Turkish and
Kurmanci for the Ecosystem Hub, the config that keeps working when
GitHub is blocked, and the splash and deep link fixes.
Two gaps, both invisible until you look for them.
There was no update mechanism at all. Someone on an old build stayed on it until they
happened to open the Play Store on their own. For a wallet that is worse than an
inconvenience: today's multisig signing fix would have reached nobody who was not
already looking.
InAppUpdates asks Play on every foreground. A user a few days behind gets the flexible
flow — the download runs in the background and the wallet stays usable, because
interrupting someone mid-transfer to force an update is its own kind of harm. Past
fourteen days of staleness, or on a release marked priority 4+ in Play Console, it
switches to immediate. onResume finishes an interrupted immediate update and installs a
flexible one that completed while the app was backgrounded; without that the first
leaves a user stuck and the second never installs.
Ratings had the same shape of gap: people who would happily rate the wallet never do,
because nothing ever asks. Play's in-app card asks without sending them to the store.
Play answers neither "has this user rated" nor "what did they choose" — by design. It
also throttles to a handful of showings a year and silently drops the rest. So the gates
in AppReviewTracker are not there to avoid nagging, which Play already handles; they
exist to spend those few real chances well: three successful operations, three days
since first use, ninety since the last ask, and not within two days of an error.
Recording sits in RealExtrinsicService, the single point every on-chain action passes
through, so transfers and staking are covered without a hook per screen. The tracker
swallows everything it touches — a rating counter must never be able to fail a transfer.
Both features no-op outside a Play install, so neither can be verified from a Firebase
build; that needs an internal testing track.
Version 1.2.0.
- Add 16KB page size alignment for native Rust libraries (Google Play requirement)
- Make Play Store workflow parametric (track/status as inputs)
- Update release notes for all languages (en, tr, ku)
- Add .gitignore entries for node_modules and version.properties
- Switch from assembleReleaseMarket (APK) to bundleReleaseMarket (AAB)
Google Play requires AAB for new app submissions since August 2021
- Add bundle and mapping artifact uploads to reusable build workflow
- Fix mapping file path: release → releaseMarket
- Remove debugSymbols (not included in build artifact)
- Remove userFraction (incompatible with draft status)
- Remove whatsnew-ku (Play Store does not support Kurdish locale)
- Add if-no-files-found: ignore to APK upload for bundle-only builds