Play Store readiness: applicationId rename, adaptive-icon fix, store docs#25
Merged
Conversation
…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
There was a problem hiding this comment.
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
ApplicationIdto the permanent Play identity and updated the foreground-serviceandroid:nameto 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.
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 iconcom.sharpmush.sharpclient.app→com.sharpmush.sharpclient. The permanent Play identity, fixed before first upload.[Service] Name+ manifestandroid:nameupdated in lock-step (the merger keys on the name to attachforegroundServiceType).….appbuilds — existing sideload installs won't update in place; they'll be a separate app.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 assetsplay-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 flagrelease-checklist.md— end-to-end sequence to shipVerification
net10.0-android,TreatWarningsAsErrors).ForegroundScaleonly regenerates after a clean build. CI (fresh checkout) is unaffected; local devs needdotnet cleanor to clearobj/.../resizetizer.Not included (needs human action — see
docs/store/release-checklist.md)ANDROID_*repo secrets (required before any signed release).v0.1.0) — held pending secrets + your go-ahead.🤖 Generated with Claude Code
https://claude.ai/code/session_01HHCRc5CJ6595iMzEgYYdQp