@daemux/store-automator 0.10.56 → 0.10.58

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.
@@ -5,15 +5,20 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "App Store & Google Play automation for Flutter apps",
8
- "version": "0.10.37"
8
+ "version": "0.10.58"
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.37",
16
- "keywords": ["flutter", "app-store", "google-play", "fastlane"]
15
+ "version": "0.10.58",
16
+ "keywords": [
17
+ "flutter",
18
+ "app-store",
19
+ "google-play",
20
+ "fastlane"
21
+ ]
17
22
  }
18
23
  ]
19
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daemux/store-automator",
3
- "version": "0.10.56",
3
+ "version": "0.10.58",
4
4
  "description": "Full App Store & Google Play automation for Flutter apps with Claude Code agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "store-automator",
3
- "version": "0.10.54",
3
+ "version": "0.10.58",
4
4
  "description": "App Store & Google Play automation agents for Flutter app publishing",
5
5
  "author": {
6
6
  "name": "Daemux"
7
7
  },
8
- "keywords": ["flutter", "app-store", "google-play", "fastlane", "screenshots", "metadata"]
8
+ "keywords": [
9
+ "flutter",
10
+ "app-store",
11
+ "google-play",
12
+ "fastlane",
13
+ "screenshots",
14
+ "metadata"
15
+ ]
9
16
  }
@@ -58,6 +58,17 @@ IAP and subscription configuration. Durations: ONE_WEEK to ONE_YEAR. Intro offer
58
58
  ### fastlane/screenshots/
59
59
  Store screenshots by platform and device size. Generated by app-designer via Stitch MCP.
60
60
 
61
+ ### New App Setup (One-Time)
62
+ Before the first CI run for a new iOS app, create the app record locally:
63
+
64
+ ```bash
65
+ cd fastlane/ios
66
+ APPLE_ID="your@email.com" BUNDLE_ID="com.your.app" APP_NAME="Your App" \
67
+ bundle exec fastlane create_app_ios
68
+ ```
69
+
70
+ This requires Apple ID + 2FA (cannot be automated in CI). After creation, all subsequent operations are fully automated via API key.
71
+
61
72
  ### App Privacy Setup
62
73
  App Privacy declarations must be set before the first app submission.
63
74
 
@@ -67,6 +78,13 @@ App Privacy declarations must be set before the first app submission.
67
78
  3. Requires Apple ID auth (set APPLE_ID and APPLE_TEAM_NAME env vars)
68
79
  4. Privacy declarations persist across app updates (one-time setup)
69
80
 
81
+ Also upload App Privacy declarations after creating the app:
82
+ ```bash
83
+ cd fastlane/ios
84
+ APPLE_ID="your@email.com" BUNDLE_ID="com.your.app" \
85
+ bundle exec fastlane upload_privacy_ios
86
+ ```
87
+
70
88
  **Manual:**
71
89
  Go to App Store Connect > Your App > App Privacy and fill out the form.
72
90
 
@@ -300,7 +318,7 @@ app-designer designs marketing page in Stitch MCP. Develop web pages. Deploy via
300
318
  Create .gitignore (.claude/.tasks/, Flutter ignores; do NOT ignore *.g.dart). Push to private repo. GitHub Actions auto-triggers on push.
301
319
 
302
320
  ### Phase 6: First Publish
303
- iOS: fully automated. Android: first build creates AAB + manual steps guide; subsequent builds fully automated.
321
+ iOS: create app record locally first (`fastlane create_app_ios` + `upload_privacy_ios`, see "New App Setup" above), then CI is fully automated. Android: first build creates AAB + manual steps guide; subsequent builds fully automated.
304
322
 
305
323
  ### Phase 7: Ongoing Updates
306
324
  Push to main. GitHub Actions detects changes and uploads modified assets. Version auto-incremented.
@@ -127,4 +127,17 @@ platform :ios do
127
127
  json_path: "#{ROOT_DIR}/fastlane/app_privacy_details.json"
128
128
  )
129
129
  end
130
+
131
+ # NOTE: produce requires Apple ID auth (not API key). Run locally for new apps.
132
+ lane :create_app_ios do
133
+ produce(
134
+ username: ENV.fetch("APPLE_ID", ""),
135
+ team_name: ENV.fetch("APPLE_TEAM_NAME", ""),
136
+ app_identifier: ENV["BUNDLE_ID"],
137
+ app_name: ENV.fetch("APP_NAME", ""),
138
+ sku: ENV.fetch("SKU", ENV["BUNDLE_ID"]),
139
+ language: ENV.fetch("PRIMARY_LOCALE", "en-US"),
140
+ enable_services: {}
141
+ )
142
+ end
130
143
  end
@@ -157,6 +157,7 @@ jobs:
157
157
  submit:
158
158
  name: Submit iOS for Review
159
159
  needs: [build]
160
+ if: false
160
161
  runs-on: macos-latest
161
162
  timeout-minutes: 45
162
163
  steps:
@@ -177,6 +177,14 @@ def create_app_record(
177
177
  return existing
178
178
  print("ERROR: App creation returned 409 but app not found.", file=sys.stderr)
179
179
  sys.exit(1)
180
+ if resp.status_code == 403:
181
+ print("App creation is not available via the ASC REST API.")
182
+ print("Create the app using fastlane (requires Apple ID + 2FA):")
183
+ print(f' APPLE_ID="your@email.com" BUNDLE_ID="{bundle_id}" APP_NAME="{app_name}" SKU="{sku}" \\')
184
+ print(' bundle exec fastlane create_app_ios')
185
+ print("")
186
+ print("Or create the app manually at https://appstoreconnect.apple.com")
187
+ sys.exit(1)
180
188
  if not resp.ok:
181
189
  print_api_errors(resp, "create app record")
182
190
  sys.exit(1)