vibeview 0.49.0 → 0.50.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.
@@ -205,6 +205,22 @@ function validateBuildXcode(xcode, platformKey) {
205
205
  );
206
206
  }
207
207
  }
208
+ function normalizeNodeVersion(value) {
209
+ if (typeof value === "number") {
210
+ return Number.isInteger(value) && value > 0 && value < 1e3 ? String(value) : null;
211
+ }
212
+ if (typeof value !== "string") return null;
213
+ const m = /^v?(\d{1,3})(?:\.x)?$/.exec(value.trim());
214
+ return m ? String(Number(m[1])) : null;
215
+ }
216
+ function validateBuildNode(node, platformKey) {
217
+ if (node === void 0) return;
218
+ if (normalizeNodeVersion(node) === null) {
219
+ throw new Error(
220
+ `vibeview.json: platforms.${platformKey}.build.node must be a Node.js major version like "24"`
221
+ );
222
+ }
223
+ }
208
224
  function platformUsesXcode(platformKey) {
209
225
  return XCODE_PLATFORMS.includes(platformKey);
210
226
  }
@@ -2167,6 +2183,13 @@ async function buildCommand(opts, cloudDeps) {
2167
2183
  "usage"
2168
2184
  );
2169
2185
  }
2186
+ if (opts.node !== void 0) {
2187
+ fail(
2188
+ opts,
2189
+ "--node requires --cloud: a local build uses the Node.js on this machine",
2190
+ "usage"
2191
+ );
2192
+ }
2170
2193
  const platform = await resolveBarePlatform(cwd, cfgRef.current, opts);
2171
2194
  const build = await resolveBuildConfig(cwd, cfgRef, platform, opts);
2172
2195
  const result = await runBuildForPlatform(
@@ -2437,6 +2460,10 @@ async function runCloudBuildCommand(cwd, cfgRef, opts, deps) {
2437
2460
  if (opts.xcode !== void 0 && !XCODE_VERSION_RE.test(opts.xcode)) {
2438
2461
  fail(opts, `--xcode must be a version like 27.1, got "${opts.xcode}"`, "usage");
2439
2462
  }
2463
+ const nodeFlag = opts.node === void 0 ? void 0 : normalizeNodeVersion(opts.node);
2464
+ if (nodeFlag === null) {
2465
+ fail(opts, `--node must be a Node.js major version like 24, got "${opts.node}"`, "usage");
2466
+ }
2440
2467
  const platforms = await resolveCloudPlatforms(cwd, cfgRef, opts);
2441
2468
  if (opts.xcode !== void 0 && !platforms.some(platformUsesXcode)) {
2442
2469
  fail(
@@ -2460,6 +2487,7 @@ async function runCloudBuildCommand(cwd, cfgRef, opts, deps) {
2460
2487
  try {
2461
2488
  validateBuildEnv(cfg?.platforms?.[p]?.build?.env, p);
2462
2489
  validateBuildXcode(cfg?.platforms?.[p]?.build?.xcode, p);
2490
+ validateBuildNode(cfg?.platforms?.[p]?.build?.node, p);
2463
2491
  if (cfg?.platforms?.[p]?.build?.autoIncrement === true && opts.production && createFromArtifact.has(p)) {
2464
2492
  throw new UsageError(
2465
2493
  `platforms.${p}.build.autoIncrement needs the build linked to an app \u2014 set appId in vibeview.json (a brand-new app's first build can't auto-increment)`
@@ -2537,6 +2565,7 @@ ${offenders}`);
2537
2565
  );
2538
2566
  }
2539
2567
  const xcode = platformUsesXcode(p) ? opts.xcode ?? build.xcode : void 0;
2568
+ const node = nodeFlag ?? (build.node === void 0 ? void 0 : normalizeNodeVersion(build.node));
2540
2569
  return {
2541
2570
  platform: p,
2542
2571
  // OMITTED, never invented, for a platform whose app the artifact will
@@ -2550,7 +2579,8 @@ ${offenders}`);
2550
2579
  distribution: production ? "production" : "simulator",
2551
2580
  ...build.env ? { env: build.env } : {},
2552
2581
  ...autoIncrement && production ? { auto_increment: true } : {},
2553
- ...xcode ? { xcode } : {}
2582
+ ...xcode ? { xcode } : {},
2583
+ ...node ? { node } : {}
2554
2584
  };
2555
2585
  });
2556
2586
  const uploadSpinner = !opts.json ? createSpinner("uploading source...") : null;
package/dist/cli.js CHANGED
@@ -34,7 +34,7 @@ import {
34
34
  runAgentVerb,
35
35
  runStepsNotChecked,
36
36
  stepsNotCheckedLabel
37
- } from "./chunk-X5F4DA3S.js";
37
+ } from "./chunk-BPHIX73G.js";
38
38
  import {
39
39
  ApiClient,
40
40
  ApiStatusError,
@@ -4376,6 +4376,9 @@ program.command("build").description("Run your configured build command and uplo
4376
4376
  ).option(
4377
4377
  "--xcode <version>",
4378
4378
  "--cloud only, ios/tvos: the Xcode version to build with (e.g. 27.1), overriding vibeview.json build.xcode for this run"
4379
+ ).option(
4380
+ "--node <major>",
4381
+ "--cloud only: the Node.js major to build with (e.g. 24), overriding vibeview.json build.node and the project .nvmrc for this run"
4379
4382
  ).option("--json", "Print the result as one JSON line (NDJSON events with --cloud)", false).action((opts) => buildCommand(opts));
4380
4383
  program.command("submit").description(
4381
4384
  "Submit a succeeded production cloud build's artifact to TestFlight (ios/tvos) or a Google Play track (android/androidtv) \u2014 binary upload only; store listing and review stay in the store consoles"
@@ -4508,7 +4511,7 @@ program.command("dev-reload").description(
4508
4511
  program.command("mcp").description(
4509
4512
  "Run an MCP stdio server exposing the agent verbs (tap, swipe, type, ...) plus dev_start/dev_stop/dev_reload as tools"
4510
4513
  ).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").action(async (opts) => {
4511
- const { runMcpServer } = await import("./server-NOJQ4XLR.js");
4514
+ const { runMcpServer } = await import("./server-Q2PYPAKB.js");
4512
4515
  await runMcpServer({ ...opts, version: pkg.version });
4513
4516
  });
4514
4517
  program.command("agent-setup").description(
@@ -34,7 +34,7 @@ import {
34
34
  renderEnvelope,
35
35
  resolveMetro,
36
36
  startDevSession
37
- } from "./chunk-X5F4DA3S.js";
37
+ } from "./chunk-BPHIX73G.js";
38
38
  import {
39
39
  ApiClient,
40
40
  NotFoundError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeview",
3
- "version": "0.49.0",
3
+ "version": "0.50.0",
4
4
  "description": "VibeView CLI -- run your app on cloud iOS simulators, Android emulators, Apple TV, Android TV and Roku devices: a React Native dev loop, device control for you or your coding agent (CLI or MCP), and tests from CI",
5
5
  "mcpName": "io.github.vibeview/vibeview",
6
6
  "type": "module",