Skip to content

Play Store readiness: applicationId rename, adaptive-icon fix, store docs#25

Merged
HarryCordewener merged 8 commits into
masterfrom
chore/play-store-readiness
Jul 6, 2026
Merged

Play Store readiness: applicationId rename, adaptive-icon fix, store docs#25
HarryCordewener merged 8 commits into
masterfrom
chore/play-store-readiness

Conversation

@HarryCordewener

Copy link
Copy Markdown
Member

Prep for the first Google Play upload. No behavioral/runtime changes to the client — packaging identity, the launcher icon, and store paperwork.

Changes

chore(android) — applicationId + adaptive icon

  • applicationId com.sharpmush.sharpclient.appcom.sharpmush.sharpclient. The permanent Play identity, fixed before first upload. [Service] Name + manifest android:name updated in lock-step (the merger keys on the name to attach foregroundServiceType).
    • ⚠️ Obtainium: this is a different package from prior …​.app builds — existing sideload installs won't update in place; they'll be a separate app.
  • Adaptive icon: ForegroundScale="0.65" (stock MAUI/Google value). The logo SVG fills its whole viewport and MAUI doesn't inset the foreground automatically, so launcher masks were cropping the M's peaks/legs.

docs(store) — Play submission assets

  • play-listing-icon-512.png (512×512 hi-res icon)
  • privacy-policy.md — accurate to real storage (passwords in Keystore secure store; config/transcripts in local SQLite; allowBackup=false; cleartext-telnet disclosed; nothing sent to us)
  • play-data-safety.md — Data Safety form answers + rationale + caution flag
  • release-checklist.md — end-to-end sequence to ship

Verification

  • Android head builds clean in Release (net10.0-android, TreatWarningsAsErrors).
  • Icon inset verified against build output: generated mipmap foreground insets to 0.653; the whole M survives circle / squircle / rounded-square masks.
  • Gotcha found: the resizetizer caches the icon — ForegroundScale only regenerates after a clean build. CI (fresh checkout) is unaffected; local devs need dotnet clean or to clear obj/.../resizetizer.

Not included (needs human action — see docs/store/release-checklist.md)

  • Keystore generation + the 4 ANDROID_* repo secrets (required before any signed release).
  • First version tag (recommend v0.1.0) — held pending secrets + your go-ahead.
  • Play Console account, feature graphic (1024×500), screenshots, content rating.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp

HarryCordewener and others added 2 commits July 6, 2026 12:36
…zone

Two Play-Store-readiness changes to the Android head, both in the app csproj
plus the two keep-alive service references that must stay in lock-step.

* ApplicationId: com.sharpmush.sharpclient.app -> com.sharpmush.sharpclient.
  This is the app's permanent Play identity, so it is fixed before the first
  upload. The [Service] Name and the AndroidManifest <service android:name>
  are updated to match (the manifest merger keys on the name to attach
  foregroundServiceType; a mismatch emits two services and startForeground
  throws). NOTE: this is a different package from prior Obtainium builds
  (…​.app), so existing installs will not update in place.

