vibeview 0.25.0 → 0.27.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.
@@ -38,10 +38,17 @@ https://vibeview.io/docs/preparing-your-build.
38
38
  ```
39
39
  2. Start Metro in the React Native project (`yarn start` or equivalent) and
40
40
  leave it running.
41
- 3. Start a dev session in the background and get structured output:
41
+ 3. Start a dev session in the background and get structured output. No
42
+ `vibeview.json` yet in this project (first run here)? Pass `--platform`
43
+ and `--app` explicitly — non-interactive runs never prompt, so both must
44
+ be given up front (`--app` is `app_id` from step 1's upload output):
42
45
  ```bash
43
- vibeview dev --detach --json
46
+ vibeview dev --platform ios --app <app_id> --detach --json
44
47
  ```
48
+ Once `vibeview.json` exists (this run or an earlier one), a bare
49
+ `vibeview dev --detach --json` reruns the same platform/app. A
50
+ `{"event":"error","code":"config_required",...}` line names exactly what's
51
+ still missing (usually `--platform` or `--app`) — pass it and retry.
45
52
  4. Parse the `session_ready` line from stdout:
46
53
  ```json
47
54
  {"event":"session_ready","session_id":"...","url":"...","pid":1234}
@@ -127,6 +134,9 @@ it rather than letting it appear unexplained in their `git status`.
127
134
  ```bash
128
135
  vibeview scroll-to "Delete account" --session <id>
129
136
  ```
137
+ A `scroll-to` that never finds its text, or a `type` whose field does not
138
+ end up holding the text, prints `error` and exits 1 — check the reason
139
+ line and the screen before retrying.
130
140
  - **Precise two-point gestures** (sliders, drag-and-drop reorder, map
131
141
  panning) need `drag` — `swipe`/`scroll` are direction-only and can't
132
142
  express them. Each end is independently a ref or `x,y`:
@@ -156,20 +166,29 @@ it rather than letting it appear unexplained in their `git status`.
156
166
  (`dpad_up`/`dpad_down`/`dpad_left`/`dpad_right`/`dpad_center`), or move
157
167
  focus directly with `tap-focused` (moves focus AND activates) / `focus`
158
168
  (moves focus only, no activation).
159
- - **Foldable (iPhone Duo)**: start on it by model name —
160
- `vibeview dev --detach --json --model "iPhone Duo"` (MCP: `dev_start` with
161
- `model`). Exact names come from `vibeview list-devices --models` (MCP:
162
- `list_device_models`); a foldable is marked `foldable`. It starts closed, on
163
- the cover screen. Fold with a preset or an exact hinge angle, and rotate:
169
+ - **Foldables**: any model `vibeview list-devices --models` (MCP:
170
+ `list_device_models`) marks form factor `foldable` — the iPhone Duo,
171
+ Android foldables such as the Pixel 9 Pro Fold. Start on one by its exact
172
+ model name from that list, e.g.
173
+ `vibeview dev --detach --json --model "iPhone Duo"` or
174
+ `vibeview dev --platform android --detach --json --model "Pixel 9 Pro Fold"`
175
+ (MCP: `dev_start` with `model`). It starts closed, on the cover screen. Fold with a preset
176
+ or an exact hinge angle, and rotate:
164
177
  ```bash
165
178
  vibeview set-posture open --session <id> # closed | partial | open
166
179
  vibeview set-posture --angle 75 --session <id> # 0 (shut) to 180 (flat)
167
- vibeview rotate --session <id> # quarter turn clockwise
168
- vibeview rotate --degrees 270 --session <id> # quarter turn back (180: half)
180
+ vibeview rotate --session <id> # Duo: quarter turn clockwise
181
+ vibeview rotate --degrees 270 --session <id> # Duo: quarter turn back (180: half)
169
182
  ```
170
183
  Each response says where the device ended up — posture, angle and which
171
- screen is lit (`cover` or `inner`; the device decides — a small angle can
172
- keep the inner screen lit on the way down), or the new orientation. Folding
184
+ screen is lit (`cover` or `inner`; the device decides — on the Duo a small
185
+ angle can keep the inner screen lit on the way down), or the new
186
+ orientation. The posture names come from each device's own angle ranges,
187
+ so trust the reported `posture` over the angle you asked for: the Duo
188
+ reads 120-169 as `partial`, 170 up as `open`, and 1-119 by direction of
189
+ travel; an Android foldable uses its own ranges (the Pixel 9 Pro Fold: below
190
+ 30 `closed`, 30-149 `partial`, 150 up `open`) and its inner screen whenever
191
+ it is not closed. An Android foldable rotates like a phone. Folding
173
192
  switches screens of different sizes and rotating turns the picture, so run
174
193
  `ui-tree` afterwards — old refs are stale. On other phones and tablets
175
194
  `rotate` toggles portrait/landscape (only 90 is accepted); TV devices don't
@@ -231,20 +250,20 @@ human-readable text.
231
250
  |------|------|---------|
232
251
  | `ui-tree` | — | Fetch the ref-annotated UI tree for the current screen. |
233
252
  | `logs` | `[--tail <n>] [--since <cursor>]` | Read recent app logs from the device (JS console, native errors, crash messages). The response's `cursor` feeds the next call's `--since`. |
234
- | `screenshot` | `[--out <path>]` | Capture a screenshot of the current screen and save it to disk. |
235
- | `tap` | `<target>` | Tap an element by ref (e.g. `@e5`), or raw coordinates (e.g. `100,200`). |
253
+ | `screenshot` | `[--out <path>]` | Capture a screenshot of the current screen and save it to disk. On a phone or tablet its pixels are tap coordinates: a point read off it can be tapped as is — never rescale. |
254
+ | `tap` | `<target>` | Tap an element by ref (e.g. `@e5`), or coordinates (e.g. `100,200`) in the space of the tree's rects and the screenshot's pixels. |
236
255
  | `long-press` | `<ref>` `[--ms <n>]` | Long-press (touch and hold) an element by its ref. |
237
256
  | `swipe` | `<direction>` `[--distance <short\|medium\|long>]` | Perform a scrollbar-semantic swipe gesture in one of four directions. |
238
257
  | `scroll` | `<direction>` | Scroll the current view up, down, left, or right using a gesture preset. |
239
258
  | `scroll-to` | `<text>` `[--direction <up\|down\|left\|right>] [--max-scrolls <n>] [--element-type <type>]` | Scroll until an element matching the text is visible. Stops at end of list. |
240
259
  | `drag` | `<from>` `<to>` `[--velocity <n>] [--press-ms <n>] [--hold-ms <n>]` | Drag between two points, each an `@ref` or `x,y`. The only precise two-point gesture. |
241
260
  | `alert` | `<get\|accept\|dismiss>` `[--button <label>]` | Inspect or respond to a system alert on iOS or Apple TV. |
242
- | `type` | `<text>` | Type text into the currently focused input field. |
261
+ | `type` | `<text>` | Type text into the currently focused input field. On a phone or tablet a line break presses Enter and submits the field (`$'query\n'`), like `press enter`. |
243
262
  | `clear-text` | — | Clear the text in the currently focused input field. |
244
263
  | `press` | `<button>` | Press a device button or perform a system gesture (home, back, d-pad, etc). |
245
- | `open-url` | `<url>` | Open a deep link or URL in the app under test. |
246
- | `set-posture` | `<closed\|partial\|open>` or `--angle <0-180>` | Fold or unfold a foldable device (iPhone Duo) to a preset or an exact hinge angle — exactly one. Reports posture, angle and lit screen. Errors on a device without a hinge. |
247
- | `rotate` | `[--degrees <90\|180\|270>]` | Rotate the device and report the new orientation. Phones/tablets toggle portrait/landscape (90 only); a foldable turns a quarter clockwise by default. Not on TV. |
264
+ | `open-url` | `<url>` | Open a deep link or URL in the app under test. The link goes to that app only; a link it has no screen for fails (no browser). |
265
+ | `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. |
266
+ | `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. |
248
267
  | `wait` | `[--ms <n>]` | Wait for a specified number of seconds before continuing (default: 2s). |
249
268
  | `find` | `<text>` `[--below <text>] [--above <text>] [--near <text>]` | Find an element by text with optional spatial constraints. |
250
269
  | `tap-focused` | `<ref>` | TV: move focus to an element and press SELECT in one step. |