@daemux/store-automator 0.10.20 → 0.10.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/README.md +1 -1
- package/package.json +1 -1
- package/plugins/store-automator/.claude-plugin/plugin.json +1 -1
- package/plugins/store-automator/agents/devops.md +5 -5
- package/templates/CLAUDE.md.template +1 -1
- package/templates/ci.config.yaml.template +1 -1
- package/templates/scripts/ci/android/upload-metadata.sh +28 -14
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "App Store & Google Play automation for Flutter apps",
|
|
8
|
-
"version": "0.10.
|
|
8
|
+
"version": "0.10.22"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "store-automator",
|
|
13
13
|
"source": "./plugins/store-automator",
|
|
14
14
|
"description": "3 agents for app store publishing: reviewer, meta-creator, media-designer",
|
|
15
|
-
"version": "0.10.
|
|
15
|
+
"version": "0.10.22",
|
|
16
16
|
"keywords": [
|
|
17
17
|
"flutter",
|
|
18
18
|
"app-store",
|
package/README.md
CHANGED
|
@@ -168,7 +168,7 @@ npx @daemux/store-automator \
|
|
|
168
168
|
--track=internal \
|
|
169
169
|
--rollout-fraction=1.0 \
|
|
170
170
|
--in-app-update-priority=3 \
|
|
171
|
-
--domain=amazingapp-pages.workers.dev \
|
|
171
|
+
--domain=amazingapp-pages.account-subdomain.workers.dev \
|
|
172
172
|
--cf-project-name=amazingapp-pages \
|
|
173
173
|
--tagline="The best utility app ever" \
|
|
174
174
|
--primary-color="#2563EB" \
|
package/package.json
CHANGED
|
@@ -220,10 +220,10 @@ Set via environment variables or `.mcp.json`:
|
|
|
220
220
|
After deployment:
|
|
221
221
|
1. Check the output URL is accessible
|
|
222
222
|
2. Verify each page loads correctly:
|
|
223
|
-
- `https://<project>.workers.dev/marketing.html`
|
|
224
|
-
- `https://<project>.workers.dev/privacy.html`
|
|
225
|
-
- `https://<project>.workers.dev/terms.html`
|
|
226
|
-
- `https://<project>.workers.dev/support.html`
|
|
223
|
+
- `https://<project>.<account-subdomain>.workers.dev/marketing.html`
|
|
224
|
+
- `https://<project>.<account-subdomain>.workers.dev/privacy.html`
|
|
225
|
+
- `https://<project>.<account-subdomain>.workers.dev/terms.html`
|
|
226
|
+
- `https://<project>.<account-subdomain>.workers.dev/support.html`
|
|
227
227
|
3. Confirm template variables were replaced (no `${VAR}` in output)
|
|
228
228
|
4. Update store metadata URLs if this is the first deployment:
|
|
229
229
|
- `fastlane/metadata/ios/{locale}/privacy_url.txt`
|
|
@@ -237,7 +237,7 @@ OPERATION: Deploy Cloudflare Pages
|
|
|
237
237
|
PROJECT: [cloudflare-project-name]
|
|
238
238
|
RESULT: Success | Failed
|
|
239
239
|
URL: [deployment-url]
|
|
240
|
-
PRODUCTION: https://[project].workers.dev
|
|
240
|
+
PRODUCTION: https://[project].[account-subdomain].workers.dev
|
|
241
241
|
|
|
242
242
|
Pages deployed:
|
|
243
243
|
- [page]: [status]
|
|
@@ -260,7 +260,7 @@ Implement Flutter app matching designs. Set up Firebase. Fill ci.config.yaml. Ad
|
|
|
260
260
|
appstore-meta-creator generates texts. Fill fastlane/iap_config.json if needed.
|
|
261
261
|
|
|
262
262
|
### Phase 4: Web Pages + Deployment
|
|
263
|
-
app-designer designs marketing page in Stitch MCP. Develop web pages. Deploy via Cloudflare Pages (*.workers.dev domain sufficient).
|
|
263
|
+
app-designer designs marketing page in Stitch MCP. Develop web pages. Deploy via Cloudflare Pages (*.account-subdomain.workers.dev domain sufficient).
|
|
264
264
|
|
|
265
265
|
### Phase 5: Finalize and CI/CD
|
|
266
266
|
Create .gitignore (.claude/.tasks/, Flutter ignores; do NOT ignore *.g.dart). Push to private repo. GitHub Actions auto-triggers on push.
|
|
@@ -45,7 +45,7 @@ metadata:
|
|
|
45
45
|
|
|
46
46
|
# === WEB PAGES ===
|
|
47
47
|
web:
|
|
48
|
-
domain: "yourapp-pages.workers.dev" # *.workers.dev domain is sufficient, no custom DNS needed
|
|
48
|
+
domain: "yourapp-pages.account-subdomain.workers.dev" # *.workers.dev domain is sufficient, no custom DNS needed
|
|
49
49
|
cloudflare_project_name: "yourapp-pages"
|
|
50
50
|
tagline: "Your app tagline here"
|
|
51
51
|
primary_color: "#2563EB"
|
|
@@ -63,25 +63,39 @@ if [ $FASTLANE_EXIT -ne 0 ]; then
|
|
|
63
63
|
echo "::warning title=Google Play Draft App::First manual release required. See job summary for instructions."
|
|
64
64
|
if [ -n "${GITHUB_STEP_SUMMARY:-}" ]; then
|
|
65
65
|
cat >> "$GITHUB_STEP_SUMMARY" << 'SUMMARY'
|
|
66
|
-
## :warning: Google Play Draft App —
|
|
66
|
+
## :warning: Google Play Draft App — Closed Testing Required (Internal Testing Is NOT Enough)
|
|
67
67
|
|
|
68
|
-
Metadata and screenshots were uploaded by CI but **could not be saved** because the app
|
|
68
|
+
Metadata and screenshots were uploaded by CI but **could not be saved** because the app is still in **draft status**. This is a [Google Play API limitation](https://developers.google.com/android-publisher/edits) — all API edits are rejected until the app exits draft status.
|
|
69
|
+
|
|
70
|
+
**"Draft" is an app-level status**, not a release-level one. Internal testing bypasses Google review entirely, so it **cannot** transition your app out of draft. You must submit to **closed testing** (or higher) to trigger Google's review and remove draft status.
|
|
69
71
|
|
|
70
72
|
### One-time setup steps:
|
|
71
73
|
|
|
72
74
|
1. Go to [Google Play Console](https://play.google.com/console) → Select your app
|
|
73
|
-
2. **Dashboard** → Complete all required setup tasks
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
2. **Dashboard** → Complete **all** required setup tasks in the checklist:
|
|
76
|
+
- **Store listing** — app name, descriptions, screenshots, app icon, feature graphic
|
|
77
|
+
- *Copy-paste the values from the **Store Listing** table below, then re-run CI after setup to auto-upload future changes.*
|
|
78
|
+
- **App Content** declarations — **all** of the following:
|
|
79
|
+
- Privacy policy
|
|
80
|
+
- Data safety
|
|
81
|
+
- Content rating questionnaire
|
|
82
|
+
- Target audience and content
|
|
83
|
+
- Ads declaration
|
|
84
|
+
- App access (instructions if login required)
|
|
85
|
+
- Government apps declaration
|
|
86
|
+
- Financial features declaration (if applicable)
|
|
87
|
+
- Health apps (if applicable)
|
|
88
|
+
- **Pricing and distribution** — countries and free/paid
|
|
89
|
+
3. **Submit to Closed Testing** (not internal testing):
|
|
90
|
+
- Go to **Testing → Closed testing** → Create a track if needed → **Create new release**
|
|
91
|
+
- The AAB was already uploaded by CI — select it, add release notes
|
|
92
|
+
- Click **Review release** → **Start rollout to closed testing**
|
|
93
|
+
- This submits the app to **Google review**
|
|
94
|
+
4. **Wait for Google review approval** — typically 1-7 days for new apps
|
|
95
|
+
- :information_source: *New personal developer accounts (created after Nov 2023): Google requires **20+ testers** for **14+ continuous days** of closed testing before you can request production access.*
|
|
96
|
+
|
|
97
|
+
### After Google approves the review:
|
|
98
|
+
The app permanently exits draft status and all API operations (metadata, builds, screenshots) work automatically. Re-trigger the CI workflow after approval.
|
|
85
99
|
SUMMARY
|
|
86
100
|
|
|
87
101
|
# --- Append store listing table (read from metadata files) ---
|