optikit 1.2.5 → 1.3.0

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.
Files changed (104) hide show
  1. package/.claude/commands/build.md +57 -0
  2. package/.claude/commands/clean.md +45 -0
  3. package/.claude/commands/generate.md +64 -0
  4. package/.claude/commands/rollback.md +67 -0
  5. package/.claude/commands/run.md +63 -0
  6. package/.claude/commands/setup.md +69 -0
  7. package/.claude/commands/sync-docs.md +148 -0
  8. package/.claude/commands/version.md +63 -0
  9. package/.claude/settings.local.json +28 -0
  10. package/.claude-plugin/marketplace.json +36 -0
  11. package/.claude-plugin/plugin.json +25 -0
  12. package/.history/README_20260325211923.md +268 -0
  13. package/.history/README_20260325212116.md +268 -0
  14. package/.history/README_20260325212234.md +266 -0
  15. package/.history/README_20260325221838.md +321 -0
  16. package/.history/README_20260325221920.md +327 -0
  17. package/.history/README_20260325222245.md +328 -0
  18. package/.history/README_20260325222247.md +328 -0
  19. package/.mcp.json +8 -0
  20. package/CHANGELOG.md +67 -98
  21. package/CLAUDE.md +57 -206
  22. package/OPTIKIT_AGENT.md +398 -0
  23. package/README.md +293 -60
  24. package/dist/cli.js +75 -244
  25. package/dist/commands/build/commands.js +146 -0
  26. package/dist/commands/build/testflight.js +14 -0
  27. package/dist/commands/clean/commands.js +41 -0
  28. package/dist/commands/clean/flutter.js +8 -14
  29. package/dist/commands/clean/ios.js +12 -15
  30. package/dist/commands/config/aliases.js +122 -0
  31. package/dist/commands/config/commands.js +49 -0
  32. package/dist/commands/config/initApp.js +191 -0
  33. package/dist/commands/config/rollback.js +15 -4
  34. package/dist/commands/config/upgrade.js +36 -0
  35. package/dist/commands/mcp/commands.js +21 -0
  36. package/dist/commands/mcp/server.js +27 -0
  37. package/dist/commands/mcp/setup.js +62 -0
  38. package/dist/commands/mcp/tools.js +359 -0
  39. package/dist/commands/project/commands.js +132 -0
  40. package/dist/commands/project/devices.js +10 -26
  41. package/dist/commands/project/doctor.js +58 -0
  42. package/dist/commands/project/generate.js +183 -30
  43. package/dist/commands/project/setup.js +10 -28
  44. package/dist/commands/project/status.js +65 -0
  45. package/dist/commands/version/bump.js +75 -101
  46. package/dist/commands/version/commands.js +63 -0
  47. package/dist/commands/version/update.js +36 -24
  48. package/dist/constants.js +6 -1
  49. package/dist/styles.js +42 -5
  50. package/dist/utils/helpers/error.js +14 -0
  51. package/dist/utils/helpers/file.js +1 -1
  52. package/dist/utils/helpers/version.js +2 -1
  53. package/dist/utils/services/backup.js +12 -1
  54. package/dist/utils/services/command.js +1 -34
  55. package/dist/utils/services/exec.js +76 -101
  56. package/dist/utils/services/logger.js +10 -4
  57. package/dist/utils/validators/validation.js +24 -12
  58. package/docs/INSTALLATION.md +72 -0
  59. package/docs/TROUBLESHOOT.md +140 -0
  60. package/docs/USAGE.md +185 -0
  61. package/docs/VERSION_MANAGEMENT.md +177 -0
  62. package/package.json +7 -11
  63. package/src/cli.ts +82 -371
  64. package/src/commands/build/commands.ts +169 -0
  65. package/src/commands/build/testflight.ts +18 -0
  66. package/src/commands/clean/commands.ts +43 -0
  67. package/src/commands/clean/flutter.ts +9 -13
  68. package/src/commands/clean/ios.ts +13 -13
  69. package/src/commands/config/aliases.ts +150 -0
  70. package/src/commands/config/commands.ts +50 -0
  71. package/src/commands/config/initApp.ts +213 -0
  72. package/src/commands/config/rollback.ts +16 -4
  73. package/src/commands/config/upgrade.ts +40 -0
  74. package/src/commands/mcp/commands.ts +23 -0
  75. package/src/commands/mcp/server.ts +35 -0
  76. package/src/commands/mcp/setup.ts +69 -0
  77. package/src/commands/mcp/tools.ts +365 -0
  78. package/src/commands/project/commands.ts +132 -0
  79. package/src/commands/project/devices.ts +11 -24
  80. package/src/commands/project/doctor.ts +81 -0
  81. package/src/commands/project/generate.ts +211 -32
  82. package/src/commands/project/setup.ts +13 -30
  83. package/src/commands/project/status.ts +72 -0
  84. package/src/commands/version/bump.ts +98 -110
  85. package/src/commands/version/commands.ts +76 -0
  86. package/src/commands/version/update.ts +86 -75
  87. package/src/constants.ts +7 -1
  88. package/src/styles.ts +49 -7
  89. package/src/utils/helpers/error.ts +16 -0
  90. package/src/utils/helpers/file.ts +1 -1
  91. package/src/utils/helpers/version.ts +2 -1
  92. package/src/utils/services/backup.ts +17 -1
  93. package/src/utils/services/command.ts +1 -58
  94. package/src/utils/services/exec.ts +92 -117
  95. package/src/utils/services/logger.ts +12 -4
  96. package/src/utils/validators/validation.ts +24 -12
  97. package/CODE_QUALITY.md +0 -398
  98. package/ENHANCEMENTS.md +0 -310
  99. package/FEATURE_ENHANCEMENTS.md +0 -435
  100. package/INSTALLATION.md +0 -118
  101. package/SAFETY_FEATURES.md +0 -396
  102. package/TROUBLESHOOT.md +0 -60
  103. package/USAGE.md +0 -412
  104. package/VERSION_MANAGEMENT.md +0 -438
package/docs/USAGE.md ADDED
@@ -0,0 +1,185 @@
1
+ # 📖 Command Reference
2
+
3
+ > Use `optikit` or `ok` — both work identically. Run `optikit aliases` to see all shortcuts.
4
+
5
+ ---
6
+
7
+ ## 🏗️ Build
8
+
9
+ | Command | Alias | Description |
10
+ |---------|-------|-------------|
11
+ | `optikit flutter-build-apk` | `apk` | Build release APK |
12
+ | `optikit flutter-build-bundle` | `aab` | Build release AAB |
13
+ | `optikit flutter-build-ios` | `ios` | Build iOS app |
14
+ | `optikit flutter-build-ipa` | `ipa` | Build release IPA |
15
+ | `optikit testflight` | `tf` | Bump iOS build + build IPA |
16
+
17
+ ### ⚡ Combo Flags
18
+
19
+ Mix and match on any build command:
20
+
21
+ ```bash
22
+ optikit apk --clean # 🧹 Clean before building
23
+ optikit apk -o # 📂 Open output folder after build
24
+ optikit apk -b patch # 📦 Bump patch version before build
25
+ optikit apk -b minor -o # 📦 Bump minor + build + open
26
+ optikit ipa -i # 📱 Bump iOS build number before build
27
+ optikit ipa --clean -i -o # 🚀 Full workflow: clean → bump iOS → build → open
28
+ optikit tf -o # 🚀 TestFlight + open output
29
+ ```
30
+
31
+ | Flag | Short | Applies to |
32
+ |------|-------|-----------|
33
+ | `--clean` | | apk, aab, ios, ipa |
34
+ | `--open` | `-o` | apk, aab, ipa, tf |
35
+ | `--bump <type>` | `-b` | apk, aab, ios, ipa |
36
+ | `--bump-ios` | `-i` | ipa |
37
+ | `--disable-fvm` | `-f` | all |
38
+
39
+ ---
40
+
41
+ ## 🧹 Clean
42
+
43
+ | Command | Alias | Description |
44
+ |---------|-------|-------------|
45
+ | `optikit clean` | `c` | Clean Flutter project |
46
+ | `optikit clean-flutter` | `cf` | Clean Flutter (explicit) |
47
+ | `optikit clean-ios` | `ci` | Clean iOS / CocoaPods |
48
+
49
+ ```bash
50
+ optikit clean -a # Clean all (Flutter + iOS)
51
+ optikit clean -i # Clean Flutter + also iOS
52
+ optikit ci -c # Clean iOS + clear cache
53
+ optikit ci -u # Clean iOS + update repo
54
+ optikit ci -cu # Clean iOS + cache + repo update
55
+ ```
56
+
57
+ | Flag | Short | Command |
58
+ |------|-------|---------|
59
+ | `--all` | `-a` | clean |
60
+ | `--ios` | `-i` | clean |
61
+ | `--clean-cache` | `-c` | clean-ios |
62
+ | `--repo-update` | `-u` | clean-ios |
63
+ | `--disable-fvm` | `-f` | clean, clean-flutter |
64
+
65
+ ---
66
+
67
+ ## 📦 Version & Bump
68
+
69
+ | Command | Alias | Description |
70
+ |---------|-------|-------------|
71
+ | `optikit version` | `v` | Show current version info |
72
+ | `optikit bump patch` | | Bug fix: 1.0.0 → 1.0.1 |
73
+ | `optikit bump minor` | | Feature: 1.0.0 → 1.1.0 |
74
+ | `optikit bump major` | | Breaking: 1.0.0 → 2.0.0 |
75
+ | `optikit bump-ios` | `bi` | Bump iOS build only |
76
+ | `optikit bump-android` | `ba` | Bump Android build only |
77
+ | `optikit bump-build` | `bb` | Bump both build numbers |
78
+ | `optikit flutter-update-version` | `vset` | Set version manually |
79
+
80
+ ```bash
81
+ optikit vset --app-version 2.0.0 --android-build 10 --ios-build 1
82
+ ```
83
+
84
+ Add `-y` to skip confirmation: `optikit bump patch -y`
85
+
86
+ > 📘 Deep dive: **[Version Management](VERSION_MANAGEMENT.md)**
87
+
88
+ ---
89
+
90
+ ## 🧩 Generate
91
+
92
+ | Command | Alias | Description |
93
+ |---------|-------|-------------|
94
+ | `optikit generate module <name>` | `gen module` | Scaffold BLoC module |
95
+ | `optikit generate repo <name>` | `gen repo` | Generate repository file |
96
+ | `optikit add-route <name>` | `route` | Add route to app_router.dart |
97
+
98
+ ```bash
99
+ optikit gen module login -r # 🧩 Scaffold + register route
100
+ ```
101
+
102
+ Module creates: `bloc`, `event`, `state`, `screen`, `factory`, and `imports` files.
103
+
104
+ ---
105
+
106
+ ## 📱 Run & Devices
107
+
108
+ | Command | Alias | Description |
109
+ |---------|-------|-------------|
110
+ | `optikit run` | | Run app on connected device |
111
+ | `optikit run-select` | `rs` | Interactive device picker |
112
+ | `optikit devices` | `devs` | List connected devices |
113
+
114
+ ```bash
115
+ optikit run -r # Run in release mode
116
+ optikit run -d <id> # Run on specific device
117
+ optikit rs -r # Pick device + release mode
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 🔗 Open
123
+
124
+ | Command | Alias | Description |
125
+ |---------|-------|-------------|
126
+ | `optikit open-ios` | `xcode` | Open in Xcode |
127
+ | `optikit open-android` | `studio` | Open in Android Studio |
128
+ | `optikit open-ipa` | | Open IPA output folder |
129
+ | `optikit open-apk` | | Open APK output folder |
130
+ | `optikit open-bundle` | | Open AAB output folder |
131
+
132
+ > 💡 Use `optikit ipa -o` or `optikit apk -o` to build and open in one step.
133
+
134
+ ---
135
+
136
+ ## 🔧 Config & Tools
137
+
138
+ | Command | Alias | Description |
139
+ |---------|-------|-------------|
140
+ | `optikit init` | | Initialize OptiKit config |
141
+ | `optikit init-app` | | Scaffold Opticore app structure |
142
+ | `optikit setup-vscode` | `vscode` | Create VS Code Flutter settings |
143
+ | `optikit rollback` | `undo` | List/restore file backups |
144
+ | `optikit status` | `info` | Project status snapshot |
145
+ | `optikit doctor` | `dr` | Environment health check |
146
+ | `optikit upgrade` | `up` | Check for CLI updates |
147
+ | `optikit aliases` | | Show all aliases & shortcuts |
148
+
149
+ ```bash
150
+ optikit undo --restore 1 # Restore backup #1
151
+ optikit undo --before 2026-03-20 # Show backups before date
152
+ ```
153
+
154
+ ---
155
+
156
+ ## 🌐 Global Flags
157
+
158
+ | Flag | Short | Description |
159
+ |------|-------|-------------|
160
+ | `--dry-run` | | Preview without executing |
161
+ | `--disable-fvm` | `-f` | Use global Flutter SDK |
162
+ | `--help` | | Show command help |
163
+ | `--version` | | Show CLI version |
164
+
165
+ ---
166
+
167
+ ## 📋 All Aliases
168
+
169
+ | Alias | Command | Alias | Command |
170
+ |-------|---------|-------|---------|
171
+ | `apk` | flutter-build-apk | `gen` | generate |
172
+ | `aab` | flutter-build-bundle | `route` | add-route |
173
+ | `ios` | flutter-build-ios | `xcode` | open-ios |
174
+ | `ipa` | flutter-build-ipa | `studio` | open-android |
175
+ | `tf` | testflight | `vscode` | setup-vscode |
176
+ | `c` | clean | `devs` | devices |
177
+ | `cf` | clean-flutter | `rs` | run-select |
178
+ | `ci` | clean-ios | `info` | status |
179
+ | `v` | version | `dr` | doctor |
180
+ | `bi` | bump-ios | `undo` | rollback |
181
+ | `ba` | bump-android | `up` | upgrade |
182
+ | `bb` | bump-build | | |
183
+ | `vset` | flutter-update-version | | |
184
+
185
+ Or run `optikit aliases` to see this in your terminal.
@@ -0,0 +1,177 @@
1
+ # 📦 Version Management
2
+
3
+ OptiKit handles Flutter's dual build number system (iOS + Android) automatically.
4
+
5
+ ---
6
+
7
+ ## 🎯 The Problem
8
+
9
+ Flutter apps have **two independent build numbers**:
10
+
11
+ | Platform | Where | Rule |
12
+ |----------|-------|------|
13
+ | 🤖 **Android** | `pubspec.yaml` (`1.0.0+5`) | Must always increase |
14
+ | 🍎 **iOS** | Xcode project files | Resets per version |
15
+
16
+ Different stores, different rules. OptiKit handles both.
17
+
18
+ ---
19
+
20
+ ## 📋 Commands
21
+
22
+ | Command | Alias | Description |
23
+ |---------|-------|-------------|
24
+ | `optikit version` | `v` | Show current version |
25
+ | `optikit bump patch` | | Bug fix: 1.0.0 → 1.0.1 |
26
+ | `optikit bump minor` | | Feature: 1.0.0 → 1.1.0 |
27
+ | `optikit bump major` | | Breaking: 1.0.0 → 2.0.0 |
28
+ | `optikit bump-ios` | `bi` | Bump iOS build only |
29
+ | `optikit bump-android` | `ba` | Bump Android build only |
30
+ | `optikit bump-build` | `bb` | Bump both build numbers |
31
+ | `optikit testflight` | `tf` | Bump iOS + build IPA |
32
+ | `optikit flutter-update-version` | `vset` | Set version manually |
33
+
34
+ ---
35
+
36
+ ## ⚙️ What Each Command Does
37
+
38
+ ### `optikit bump <type>` — New Version Release
39
+
40
+ | | Version | Android Build | iOS Build |
41
+ |---|---------|--------------|-----------|
42
+ | Before | 1.0.2 | +45 | 3 |
43
+ | After `bump patch` | **1.0.3** | **+46** | **1** (reset) |
44
+
45
+ ✅ Increments version &nbsp; ✅ Increments Android build &nbsp; ✅ Resets iOS build to 1
46
+
47
+ ### `optikit bump-ios` — TestFlight Upload
48
+
49
+ | | Version | Android Build | iOS Build |
50
+ |---|---------|--------------|-----------|
51
+ | Before | 1.0.3 | +46 | 1 |
52
+ | After `bi` | 1.0.3 | +46 | **2** |
53
+
54
+ Only iOS build changes. Perfect for multiple TestFlight iterations.
55
+
56
+ ### `optikit bump-android` — Play Store Upload
57
+
58
+ | | Version | Android Build | iOS Build |
59
+ |---|---------|--------------|-----------|
60
+ | Before | 1.0.3 | +46 | 2 |
61
+ | After `ba` | 1.0.3 | **+47** | 2 |
62
+
63
+ Only Android build changes.
64
+
65
+ ### `optikit bump-build` — Both Platforms
66
+
67
+ Increments both Android and iOS build numbers. Version stays the same.
68
+
69
+ ---
70
+
71
+ ## 🚀 Real Workflows
72
+
73
+ ### 📱 TestFlight Iterations
74
+
75
+ ```bash
76
+ optikit bump minor # New version: 1.3.0 (iOS build: 1)
77
+ optikit tf -o # Build 1 → TestFlight + open
78
+ # ... fix a bug ...
79
+ optikit tf -o # Build 2 → TestFlight + open
80
+ # ... another fix ...
81
+ optikit tf -o # Build 3 → TestFlight + open
82
+ ```
83
+
84
+ ### 🤖 Android Hotfix
85
+
86
+ ```bash
87
+ optikit ba # Bump Android build only
88
+ optikit apk -o # Build + open APK
89
+ ```
90
+
91
+ ### 🔄 Complete Release Cycle
92
+
93
+ ```bash
94
+ # Start: 1.0.2+10 (iOS: 5)
95
+ optikit bump minor # → 1.1.0+11 (iOS: 1)
96
+
97
+ # TestFlight testing
98
+ optikit tf # iOS: 2
99
+ optikit tf # iOS: 3
100
+ optikit tf # iOS: 4
101
+
102
+ # Android testing
103
+ optikit ba # Android: 12
104
+
105
+ # Bug found, patch it
106
+ optikit bump patch # → 1.1.1+13 (iOS: 1)
107
+
108
+ # Final builds
109
+ optikit tf -o # iOS: 2, open output
110
+ optikit apk -o # Android: 13, open output
111
+
112
+ # 🚀 Ship it!
113
+ ```
114
+
115
+ ---
116
+
117
+ ## 📁 Files Updated
118
+
119
+ Every version command updates up to 3 files:
120
+
121
+ | File | What changes |
122
+ |------|-------------|
123
+ | `pubspec.yaml` | `version: X.Y.Z+B` |
124
+ | `ios/Runner.xcodeproj/project.pbxproj` | `MARKETING_VERSION`, `CURRENT_PROJECT_VERSION` |
125
+ | `ios/Runner/Info.plist` | `CFBundleShortVersionString`, `CFBundleVersion` |
126
+
127
+ All files are **backed up automatically** before changes. Use `optikit undo` to restore.
128
+
129
+ ---
130
+
131
+ ## 🔢 Version Format
132
+
133
+ ```
134
+ pubspec.yaml: version: 1.2.3+45
135
+ │ │ │ │
136
+ │ │ │ └── Android build number
137
+ │ │ └──── Patch
138
+ │ └────── Minor
139
+ └──────── Major
140
+
141
+ iOS (separate):
142
+ CFBundleShortVersionString: 1.2.3 (display version)
143
+ CFBundleVersion: 1, 2, 3 (build number, resets per version)
144
+ ```
145
+
146
+ ---
147
+
148
+ ## ❓ Why iOS Resets to 1
149
+
150
+ App Store Connect requires unique build numbers **per version**, not globally:
151
+
152
+ ```
153
+ 📱 Version 1.0.0
154
+ Build 1, Build 2, Build 3 ✅ Released
155
+
156
+ 📱 Version 1.0.1
157
+ Build 1 ← starts fresh
158
+ Build 2, Build 3 ✅ Released
159
+ ```
160
+
161
+ Android is the opposite — Google Play requires **strictly increasing** build numbers across all versions.
162
+
163
+ OptiKit handles both strategies automatically.
164
+
165
+ ---
166
+
167
+ ## 📊 Quick Reference
168
+
169
+ | Command | Version | Android | iOS | Use case |
170
+ |---------|---------|---------|-----|----------|
171
+ | `bump patch` | +0.0.1 | +1 | Reset to 1 | 🐛 Bug fix |
172
+ | `bump minor` | +0.1.0 | +1 | Reset to 1 | ✨ New feature |
173
+ | `bump major` | +1.0.0 | +1 | Reset to 1 | 💥 Breaking change |
174
+ | `bi` | -- | -- | +1 | 📱 TestFlight |
175
+ | `ba` | -- | +1 | -- | 🤖 Play Store |
176
+ | `bb` | -- | +1 | +1 | 📱🤖 Both |
177
+ | `tf` | -- | -- | +1 + build IPA | 🚀 TestFlight shortcut |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optikit",
3
- "version": "1.2.5",
3
+ "version": "1.3.0",
4
4
  "description": "OptiKit CLI",
5
5
  "main": "src/cli.ts",
6
6
  "type": "module",
@@ -10,7 +10,8 @@
10
10
  "test": "echo \"Error: no test specified\" && exit 1"
11
11
  },
12
12
  "bin": {
13
- "optikit": "dist/cli.js"
13
+ "optikit": "dist/cli.js",
14
+ "ok": "dist/cli.js"
14
15
  },
15
16
  "keywords": [
16
17
  "optikit",
@@ -21,21 +22,16 @@
21
22
  "author": "Mahmoud El Shenawy",
22
23
  "license": "ISC",
23
24
  "dependencies": {
24
- "arg": "^5.0.2",
25
+ "@modelcontextprotocol/sdk": "^1.28.0",
25
26
  "boxen": "^8.0.1",
26
27
  "chalk": "^4.1.2",
27
- "esm": "^3.2.25",
28
- "yargs": "^17.7.2"
28
+ "yargs": "^17.7.2",
29
+ "zod": "^4.3.6"
29
30
  },
30
31
  "devDependencies": {
31
- "@babel/core": "7.26.0",
32
- "@babel/preset-env": "7.26.0",
33
- "@babel/preset-react": "7.26.3",
34
32
  "@types/boxen": "^3.0.1",
35
33
  "@types/node": "^20.0.0",
36
34
  "@types/yargs": "^17.0.33",
37
- "babel-loader": "9.2.1",
38
- "ts-node": "^10.9.1",
39
35
  "typescript": "^5.6.3"
40
36
  }
41
- }
37
+ }