@daemux/store-automator 0.10.64 → 0.10.66

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,14 +5,14 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "App Store & Google Play automation for Flutter apps",
8
- "version": "0.10.64"
8
+ "version": "0.10.66"
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.64",
15
+ "version": "0.10.66",
16
16
  "keywords": [
17
17
  "flutter",
18
18
  "app-store",
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @daemux/store-automator
2
2
 
3
- Full App Store & Google Play automation for Flutter apps with Claude Code agents.
3
+ Full App Store & Google Play automation for Flutter apps and native iOS (Swift/SwiftUI) apps with Claude Code agents.
4
4
 
5
5
  ## What It Does
6
6
 
@@ -16,7 +16,13 @@ Plus CI/CD templates for GitHub Actions, Fastlane, web pages, and scripts.
16
16
 
17
17
  - [Claude CLI](https://docs.anthropic.com/en/docs/claude-code/overview) installed
18
18
  - Node.js >= 18
19
- - Flutter project
19
+ - A Flutter project **or** a native iOS (Swift/SwiftUI) Xcode project
20
+
21
+ Project-type-specific templates:
22
+ - Flutter iOS/Android: `templates/github/workflows/ios-release.yml` + `android-release.yml`
23
+ - Native iOS: `templates/github/workflows/ios-native-release.yml` (uses the
24
+ `daemux/daemux-plugins/.github/actions/ios-native-testflight` composite
25
+ action — requires only ASC API key secrets, no Fastlane/Match setup)
20
26
 
21
27
  ## Installation
22
28
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daemux/store-automator",
3
- "version": "0.10.64",
3
+ "version": "0.10.66",
4
4
  "description": "Full App Store & Google Play automation for Flutter apps with Claude Code agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "store-automator",
3
- "version": "0.10.64",
3
+ "version": "0.10.66",
4
4
  "description": "App Store & Google Play automation agents for Flutter app publishing",
5
5
  "author": {
6
6
  "name": "Daemux"
@@ -18,7 +18,7 @@ hooks:
18
18
 
19
19
  # DevOps Agent
20
20
 
21
- Handles GitHub Actions CI/CD, Firebase deployment, Cloudflare Pages deployment, and Firestore management for Flutter mobile apps.
21
+ Handles GitHub Actions CI/CD, Firebase deployment, Cloudflare Pages deployment, and Firestore management for Flutter mobile apps and for native iOS (Swift/SwiftUI) apps that deploy via the `ios-native-testflight` composite action.
22
22
 
23
23
  ## Parameters (REQUIRED)
24
24
 
@@ -41,7 +41,10 @@ Monitor and manage GitHub Actions CI/CD builds for iOS and Android. NEVER skip o
41
41
 
42
42
  GitHub Actions runs two parallel workflows on push to `main`:
43
43
 
44
- **iOS Release** (`.github/workflows/ios-release.yml`): Upload metadata + screenshots -> Build IPA -> Code signing -> Deploy to App Store Connect -> Sync IAP
44
+ **iOS Release** - two variants depending on project type:
45
+ - Flutter: `.github/workflows/ios-release.yml` — Upload metadata + screenshots -> Build IPA -> Code signing (Fastlane Match) -> Deploy to App Store Connect -> Sync IAP
46
+ - Native iOS: `.github/workflows/ios-native-release.yml` — Run simulator tests (PR + main) -> Archive -> Sign via on-the-fly ASC-API cert/profile -> Upload to TestFlight via `altool` (main only)
47
+
45
48
  **Android Release** (`.github/workflows/android-release.yml`): Upload metadata + screenshots -> Check Google Play readiness -> Build AAB -> Keystore signing -> Deploy to Google Play -> Sync IAP
46
49
 
47
50
  ### Triggering Builds
@@ -70,9 +73,9 @@ gh run watch <run-id>
70
73
 
71
74
  When a build fails:
72
75
  1. Read the full build log: `gh run view <run-id> --log-failed`
73
- 2. Identify the failing step (Flutter analyze, test, build, signing, upload)
76
+ 2. Identify the failing step (Flutter analyze / Swift build, test, signing, upload)
74
77
  3. Categorize the failure:
75
- - **Code issue**: Flutter analyze errors, test failures -> coordinate fix with developer
78
+ - **Code issue**: Flutter analyze errors, Swift build errors, test failures -> coordinate fix with developer
76
79
  - **Signing issue**: Certificate expired, profile mismatch -> check `creds/` and `ci.config.yaml`
77
80
  - **Store issue**: App Store rejection, metadata error -> check `fastlane/metadata/`
78
81
  - **Infrastructure issue**: Timeout, dependency install failure -> retry or adjust config
@@ -1,26 +1,50 @@
1
1
  name: iOS Deploy
2
2
 
3
- # Native-Swift iOS release pipeline. Archives the app and uploads it to
4
- # TestFlight via the App Store Connect API.
3
+ # Native-Swift iOS release pipeline. On PRs and non-main branches, runs the
4
+ # simulator test suite (build-only, no signing). On push to main, runs tests,
5
+ # archives the app, and uploads to TestFlight via the App Store Connect API.
5
6
  #
6
- # Required repository secrets:
7
+ # Required repository secrets (for upload, main branch only):
7
8
  # ASC_KEY_ID App Store Connect API key id (e.g. "5NBDY6YXJ6")
8
9
  # ASC_ISSUER_ID App Store Connect API issuer id (uuid)
9
10
  # ASC_KEY_P8 Full contents of the AuthKey_*.p8 file
10
11
  #
11
- # Edit the `with:` block below to match your project.
12
+ # Edit the `with:` blocks below to match your project.
12
13
 
13
14
  on:
14
15
  push:
15
16
  branches: [main]
17
+ pull_request:
18
+ branches: [main]
16
19
  workflow_dispatch:
17
20
 
18
21
  concurrency:
19
- group: ios-deploy-${{ github.ref }}
22
+ group: ios-${{ github.workflow }}-${{ github.ref }}
20
23
  cancel-in-progress: false
21
24
 
22
25
  jobs:
26
+ # PRs and non-main pushes: build + test only, no signing or upload.
27
+ build-and-test:
28
+ if: ${{ github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref != 'refs/heads/main') }}
29
+ runs-on: macos-latest
30
+ timeout-minutes: 45
31
+ steps:
32
+ - uses: actions/checkout@v4
33
+
34
+ - uses: daemux/daemux-plugins/.github/actions/ios-native-testflight@main
35
+ with:
36
+ project: MyApp.xcodeproj
37
+ scheme: MyApp
38
+ bundle-id: com.example.myapp
39
+ team-id: ABCDE12345
40
+ app-store-apple-id: "1234567890"
41
+ run-tests: "true"
42
+ archive: "false"
43
+ upload: "false"
44
+
45
+ # Main branch: test + archive + upload to TestFlight.
23
46
  deploy:
47
+ if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main') }}
24
48
  runs-on: macos-latest
25
49
  timeout-minutes: 60
26
50
  steps:
@@ -33,6 +57,9 @@ jobs:
33
57
  bundle-id: com.example.myapp
34
58
  team-id: ABCDE12345
35
59
  app-store-apple-id: "1234567890"
60
+ run-tests: "true"
61
+ archive: "true"
62
+ upload: "true"
36
63
  env:
37
64
  ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
38
65
  ASC_ISSUER_ID: ${{ secrets.ASC_ISSUER_ID }}