Skip to content

feat(release): publish Play production to the Solana dApp Store - #1807

Open
bmc08gt wants to merge 1 commit into
code/cashfrom
feat/dapp-store-publishing
Open

bmc08gt wants to merge 1 commit into
code/cashfrom
feat/dapp-store-publishing

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Brings back dApp Store publishing, which went out with the FC Legacy cleanup, rebuilt for @solana-mobile/dapp-store-cli 1.0.1. The 0.11 setup published through config.yaml and publish update; 1.0.1 drops all of that for one command that takes an APK and release notes, with catalog metadata kept in the publisher portal. So config.yaml stays deleted.

When it runs. dapp-store-publish.yml triggers on a push to code/cash that touches .well-known/release-manifest.json, which bump-patch.yml already pushes. It publishes only when tracks.production.versionCode is ahead of the new dappStore.versionCode, then commits the new dappStore entry back. workflow_dispatch with force reruns a publish. No reviewer gate.

Which APK. download-play-universal-apk.sh downloads the universal APK Play generated through generatedApks, signed with the Play app signing key, along with that release's production notes. Both stores get the same bytes and certificate, and the notes become --whats-new. If Play returns more than one signing certificate, set CERT_SHA256 to choose one. The script logs which one it used.

Drift. update-release-manifest.sh keeps dappStore across rewrites and emits dapp_behind plus a warning when production moves ahead of it. The JWT minting it had inline now lives in scripts/lib/play-api.sh, which the download script also uses.

Also fixes download_from_playstore_flipcash, which still pointed at com.flipcash.android.app.

Before merging. The manifest has no dappStore entry yet, so the first manifest push after merge tries to publish production (2026.10.3, 4875). That fails unless the dapp-store environment has DAPP_STORE_API_KEY and DAPP_STORE_KEYPAIR_JSON (base64), and com.flipcash.app.android already exists in the portal with its App NFT. The service account also needs the Play permission that covers generatedApks.

Plan: docs/superpowers/plans/2026-10-19-dapp-store-publishing.md.

The dApp Store publishing setup went out with the FC Legacy cleanup, and the
config-driven CLI it used (0.11, `publish update` against config.yaml) no longer
exists. dapp-store-cli 1.0.1 is a single portal-backed command that takes an APK
and release notes; catalog metadata now lives in the publisher portal.

- dapp-store-publish.yml runs when the release manifest changes on code/cash and
  production's versionCode is ahead of the new `dappStore.versionCode` entry.
  workflow_dispatch with `force` reruns it.
- download-play-universal-apk.sh fetches the universal APK Play generated and
  signed with the app signing key, plus that release's notes, so both stores
  ship the same bytes under the same certificate.
- dapp-store-publish.sh runs the CLI pinned in dapp_publishing/ and records the
  published versionCode in the manifest.
- update-release-manifest.sh keeps `dappStore` across rewrites and warns when the
  dApp Store is behind production. Token minting moves to scripts/lib/play-api.sh.
- download_from_playstore_flipcash used the old package name,
  com.flipcash.android.app.
@bmc08gt
bmc08gt requested a review from jeffyanta as a code owner October 20, 2026 00:26
@bmc08gt bmc08gt self-assigned this Oct 20, 2026
@github-actions github-actions Bot added the type: feature New functionality label Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant