vibeview 0.47.0 → 0.48.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.
|
@@ -190,6 +190,24 @@ function validateBuildEnv(env, platformKey) {
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
+
var XCODE_PLATFORMS = ["ios", "tvos"];
|
|
194
|
+
var XCODE_VERSION_RE = /^\d+\.\d+$/;
|
|
195
|
+
function validateBuildXcode(xcode, platformKey) {
|
|
196
|
+
if (xcode === void 0) return;
|
|
197
|
+
if (!XCODE_PLATFORMS.includes(platformKey)) {
|
|
198
|
+
throw new Error(
|
|
199
|
+
`vibeview.json: platforms.${platformKey}.build.xcode only applies to ios and tvos builds \u2014 remove it from the ${platformKey} block`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
if (typeof xcode !== "string" || !XCODE_VERSION_RE.test(xcode)) {
|
|
203
|
+
throw new Error(
|
|
204
|
+
`vibeview.json: platforms.${platformKey}.build.xcode must be a version string like "27.1"`
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function platformUsesXcode(platformKey) {
|
|
209
|
+
return XCODE_PLATFORMS.includes(platformKey);
|
|
210
|
+
}
|
|
193
211
|
function saveDevConfig(cwd, cfg) {
|
|
194
212
|
const target = join(cwd, FILE);
|
|
195
213
|
const tmp = join(cwd, `.${FILE}.${process.pid}.${Date.now()}.tmp`);
|
|
@@ -2142,6 +2160,13 @@ async function buildCommand(opts, cloudDeps) {
|
|
|
2142
2160
|
"usage"
|
|
2143
2161
|
);
|
|
2144
2162
|
}
|
|
2163
|
+
if (opts.xcode !== void 0) {
|
|
2164
|
+
fail(
|
|
2165
|
+
opts,
|
|
2166
|
+
"--xcode requires --cloud: a local build uses the Xcode selected on this machine",
|
|
2167
|
+
"usage"
|
|
2168
|
+
);
|
|
2169
|
+
}
|
|
2145
2170
|
const platform = await resolveBarePlatform(cwd, cfgRef.current, opts);
|
|
2146
2171
|
const build = await resolveBuildConfig(cwd, cfgRef, platform, opts);
|
|
2147
2172
|
const result = await runBuildForPlatform(
|
|
@@ -2408,7 +2433,17 @@ function formatCost(costMicro) {
|
|
|
2408
2433
|
return `$${(costMicro / 1e6).toFixed(2)}`;
|
|
2409
2434
|
}
|
|
2410
2435
|
async function runCloudBuildCommand(cwd, cfgRef, opts, deps) {
|
|
2436
|
+
if (opts.xcode !== void 0 && !XCODE_VERSION_RE.test(opts.xcode)) {
|
|
2437
|
+
fail(opts, `--xcode must be a version like 27.1, got "${opts.xcode}"`, "usage");
|
|
2438
|
+
}
|
|
2411
2439
|
const platforms = await resolveCloudPlatforms(cwd, cfgRef, opts);
|
|
2440
|
+
if (opts.xcode !== void 0 && !platforms.some(platformUsesXcode)) {
|
|
2441
|
+
fail(
|
|
2442
|
+
opts,
|
|
2443
|
+
`--xcode only applies to ios and tvos builds \u2014 this run builds ${platforms.join(", ")}`,
|
|
2444
|
+
"usage"
|
|
2445
|
+
);
|
|
2446
|
+
}
|
|
2412
2447
|
const { token, baseUrl } = resolveAuth(opts);
|
|
2413
2448
|
const client = new ApiClient(baseUrl, token);
|
|
2414
2449
|
const d = deps ?? defaultCloudBuildDeps(client);
|
|
@@ -2423,6 +2458,7 @@ async function runCloudBuildCommand(cwd, cfgRef, opts, deps) {
|
|
|
2423
2458
|
for (const p of platforms) {
|
|
2424
2459
|
try {
|
|
2425
2460
|
validateBuildEnv(cfg?.platforms?.[p]?.build?.env, p);
|
|
2461
|
+
validateBuildXcode(cfg?.platforms?.[p]?.build?.xcode, p);
|
|
2426
2462
|
if (cfg?.platforms?.[p]?.build?.autoIncrement === true && opts.production && createFromArtifact.has(p)) {
|
|
2427
2463
|
throw new UsageError(
|
|
2428
2464
|
`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)`
|
|
@@ -2499,6 +2535,7 @@ ${offenders}`);
|
|
|
2499
2535
|
)
|
|
2500
2536
|
);
|
|
2501
2537
|
}
|
|
2538
|
+
const xcode = platformUsesXcode(p) ? opts.xcode ?? build.xcode : void 0;
|
|
2502
2539
|
return {
|
|
2503
2540
|
platform: p,
|
|
2504
2541
|
// OMITTED, never invented, for a platform whose app the artifact will
|
|
@@ -2511,7 +2548,8 @@ ${offenders}`);
|
|
|
2511
2548
|
artifact_path: artifactPath,
|
|
2512
2549
|
distribution: production ? "production" : "simulator",
|
|
2513
2550
|
...build.env ? { env: build.env } : {},
|
|
2514
|
-
...autoIncrement && production ? { auto_increment: true } : {}
|
|
2551
|
+
...autoIncrement && production ? { auto_increment: true } : {},
|
|
2552
|
+
...xcode ? { xcode } : {}
|
|
2515
2553
|
};
|
|
2516
2554
|
});
|
|
2517
2555
|
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-
|
|
37
|
+
} from "./chunk-OMIZWILH.js";
|
|
38
38
|
import {
|
|
39
39
|
ApiClient,
|
|
40
40
|
ApiStatusError,
|
|
@@ -4373,6 +4373,9 @@ program.command("build").description("Run your configured build command and uplo
|
|
|
4373
4373
|
"--production",
|
|
4374
4374
|
"--cloud only: build a signed, installable production artifact (.aab/.ipa) using uploaded signing credentials (see `vibeview credentials add`), instead of the default unsigned simulator build",
|
|
4375
4375
|
false
|
|
4376
|
+
).option(
|
|
4377
|
+
"--xcode <version>",
|
|
4378
|
+
"--cloud only, ios/tvos: the Xcode version to build with (e.g. 27.1), overriding vibeview.json build.xcode for this run"
|
|
4376
4379
|
).option("--json", "Print the result as one JSON line (NDJSON events with --cloud)", false).action((opts) => buildCommand(opts));
|
|
4377
4380
|
program.command("submit").description(
|
|
4378
4381
|
"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"
|
|
@@ -4505,7 +4508,7 @@ program.command("dev-reload").description(
|
|
|
4505
4508
|
program.command("mcp").description(
|
|
4506
4509
|
"Run an MCP stdio server exposing the agent verbs (tap, swipe, type, ...) plus dev_start/dev_stop/dev_reload as tools"
|
|
4507
4510
|
).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").action(async (opts) => {
|
|
4508
|
-
const { runMcpServer } = await import("./server-
|
|
4511
|
+
const { runMcpServer } = await import("./server-3JZ2MN5N.js");
|
|
4509
4512
|
await runMcpServer({ ...opts, version: pkg.version });
|
|
4510
4513
|
});
|
|
4511
4514
|
program.command("agent-setup").description(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeview",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.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",
|