test(app): record native composer scroll regression QA
|
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 |