vibeview 0.44.0 → 0.45.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.
@@ -5014,6 +5014,24 @@ var AGENT_COMMANDS = [
5014
5014
  }
5015
5015
  ]
5016
5016
  },
5017
+ {
5018
+ // set_app_language: { language: string | null } — the Device tab's App
5019
+ // language. The worker restarts the app in it; iOS/iPadOS/tvOS and
5020
+ // Android 13+, refused on Roku and embed sessions. 'default' maps to null.
5021
+ verb: "set-language",
5022
+ tool: "set_app_language",
5023
+ summary: "Restart the app under test in another language \u2014 a language tag such as de, fr, ja or pt-BR, or 'default' for the device's language \u2014 e.g. to check translations or take localized screenshots. Only the app changes; the device, its status bar and other apps keep their language. iPhone, iPad, Apple TV and Android 13+; not Roku or embed sessions.",
5024
+ mutating: true,
5025
+ params: [
5026
+ {
5027
+ name: "language",
5028
+ cli: "positional",
5029
+ type: "string",
5030
+ required: true,
5031
+ description: "A language tag (de, fr, ja, pt-BR, zh-Hans, \u2026) or 'default' for the device's own language."
5032
+ }
5033
+ ]
5034
+ },
5017
5035
  {
5018
5036
  // set_status_bar: { preset: 'clean' | 'default' } — the dashboard's
5019
5037
  // Device tab Clean status bar (simctl status_bar override). iOS phones and
@@ -5184,6 +5202,11 @@ function resultLines(result) {
5184
5202
  if (r.action === "location_set" && typeof r.latitude === "number" && typeof r.longitude === "number") {
5185
5203
  lines.push(`location: ${r.latitude}, ${r.longitude}`);
5186
5204
  }
5205
+ if (r.action === "app_language_set") {
5206
+ lines.push(
5207
+ `app language: ${typeof r.language === "string" && r.language ? r.language : "the device language"}`
5208
+ );
5209
+ }
5187
5210
  if (r.action === "status_bar_set" && typeof r.preset === "string") {
5188
5211
  lines.push(
5189
5212
  `status bar: ${r.preset === "clean" ? "clean (9:41, full battery and signal)" : "the device\u2019s own"}`
package/dist/cli.js CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  runAgentVerb,
31
31
  runStepsNotChecked,
32
32
  stepsNotCheckedLabel
33
- } from "./chunk-JUNGGSS3.js";
33
+ } from "./chunk-YF4L2WO2.js";
34
34
  import {
35
35
  ApiClient,
36
36
  ApiStatusError,
@@ -4461,7 +4461,7 @@ program.command("dev-reload").description(
4461
4461
  program.command("mcp").description(
4462
4462
  "Run an MCP stdio server exposing the agent verbs (tap, swipe, type, ...) plus dev_start/dev_stop/dev_reload as tools"
4463
4463
  ).option("--token <token>", "API token (or set VIBEVIEW_API_TOKEN)").action(async (opts) => {
4464
- const { runMcpServer } = await import("./server-MLDOTK2G.js");
4464
+ const { runMcpServer } = await import("./server-LC2EYAPO.js");
4465
4465
  await runMcpServer({ ...opts, version: pkg.version });
4466
4466
  });
4467
4467
  program.command("agent-setup").description(
@@ -30,7 +30,7 @@ import {
30
30
  renderEnvelope,
31
31
  resolveMetro,
32
32
  startDevSession
33
- } from "./chunk-JUNGGSS3.js";
33
+ } from "./chunk-YF4L2WO2.js";
34
34
  import {
35
35
  ApiClient,
36
36
  NotFoundError,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeview",
3
- "version": "0.44.0",
3
+ "version": "0.45.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",
@@ -173,6 +173,10 @@ appear unexplained in their `git status`.
173
173
  - Use `set-location --lat 51.5074 --lon -0.1278` to place the device before
174
174
  a location-based flow (maps, store finders, region-gated screens); the app
175
175
  reads it like a GPS fix. Not on TV.
176
+ - Use `set-language <tag>` (`de`, `ja`, `pt-BR`, … or `default`) to restart the
177
+ app in another language — for checking translations or localized
178
+ screenshots. Only the app changes; old refs are stale after it. iPhone, iPad,
179
+ Apple TV and Android 13+; not Roku or embed sessions.
176
180
  - Use `set-status-bar clean` before App Store screenshots: 9:41, a full
177
181
  battery and full Wi-Fi and cellular signal, kept for the rest of the session
178
182
  (`set-status-bar default` puts the real one back). iOS phones and tablets
@@ -294,6 +298,7 @@ human-readable text.
294
298
  | `relaunch-app` | — | Close the app and start it again (cold start, data kept) — for "does it persist after a restart" checks. The app log keeps streaming. Not on embed sessions. |
295
299
  | `set-posture` | `<closed\|partial\|open>` or `--angle <0-180>` | Fold or unfold a foldable device (form factor `foldable`: the iPhone Duo, Android foldables) to a preset or an exact hinge angle — exactly one. Reports posture, angle and lit screen. Errors on a device without a hinge. |
296
300
  | `rotate` | `[--degrees <90\|180\|270>]` | Rotate the device and report the new orientation. Phones/tablets and Android foldables toggle portrait/landscape (90 only); the iPhone Duo turns a quarter clockwise by default. Not on TV. |
301
+ | `set-language` | `<tag\|default>` | Restart the app in another language (`de`, `pt-BR`, …) or the device's (`default`). Only the app changes. iPhone, iPad, Apple TV, Android 13+; not Roku or embed sessions. |
297
302
  | `set-status-bar` | `<clean\|default>` | Show the clean screenshot status bar (9:41, full battery and signal) or the device's own. iOS phones and tablets only. |
298
303
  | `set-location` | `--lat <n> --lon <n>` | Set the device's simulated GPS position (decimal degrees; west and south are negative) for location-based flows. Phones, tablets and foldables; not on TV. |
299
304
  | `wait` | `[--ms <n>]` | Wait for a specified number of seconds before continuing (default: 2s). |