vibeview 0.52.1 → 0.52.2

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.
@@ -1310,6 +1310,12 @@ function installCommand(cwd) {
1310
1310
  const hit = JS_LOCKFILE_INSTALLS.find(([lockfile]) => existsSync3(join5(cwd, lockfile)));
1311
1311
  return hit ? hit[1] : "npm install";
1312
1312
  }
1313
+ function localInstallCommand(cwd) {
1314
+ if (existsSync3(join5(cwd, "yarn.lock"))) return "yarn install";
1315
+ if (existsSync3(join5(cwd, "pnpm-lock.yaml"))) return "pnpm install";
1316
+ if (existsSync3(join5(cwd, "bun.lock")) || existsSync3(join5(cwd, "bun.lockb"))) return "bun install";
1317
+ return "npm install";
1318
+ }
1313
1319
  var JS_LOCKFILE_INSTALLS = [
1314
1320
  ["yarn.lock", "yarn install --immutable"],
1315
1321
  ["pnpm-lock.yaml", "pnpm install --frozen-lockfile"],
@@ -1574,7 +1580,9 @@ var readExpoConfig = (cwd, timeoutMs = EXPO_CONFIG_TIMEOUT_MS) => {
1574
1580
  const cli = join5(cwd, "node_modules", "expo", "bin", "cli");
1575
1581
  if (!existsSync3(cli)) {
1576
1582
  return Promise.reject(
1577
- new Error("Expo isn't installed in this project yet (run your install command first)")
1583
+ new Error(
1584
+ `Expo isn't installed in this project yet. Run \`${localInstallCommand(cwd)}\`, then run this again for a suggested command`
1585
+ )
1578
1586
  );
1579
1587
  }
1580
1588
  return new Promise((resolve, reject) => {
@@ -1884,6 +1892,20 @@ async function companionPreview(cwd, platform, development) {
1884
1892
  if (!preview.buildCommand || !preview.artifact) return null;
1885
1893
  return { command: preview.buildCommand, artifact: preview.artifact };
1886
1894
  }
1895
+ async function companionDevelopment(cwd, platform, preview) {
1896
+ const suggested = await promptDefaults(cwd, platform, { profile: PREVIEW });
1897
+ if (suggested.buildCommand !== preview.command || suggested.artifact !== preview.artifact)
1898
+ return null;
1899
+ const dev2 = await promptDefaults(cwd, platform);
1900
+ if (!dev2.buildCommand || !dev2.artifact) return null;
1901
+ return { command: dev2.buildCommand, artifact: dev2.artifact };
1902
+ }
1903
+ function developmentSavedNote(cwd, platform) {
1904
+ return usesMetroBuild(cwd, platform) ? [
1905
+ " development is the debug build that loads your JavaScript from Metro while you code",
1906
+ " (vibeview dev). vibeview build uses it when you pass no --profile."
1907
+ ] : [" development is what vibeview build and vibeview dev use when you pass no --profile."];
1908
+ }
1887
1909
  async function promptMetroCommand(cwd, platform) {
1888
1910
  const defaults = defaultsFor(cwd, platform);
1889
1911
  const choice = await commandSelect("Command that starts Metro", defaults.metroCommand);
@@ -2444,6 +2466,12 @@ async function resolveBuildProfile(cwd, cfgRef, platform, opts) {
2444
2466
  const preview = await companionPreview(cwd, platform, answered);
2445
2467
  if (preview) save[PREVIEW] = preview;
2446
2468
  note = preview ? previewSavedNote() : previewSkippedNote(cwd, platform);
2469
+ } else if (name === PREVIEW && !hasProfile(build, DEVELOPMENT)) {
2470
+ const development = await companionDevelopment(cwd, platform, answered);
2471
+ if (development) {
2472
+ save[DEVELOPMENT] = development;
2473
+ note = developmentSavedNote(cwd, platform);
2474
+ }
2447
2475
  }
2448
2476
  cfgRef.current = persistPromptedProfiles(cwd, platform, save);
2449
2477
  console.error(
package/dist/cli.js CHANGED
@@ -35,7 +35,7 @@ import {
35
35
  runAgentVerb,
36
36
  runStepsNotChecked,
37
37
  stepsNotCheckedLabel
38
- } from "./chunk-6U4WMOVF.js";
38
+ } from "./chunk-S4VPSFPP.js";
39
39
  import {
40
40
  ApiClient,
41
41
  ApiStatusError,
@@ -4520,7 +4520,7 @@ program.command("dev-reload").description(
4520
4520
  program.command("mcp").description(
4521
4521
  "Run an MCP stdio server exposing the agent verbs (tap, swipe, type, ...) plus dev_start/dev_stop/dev_reload as tools"
4522
4522
  ).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").action(async (opts) => {
4523
- const { runMcpServer } = await import("./server-B4OVM2L7.js");
4523
+ const { runMcpServer } = await import("./server-5VWZMZRE.js");
4524
4524
  await runMcpServer({ ...opts, version: pkg.version });
4525
4525
  });
4526
4526
  program.command("agent-setup").description(
@@ -35,7 +35,7 @@ import {
35
35
  renderEnvelope,
36
36
  resolveMetro,
37
37
  startDevSession
38
- } from "./chunk-6U4WMOVF.js";
38
+ } from "./chunk-S4VPSFPP.js";
39
39
  import {
40
40
  ApiClient,
41
41
  NotFoundError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeview",
3
- "version": "0.52.1",
3
+ "version": "0.52.2",
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",