* Adaptive icon: add ForegroundScale="0.65" (the stock MAUI/Google template
  value). The logo SVG fills its whole viewport, and MAUI does not inset the
  foreground for the adaptive safe zone automatically, so the launcher mask was
  cropping the M's peaks and outer legs. 0.65 shrinks + centers the foreground
  into the safe zone. Verified against the Release build output: the generated
  mipmap foreground insets to 0.653 and the whole M survives circle / squircle /
  rounded-square masks. (Resizetizer caches aggressively — the change only
  regenerates after a clean build; CI's fresh checkout is unaffected.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
Adds docs/store/ with everything needed for the first Play submission:

* play-listing-icon-512.png — 512x512 hi-res listing icon (opaque square,
  dark M on brand-green, scaled to match the launcher icon).
* privacy-policy.md — accurate to actual storage: saved passwords in the
  OS Keystore-backed secure store, world/character config + transcripts in a
  local SQLite DB, local-only diagnostic logs, allowBackup=false, and an
  explicit cleartext-telnet disclosure. Collects/transmits nothing to us.
* play-data-safety.md — Data Safety form answers (recommends "no data
  collected/shared" with the user-directed-server rationale) plus a caution
  flag and privacy-policy-hosting options.
* release-checklist.md — end-to-end sequence (keystore/secrets -> tag ->
  Play Console), noting what is already done in-repo vs. what needs a human.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
Copilot AI review requested due to automatic review settings July 6, 2026 17:37

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Prepares SharpClient for its first Google Play submission by finalizing the Android package identity, fixing adaptive icon foreground insets, and adding Play Store submission documentation/assets.

Changes:

  • Renamed the Android ApplicationId to the permanent Play identity and updated the foreground-service android:name to match.
  • Adjusted the adaptive launcher icon foreground via ForegroundScale="0.65" to avoid mask cropping.
  • Added Play Store documentation (release checklist, privacy policy, data safety notes) and the 512×512 listing icon.

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/SharpClient.App/SharpClient.App.csproj Updates Android ApplicationId and adds adaptive icon ForegroundScale for correct launcher masking.
src/SharpClient.App/Platforms/Android/ConnectionKeepAliveService.cs Updates the pinned service Name to match the new ApplicationId.
src/SharpClient.App/Platforms/Android/AndroidManifest.xml Updates the service android:name to stay in sync with the renamed package identity.
docs/store/release-checklist.md Adds an end-to-end Play release checklist and signing/versioning guidance.
docs/store/privacy-policy.md Adds a Play-ready privacy policy describing on-device storage and network behavior.
docs/store/play-data-safety.md Adds Data Safety form guidance and rationale for Play Console submission.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/store/privacy-policy.md Outdated
Comment thread docs/store/release-checklist.md Outdated
HarryCordewener and others added 6 commits July 6, 2026 12:49
…e line

The GitHub/Obtainium releases run v0.1..v1.3; v1.3 shipped versionName 1.3 /
versionCode 100030000 (tag-derived in release-apk.yml). Update the stale csproj
baseline (template 1.0/1) to 1.3 / 100030000 so untagged/dev builds report the
real current version, and fix the release checklist to continue the line at
v1.4 (-> 100040000) instead of a v0.x reset that would derive a lower code.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
Terminal-style feature graphic (option B): green SharpMUSH M on near-black,
"> connect any MUD or MUSH" with a block cursor at the end of the line, and a
feature strip (telnet · triggers · aliases · reconnect). Built from the real M
mark and the app's own brand fonts (Space Grotesk wordmark, JetBrains Mono).
Checklist updated to point at the asset.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
Clean start on com.sharpmush.sharpclient (no users yet), so remove the
migration cruft: strip the "renamed from …app" note and the "…app builds users
already have" version rationale, reframing the version note around the GitHub
release-tag line (continue at v1.4). Also resolve the Copilot-flagged
contradiction in the privacy summary — "transmit" wrongly implied we never send
your input anywhere, so scope it to us/third parties (the app still sends your
input to the game server you pick).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
release-apk.yml overrides ApplicationDisplayVersion/ApplicationVersion from the
tag on every release, so hardcoding 1.3/100030000 was dead config that only
added a second, drift-prone version source and made local/dev builds falsely
report a real release version. Restore the neutral 1.0/1 dev placeholders and
document that the tag is authoritative and these must not be bumped per release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
Cut the multi-line version and ForegroundScale notes down to a single line
apiece; the detail belongs in the PR/docs, not strewn through the project file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp
@HarryCordewener
HarryCordewener merged commit a32b684 into master Jul 6, 2026
2 checks passed
@HarryCordewener
HarryCordewener deleted the chore/play-store-readiness branch July 6, 2026 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants