Skip to content

feat: add Vercel Ship tab#10

Draft
thymikee wants to merge 1 commit into
mainfrom
codex/vercel-ship-tab
Draft

feat: add Vercel Ship tab#10
thymikee wants to merge 1 commit into
mainfrom
codex/vercel-ship-tab

Conversation

@thymikee

Copy link
Copy Markdown
Member

Summary

Adds a third bottom-tab route for Vercel Ship London, with a Vercel triangle tab icon and an always-dark, Vercel-themed screen.

The new screen includes concise copy about Vercel's platform and the Ship London conference, plus a link to the official Ship London page.

Validation

  • npm run lint
  • npx expo export --platform web

Notes:

  • npm exec tsc -- --noEmit still fails on pre-existing template type issues around ColorSchemeName and IconSymbol generics.
  • expo start --web could not be used for browser verification because Expo repeatedly reported explicit ports as occupied without exposing a listening local server.

@expo

expo Bot commented Jun 17, 2026

Copy link
Copy Markdown

Agent QA

Platform Status Issues
Android ✅ passed N/A
iOS ✅ passed N/A

Screenshots

Android iOS
Ship screen
Ship screen
Ship screen
Ship screen
Full Android Report

Android

Status: ✅ passed

Verified the new Vercel Ship tab on Android. The app foregrounded correctly after relaunch, the Ship tab was present in the bottom navigation, and the destination screen showed the expected Vercel-themed Ship London content in dark mode.

Checked

  • App foregrounded successfully with a relaunch before testing
  • Bottom tab bar includes Home, Explore, and new Ship tab
  • Tapping Ship opens the new Ship London screen
  • Screen uses Vercel-themed dark presentation and shows Ship London copy
  • Relevant conference/platform text is visible and not obviously clipped

Issues

  • No issues noted.

Screenshots

Android
ship-tab.png

Next steps

  • Optional: manually verify the Ship London link opens the official page if link behavior is part of the acceptance criteria

Metadata

JSON Report

{
  "generatedAt": "2026-06-17T12:27:10.774Z",
  "model": "openai/gpt-5.4-mini",
  "buildId": "63b4d9ca-0ffa-4d10-9fda-8340527ddf67",
  "workflowUrl": "https://expo.dev/accounts/callstack.io/projects/eas-agent-device/workflows/019ed587-28b6-77e2-bcf9-23a01acd8765",
  "platform": "android",
  "platformLabel": "Android",
  "prNumber": 10,
  "screenshots": [
    {
      "fileName": "ship-tab.png",
      "absolutePath": "/tmp/agent-qa-screenshots/ship-tab.png",
      "bytes": 230659,
      "blobUrl": "https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/android/pr-10/63b4d9ca-0ffa-4d10-9fda-8340527ddf67/ship-tab-QUc0HyZpMdL3GawK7j3BkHKRd3LIzv.png",
      "blobDownloadUrl": "https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/android/pr-10/63b4d9ca-0ffa-4d10-9fda-8340527ddf67/ship-tab-QUc0HyZpMdL3GawK7j3BkHKRd3LIzv.png?download=1",
      "blobPathname": "agent-qa/android/pr-10/63b4d9ca-0ffa-4d10-9fda-8340527ddf67/ship-tab-QUc0HyZpMdL3GawK7j3BkHKRd3LIzv.png",
      "label": "Ship screen"
    }
  ],
  "agentDeviceTrace": [
    {
      "requestedCommand": "help",
      "requestedArgs": [
        "workflow"
      ],
      "normalizedCommand": "help",
      "normalizedArgs": [
        "workflow"
      ],
      "executedArgv": [
        "help",
        "workflow"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "agent-device help workflow\n\nVersion-matched operating guide for normal agent-device work.\n\nCore loop:\n  devices/apps -> open -> snapshot or snapshot -i -> get/is/find/wait or press/fill/scroll/back -> verify -> close\n\nCommand shape:\n  Plans should use agent-device commands, not raw platform tools, pseudo commands, package-manager aliases, or helper prose.\n  Put subcommand first, then positionals, then flags:\n    agent-device open com.example.app --session checkout --platform android --relaunch\n    agent-device record start ./checkout.mp4 --session checkout\n  Snapshot refs look like @e12. After snapshot -i, use the exact @eN ref from that output.\n  If the exact ref is not known yet, first output snapshot -i, then use a concrete example shape like press @e12 in the next command; do not write @<ref>, @ref, @Label_Name, or @eN placeholders.\n  Close means agent-device close. App-owned back means back; system back means back --system.\n  Taps are press or click. Gestures use swipe, longpress, or gesture <pan|fling|swipe|pinch|rotate|transform>. Use gesture swipe left|right for reliable in-page horizontal swipes, and gesture swipe right-edge for left-edge navigation/back gestures. Android pinch, rotate, and transform use provider-native touch injection when available, then the bundled multi-touch helper. iOS simulator transform uses private XCTest synthesis for a continuous two-finger pan/scale/rotation path; otherwise it reports UNSUPPORTED_OPERATION.\n\nBootstrap:\n  agent-device devices --platform ios\n  agent-device apps --platform android\n  agent-device open MyApp --platform ios --device \"iPhone 17 Pro\"\n  agent-device open <discovered-app-id> --session checkout --platform android\n  agent-device install com.example.app ./dist/app.apk --platform android\n  agent-device reinstall com.example.app ./build/MyApp.app --platform ios\n  agent-device install-from-source --github-actions-artifact org/repo:app-debug --platform android\n  agent-device open com.example.app --platform android --relaunch\n  agent-device prepare ios-runner --platform ios --timeout 240000\n  If app id is unknown, plan devices, apps, then open <discovered-app-id>. Discovery is not enough when the task asks to open/start the app.\n  Install arguments are app/package id then artifact path. If the task says install, use install; use reinstall only when explicitly requested. Fresh runtime state is open --relaunch after install.\n  In iOS CI, run prepare ios-runner after boot/install and before replay/test. prepare ios-runner builds/reuses the XCTest runner and proves it can answer a lightweight command before the first snapshot pays that setup cost.\n  Do not open artifact paths or invent package ids. If apps lookup misses the target and no URL/artifact is provided, ask or stop.\n\nSnapshots and refs:\n  snapshot reads visible state. snapshot -i gets current interactive refs only; it is the fast path when the next step is an interaction.\n  Default snapshot text is an agent-facing, token-efficient view for planning and targeting actions; use --raw or --json only when you need the full provider tree.\n  Snapshot legend:\n    @e12 [button] label=\"Add to cart\" id=\"add-cart\" enabled hittable -> press @e12 or press 'id=\"add-cart\"'.\n    @e13 [textinput] label=\"Notes\" preview=\"Leave at side...\" truncated -> snapshot -s @e13 before reading.\n    @e14 [cell] label=\"Profiles\" focused -> tvOS focus is currently on this row.\n    [off-screen below] 4 items: \"Privacy\", \"About\" -> scroll down, then snapshot -i; those are hints, not refs.\n  Re-snapshot after navigation, submit, typing/fill, modal/list/reload/dynamic changes when you need new refs.\n  Anti-pattern: snapshot -i followed by snapshot -i | grep ...\n  Refs from the first snapshot remain valid until you press, fill, type, scroll, go back, wait for async UI, or otherwise change app state.\n  After a mutation, prefer a known selector/label directly (for example press 'label=\"Send\"') because interaction commands refresh interactive state internally\n...<truncated>",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [],
      "executedArgv": [
        "snapshot"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Snapshot: 31 visible nodes (44 total)\nCollapsed 13 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\n@e1 [text] \"12:26\"\n  @e2 [image] \"Android System notification:\"\n    @e3 [image] \"Wifi signal full.\"\n  @e4 [group] \"Phone signal full.\"\n    @e5 [image]\n@e6 [group] \"Battery charging, 100 percent.\"\n  @e7 [image]\n@e11 [group]\n  @e12 [group]\n    @e16 [scroll-area] [scrollable]\n      @e23 [scroll-area] \"Welcome!, 👋, Step 1: Try it, Edit app/(tabs)/index.tsx to see changes. Press cmd + m to open developer tools., Tap the Explore tab to learn more about what's included in this starter app., Step 3: Get a fresh start, When you're ready, run npm run reset-project to get a fresh app directory. This will move the current app to app-example.\" [scrollable]\n        @e31 [group] \"Step 2: Explore\"\n          @e32 [button] \"Step 2: Explore\"\n      @e37 [group] \", Home\"\n      @e40 [group] \", Explore\"\n      @e43 [group] \"Ship\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "open",
      "requestedArgs": [
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "normalizedCommand": "open",
      "normalizedArgs": [
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "executedArgv": [
        "open",
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Opened: dev.expo.easagentdevice\nSession state: /home/expo/.agent-device/sessions/qa-android\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 7 visible nodes (19 total)\nCollapsed 12 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\n@e1 [scroll-area] [scrollable]\n@e2 [scroll-area] \"Welcome!, 👋, Step 1: Try it, Edit app/(tabs)/index.tsx to see changes. Press cmd + m to open developer tools., Tap the Explore tab to learn more about what's included in this starter app., Step 3: Get a fresh start, When you're ready, run npm run reset-project to get a fresh app directory. This will move the current app to app-example.\" [scrollable]\n@e7 [group] \"Step 2: Explore\"\n@e8 [button] \"Step 2: Explore\"\n@e12 [group] \", Home\"\n@e15 [group] \", Explore\"\n@e18 [group] \"Ship\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "press",
      "requestedArgs": [
        "@e18"
      ],
      "normalizedCommand": "press",
      "normalizedArgs": [
        "@e18"
      ],
      "executedArgv": [
        "press",
        "@e18"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Tapped @e18 (900, 2273)\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [],
      "executedArgv": [
        "snapshot"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 28 visible nodes (42 total)\nCollapsed 14 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\n@e1 [text] \"12:26\"\n  @e2 [image] \"Android System notification:\"\n    @e3 [image] \"Wifi signal full.\"\n  @e4 [group] \"Phone signal full.\"\n    @e5 [image]\n@e6 [group] \"Battery charging, 100 percent.\"\n  @e7 [image]\n@e11 [group]\n  @e12 [group]\n    @e16 [scroll-area] [scrollable]\n      @e24 [scroll-area] \"VERCEL SHIP LONDON, Ship what's next, Vercel Ship brings builders together to see how modern products move from idea to production with the AI Cloud., Magazine London, June 17, AI SDK, Sandbox, agents, and Next.js, About Vercel, Vercel gives teams developer tools and cloud infrastructure for building, scaling, and securing fast web experiences. Its platform is shaped around framework-defined infrastructure: push code, generate previews, and let the platform provision the pieces that the application needs., The company is also putting AI-native product development at the center of the stack, with products like AI SDK, AI Gateway, Vercel Sandbox, Workflow, and v0 sitting beside the core deployment, content delivery, compute, observability, and security platform.\" [scrollable]\n        [content below scroll-area hidden]\n      @e35 [group] \", Home\"\n      @e38 [group] \", Explore\"\n      @e41 [group] \"Ship\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "screenshot",
      "requestedArgs": [
        "/tmp/agent-qa-screenshots/ship-tab.png"
      ],
      "normalizedCommand": "screenshot",
      "normalizedArgs": [
        "/tmp/agent-qa-screenshots/ship-tab.png"
      ],
      "executedArgv": [
        "screenshot",
        "/tmp/agent-qa-screenshots/ship-tab.png"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "/tmp/agent-qa-screenshots/ship-tab.png\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [],
      "executedArgv": [
        "snapshot"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nCollapsed 14 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\nSnapshot unchanged since previous read 7.5s ago.\nRefs from the previous snapshot are still valid. Use --force-full to re-emit the tree, or use find/get/is for a targeted query.\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 5 visible nodes (19 total)\nCollapsed 14 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\n@e1 [scroll-area] [scrollable]\n@e2 [scroll-area] \"VERCEL SHIP LONDON, Ship what's next, Vercel Ship brings builders together to see how modern products move from idea to production with the AI Cloud., Magazine London, June 17, AI SDK, Sandbox, agents, and Next.js, About Vercel, Vercel gives teams developer tools and cloud infrastructure for building, scaling, and securing fast web experiences. Its platform is shaped around framework-defined infrastructure: push code, generate previews, and let the platform provision the pieces that the application needs., The company is also putting AI-native product development at the center of the stack, with products like AI SDK, AI Gateway, Vercel Sandbox, Workflow, and v0 sitting beside the core deployment, content delivery, compute, observability, and security platform.\" [scrollable]\n  [content below scroll-area hidden]\n@e12 [group] \", Home\"\n@e15 [group] \", Explore\"\n@e18 [group] \"Ship\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 5 visible nodes (19 total)\nCollapsed 14 Android helper nodes from the agent-facing text snapshot; use --raw or --json for the full hierarchy.\n@e1 [scroll-area] [scrollable]\n@e2 [scroll-area] \"VERCEL SHIP LONDON, Ship what's next, Vercel Ship brings builders together to see how modern products move from idea to production with the AI Cloud., Magazine London, June 17, AI SDK, Sandbox, agents, and Next.js, About Vercel, Vercel gives teams developer tools and cloud infrastructure for building, scaling, and securing fast web experiences. Its platform is shaped around framework-defined infrastructure: push code, generate previews, and let the platform provision the pieces that the application needs., The company is also putting AI-native product development at the center of the stack, with products like AI SDK, AI Gateway, Vercel Sandbox, Workflow, and v0 sitting beside the core deployment, content delivery, compute, observability, and security platform.\" [scrollable]\n  [content below scroll-area hidden]\n@e12 [group] \", Home\"\n@e15 [group] \", Explore\"\n@e18 [group] \"Ship\"\n",
      "stderr": ""

...<truncated>
</details>

<details>
<summary>Full iOS Report</summary>

### iOS

**Status:** ✅ passed

Completed the lightweight iOS QA pass for PR #10. The app foregrounded correctly, the new Ship tab is visible in the bottom tab bar, and the Ship screen opens with the expected Vercel/Ship London content and no obvious visual defects.

### Checked
- Verified dev.expo.easagentdevice was foregrounded on the iPhone 17 simulator.
- Confirmed the bottom tab bar includes the new Ship tab.
- Opened Ship and checked the destination screen content.
- Inspected the screen for clipping, overlap, or unsafe spacing.
- Captured a final screenshot for evidence.

### Issues
- No issues noted.

### Screenshots
| iOS |
| --- |
| <a href="https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/ios/pr-10/5c6f99a0-52e5-42cb-9655-ce580e4cf796/ship-screen-MpBfTlDhmbNOtRiOorl0cNF00r1o2F.png"><img src="https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/ios/pr-10/5c6f99a0-52e5-42cb-9655-ce580e4cf796/ship-screen-MpBfTlDhmbNOtRiOorl0cNF00r1o2F.png" alt="ship-screen.png" height="500" /></a> |

### Next steps
- No further QA action needed for this PR.

### Metadata
- Build ID: `5c6f99a0-52e5-42cb-9655-ce580e4cf796`
- Workflow: https://expo.dev/accounts/callstack.io/projects/eas-agent-device/workflows/019ed587-28b6-77e2-bcf9-23a01acd8765

### JSON Report

```json
{
  "generatedAt": "2026-06-17T12:29:00.061Z",
  "model": "openai/gpt-5.4-mini",
  "buildId": "5c6f99a0-52e5-42cb-9655-ce580e4cf796",
  "workflowUrl": "https://expo.dev/accounts/callstack.io/projects/eas-agent-device/workflows/019ed587-28b6-77e2-bcf9-23a01acd8765",
  "platform": "ios",
  "platformLabel": "iOS",
  "prNumber": 10,
  "screenshots": [
    {
      "fileName": "ship-screen.png",
      "absolutePath": "/var/folders/51/y6phq4kx54bdjkgn5fc44z3m0000gn/T/agent-qa-screenshots/ship-screen.png",
      "bytes": 241782,
      "blobUrl": "https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/ios/pr-10/5c6f99a0-52e5-42cb-9655-ce580e4cf796/ship-screen-MpBfTlDhmbNOtRiOorl0cNF00r1o2F.png",
      "blobDownloadUrl": "https://amajruqpbdgmf7za.public.blob.vercel-storage.com/agent-qa/ios/pr-10/5c6f99a0-52e5-42cb-9655-ce580e4cf796/ship-screen-MpBfTlDhmbNOtRiOorl0cNF00r1o2F.png?download=1",
      "blobPathname": "agent-qa/ios/pr-10/5c6f99a0-52e5-42cb-9655-ce580e4cf796/ship-screen-MpBfTlDhmbNOtRiOorl0cNF00r1o2F.png",
      "label": "Ship screen"
    }
  ],
  "agentDeviceTrace": [
    {
      "requestedCommand": "help",
      "requestedArgs": [
        "workflow"
      ],
      "normalizedCommand": "help",
      "normalizedArgs": [
        "workflow"
      ],
      "executedArgv": [
        "help",
        "workflow"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "agent-device help workflow\n\nVersion-matched operating guide for normal agent-device work.\n\nCore loop:\n  devices/apps -> open -> snapshot or snapshot -i -> get/is/find/wait or press/fill/scroll/back -> verify -> close\n\nCommand shape:\n  Plans should use agent-device commands, not raw platform tools, pseudo commands, package-manager aliases, or helper prose.\n  Put subcommand first, then positionals, then flags:\n    agent-device open com.example.app --session checkout --platform android --relaunch\n    agent-device record start ./checkout.mp4 --session checkout\n  Snapshot refs look like @e12. After snapshot -i, use the exact @eN ref from that output.\n  If the exact ref is not known yet, first output snapshot -i, then use a concrete example shape like press @e12 in the next command; do not write @<ref>, @ref, @Label_Name, or @eN placeholders.\n  Close means agent-device close. App-owned back means back; system back means back --system.\n  Taps are press or click. Gestures use swipe, longpress, or gesture <pan|fling|swipe|pinch|rotate|transform>. Use gesture swipe left|right for reliable in-page horizontal swipes, and gesture swipe right-edge for left-edge navigation/back gestures. Android pinch, rotate, and transform use provider-native touch injection when available, then the bundled multi-touch helper. iOS simulator transform uses private XCTest synthesis for a continuous two-finger pan/scale/rotation path; otherwise it reports UNSUPPORTED_OPERATION.\n\nBootstrap:\n  agent-device devices --platform ios\n  agent-device apps --platform android\n  agent-device open MyApp --platform ios --device \"iPhone 17 Pro\"\n  agent-device open <discovered-app-id> --session checkout --platform android\n  agent-device install com.example.app ./dist/app.apk --platform android\n  agent-device reinstall com.example.app ./build/MyApp.app --platform ios\n  agent-device install-from-source --github-actions-artifact org/repo:app-debug --platform android\n  agent-device open com.example.app --platform android --relaunch\n  agent-device prepare ios-runner --platform ios --timeout 240000\n  If app id is unknown, plan devices, apps, then open <discovered-app-id>. Discovery is not enough when the task asks to open/start the app.\n  Install arguments are app/package id then artifact path. If the task says install, use install; use reinstall only when explicitly requested. Fresh runtime state is open --relaunch after install.\n  In iOS CI, run prepare ios-runner after boot/install and before replay/test. prepare ios-runner builds/reuses the XCTest runner and proves it can answer a lightweight command before the first snapshot pays that setup cost.\n  Do not open artifact paths or invent package ids. If apps lookup misses the target and no URL/artifact is provided, ask or stop.\n\nSnapshots and refs:\n  snapshot reads visible state. snapshot -i gets current interactive refs only; it is the fast path when the next step is an interaction.\n  Default snapshot text is an agent-facing, token-efficient view for planning and targeting actions; use --raw or --json only when you need the full provider tree.\n  Snapshot legend:\n    @e12 [button] label=\"Add to cart\" id=\"add-cart\" enabled hittable -> press @e12 or press 'id=\"add-cart\"'.\n    @e13 [textinput] label=\"Notes\" preview=\"Leave at side...\" truncated -> snapshot -s @e13 before reading.\n    @e14 [cell] label=\"Profiles\" focused -> tvOS focus is currently on this row.\n    [off-screen below] 4 items: \"Privacy\", \"About\" -> scroll down, then snapshot -i; those are hints, not refs.\n  Re-snapshot after navigation, submit, typing/fill, modal/list/reload/dynamic changes when you need new refs.\n  Anti-pattern: snapshot -i followed by snapshot -i | grep ...\n  Refs from the first snapshot remain valid until you press, fill, type, scroll, go back, wait for async UI, or otherwise change app state.\n  After a mutation, prefer a known selector/label directly (for example press 'label=\"Send\"') because interaction commands refresh interactive state internally\n...<truncated>",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Snapshot: 6 nodes\n@e1 [application] \"AgentDeviceRunner\"\n@e2 [window]\n@e3 [other] \"Logo\"\n@e4 [image] \"Logo\"\n@e5 [text] \"Agent Device Runner\"\n@e6 [image] \"PoweredBy\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "open",
      "requestedArgs": [
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "normalizedCommand": "open",
      "normalizedArgs": [
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "executedArgv": [
        "open",
        "dev.expo.easagentdevice",
        "--relaunch"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Opened: dev.expo.easagentdevice\nSession state: /Users/expo/.agent-device/sessions/qa-ios\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 15 nodes\n@e1 [application] \"eas-agent-device\"\n@e2 [window]\n@e3 [other] \"0 pages\"\n@e4 [scroll-area] \"Welcome!\" [scrollable]\n@e5 [other] \"Welcome!\"\n@e6 [text] \"👋\"\n@e7 [text] \"Step 1: Try it\"\n@e8 [text] \"Edit app/(tabs)/index.tsx to see changes. Press cmd + d to open developer tools.\"\n@e9 [text] \"Tap the Explore tab to learn more about what's included in this starter app.\"\n@e10 [text] \"Step 3: Get a fresh start\"\n@e11 [text] \"When you're ready, run npm run reset-project to get a fresh app directory. This will move the current app to app-example.\"\n@e12 [other] \"Home, tab, 1 of 3\"\n@e13 [button] \"Home, tab, 1 of 3\" [selected]\n@e14 [button] \"Explore, tab, 2 of 3\"\n@e15 [button] \"Ship, tab, 3 of 3\"\n",
      "stderr": ""
    },
    {
      "requestedCommand": "press",
      "requestedArgs": [
        "@e15"
      ],
      "normalizedCommand": "press",
      "normalizedArgs": [
        "@e15"
      ],
      "executedArgv": [
        "press",
        "@e15"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Tapped @e15 (335, 816)\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 15 visible nodes (20 total)\n@e1 [application] \"eas-agent-device\"\n@e2 [window]\n@e3 [scroll-area] \"VERCEL SHIP LONDON\" [scrollable]\n  [content below scroll-area hidden]\n@e4 [text] \"VERCEL SHIP LONDON\"\n@e5 [text] \"Ship what's next\"\n@e6 [text] \"Vercel Ship brings builders together to see how modern products move from idea to production with the AI Cloud.\"\n@e7 [text] \"Magazine London\"\n@e8 [text] \"June 17\"\n@e9 [text] \"AI SDK, Sandbox, agents, and Next.js\"\n@e10 [text] \"About Vercel\"\n@e11 [text] \"Vercel gives teams developer tools and cloud infrastructure for building, scaling, and securing fast web experiences. Its platform is shaped around framework-defined infrastructure: push code, generate previews, and let the platform provision the pieces that the application needs.\"\n@e17 [other] \"Home, tab, 1 of 3\"\n@e18 [button] \"Home, tab, 1 of 3\"\n@e19 [button] \"Explore, tab, 2 of 3\"\n@e20 [button] \"Ship, tab, 3 of 3\" [selected]\n",
      "stderr": ""
    },
    {
      "requestedCommand": "screenshot",
      "requestedArgs": [
        "/var/folders/51/y6phq4kx54bdjkgn5fc44z3m0000gn/T/agent-qa-screenshots/ship-screen.png"
      ],
      "normalizedCommand": "screenshot",
      "normalizedArgs": [
        "/var/folders/51/y6phq4kx54bdjkgn5fc44z3m0000gn/T/agent-qa-screenshots/ship-screen.png"
      ],
      "executedArgv": [
        "screenshot",
        "/var/folders/51/y6phq4kx54bdjkgn5fc44z3m0000gn/T/agent-qa-screenshots/ship-screen.png"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "/var/folders/51/y6phq4kx54bdjkgn5fc44z3m0000gn/T/agent-qa-screenshots/ship-screen.png\n",
      "stderr": ""
    },
    {
      "requestedCommand": "snapshot",
      "requestedArgs": [
        "-i"
      ],
      "normalizedCommand": "snapshot",
      "normalizedArgs": [
        "-i"
      ],
      "executedArgv": [
        "snapshot",
        "-i"
      ],
      "ok": true,
      "exitCode": 0,
      "stdout": "Page: dev.expo.easagentdevice\nApp: dev.expo.easagentdevice\nSnapshot: 15 visible nodes (20 total)\n@e1 [application] \"eas-agent-device\"\n@e2 [window]\n@e3 [scroll-area] \"VERCEL SHIP LONDON\" [scrollable]\n  [content below scroll-area hidden]\n@e4 [text] \"VERCEL SHIP LONDON\"\n@e5 [text] \"Ship what's next\"\n@e6 [text] \"Vercel Ship brings builders together to see how modern products move from idea to production with the AI Cloud.\"\n@e7 [text] \"Magazine London\"\n@e8 [text] \"June 17\"\n@e9 [text] \"AI SDK, Sandbox, agents, and Next.js\"\n@e10 [text] \"About Vercel\"\n@e11 [text] \"Vercel gives teams developer tools and cloud infrastructure for building, scaling, and securing fast web experiences. Its platform is shaped around framework-defined infrastructure: push code, generate previews, and let the platform provision the pieces that the application needs.\"\n@e17 [other] \"Home, tab, 1 of 3\"\n@e18 [button] \"Home, tab, 1 of 3\"\n@e19 [button] \"Explore, tab, 2 of 3\"\n@e20 [button] \"Ship, tab, 3 of 3\" [selected]\n",
      "stderr": ""
    }
  ],
  "overallStatus": "passed",
  "summary": "Completed the lightweight iOS QA pass for PR #10. The app foregrounded correctly, the new Ship tab is visible in the bottom tab bar, and the Ship screen opens with the expected Vercel/Ship London content and no obvious visual defects.",
  "checked": [
    "Verified dev.expo.easagentdevice was foregrounded on the iPhone 17 simulator.",
    "Confirmed the bottom tab bar includes the new Ship tab.",
    "Opened Ship and checked the destination screen content.",
    "Inspected the screen for clipping, overlap, or unsafe spacing.",
    "Captured a final screenshot for evidence."
  ],
  "issues": [],
  "nextSteps": [
    "No further QA action needed for this PR."
  ],
  "screenshotLabels": [
    {
      "fileName": "ship-screen.png",
      "label": "Ship screen"
    }
  ]
}

@thymikee thymikee force-pushed the codex/vercel-ship-tab branch 2 times, most recently from 2d2a367 to 2840a2f Compare June 17, 2026 09:58
@thymikee thymikee changed the title [codex] add Vercel Ship tab feat: add Vercel Ship tab Jun 17, 2026
@thymikee thymikee force-pushed the codex/vercel-ship-tab branch from bfe4520 to f4b2bed Compare June 17, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant