test(app): record native composer scroll regression QA
@@ -0,0 +1,101 @@
|
||||
# Native composer scroll regression
|
||||
|
||||
Commit: `b5e63f716`, pushed to `fix/new-workspace-composer-dock`.
|
||||
|
||||
The dock's dismiss surface is now a sibling behind the content. No JS responder from the dock sits above a native scroll view. New workspace's decorative form containers pass through empty-space touches on iOS; its controls remain touch targets. The `ComposerDock` interface, header dismissal, keyboard drivers, sizing model, and flick classifier are unchanged.
|
||||
|
||||
## Red / green
|
||||
|
||||
The same native swipe on `b68767635` changed **0.00%** of stream pixels, both from the bottom and after returning there and waiting for the scrollbar to fade. The new `stream-moved` assertion failed both captures. With the fix it changed **23.89%** and **26.44%**. [Raw assertion output](red-green.log).
|
||||
|
||||
The assertion ignores the scrollbar rail and requires at least 1% of pixels in the stream region to differ by more than 8 RGB levels. The host scenario submits a 50-line fixture through each real host, waits for the selectable mock model's response to finish and for JS/scrollbars to become idle, swipes natively, returns to the bottom, waits, and swipes again. Draft and New workspace submissions naturally transition to their new chats. Existing assertions, thresholds, inputs and gestures are unchanged.
|
||||
|
||||
| Reproduction | Before native swipe | After native swipe |
|
||||
| --- | --- | --- |
|
||||
| Broken branch, idle at bottom |  |  |
|
||||
| Fixed branch, idle at bottom |  |  |
|
||||
|
||||
## Android
|
||||
|
||||
```sh
|
||||
PASEO_COMPOSER_KEYBOARD_DAEMON_HOST=127.0.0.1:6768 \
|
||||
PASEO_COMPOSER_KEYBOARD_DAEMON_HOME=/home/moboudra/dev/paseo/.dev/paseo-home \
|
||||
npm run test:e2e:composer-keyboard:android
|
||||
```
|
||||
|
||||
**Final full harness: exit 0** on `b5e63f716`. [Raw output](harness-final.log). All original steps passed, plus the common scenario on every host: growth, bounds, retained close/reopen height, hold-delete reset, content/header dismissal, JS-stall motion, and command/file/model/attachment/forge popovers in both keyboard states. The initial run was intentionally stopped after iOS exposed the empty-padding hit-test failure; this final run includes the correction.
|
||||
|
||||
| Origin host | Native swipe after submit | Native swipe after returning to bottom + idle |
|
||||
| --- | ---: | ---: |
|
||||
| Chat | 24.30% | 23.50% |
|
||||
| New agent tab | 24.67% | 25.67% |
|
||||
| New workspace | 24.05% | 24.33% |
|
||||
|
||||
```text
|
||||
PASS host=chat: native stream swipe after submit and after idle at bottom
|
||||
PASS host=workspace-draft: native stream swipe after submit and after idle at bottom
|
||||
PASS host=new-workspace: native stream swipe after submit and after idle at bottom
|
||||
Composer keyboard invariants passed
|
||||
```
|
||||
|
||||
| Android idle swipe | Before | After |
|
||||
| --- | --- | --- |
|
||||
| Chat |  |  |
|
||||
| New agent tab submission |  |  |
|
||||
| New workspace submission |  |  |
|
||||
|
||||
## iOS
|
||||
|
||||
iPhone 16 Pro, iOS 18.6, shared Namespace Mac, isolated `composer-scroll-ios` session. This checkout's Metro was tunneled on 8083 and the daemon on 17668. Both owned processes and the device session were closed afterward; other sessions were left alone.
|
||||
|
||||
Native stream displacement after submit: **28.64%**. After returning to the bottom and waiting: **29.79%**. Slow native pan with keyboard open: **27.82%**, keyboard remained open and input height remained 30 pt. [Native assertions](ios/native-scroll.log), [slow-scroll assertion](ios/slow-scroll.log), [gesture output](ios/composer-scroll-ios-gestures.log).
|
||||
|
||||
| Host | Empty/reset | Cap, after header dismissal, after reopen | Empty-content/header dismissal |
|
||||
| --- | ---: | ---: | --- |
|
||||
| Chat | 30 pt | 298 pt | Passed |
|
||||
| New agent tab | 30 pt | 250 pt | Passed |
|
||||
| New workspace | 30 pt | 333 pt | Passed |
|
||||
|
||||
The first sibling-only implementation failed New workspace's empty-content dismissal on iOS: decorative form padding intercepted hit testing. `box-none` on layout containers and `none` on inert title/spacers fixed that failure; no responder was added above content. [Failing dismissal output](ios/new-workspace-padding-red.log), [passing output](ios/composer-scroll-ios-workspace-final.log).
|
||||
|
||||
A 230-point automated iOS fling still left the keyboard open. The pre-existing classifier is unchanged, and automated iOS flick dismissal remains a QA gap previously recorded for the extraction. This report does not claim a passing flick-dismissal result. Android's existing flick assertions remain in the full harness.
|
||||
|
||||
| iOS state | Before | After |
|
||||
| --- | --- | --- |
|
||||
| Native swipe after submit |  |  |
|
||||
| Native swipe after idle at bottom |  |  |
|
||||
| Slow pan with keyboard open |  |  |
|
||||
| Chat capped header dismissal |  |  |
|
||||
| New agent tab capped header dismissal |  |  |
|
||||
| New workspace capped header dismissal |  |  |
|
||||
|
||||
## Static checks
|
||||
|
||||
```text
|
||||
npm run format: exit 0
|
||||
npm run lint: exit 0; 0 warnings, 0 errors
|
||||
npm run typecheck: exit 0; all workspaces
|
||||
```
|
||||
|
||||
[Format](composer-scroll-format.log), [lint](composer-scroll-lint.log), [typecheck](composer-scroll-typecheck.log).
|
||||
|
||||
## Production APK
|
||||
|
||||
[Install the plain production APK](https://dev-new.tail8fe838.ts.net/paseo-composer-dock-b5e63f716.apk), built from pushed commit `b5e63f7160abe3fe3d7894fb603db2b3d2a2c219`. [Build output](release-build.log), [package metadata](apk-metadata.log), [HTTP verification](apk-http.log).
|
||||
|
||||
```sh
|
||||
cd packages/app
|
||||
npm --prefix ../.. run build:client && CI=1 APP_VARIANT=production npx expo prebuild --platform android --clean --non-interactive && cd android && ./gradlew assembleRelease --no-daemon -q
|
||||
# exit 0; working tree clean afterward
|
||||
# sh.paseo, version 0.8.0, versionCode 8000; target SDK 36; four ABIs
|
||||
# HTTP 200, application/vnd.android.package-archive, 262457899 bytes
|
||||
# SHA-256 b1ee48c1ddd16469ad0b2f257190bde4af3a1fd80666887b59a6a345bf3191a1
|
||||
```
|
||||
|
||||
Installed this APK successfully on the emulator and reran the original reported reproduction. Native stream displacement: **27.74%** from a fresh bottom and **25.07%** after returning to the bottom and waiting. [Assertion output](release/assertions.log), [original reproduction output](release/reproduction.log).
|
||||
|
||||
| Production idle swipe | Before | After |
|
||||
| --- | --- | --- |
|
||||
| Rebuilt APK |  |  |
|
||||
|
||||
PR #4973 remains unmerged, pending physical-phone acceptance of this replacement APK.
|
||||
|
After Width: | Height: | Size: 245 KiB |
|
After Width: | Height: | Size: 268 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 253 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 222 KiB |
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 235 KiB |
|
After Width: | Height: | Size: 238 KiB |
|
After Width: | Height: | Size: 260 KiB |
|
After Width: | Height: | Size: 260 KiB |
|
After Width: | Height: | Size: 221 KiB |
@@ -0,0 +1,7 @@
|
||||
HTTP/2 200
|
||||
accept-ranges: bytes
|
||||
content-type: application/vnd.android.package-archive
|
||||
last-modified: Wed, 16 Sep 2026 21:22:53 GMT
|
||||
content-length: 262457899
|
||||
date: Wed, 16 Sep 2026 21:23:03 GMT
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package: name='sh.paseo' versionCode='8000' versionName='0.8.0' platformBuildVersionName='16' platformBuildVersionCode='36' compileSdkVersion='36' compileSdkVersionCodename='16'
|
||||
sdkVersion:'29'
|
||||
targetSdkVersion:'36'
|
||||
native-code: 'arm64-v8a' 'armeabi-v7a' 'x86' 'x86_64'
|
||||
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 244 KiB |
@@ -0,0 +1,39 @@
|
||||
|
||||
> paseo@0.8.0 format
|
||||
> oxfmt .
|
||||
|
||||
(node:3389721) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389855) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389870) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389809) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389852) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389802) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389796) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389790) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389863) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389864) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389777) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389856) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389776) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389817) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389783) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389784) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3389826) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
Finished in 1520ms on 4547 files using 16 threads.
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
> paseo@0.8.0 lint
|
||||
> oxlint
|
||||
|
||||
Found 0 warnings and 0 errors.
|
||||
Finished in 849ms on 4260 files with 177 rules using 16 threads.
|
||||
@@ -0,0 +1,59 @@
|
||||
|
||||
> paseo@0.8.0 typecheck
|
||||
> npm run typecheck --workspaces --if-present
|
||||
|
||||
|
||||
> @getpaseo/expo-two-way-audio@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/highlight@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/plugin@0.8.0 typecheck
|
||||
> tsgo --noEmit && tsgo -p tsconfig.examples.json --noEmit
|
||||
|
||||
|
||||
> @getpaseo/protocol@0.8.0 pretypecheck
|
||||
> npm run generate:validators
|
||||
|
||||
|
||||
> @getpaseo/protocol@0.8.0 generate:validators
|
||||
> node scripts/generate-validation-aot.mjs
|
||||
|
||||
(node:3390483) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
generated src/generated/validation/ws-outbound.aot.ts from codegen/ws-outbound.compile.ts (WSOutboundMessageSchema)
|
||||
|
||||
> @getpaseo/protocol@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/client@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/server@0.8.0 typecheck
|
||||
> tsgo -p tsconfig.server.typecheck.json --noEmit
|
||||
|
||||
|
||||
> @getpaseo/app@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/relay@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/website@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
|
||||
> @getpaseo/desktop@0.8.0 typecheck
|
||||
> tsgo --noEmit -p tsconfig.json
|
||||
|
||||
|
||||
> @getpaseo/cli@0.8.0 typecheck
|
||||
> tsgo --noEmit
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
Native swipe moved stream content: 23.89% changed
|
||||
Native swipe moved stream content: 26.44% changed
|
||||
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 64 KiB |
@@ -0,0 +1,30 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
Filled 1 chars
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
Tapped (4, 370)
|
||||
Filled 131 chars
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-cap-open.png (402x874 @1x)
|
||||
Tapped (398, 118)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-header-dismissed.png (402x874 @1x)
|
||||
Tapped @e296 (201, 626)
|
||||
Error (TEXT_ENTRY_MISMATCH): text entry verification failed: expected "x", observed "x
|
||||
seventeen
|
||||
eighteen
|
||||
nineteen
|
||||
twenty"
|
||||
Hint: Retry with --debug and inspect diagnostics log for details.
|
||||
Diagnostic ID: mu4krczz-76a58021
|
||||
Diagnostics Log: /Users/runner/.agent-device/sessions/composer-scroll-ios/runner.log
|
||||
Tapped (370, 465.0000305175781)
|
||||
Long pressed (376, 720)
|
||||
PASS iOS host=chat: content/header dismissal, cap close/reopen 298pt, empty/reset 30pt, header/keyboard bounds
|
||||
|
||||
|
||||
A new version of devbox is available: 0.0.187.
|
||||
|
||||
Run `devbox update` to upgrade.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
Filled 1 chars
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
Tapped (4, 370)
|
||||
Filled 131 chars
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/workspace-draft-cap-open.png (402x874 @1x)
|
||||
Tapped (398, 118)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/workspace-draft-header-dismissed.png (402x874 @1x)
|
||||
Tapped @e83 (201, 650)
|
||||
Error (TEXT_ENTRY_MISMATCH): text entry verification failed: expected "x", observed "x
|
||||
eighteen
|
||||
nineteen
|
||||
twent"
|
||||
Hint: Retry with --debug and inspect diagnostics log for details.
|
||||
Diagnostic ID: mu4kyhro-28a33356
|
||||
Diagnostics Log: /Users/runner/.agent-device/sessions/composer-scroll-ios/runner.log
|
||||
Tapped (370, 465.0000305175781)
|
||||
Long pressed (376, 720)
|
||||
PASS iOS host=workspace-draft: content/header dismissal, cap close/reopen 250pt, empty/reset 30pt, header/keyboard bounds
|
||||
|
||||
|
||||
A new version of devbox is available: 0.0.187.
|
||||
|
||||
Run `devbox update` to upgrade.
|
||||
|
||||
@@ -0,0 +1,354 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
Tapped (398, 118)
|
||||
Opened: sh.paseo.debug
|
||||
Session state: /Users/runner/.agent-device/sessions/composer-scroll-ios
|
||||
Tapped @e422 (201, 760)
|
||||
settled after 2363ms: +35 -344 (~112 unchanged)
|
||||
- @e1 [application] "Paseo Debug"
|
||||
+ @e1 [application] "Paseo Debug"
|
||||
- @e25 [other] "Switch tabs (2 open)"
|
||||
- @e26 [other] "Open menu"
|
||||
- @e27 [other] "Open menu"
|
||||
- @e28 [other] "Open menu"
|
||||
- @e29 [other] "Open menu"
|
||||
- @e31 [button] "Open menu"
|
||||
+ @e29 [button] "Open menu"
|
||||
- @e36 [other] "main"
|
||||
- @e37 [other] "main"
|
||||
+ @e31 [other]
|
||||
- @e39 [text] "main"
|
||||
- @e41 [text] "composer-dock-ios-fixture"
|
||||
- @e43 [text] "·"
|
||||
- @e52 [text] "dev-new"
|
||||
- @e53 [button] "Workspace actions"
|
||||
- @e54 [button] "Open Explorer sidebar"
|
||||
+ @e43 [button] "Workspace actions"
|
||||
+ @e44 [button] "Open Explorer sidebar"
|
||||
- @e57 [button] "Switch tabs (2 open)"
|
||||
- @e58 [other] "workspace-active-tab-icon"
|
||||
- @e59 [other] "workspace-tabs-row"
|
||||
+ @e47 [button] "Switch tabs (2 open)"
|
||||
- @e62 [other] "Add attachment"
|
||||
- @e65 [other] "Message agent... Message, @files, /commands"
|
||||
- @e66 [other] "Scroll to bottom"
|
||||
- @e67 [other] "Horizontal scroll bar, 1 page"
|
||||
- @e69 [other] "Horizontal scroll bar, 1 page"
|
||||
- @e71 [other] "Horizontal scroll bar, 1 page"
|
||||
- @e72 [scroll-area] "Thinking"
|
||||
- @e73 [other] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e74 [other] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e76 [other] "older-history-slot"
|
||||
- @e78 [other] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e79 [other] "user-message"
|
||||
- @e80 [other] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e82 [text] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e83 [text] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e84 [other] "user-message-trailing-row"
|
||||
- @e85 [text] "8:53 PM"
|
||||
- @e86 [text] "8:53 PM"
|
||||
- @e87 [other] "Rewind to this message"
|
||||
- @e88 [button] "Rewind to this message"
|
||||
- @e89 [button] "Copy message"
|
||||
- @e90 [other] "Cycle 1"
|
||||
- @e91 [other] "assistant-message"
|
||||
- @e92 [other] "Cycle 1"
|
||||
- @e93 [other] "Cycle 1"
|
||||
+ @e57 [scroll-area]
|
||||
- @e95 [text-view] "Cycle 1"
|
||||
- @e96 [text-view] "Cycle 1"
|
||||
+ @e64 [text-view] "We rely on onContentSizeChange to detect new content, but that fires after layout, not as the streaming delta arrives, so we end up scrolling one frame late on fast streams."
|
||||
+ @e65 [text-view] "We rely on onContentSizeChange to detect new content, but that fires after layout, not as the streaming delta arrives, so we end up scrolling one frame late on fast streams."
|
||||
+ @e71 [text-view] "The gesture handler does not pause scroll-to-bottom while the user is actively dragging, which means a drag in progress can be visually overridden mid-frame."
|
||||
+ @e72 [text-view] "The gesture handler does not pause scroll-to-bottom while the user is actively dragging, which means a drag in progress can be visually overridden mid-frame."
|
||||
+ @e79 [text-view] "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout."
|
||||
+ @e80 [text-view] "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout."
|
||||
+ @e86 [text-view] "Let me make a small adjustment to the threshold and add a flag for active gestures, then run a quick command to confirm the order of events when streaming is fast."
|
||||
+ @e87 [text-view] "Let me make a small adjustment to the threshold and add a flag for active gestures, then run a quick command to confirm the order of events when streaming is fast."
|
||||
+ @e91 [button] "Edit, packages/app/src/hooks/use-scroll-anchor.ts"
|
||||
+ @e93 [button] "Shell, node scripts/simulate-stream-burst.mjs"
|
||||
+ @e98 [text-view] "The change should keep scroll-to-bottom working when the user is at the bottom while not yanking the viewport when they are reading earlier messages. The bash output confirms the userIsAtBottom flag flips correctly during a simulated streaming burst, and the gesture flag suppresses scroll while a drag is active. If you want, I can follow up with a regression test that drives the FlatList with synthetic deltas at high frequency to lock in the behavior. For now, I'll stop here so you can take a look.## Cycle"
|
||||
+ @e99 [text-view] "The change should keep scroll-to-bottom working when the user is at the bottom while not yanking the viewport when they are reading earlier messages. The bash output confirms the userIsAtBottom flag flips correctly during a simulated streaming burst, and the gesture flag suppresses scroll while a drag is active. If you want, I can follow up with a regression test that drives the FlatList with synthetic deltas at high frequency to lock in the behavior. For now, I'll stop here so you can take a look.## Cycle 3"
|
||||
+ @e105 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so"
|
||||
+ @e106 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so the first useful step is to read the relevant files."
|
||||
+ @e113 [button] "Scroll to bottom"
|
||||
+ @e116 [text-view] "Message agent... Message, @files, /commands"
|
||||
+ @e119 [button] "Add attachment"
|
||||
+ @e121 [button] "Select model (Ten second stream)"
|
||||
+ @e122 [image] "Context window 2% used"
|
||||
+ @e123 [button] "Start dictation"
|
||||
+ @e124 [button] "Enable Voice mode"
|
||||
+ @e129 [window]
|
||||
+ @e142 [scroll-area]
|
||||
+ @e144 [other] "Typing Predictions"
|
||||
+ @e147 [other] "I"
|
||||
+ @e148 [other] "The"
|
||||
+ @e149 [other] "I’m"
|
||||
+ @e155 [keyboard]
|
||||
… changed lines truncated
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-gesture-open.png (402x874 @1x)
|
||||
Panned (200, 210) by (0, 160)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-slow-down.png (402x874 @1x)
|
||||
Flung down
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-flick.png (402x874 @1x)
|
||||
Slow scroll retained keyboard; flick keyboard visible=true; input heights=30,30,30
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
dir=/Volumes/devbox/workspace/composer-scroll-ios-evidence
|
||||
ad(){ agent-device "$@" --session composer-scroll-ios; }
|
||||
ad snapshot --raw --json > "$dir/gesture-target.json"
|
||||
target=$(node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); console.log("@"+n.ref)' "$dir/gesture-target.json")
|
||||
ad press "$target" --settle
|
||||
ad snapshot --raw --json > "$dir/chat-gesture-open.json"
|
||||
ad screenshot "$dir/chat-gesture-open.png"
|
||||
ad gesture pan 200 210 0 160 1000
|
||||
sleep 1
|
||||
ad snapshot --raw --json > "$dir/chat-slow-down.json"
|
||||
ad screenshot "$dir/chat-slow-down.png"
|
||||
ad gesture fling down 200 180 230
|
||||
sleep 1
|
||||
ad snapshot --raw --json > "$dir/chat-flick.json"
|
||||
ad screenshot "$dir/chat-flick.png"
|
||||
node - "$dir" <<'JS'
|
||||
const dir=process.argv[2];
|
||||
const ns=name=>require(`${dir}/${name}.json`).data.nodes;
|
||||
const keyboard=name=>ns(name).some(n=>n.type==='Keyboard'&&n.rect.y<874);
|
||||
for(const name of ['chat-gesture-open','chat-slow-down']) if(!keyboard(name)) throw Error(`${name}: keyboard dismissed`);
|
||||
const h=name=>ns(name).find(n=>n.type==='TextView'&&n.label?.startsWith('Message agent')).rect.height;
|
||||
console.log(`Slow scroll retained keyboard; flick keyboard visible=${keyboard('chat-flick')}; input heights=${h('chat-gesture-open')},${h('chat-slow-down')},${h('chat-flick')}`);
|
||||
if(Math.abs(h('chat-gesture-open')-h('chat-flick'))>1/3)throw Error('Flick changed input height');
|
||||
JS
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
host="$1"
|
||||
dir=/Volumes/devbox/workspace/composer-scroll-ios-evidence
|
||||
ad(){ agent-device "$@" --session composer-scroll-ios; }
|
||||
snap(){ ad snapshot --raw --json > "$dir/$host-$1.json"; }
|
||||
ad press 398 118
|
||||
sleep 5
|
||||
ad screenshot "$dir/$host-native-submitted.png"
|
||||
ad gesture fling down 200 200 300
|
||||
sleep 2
|
||||
ad screenshot "$dir/$host-native-after-submit.png"
|
||||
for i in 1 2 3 4 5 6; do ad gesture fling up 200 650 450; done
|
||||
sleep 5
|
||||
ad screenshot "$dir/$host-native-bottom-idle.png"
|
||||
ad gesture fling down 200 200 300
|
||||
sleep 2
|
||||
ad screenshot "$dir/$host-native-after-idle.png"
|
||||
snap native-finished
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
React Native overlay dismiss action sent and verified gone
|
||||
Tapped label="Send message" (365, 801)
|
||||
Tapped (398, 118)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-native-submitted.png (402x874 @1x)
|
||||
Flung down
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-native-after-submit.png (402x874 @1x)
|
||||
Flung up
|
||||
Flung up
|
||||
Flung up
|
||||
Flung up
|
||||
Flung up
|
||||
Flung up
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-native-bottom-idle.png (402x874 @1x)
|
||||
Flung down
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/chat-native-after-idle.png (402x874 @1x)
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
host="$1"
|
||||
dir=/Volumes/devbox/workspace/composer-scroll-ios-evidence
|
||||
mkdir -p "$dir"
|
||||
ad() { agent-device "$@" --session composer-scroll-ios; }
|
||||
snap() { ad snapshot --raw --json > "$dir/$host-$1.json"; }
|
||||
clear_editor() {
|
||||
# XCTest's fill can leave the offscreen tail; use the actual delete key.
|
||||
snap target
|
||||
target=$(node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); console.log("@"+n.ref)' "$dir/$host-target.json")
|
||||
ad fill "$target" x || true
|
||||
snap clearing
|
||||
read -r x y < <(node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); console.log(n.rect.x+n.rect.width-3,n.rect.y+n.rect.height-8)' "$dir/$host-clearing.json")
|
||||
ad press "$x" "$y"
|
||||
ad longpress 376 720 12000
|
||||
snap cleared
|
||||
node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); if(n.value) throw Error("Draft not empty: "+n.value)' "$dir/$host-cleared.json"
|
||||
}
|
||||
clear_editor
|
||||
snap empty-open
|
||||
ad press 4 370
|
||||
snap content-dismissed
|
||||
snap target
|
||||
target=$(node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); console.log("@"+n.ref)' "$dir/$host-target.json")
|
||||
ad fill "$target" $'one\ntwo\nthree\nfour\nfive\nsix\nseven\neight\nnine\nten\neleven\ntwelve\nthirteen\nfourteen\nfifteen\nsixteen\nseventeen\neighteen\nnineteen\ntwenty'
|
||||
snap cap-open
|
||||
ad screenshot "$dir/$host-cap-open.png"
|
||||
ad press 398 118
|
||||
snap header-dismissed
|
||||
ad screenshot "$dir/$host-header-dismissed.png"
|
||||
snap target
|
||||
target=$(node -e 'const n=require(process.argv[1]).data.nodes.find(n=>n.type==="TextView" && n.label?.startsWith("Message agent")); console.log("@"+n.ref)' "$dir/$host-target.json")
|
||||
ad press "$target"
|
||||
snap reopened
|
||||
clear_editor
|
||||
node /Volumes/devbox/workspace/composer-dock-ios-assert.cjs "$dir" "$host"
|
||||
@@ -0,0 +1,234 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
Tapped (398, 118)
|
||||
Tapped id="menu-button" (24, 98)
|
||||
settled after 2154ms: +187 -7 (~123 unchanged)
|
||||
+ @e2 [window]
|
||||
+ @e4 [other] "Close menu"
|
||||
+ @e5 [button] "Close menu"
|
||||
+ @e127 [other] "Close sidebar"
|
||||
+ @e128 [button] "Close sidebar"
|
||||
+ @e129 [button] "New workspace"
|
||||
+ @e130 [button] "History"
|
||||
+ @e131 [button] "Search"
|
||||
+ @e132 [button] "Schedules"
|
||||
+ @e133 [scroll-area] "Pinned"
|
||||
+ @e134 [other] "Pinned"
|
||||
+ @e135 [button] "Pinned"
|
||||
+ @e136 [scroll-area]
|
||||
+ @e137 [cell] "skills, Skills"
|
||||
+ @e138 [button] "skills, Skills"
|
||||
+ @e139 [button] "Workspace actions"
|
||||
+ @e140 [other] "hub, Hub"
|
||||
+ @e141 [button] "hub, Hub"
|
||||
+ @e142 [button] "Workspace actions"
|
||||
+ @e143 [other] "assistant, Assistant"
|
||||
+ @e144 [button] "assistant, Assistant"
|
||||
+ @e145 [button] "Workspace actions"
|
||||
+ @e146 [other] "paseo, Paseo"
|
||||
+ @e147 [button] "paseo, Paseo"
|
||||
+ @e148 [button] "Workspace actions"
|
||||
+ @e149 [text] "Workspaces"
|
||||
+ @e150 [button] "Display preferences"
|
||||
+ @e151 [scroll-area] "Create a new workspace for assistant"
|
||||
+ @e152 [other] "admiring-hamster, Create a new workspace for admiring-hamster, Project actions"
|
||||
+ @e153 [button] "admiring-hamster, Create a new workspace for admiring-hamster, Project actions"
|
||||
+ @e154 [button] "Create a new workspace for admiring-hamster"
|
||||
+ @e155 [button] "Project actions"
|
||||
+ @e156 [scroll-area]
|
||||
+ @e157 [cell] "fix/terminal-keyboard-flicker, Pull request #4469"
|
||||
+ @e158 [button] "fix/terminal-keyboard-flicker, Pull request #4469"
|
||||
+ @e159 [button] "Workspace actions"
|
||||
+ @e160 [link] "Pull request #4469"
|
||||
+ @e161 [other] "Checks passed"
|
||||
+ @e162 [cell] "A, assistant, Create a new workspace for assistant, Project actions"
|
||||
+ @e163 [button] "A, assistant, Create a new workspace for assistant, Project actions"
|
||||
+ @e164 [button] "Create a new workspace for assistant"
|
||||
+ @e165 [button] "Project actions"
|
||||
+ @e166 [button] "Create a new workspace for assistant"
|
||||
+ @e167 [cell] "C, composer-dock-ios-fixture, Create a new workspace for composer-dock-ios-fixture, Project actions"
|
||||
+ @e168 [button] "C, composer-dock-ios-fixture, Create a new workspace for composer-dock-ios-fixture, Project actions"
|
||||
+ @e169 [button] "Create a new workspace for composer-dock-ios-fixture"
|
||||
+ @e170 [button] "Project actions"
|
||||
+ @e171 [scroll-area]
|
||||
+ @e172 [other] "main"
|
||||
+ @e173 [button] "main"
|
||||
+ @e174 [button] "Workspace actions"
|
||||
+ @e175 [cell] "editor, Create a new workspace for editor, Project actions"
|
||||
+ @e176 [button] "editor, Create a new workspace for editor, Project actions"
|
||||
+ @e177 [button] "Create a new workspace for editor"
|
||||
+ @e178 [button] "Project actions"
|
||||
+ @e179 [scroll-area]
|
||||
+ @e180 [cell] "Find Blank Page PR pending review"
|
||||
+ @e181 [button] "Find Blank Page PR pending review"
|
||||
+ @e182 [button] "Workspace actions"
|
||||
+ @e183 [cell] "Review #871 — sharing and handle flow, Pull request #871"
|
||||
+ @e184 [button] "Review #871 — sharing and handle flow, Pull request #871"
|
||||
+ @e185 [button] "Workspace actions"
|
||||
+ @e186 [other] "Checks passed"
|
||||
+ @e187 [cell] "G, greasy-yak, Create a new workspace for greasy-yak, Project actions"
|
||||
+ @e188 [button] "G, greasy-yak, Create a new workspace for greasy-yak, Project actions"
|
||||
+ @e189 [button] "Create a new workspace for greasy-yak"
|
||||
+ @e190 [button] "Project actions"
|
||||
+ @e191 [button] "Create a new workspace for greasy-yak"
|
||||
+ @e192 [other] "H, hub, Create a new workspace for hub, Project actions"
|
||||
+ @e193 [button] "H, hub, Create a new workspace for hub, Project actions"
|
||||
+ @e194 [button] "Create a new workspace for hub"
|
||||
+ @e195 [button] "Project actions"
|
||||
+ @e196 [scroll-area]
|
||||
+ @e197 [cell] "Fix hosted GitHub reply registration, Pull request #122"
|
||||
+ @e198 [button] "Fix hosted GitHub reply registration, Pull request #122"
|
||||
+ @e199 [button] "Workspace actions"
|
||||
+ @e200 [link] "Pull request #122"
|
||||
+ @e201 [other] "Checks passed"
|
||||
+ @e202 [cell] "Steer existing agents by trigger context, Pull request #118"
|
||||
+ @e203 [button] "Steer existing agents by trigger context, Pull request #118"
|
||||
… changed lines truncated
|
||||
Tapped id="sidebar-global-new-workspace" (201, 86)
|
||||
settled after 834ms: +10 -304 (~6 unchanged)
|
||||
- @e3 [other] "Switch tabs (2 open)"
|
||||
- @e4 [other] "Close menu"
|
||||
- @e5 [button] "Close menu"
|
||||
- @e6 [other] "main"
|
||||
- @e7 [text] "composer-dock-ios-fixture"
|
||||
- @e8 [text] "·"
|
||||
- @e9 [other] "dev-new"
|
||||
- @e10 [text] "dev-new"
|
||||
- @e11 [button] "Workspace actions"
|
||||
- @e12 [button] "Open Explorer sidebar"
|
||||
- @e13 [button] "Switch tabs (2 open)"
|
||||
- @e14 [other] "Add attachment"
|
||||
+ @e3 [other] "Open menu"
|
||||
+ @e4 [button] "Open menu"
|
||||
+ @e5 [other] "New workspace"
|
||||
+ @e6 [button] "Workspace project"
|
||||
+ @e7 [text] "C"
|
||||
+ @e8 [button] "Workspace isolation"
|
||||
+ @e9 [button] "Choose what to launch"
|
||||
- @e16 [other] "Scroll to bottom"
|
||||
- @e17 [scroll-area] "Thinking"
|
||||
- @e18 [other] "Native scroll fixture 0: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 1: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 2: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 3: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 4: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 5: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 6: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 7: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 8: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 9: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 10: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 11: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 12: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 13: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 14: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 15: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 16: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 17: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 18: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 19: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 20: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 21: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 22: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 23: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 24: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 25: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 26: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 27: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 28: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 29: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 30: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 31: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 32: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 33: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 34: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 35: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 36: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 37: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 38: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 39: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 40: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 41: distinct history row after submitting from a dock host.
|
||||
Native scroll fixture 42: distinct history row after submitting from a dock host.
|
||||
Native scroll fi"
|
||||
- @e19 [text] "8:53 PM"
|
||||
- @e20 [button] "Rewind to this message"
|
||||
- @e21 [button] "Copy message"
|
||||
- @e22 [other] "Cycle 1"
|
||||
- @e23 [text-view] "Cycle 1"
|
||||
- @e24 [text-view] "Cycle 1"
|
||||
- @e25 [other] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so"
|
||||
- @e26 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so"
|
||||
- @e27 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so the first useful step is to read the relevant files."
|
||||
- @e28 [other] "Thinking"
|
||||
- @e29 [button] "Thinking"
|
||||
- @e30 [other] "Read, packages/app/src/components/conversation-list.tsx"
|
||||
- @e31 [button] "Read, packages/app/src/components/conversation-list.tsx"
|
||||
- @e32 [other] "Search, scrollToEnd"
|
||||
- @e33 [button] "Search, scrollToEnd"
|
||||
- @e34 [other] "Now I have a clearer picture. The auto-scroll uses a ref on the FlatList and tracks whether the user has scrolled away from the bottom by comparing the offset against the content size. There are a few subtle issues worth flagging before we change anything:"
|
||||
- @e35 [text-view] "Now I have a clearer picture. The auto-scroll uses a ref on the FlatList and tracks whether the user has scrolled away from the bottom by comparing the offset against the content size. There are a few subtle issues worth flagging before we change anything:"
|
||||
- @e36 [text-view] "Now I have a clearer picture. The auto-scroll uses a ref on the FlatList and tracks whether the user has scrolled away from the bottom by comparing the offset against the content size. There are a few subtle issues worth flagging before we change anything:"
|
||||
- @e37 [text] "•"
|
||||
- @e38 [cell] "The threshold for 'near the bottom' is hardcoded at 80px, which feels too tight on dense content where headers and tool calls take up a lot of vertical space."
|
||||
- @e39 [text-view] "The threshold for 'near the bottom' is hardcoded at 80px, which feels too tight on dense content where headers and tool calls take up a lot of vertical space."
|
||||
- @e40 [text-view] "The threshold for 'near the bottom' is hardcoded at 80px, which feels too tight on dense content where headers and tool calls take up a lot of vertical space."
|
||||
- @e41 [text] "•"
|
||||
- @e42 [cell] "We rely on onContentSizeChange to detect new content, but that fires after layout, not as the streaming delta arrives, so we end up scrolling one frame late on fast streams."
|
||||
- @e43 [text-view] "We rely on onContentSizeChange to detect new content, but that fires after layout, not as the streaming delta arrives, so we end up scrolling one frame late on fast streams."
|
||||
- @e44 [text-view] "We rely on onContentSizeChange to detect new content, but that fires after layout, not as the streaming delta arrives, so we end up scrolling one frame late on fast streams."
|
||||
- @e45 [text] "•"
|
||||
- @e46 [cell] "The gesture handler does not pause scroll-to-bottom while the user is actively dragging, which means a drag in progress can be visually overridden mid-frame."
|
||||
- @e47 [text-view] "The gesture handler does not pause scroll-to-bottom while the user is actively dragging, which means a drag in progress can be visually overridden mid-frame."
|
||||
- @e48 [text-view] "The gesture handler does not pause scroll-to-bottom while the user is actively dragging, which means a drag in progress can be visually overridden mid-frame."
|
||||
- @e49 [text] "•"
|
||||
- @e50 [cell] "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout."
|
||||
- @e51 [text-view] "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout."
|
||||
- @e52 [text-view] "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout."
|
||||
- @e53 [cell] "Let me make a small adjustment to the threshold and add a flag for active gestures, then run a quick command to confirm the order of events when streaming is fast."
|
||||
- @e54 [text-view] "Let me make a small adjustment to the threshold and add a flag for active gestures, then run a quick command to confirm the order of events when streaming is fast."
|
||||
- @e55 [other] "Edit, packages/app/src/hooks/use-scroll-anchor.ts"
|
||||
- @e56 [button] "Edit, packages/app/src/hooks/use-scroll-anchor.ts"
|
||||
- @e57 [other] "Shell, node scripts/simulate-stream-burst.mjs"
|
||||
- @e58 [button] "Shell, node scripts/simulate-stream-burst.mjs"
|
||||
- @e59 [other] "The change should keep scroll-to-bottom working when the user is at the bottom while not yanking the viewport when they are reading earlier messages. The bash output confirms the userIsAtBottom flag flips correctly during a simulated streaming burst, and the gesture flag suppresses scroll while a drag is active. If you want, I can follow up with a regression test that drives the FlatList with synthetic deltas at high frequency to lock in the behavior. For now, I'll stop here so you can take a look.## Cycle"
|
||||
- @e60 [text-view] "The change should keep scroll-to-bottom working when the user is at the bottom while not yanking the viewport when they are reading earlier messages. The bash output confirms the userIsAtBottom flag flips correctly during a simulated streaming burst, and the gesture flag suppresses scroll while a drag is active. If you want, I can follow up with a regression test that drives the FlatList with synthetic deltas at high frequency to lock in the behavior. For now, I'll stop here so you can take a look.## Cycle"
|
||||
- @e61 [text-view] "The change should keep scroll-to-bottom working when the user is at the bottom while not yanking the viewport when they are reading earlier messages. The bash output confirms the userIsAtBottom flag flips correctly during a simulated streaming burst, and the gesture flag suppresses scroll while a drag is active. If you want, I can follow up with a regression test that drives the FlatList with synthetic deltas at high frequency to lock in the behavior. For now, I'll stop here so you can take a look.## Cycle 2"
|
||||
- @e62 [other] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so"
|
||||
- @e63 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so"
|
||||
- @e64 [text-view] "I'll take a look at the scroll anchor behavior you described. Let me start by walking through how the conversation list currently handles streaming updates and where the auto-scroll logic actually lives. My instinct is that the anchor is supposed to pin to the bottom only when the user is already there, but I want to confirm that against the code rather than guess. This kind of behavior is usually a thin layout effect over a ref, and the bugs tend to come from event ordering rather than the math itself, so the first useful step is to read the relevant files."
|
||||
- @e65 [other] "Thinking"
|
||||
- @e66 [button] "Thinking"
|
||||
- @e67 [other] "Read, packages/app/src/components/conversation-list.tsx"
|
||||
- @e68 [button] "Read, packages/app/src/components/conversation-list.tsx"
|
||||
- @e69 [other] "Search, scrollToEnd"
|
||||
- @e70 [button] "Search, scrollToEnd"
|
||||
- @e71 [other] "Now I have a clearer picture. The auto-scroll uses a ref on the FlatList and tracks whether the user has scrolled away from the bottom by comparing the offset against the content size. There are a few subtle issues worth flagging before we change anything:"
|
||||
- @e72 [text-view] "Now I have a clearer picture. The auto-scroll uses a ref on the FlatList and tracks whether the user has scrolled away from the bottom by comparing the offset against the content size. There are a few subtle issues worth flagging before we change anything:"
|
||||
- @e73 [text] "•"
|
||||
+ @e13 [other] "Select model (Select model)"
|
||||
+ @e14 [button] "Select model (Select model)"
|
||||
+ @e16 [button] "Create"
|
||||
… changed lines truncated
|
||||
Filled 1 chars
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
Tapped (4, 370)
|
||||
Filled 131 chars
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/new-workspace-cap-open.png (402x874 @1x)
|
||||
Tapped (398, 118)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/new-workspace-header-dismissed.png (402x874 @1x)
|
||||
Tapped @e54 (201, 609)
|
||||
Error (TEXT_ENTRY_MISMATCH): text entry verification failed: expected "x", observed "x
|
||||
seventeen
|
||||
eighteen
|
||||
nineteen
|
||||
twenty"
|
||||
Hint: Retry with --debug and inspect diagnostics log for details.
|
||||
Diagnostic ID: mu4l31h0-f92c6619
|
||||
Diagnostics Log: /Users/runner/.agent-device/sessions/composer-scroll-ios/runner.log
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
PASS iOS host=new-workspace: content/header dismissal, cap close/reopen 333pt, empty/reset 30pt, header/keyboard bounds
|
||||
@@ -0,0 +1,5 @@
|
||||
Native swipe moved stream content: 28.64% changed
|
||||
Native swipe moved stream content: 29.79% changed
|
||||
PASS iOS chat: content/header dismiss; empty 30pt; cap 298pt retained after dismissal/reopen; cleared 30pt
|
||||
PASS iOS workspace-draft: content/header dismiss; empty 30pt; cap 250pt retained after dismissal/reopen; cleared 30pt
|
||||
PASS iOS new-workspace: content/header dismiss; empty 30pt; cap 333pt retained after dismissal/reopen; cleared 30pt
|
||||
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 27 KiB |
@@ -0,0 +1,206 @@
|
||||
|
||||
Connecting to 3s0s50t248bag ...
|
||||
|
||||
Warning: Permanently added 'paseo-ios.devbox.namespace' (RSA) to the list of known hosts.
|
||||
Tapped (398, 118)
|
||||
Tapped id="menu-button" (24, 98)
|
||||
settled after 2066ms: +183 -7 (~19 unchanged)
|
||||
+ @e2 [window]
|
||||
+ @e4 [other] "Close menu"
|
||||
+ @e5 [button] "Close menu"
|
||||
+ @e23 [other] "Close sidebar"
|
||||
+ @e24 [button] "Close sidebar"
|
||||
+ @e25 [button] "New workspace"
|
||||
+ @e26 [button] "History"
|
||||
+ @e27 [button] "Search"
|
||||
+ @e28 [button] "Schedules"
|
||||
+ @e29 [scroll-area] "Pinned"
|
||||
+ @e30 [other] "Pinned"
|
||||
+ @e31 [button] "Pinned"
|
||||
+ @e32 [scroll-area]
|
||||
+ @e33 [cell] "skills, Skills"
|
||||
+ @e34 [button] "skills, Skills"
|
||||
+ @e35 [button] "Workspace actions"
|
||||
+ @e36 [other] "hub, Hub, Ready to review"
|
||||
+ @e37 [button] "hub, Hub, Ready to review"
|
||||
+ @e38 [button] "Workspace actions"
|
||||
+ @e39 [other] "assistant, Assistant"
|
||||
+ @e40 [button] "assistant, Assistant"
|
||||
+ @e41 [button] "Workspace actions"
|
||||
+ @e42 [other] "paseo, Paseo"
|
||||
+ @e43 [button] "paseo, Paseo"
|
||||
+ @e44 [button] "Workspace actions"
|
||||
+ @e45 [text] "Workspaces"
|
||||
+ @e46 [button] "Display preferences"
|
||||
+ @e47 [scroll-area] "Create a new workspace for assistant"
|
||||
+ @e48 [other] "admiring-hamster, Create a new workspace for admiring-hamster, Project actions"
|
||||
+ @e49 [button] "admiring-hamster, Create a new workspace for admiring-hamster, Project actions"
|
||||
+ @e50 [button] "Create a new workspace for admiring-hamster"
|
||||
+ @e51 [button] "Project actions"
|
||||
+ @e52 [scroll-area]
|
||||
+ @e53 [cell] "fix/terminal-keyboard-flicker, Pull request #4469"
|
||||
+ @e54 [button] "fix/terminal-keyboard-flicker, Pull request #4469"
|
||||
+ @e55 [button] "Workspace actions"
|
||||
+ @e56 [other] "Checks passed"
|
||||
+ @e57 [cell] "A, assistant, Create a new workspace for assistant, Project actions"
|
||||
+ @e58 [button] "A, assistant, Create a new workspace for assistant, Project actions"
|
||||
+ @e59 [button] "Create a new workspace for assistant"
|
||||
+ @e60 [button] "Project actions"
|
||||
+ @e61 [button] "Create a new workspace for assistant"
|
||||
+ @e62 [cell] "C, composer-dock-ios-fixture, Create a new workspace for composer-dock-ios-fixture, Project actions"
|
||||
+ @e63 [button] "C, composer-dock-ios-fixture, Create a new workspace for composer-dock-ios-fixture, Project actions"
|
||||
+ @e64 [button] "Create a new workspace for composer-dock-ios-fixture"
|
||||
+ @e65 [button] "Project actions"
|
||||
+ @e66 [scroll-area]
|
||||
+ @e67 [other] "main"
|
||||
+ @e68 [button] "main"
|
||||
+ @e69 [button] "Workspace actions"
|
||||
+ @e70 [cell] "editor, Create a new workspace for editor, Project actions"
|
||||
+ @e71 [button] "editor, Create a new workspace for editor, Project actions"
|
||||
+ @e72 [button] "Create a new workspace for editor"
|
||||
+ @e73 [button] "Project actions"
|
||||
+ @e74 [scroll-area]
|
||||
+ @e75 [cell] "Find Blank Page PR pending review"
|
||||
+ @e76 [button] "Find Blank Page PR pending review"
|
||||
+ @e77 [button] "Workspace actions"
|
||||
+ @e78 [cell] "Review #871 — sharing and handle flow, Pull request #871"
|
||||
+ @e79 [button] "Review #871 — sharing and handle flow, Pull request #871"
|
||||
+ @e80 [button] "Workspace actions"
|
||||
+ @e81 [text] "·"
|
||||
+ @e82 [other] "Checks passed"
|
||||
+ @e83 [cell] "G, greasy-yak, Create a new workspace for greasy-yak, Project actions"
|
||||
+ @e84 [button] "G, greasy-yak, Create a new workspace for greasy-yak, Project actions"
|
||||
+ @e85 [button] "Create a new workspace for greasy-yak"
|
||||
+ @e86 [button] "Project actions"
|
||||
+ @e87 [button] "Create a new workspace for greasy-yak"
|
||||
+ @e88 [other] "H, hub, Create a new workspace for hub, Project actions"
|
||||
+ @e89 [button] "H, hub, Create a new workspace for hub, Project actions"
|
||||
+ @e90 [button] "Create a new workspace for hub"
|
||||
+ @e91 [button] "Project actions"
|
||||
+ @e92 [scroll-area]
|
||||
+ @e93 [cell] "Fix hosted GitHub reply registration, Pull request #122"
|
||||
+ @e94 [button] "Fix hosted GitHub reply registration, Pull request #122"
|
||||
+ @e95 [button] "Workspace actions"
|
||||
+ @e96 [other] "Checks passed"
|
||||
+ @e97 [cell] "Steer existing agents by trigger context, Pull request #118"
|
||||
+ @e98 [button] "Steer existing agents by trigger context, Pull request #118"
|
||||
+ @e99 [button] "Workspace actions"
|
||||
… changed lines truncated
|
||||
Tapped id="sidebar-global-new-workspace" (201, 86)
|
||||
settled after 2238ms: +49 -202 (~0 unchanged)
|
||||
- @e1 [application] "Paseo Debug"
|
||||
- @e2 [window]
|
||||
- @e3 [other] "Switch tabs (2 open)"
|
||||
- @e4 [other] "Close menu"
|
||||
- @e5 [button] "Close menu"
|
||||
- @e6 [other] "main"
|
||||
- @e7 [text] "composer-dock-ios-fixture"
|
||||
- @e8 [text] "·"
|
||||
- @e9 [other] "dev-new"
|
||||
- @e10 [text] "dev-new"
|
||||
- @e11 [button] "Workspace actions"
|
||||
- @e12 [button] "Open Explorer sidebar"
|
||||
- @e13 [button] "Switch tabs (2 open)"
|
||||
- @e14 [other] "Import session"
|
||||
- @e15 [scroll-area]
|
||||
- @e16 [button] "Import session"
|
||||
- @e17 [other] "Message agent... Message, @files, /commands"
|
||||
- @e18 [text-view] "Message agent... Message, @files, /commands"
|
||||
- @e19 [button] "Add attachment"
|
||||
- @e20 [other] "Select model (Select model)"
|
||||
- @e21 [button] "Select model (Select model)"
|
||||
- @e22 [button] "Start dictation"
|
||||
- @e23 [other] "Close sidebar"
|
||||
- @e24 [button] "Close sidebar"
|
||||
- @e25 [button] "New workspace"
|
||||
- @e26 [button] "History"
|
||||
- @e27 [button] "Search"
|
||||
- @e28 [button] "Schedules"
|
||||
- @e29 [scroll-area] "Pinned"
|
||||
- @e30 [other] "Pinned"
|
||||
- @e31 [button] "Pinned"
|
||||
+ @e1 [application] "Paseo Debug"
|
||||
+ @e2 [window]
|
||||
+ @e3 [other]
|
||||
+ @e4 [other]
|
||||
+ @e5 [other]
|
||||
+ @e6 [other]
|
||||
+ @e7 [other]
|
||||
+ @e8 [other]
|
||||
+ @e9 [other]
|
||||
+ @e10 [other]
|
||||
+ @e11 [other]
|
||||
+ @e12 [other]
|
||||
+ @e13 [other]
|
||||
+ @e14 [other]
|
||||
+ @e15 [other]
|
||||
+ @e16 [other]
|
||||
+ @e17 [other]
|
||||
+ @e18 [other]
|
||||
+ @e19 [other]
|
||||
+ @e20 [other]
|
||||
+ @e21 [other]
|
||||
+ @e22 [other]
|
||||
+ @e23 [button] "Open menu"
|
||||
+ @e24 [other]
|
||||
+ @e25 [other]
|
||||
+ @e26 [other]
|
||||
+ @e27 [text] "New workspace"
|
||||
+ @e28 [button] "Workspace project"
|
||||
+ @e29 [text] "C"
|
||||
+ @e30 [button] "Workspace isolation"
|
||||
+ @e31 [other]
|
||||
+ @e32 [button] "Choose what to launch"
|
||||
+ @e33 [other]
|
||||
+ @e34 [other]
|
||||
+ @e35 [text-view] "Message agent... Message, @files, /commands"
|
||||
+ @e36 [other]
|
||||
+ @e37 [other]
|
||||
+ @e38 [button] "Add attachment"
|
||||
+ @e39 [other]
|
||||
+ @e40 [button] "Select model (Select model)"
|
||||
+ @e41 [button] "Start dictation"
|
||||
+ @e42 [button] "Create"
|
||||
+ @e43 [other]
|
||||
+ @e44 [other]
|
||||
+ @e45 [other]
|
||||
+ @e46 [other]
|
||||
+ @e47 [window]
|
||||
+ @e48 [other]
|
||||
+ @e49 [other]
|
||||
… changed lines truncated
|
||||
Filled 1 chars
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
Tapped (4, 370)
|
||||
Filled 131 chars
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/new-workspace-cap-open.png (402x874 @1x)
|
||||
Tapped (398, 118)
|
||||
/Volumes/devbox/workspace/composer-scroll-ios-evidence/new-workspace-header-dismissed.png (402x874 @1x)
|
||||
Tapped @e51 (201, 609)
|
||||
Error (TEXT_ENTRY_MISMATCH): text entry verification failed: expected "x", observed "x
|
||||
seventeen
|
||||
eighteen
|
||||
nineteen
|
||||
twenty"
|
||||
Hint: Retry with --debug and inspect diagnostics log for details.
|
||||
Diagnostic ID: mu4kztek-1dc7138c
|
||||
Diagnostics Log: /Users/runner/.agent-device/sessions/composer-scroll-ios/runner.log
|
||||
Tapped (370, 465)
|
||||
Long pressed (376, 720)
|
||||
/Volumes/devbox/workspace/composer-dock-ios-assert.cjs:6
|
||||
for(const name of ['content-dismissed','header-dismissed']) if(keyboard(read(name))) throw Error(`${name}: keyboard still visible`);
|
||||
^
|
||||
|
||||
Error: content-dismissed: keyboard still visible
|
||||
at Object.<anonymous> (/Volumes/devbox/workspace/composer-dock-ios-assert.cjs:6:92)
|
||||
at Module._compile (node:internal/modules/cjs/loader:1706:14)
|
||||
at Object..js (node:internal/modules/cjs/loader:1839:10)
|
||||
at Module.load (node:internal/modules/cjs/loader:1441:32)
|
||||
at Function._load (node:internal/modules/cjs/loader:1263:12)
|
||||
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
|
||||
at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
|
||||
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
|
||||
at node:internal/main/run_main_module:36:49
|
||||
|
||||
Node.js v22.20.0
|
||||
@@ -0,0 +1 @@
|
||||
Native swipe moved stream content: 27.82% changed
|
||||
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,8 @@
|
||||
file:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/packages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:38
|
||||
if (fraction < 0.01) throw new Error(`Native swipe did not move stream content: ${(fraction * 100).toFixed(2)}% changed`);
|
||||
^
|
||||
|
||||
Error: Native swipe did not move stream content: 0.00% changed
|
||||
at [90mfile:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/[39mpackages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:38:30
|
||||
|
||||
Node.js v22.20.0
|
||||
@@ -0,0 +1,26 @@
|
||||
before: 0-bottom -> 1-after-scroll-up; exit 1
|
||||
file:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/packages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:49
|
||||
throw new Error(
|
||||
^
|
||||
|
||||
Error: Native swipe did not move stream content: 0.00% changed
|
||||
at [90mfile:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/[39mpackages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:49:11
|
||||
|
||||
Node.js v22.20.0
|
||||
|
||||
before: 2-back-at-bottom-idle -> 3-after-scroll-up-2; exit 1
|
||||
file:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/packages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:49
|
||||
throw new Error(
|
||||
^
|
||||
|
||||
Error: Native swipe did not move stream content: 0.00% changed
|
||||
at [90mfile:///home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/[39mpackages/app/e2e/mobile/composer-keyboard/assert-composer-keyboard.mjs:49:11
|
||||
|
||||
Node.js v22.20.0
|
||||
|
||||
after: 0-bottom -> 1-after-scroll-up; exit 0
|
||||
Native swipe moved stream content: 23.89% changed
|
||||
|
||||
after: 2-back-at-bottom-idle -> 3-after-scroll-up-2; exit 0
|
||||
Native swipe moved stream content: 26.44% changed
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
$ cd packages/app
|
||||
$ npm --prefix ../.. run build:client && CI=1 APP_VARIANT=production npx expo prebuild --platform android --clean --non-interactive && cd android && ./gradlew assembleRelease --no-daemon -q
|
||||
|
||||
> paseo@0.8.0 build:client
|
||||
> npm run build --workspace=@getpaseo/client
|
||||
|
||||
> @getpaseo/client@0.8.0 build
|
||||
> npm run build --workspace=@getpaseo/protocol && tsc -p tsconfig.json --incremental false
|
||||
|
||||
> @getpaseo/protocol@0.8.0 prebuild
|
||||
> npm run generate:validators
|
||||
|
||||
> @getpaseo/protocol@0.8.0 generate:validators
|
||||
> node scripts/generate-validation-aot.mjs
|
||||
|
||||
generated src/generated/validation/ws-outbound.aot.ts from codegen/ws-outbound.compile.ts (WSOutboundMessageSchema)
|
||||
|
||||
> @getpaseo/protocol@0.8.0 build
|
||||
> tsc -p tsconfig.json --incremental false
|
||||
(node:3418652) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m [33m[1m--non-interactive[22m[39m[33m is not supported, use [33m[1m$CI=1[22m[39m[33m instead[39m
|
||||
(node:3418664) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
- [1mClearing android[22m
|
||||
[32m✔[39m Cleared android code
|
||||
- [1mCreating native directory (./android)[22m
|
||||
[32m✔[39m Created native directory
|
||||
- [1mUpdating package.json[22m
|
||||
[32m✔[39m Updated package.json[2m | no changes[22m
|
||||
- [1mRunning prebuild[22m
|
||||
[32m✔[39m Finished prebuild
|
||||
[32m[ExpoRootProject][0m Using the following versions:
|
||||
- buildTools: [32m36.0.0[0m
|
||||
- minSdk: [32m29[0m
|
||||
- compileSdk: [32m36[0m
|
||||
- targetSdk: [32m36[0m
|
||||
- ndk: [32m27.1.12297006[0m
|
||||
- kotlin: [32m2.1.20[0m
|
||||
- ksp: [32m2.1.20-2.0.1[0m
|
||||
ℹ️ [33mApplying gradle plugin[0m '[32mexpo-dev-launcher-gradle-plugin[0m'
|
||||
|
||||
Using expo modules
|
||||
- [32mgetpaseo-expo-two-way-audio[0m (0.1.0)
|
||||
- [32mexpo-constants[0m (18.0.13)
|
||||
- [32mexpo-dev-client[0m (6.0.20)
|
||||
- [32mexpo-dev-launcher[0m (6.0.20)
|
||||
- [32mexpo-dev-menu[0m (7.0.18)
|
||||
- [32mexpo-dev-menu-interface[0m (2.0.0)
|
||||
- [32mexpo-json-utils[0m (0.15.0)
|
||||
- [32mexpo-manifests[0m (1.0.10)
|
||||
- [32mexpo-modules-core[0m (3.0.29)
|
||||
- [32mexpo-updates-interface[0m (2.0.0)
|
||||
- [32mpaseo-diff-prototype[0m (0.1.0)
|
||||
- [32mpaseo-native-trace[0m (0.1.0)
|
||||
- [32mpaseo-word-stream[0m (0.1.0)
|
||||
- [33m[📦][0m [32mexpo-application[0m (7.0.8)
|
||||
- [33m[📦][0m [32mexpo-asset[0m (12.0.12)
|
||||
- [33m[📦][0m [32mexpo-audio[0m (1.0.16)
|
||||
- [33m[📦][0m [32mexpo-camera[0m (17.0.10)
|
||||
- [33m[📦][0m [32mexpo-clipboard[0m (8.0.7)
|
||||
- [33m[📦][0m [32mexpo-crypto[0m (15.0.8)
|
||||
- [33m[📦][0m [32mexpo-document-picker[0m (14.0.8)
|
||||
- [33m[📦][0m [32mexpo-file-system[0m (19.0.21)
|
||||
- [33m[📦][0m [32mexpo-font[0m (14.0.11)
|
||||
- [33m[📦][0m [32mexpo-haptics[0m (15.0.8)
|
||||
- [33m[📦][0m [32mexpo-image[0m (3.0.11)
|
||||
- [33m[📦][0m [32mexpo-image-loader[0m (6.0.0)
|
||||
- [33m[📦][0m [32mexpo-image-manipulator[0m (14.0.8)
|
||||
- [33m[📦][0m [32mexpo-image-picker[0m (17.0.10)
|
||||
- [33m[📦][0m [32mexpo-keep-awake[0m (15.0.8)
|
||||
- [33m[📦][0m [32mexpo-linking[0m (8.0.11)
|
||||
- [33m[📦][0m [32mexpo-localization[0m (17.0.9)
|
||||
- [33m[📦][0m [32mexpo-notifications[0m (0.32.16)
|
||||
- [33m[📦][0m [32mexpo-sharing[0m (14.0.8)
|
||||
- [33m[📦][0m [32mexpo-splash-screen[0m (31.0.13)
|
||||
- [33m[📦][0m [32mexpo-sqlite[0m (16.0.10)
|
||||
- [33m[📦][0m [32mexpo-system-ui[0m (6.0.9)
|
||||
|
||||
The NODE_ENV environment variable is required but was not specified. Ensure the project is bundled with Expo CLI or NODE_ENV is set. Using only .env.local and .env
|
||||
(node:3419787) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(node:3419823) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419809) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419798) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419833) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419905) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419842) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419882) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419895) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419867) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419935) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419963) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419965) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419853) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419916) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419954) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419962) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419970) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419999) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419998) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420014) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420013) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419992) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420020) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3419768) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420026) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420042) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420050) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
(node:3420044) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
Note: /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/node_modules/@react-native-masked-view/masked-view/android/src/main/java/org/reactnative/maskedview/RNCMaskedViewPackage.java uses or overrides a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/node_modules/@react-native-async-storage/async-storage/android/src/javaPackage/java/com/reactnativecommunity/asyncstorage/AsyncStoragePackage.java uses unchecked or unsafe operations.
|
||||
Note: Recompile with -Xlint:unchecked for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use unchecked or unsafe operations.
|
||||
Note: Recompile with -Xlint:unchecked for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use unchecked or unsafe operations.
|
||||
Note: Recompile with -Xlint:unchecked for details.
|
||||
Note: /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/node_modules/react-native-worklets/android/src/main/java/com/swmansion/worklets/WorkletsPackage.java uses unchecked or unsafe operations.
|
||||
Note: Recompile with -Xlint:unchecked for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use or override a deprecated API.
|
||||
Note: Recompile with -Xlint:deprecation for details.
|
||||
Note: Some input files use unchecked or unsafe operations.
|
||||
Note: Recompile with -Xlint:unchecked for details.
|
||||
(node:3433990) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[90mUsing src/app as the root directory for Expo Router.[39m
|
||||
[33mExperimental Expo Autolinking module resolver is enabled.[39m
|
||||
[90mReact Compiler enabled[39m
|
||||
[2mStarting Metro Bundler[22m
|
||||
[33mwarning[39m: Bundler cache is empty, rebuilding [2m(this may take a minute)[22m
|
||||
[33m|[39m (node:3434081) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓[49m[39m[47m[37m░░░░░░░░░░░░░░░[39m[49m[1m 9.5% [22m[2m( 8/26)[22m
|
||||
[33m|[39m (node:3434107) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434095) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434109) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434088) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434082) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434130) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434137) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434122) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[33m|[39m (node:3434116) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
[33m|[39m (Use `node --trace-warnings ...` to show where the warning was created)
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░░░░░░[39m[49m[1m 63.4% [22m[2m( 855/1124)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░░░░░░[39m[49m[1m 63.4% [22m[2m(1341/3563)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░░░░░░[39m[49m[1m 63.4% [22m[2m(1784/4020)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░░░░[39m[49m[1m 79.0% [22m[2m(3955/4511)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░░[39m[49m[1m 92.3% [22m[2m(4715/4907)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░[39m[49m[1m 99.9% [22m[2m(5933/5937)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░[39m[49m[1m 99.9% [22m[2m(5938/5939)[22m
|
||||
[1mAndroid[22m [0m[2mpackages/app/[22m[0m[1mindex.ts[22m [32m[42m▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓[49m[39m[47m[37m░[39m[49m[1m 99.9% [22m[2m(5939/5939)[22m
|
||||
[32m[1mAndroid[22m Bundled [39m[2m50142ms[22m[0m[2m packages/app/index.ts (5940 modules)[22m[0m
|
||||
Writing bundle output to: /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/packages/app/android/app/build/generated/assets/createBundleReleaseJsAndAssets/index.android.bundle
|
||||
Writing sourcemap output to: /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/filthy-dragon/packages/app/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
|
||||
Copying 33 asset files
|
||||
Done writing bundle output
|
||||
Done writing sourcemap output
|
||||
|
||||
Exit code: 0
|
||||
|
||||
|
After Width: | Height: | Size: 243 KiB |
|
After Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 243 KiB |
|
After Width: | Height: | Size: 268 KiB |
|
After Width: | Height: | Size: 221 KiB |
@@ -0,0 +1,2 @@
|
||||
Native swipe moved stream content: 27.74% changed
|
||||
Native swipe moved stream content: 25.07% changed
|
||||
@@ -0,0 +1,2 @@
|
||||
Performing Streamed Install
|
||||
Success
|
||||
@@ -0,0 +1,9 @@
|
||||
(node:3438004) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
scroll up from fresh bottom: changed=0.269
|
||||
(node:3438121) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
scroll up after idle at bottom: changed=0.243
|
||||
(node:3438177) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
|
||||
(Use `node --trace-warnings ...` to show where the warning was created)
|
||||
second attempt: changed=0.210
|
||||