create-100x-mobile 0.4.0 → 0.4.1

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.
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -87,6 +87,52 @@ async function cmdNew(args) {
87
87
  }
88
88
  await (0, fs_1.removeDir)(projectDir);
89
89
  }
90
+ // ── Expo SDK version selection ───────────────────────────
91
+ let expoVersion = "latest";
92
+ const sdkSpinner = (0, prompts_1.spinner)();
93
+ sdkSpinner.start("Fetching available Expo SDK versions");
94
+ try {
95
+ const latestVersion = (await (0, run_1.runCapture)("npm", ["view", "expo", "version"])).trim();
96
+ const latestMajor = parseInt(latestVersion.split(".")[0], 10);
97
+ if (!isNaN(latestMajor)) {
98
+ const prevMajor = latestMajor - 1;
99
+ const prevJson = await (0, run_1.runCapture)("npm", [
100
+ "view",
101
+ `expo@^${prevMajor}.0.0`,
102
+ "version",
103
+ "--json",
104
+ ]);
105
+ const prevParsed = JSON.parse(prevJson);
106
+ const prevVersion = Array.isArray(prevParsed)
107
+ ? prevParsed[prevParsed.length - 1]
108
+ : prevParsed;
109
+ sdkSpinner.stop("Expo SDK versions fetched.");
110
+ const sdkChoice = await (0, prompts_1.select)({
111
+ message: "Which Expo SDK version?",
112
+ options: [
113
+ {
114
+ value: latestVersion,
115
+ label: `SDK ${latestMajor} (latest)`,
116
+ hint: `expo ~${latestVersion}`,
117
+ },
118
+ {
119
+ value: prevVersion,
120
+ label: `SDK ${prevMajor}`,
121
+ hint: `expo ~${prevVersion}`,
122
+ },
123
+ ],
124
+ });
125
+ if (!(0, prompts_1.isCancel)(sdkChoice)) {
126
+ expoVersion = `~${sdkChoice}`;
127
+ }
128
+ }
129
+ else {
130
+ sdkSpinner.stop("Could not parse Expo version.");
131
+ }
132
+ }
133
+ catch {
134
+ sdkSpinner.stop("Could not fetch Expo versions, using latest.");
135
+ }
90
136
  // ── Determine total steps ────────────────────────────────
91
137
  // Steps: 1=Project structure, 2=Dependencies, 3=Convex setup,
92
138
  // 4=Convex env (if clerkDomain), 5=Git init, 6=Health check
@@ -115,7 +161,7 @@ async function cmdNew(args) {
115
161
  // ── Step 3: Write all template files ───────────────────
116
162
  const files = [
117
163
  // Config
118
- ["package.json", (0, packageJson_1.packageJsonTemplate)(projectName)],
164
+ ["package.json", (0, packageJson_1.packageJsonTemplate)(projectName, expoVersion)],
119
165
  ["app.json", (0, appJson_1.appJsonTemplate)(projectName)],
120
166
  ["tsconfig.json", (0, tsconfig_1.tsconfigTemplate)()],
121
167
  [".gitignore", (0, gitignore_1.gitignoreTemplate)()],
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.packageJsonTemplate = packageJsonTemplate;
4
- function packageJsonTemplate(appName) {
4
+ function packageJsonTemplate(appName, expoVersion = "latest") {
5
5
  const pkg = {
6
6
  name: appName,
7
7
  main: "expo-router/entry",
@@ -18,7 +18,7 @@ function packageJsonTemplate(appName) {
18
18
  "@react-navigation/bottom-tabs": "^7.3.10",
19
19
  "@react-navigation/native": "^7.1.6",
20
20
  convex: "^1.26.1",
21
- expo: "latest",
21
+ expo: expoVersion,
22
22
  "lucide-react-native": "^0.542.0",
23
23
  },
24
24
  devDependencies: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-100x-mobile",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Scaffold a full-stack mobile app with Expo + Convex + Clerk in seconds",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {