cn1:metadata-push goal + App Store submission developer-guide chapter#5353
cn1:metadata-push goal + App Store submission developer-guide chapter#5353shai-almog wants to merge 7 commits into
Conversation
…pter
Metadata-as-code client tooling for the Codename One build cloud's automated
app-store submission.
- MetadataPushMojo (goal cn1:metadata-push): reads a cn1-metadata/{apple,google}/
<locale>/*.txt + screenshots/<type>/*.png folder, builds the store listing
descriptor, authenticates with the cached Codename One login token, and PUTs it
(plus uploads screenshots) to the build cloud, which applies it to App Store
Connect / Google Play at submission. Store text files map to each store's fields;
unset files are left unchanged. -Dstore=apple|google|both, -DmetadataDir,
-Dpackage overrides; bundle id defaults to codename1.packageName.
- docs/developer-guide: new App-Store-Submission.asciidoc chapter covering the
end-to-end submission flow (console single-click submit, beta vs production,
Mac App Store, review status), credentials, plan tiers/quotas, and the
metadata-as-code workflow (folder layout, cn1:metadata-push, apply timing,
transient screenshots, benefits vs manual). Registered after the macOS chapter.
Server side: BuildCloud feature/submission-hardening (machine bearer-JWT endpoint
under /appsec/7.0/metadata).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…int) The developer-guide snippet validator requires every [source,LANG] block to be include-backed from docs/demos. The illustrative mvn command block is not a demo-backed snippet, so use a plain [source] listing (no language) -- the same form the metadata folder-layout block in this chapter already uses. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The developer guide describes how the feature works, not commercial terms: remove the paid-feature paragraph and the plans/quotas table, and the remaining plan-tier clauses (notification gating, metadata update quota, 'plan limits'). Also drop fastlane references from the chapter and the mojo javadoc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cloudflare Preview
|
- MetadataInitMojo (goal cn1:metadata-init): scaffolds cn1-metadata/ with an empty template of per-locale field files, a screenshots folder, and a README. Idempotent (creates only what's missing). Documented in the App Store Submission guide chapter. - Pricing page: automated-submission feature bullets per tier (Basic beta + metadata as code; Pro production + review tracking + 50/mo; Enterprise unlimited + zero-touch). - Pricing FAQ: clarify that manual submission is always unlimited and free on any plan; the limits apply only to the optional automated submission feature. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Developer Guide build artifacts are available for download from this workflow run:
Developer Guide quality checks: |
✅ Continuous Quality ReportTest & Coverage
Static Analysis
Generated automatically by the PR CI workflow. |
|
Compared 144 screenshots: 144 matched. Native Android coverage
✅ Native Android screenshot tests passed. Native Android coverage
Benchmark ResultsDetailed Performance Metrics
|
|
Compared 135 screenshots: 135 matched. |
Use contractions (Microsoft.Contractions), drop 'and so on' and the flagged adverbs, use American 'afterward', and avoid non-dictionary words (diffable/ revertable) and a false-positive 'the what's-new'. Verified locally: Vale 0/0/0, LanguageTool 0 matches, snippet validator clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Compared 142 screenshots: 142 matched. Benchmark Results
Detailed Performance Metrics
|
|
Compared 216 screenshots: 216 matched. |
|
Compared 139 screenshots: 139 matched. |
|
Compared 143 screenshots: 143 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
|
Compared 137 screenshots: 137 matched. Benchmark Results
Build and Run Timing
Detailed Performance Metrics
|
…e Android Broaden the submission chapter into "App Store Submission and Deployment": one place to reach users on the App Store, Mac App Store, Google Play, Huawei AppGallery, and Android markets beyond Google Play. - Document Huawei AppGallery submission (credentials, the console button, beta-draft vs production-review). - New "Reaching Android users beyond Google Play" section: per-store distribution-channel packages with the channel id readable via a Codename One API (no third-party SDK), each signed with the app's key. Google Play always receives the standard, unmodified AAB, so channel packaging never touches the Play artifact and can't be challenged by Google. - Pricing card: multi-store / reach-beyond-Google-Play bullet. Verified: Vale 0/0/0, LanguageTool 0 matches, snippet validator clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Completes the client tier of multi-store Android distribution: the Android port
reads the channel id the build server's channel packages stamp into the APK
Signing Block (BuildDaemon ApkChannelWriter) and exposes it via
Display.getProperty("DistributionChannel") -- so apps report their install source
with no third-party channel SDK.
- AndroidImplementation.getProperty: new "DistributionChannel"/"cn1.channel" keys.
- Reader mirrors the daemon writer's signing-block walk (same CN1 channel pair id),
reads once from the running APK (getApplicationInfo().sourceDir) and caches it;
returns the default (empty) for a normal Google Play build.
- Guide: document the concrete API call.
Doc gates green (Vale 0/0/0, LanguageTool 0, snippets clean). Server: BuildCloud
#89; daemon writer: BuildDaemon #149.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Client-side tooling + docs for the build cloud's automated app-store submission (server side: BuildCloud
feature/submission-hardening).cn1:metadata-pushgoalLets developers manage store release metadata as code. It reads a
cn1-metadata/{apple,google}/<locale>/*.txt+screenshots/<type>/*.pngfolder (one file per listing field), builds the descriptor, authenticates with the cached Codename One login token (same account the build uses), and PUTs it — plus uploads screenshots — to the build cloud, which applies it to App Store Connect / Google Play at submission time.mvn cn1:metadata-push # both stores from cn1-metadata/ mvn cn1:metadata-push -Dstore=applesubtitle.txt→ App Store subtitle / Google short description); unset files leave the store's value unchanged.codename1.packageName./appsec/7.0/metadata) is secured by the same bearer chain the build API uses.HttpURLConnection+ hand-rolled JSON/multipart (no new plugin deps).cn1:metadata-initscaffoldmvn cn1:metadata-initscaffolds thecn1-metadatafolder (empty field-file template + screenshots folder + README), idempotently, so developers don't hand-create the layout.Developer guide + website
docs/developer-guide/App-Store-Submission.asciidoc(new, registered after the macOS chapter): end-to-end submission flow (console submit, beta vs production, Mac App Store, review status), credentials, and the metadata-as-code workflow (scaffold, folder layout,cn1:metadata-push, apply timing, transient screenshots). No pricing/plan content (that lives on the pricing page).🤖 Generated with Claude Code