Files
paseo/scroll-regression/ios/chat-flick.json
T

8319 lines
227 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"success": true,
"data": {
"nodes": [
{
"enabled": true,
"hittable": true,
"index": 0,
"depth": 0,
"label": "Paseo Debug",
"type": "Application",
"rect": {
"x": 0,
"width": 402,
"height": 874,
"y": 0
},
"ref": "e1"
},
{
"type": "Window",
"depth": 1,
"rect": {
"width": 402,
"x": 0,
"y": 0,
"height": 874
},
"parentIndex": 0,
"enabled": true,
"index": 1,
"hittable": false,
"ref": "e2"
},
{
"rect": {
"x": 0,
"y": 0,
"width": 402,
"height": 874
},
"enabled": true,
"type": "Other",
"hittable": false,
"parentIndex": 1,
"index": 2,
"depth": 2,
"ref": "e3"
},
{
"hittable": false,
"type": "Other",
"depth": 3,
"parentIndex": 2,
"enabled": true,
"rect": {
"height": 874,
"width": 402,
"x": 0,
"y": 0
},
"index": 3,
"ref": "e4"
},
{
"enabled": true,
"parentIndex": 3,
"index": 4,
"type": "Other",
"hittable": false,
"rect": {
"width": 402,
"y": 0,
"x": 0,
"height": 874
},
"depth": 4,
"ref": "e5"
},
{
"depth": 5,
"rect": {
"height": 874,
"width": 402,
"x": 0,
"y": 0
},
"type": "Other",
"hittable": false,
"enabled": true,
"index": 5,
"parentIndex": 4,
"ref": "e6"
},
{
"hittable": false,
"depth": 6,
"type": "Other",
"parentIndex": 5,
"enabled": true,
"rect": {
"x": 0,
"width": 402,
"height": 874,
"y": 0
},
"index": 6,
"ref": "e7"
},
{
"hittable": false,
"index": 7,
"depth": 7,
"parentIndex": 6,
"type": "Other",
"enabled": true,
"rect": {
"height": 874,
"y": 0,
"x": 0,
"width": 402
},
"ref": "e8"
},
{
"type": "Other",
"index": 8,
"depth": 8,
"parentIndex": 7,
"enabled": true,
"hittable": false,
"rect": {
"height": 874,
"width": 402,
"y": 0,
"x": 0
},
"ref": "e9"
},
{
"rect": {
"x": 0,
"y": 0,
"width": 402,
"height": 874
},
"depth": 9,
"type": "Other",
"parentIndex": 8,
"enabled": true,
"hittable": false,
"index": 9,
"ref": "e10"
},
{
"index": 10,
"hittable": false,
"rect": {
"width": 402,
"x": 0,
"height": 874,
"y": 0
},
"depth": 9,
"type": "Other",
"enabled": true,
"parentIndex": 8,
"ref": "e11"
},
{
"parentIndex": 10,
"enabled": true,
"hittable": false,
"depth": 10,
"type": "Other",
"rect": {
"x": 0,
"width": 402,
"height": 874,
"y": 0
},
"index": 11,
"ref": "e12"
},
{
"index": 12,
"parentIndex": 10,
"rect": {
"x": 0,
"height": 874,
"y": 0,
"width": 402
},
"enabled": true,
"hittable": false,
"type": "Other",
"depth": 10,
"ref": "e13"
},
{
"hittable": false,
"index": 13,
"rect": {
"y": 0,
"width": 402,
"x": 0,
"height": 874
},
"parentIndex": 12,
"type": "Other",
"depth": 11,
"enabled": true,
"ref": "e14"
},
{
"type": "Other",
"rect": {
"width": 402,
"height": 874,
"x": 0,
"y": 0
},
"parentIndex": 12,
"hittable": false,
"depth": 11,
"index": 14,
"enabled": true,
"ref": "e15"
},
{
"enabled": true,
"hittable": false,
"rect": {
"y": 0,
"height": 874,
"x": 0,
"width": 402
},
"parentIndex": 14,
"depth": 12,
"type": "Other",
"index": 15,
"ref": "e16"
},
{
"index": 16,
"type": "Other",
"hittable": false,
"depth": 13,
"rect": {
"x": 0,
"y": 0,
"height": 874,
"width": 402
},
"enabled": true,
"parentIndex": 15,
"ref": "e17"
},
{
"depth": 14,
"parentIndex": 16,
"type": "Other",
"index": 17,
"hittable": false,
"rect": {
"width": 402,
"height": 874,
"x": 0,
"y": 0
},
"enabled": true,
"ref": "e18"
},
{
"enabled": true,
"hittable": false,
"parentIndex": 17,
"depth": 15,
"rect": {
"width": 402,
"height": 874,
"y": 0,
"x": 0
},
"index": 18,
"type": "Other",
"ref": "e19"
},
{
"parentIndex": 18,
"index": 19,
"rect": {
"width": 402,
"height": 874,
"x": 0,
"y": 0
},
"enabled": true,
"depth": 16,
"hittable": false,
"type": "Other",
"ref": "e20"
},
{
"enabled": true,
"index": 20,
"depth": 17,
"hittable": false,
"rect": {
"x": 0,
"width": 402,
"height": 874,
"y": 0
},
"type": "Other",
"parentIndex": 19,
"ref": "e21"
},
{
"hittable": false,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"depth": 18,
"type": "Other",
"parentIndex": 20,
"enabled": true,
"index": 21,
"ref": "e22"
},
{
"index": 22,
"type": "Other",
"enabled": true,
"parentIndex": 21,
"hittable": false,
"depth": 19,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"ref": "e23"
},
{
"index": 23,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"parentIndex": 22,
"enabled": true,
"depth": 20,
"type": "Other",
"hittable": false,
"ref": "e24"
},
{
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"depth": 21,
"index": 24,
"enabled": true,
"label": "Switch tabs (2 open)",
"type": "Other",
"parentIndex": 23,
"hittable": false,
"ref": "e25"
},
{
"hittable": false,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"label": "Open menu",
"parentIndex": 24,
"index": 25,
"enabled": true,
"type": "Other",
"depth": 22,
"ref": "e26"
},
{
"hittable": false,
"index": 26,
"depth": 23,
"type": "Other",
"parentIndex": 25,
"label": "Open menu",
"enabled": true,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"ref": "e27"
},
{
"type": "Other",
"hittable": false,
"parentIndex": 26,
"enabled": true,
"rect": {
"height": 874,
"y": 0,
"width": 402,
"x": 0
},
"label": "Open menu",
"identifier": "workspace-deck-entry-srv_tk5MNmAhneJU:wks_3c1e2389120b500a",
"index": 27,
"depth": 24,
"ref": "e28"
},
{
"identifier": "composer-dock-header",
"index": 28,
"hittable": false,
"depth": 25,
"parentIndex": 27,
"label": "Open menu",
"type": "Other",
"enabled": true,
"rect": {
"height": 126,
"y": 0,
"width": 402,
"x": 0
},
"ref": "e29"
},
{
"enabled": true,
"type": "Other",
"index": 29,
"hittable": false,
"rect": {
"height": 56,
"y": 70,
"width": 402,
"x": 0
},
"depth": 26,
"parentIndex": 28,
"ref": "e30"
},
{
"rect": {
"height": 32,
"y": 81.6666669845581,
"width": 32,
"x": 8
},
"hittable": false,
"enabled": true,
"depth": 26,
"type": "Button",
"parentIndex": 28,
"identifier": "menu-button",
"label": "Open menu",
"index": 30,
"ref": "e31"
},
{
"hittable": false,
"index": 31,
"parentIndex": 30,
"enabled": true,
"rect": {
"height": 12,
"y": 91.6666669845581,
"width": 16,
"x": 16
},
"depth": 27,
"type": "Other",
"ref": "e32"
},
{
"enabled": true,
"depth": 28,
"index": 32,
"hittable": false,
"type": "Other",
"parentIndex": 31,
"rect": {
"height": 1.3333358764648438,
"y": 91.6666669845581,
"width": 16,
"x": 16
},
"ref": "e33"
},
{
"depth": 28,
"hittable": false,
"rect": {
"height": 1.6666717529296875,
"y": 97.00000047683716,
"width": 16,
"x": 16
},
"index": 33,
"enabled": true,
"type": "Other",
"parentIndex": 31,
"ref": "e34"
},
{
"parentIndex": 31,
"enabled": true,
"rect": {
"height": 1.6666641235351562,
"y": 102.33333396911621,
"width": 8,
"x": 16
},
"type": "Other",
"index": 34,
"depth": 28,
"hittable": false,
"ref": "e35"
},
{
"type": "Other",
"label": "main",
"depth": 26,
"rect": {
"height": 34,
"y": 80.6666669845581,
"width": 314,
"x": 48
},
"hittable": false,
"index": 35,
"enabled": true,
"parentIndex": 28,
"ref": "e36"
},
{
"depth": 27,
"index": 36,
"hittable": false,
"enabled": true,
"parentIndex": 35,
"label": "main",
"type": "Other",
"rect": {
"height": 34,
"y": 80.6666669845581,
"width": 278,
"x": 48
},
"ref": "e37"
},
{
"rect": {
"height": 18,
"y": 80.6666669845581,
"width": 278,
"x": 48
},
"identifier": "workspace-header-title",
"type": "StaticText",
"enabled": true,
"depth": 28,
"index": 37,
"parentIndex": 36,
"label": "main",
"hittable": false,
"ref": "e38"
},
{
"rect": {
"height": 18,
"y": 80.6666669845581,
"width": 278,
"x": 48
},
"depth": 29,
"parentIndex": 37,
"enabled": true,
"index": 38,
"hittable": false,
"type": "StaticText",
"label": "main",
"ref": "e39"
},
{
"identifier": "workspace-header-subtitle",
"depth": 28,
"type": "StaticText",
"enabled": true,
"rect": {
"height": 15.666671752929688,
"y": 98.6666669845581,
"width": 163.3333282470703,
"x": 48
},
"parentIndex": 36,
"hittable": false,
"index": 39,
"label": "composer-dock-ios-fixture",
"ref": "e40"
},
{
"label": "composer-dock-ios-fixture",
"rect": {
"height": 15.666671752929688,
"y": 98.6666669845581,
"width": 163.3333282470703,
"x": 48
},
"depth": 29,
"enabled": true,
"index": 40,
"type": "StaticText",
"hittable": false,
"parentIndex": 39,
"ref": "e41"
},
{
"label": "·",
"rect": {
"y": 98.6666669845581,
"width": 4,
"height": 15.666671752929688,
"x": 217.3333282470703
},
"depth": 28,
"enabled": true,
"index": 41,
"type": "StaticText",
"hittable": false,
"parentIndex": 36,
"ref": "e42"
},
{
"label": "·",
"rect": {
"y": 98.6666669845581,
"width": 4,
"height": 15.666671752929688,
"x": 217.3333282470703
},
"depth": 29,
"enabled": true,
"index": 42,
"type": "StaticText",
"hittable": false,
"parentIndex": 41,
"ref": "e43"
},
{
"identifier": "host-badge-srv_tk5MNmAhneJU",
"label": "dev-new",
"rect": {
"y": 98.6666669845581,
"width": 68.00001525878906,
"height": 16,
"x": 227.3333282470703
},
"depth": 28,
"enabled": true,
"index": 43,
"type": "Other",
"hittable": false,
"parentIndex": 36,
"ref": "e44"
},
{
"rect": {
"y": 100.6666669845581,
"width": 12,
"height": 12,
"x": 227.3333282470703
},
"depth": 28,
"enabled": true,
"index": 44,
"type": "Other",
"hittable": false,
"parentIndex": 36,
"ref": "e45"
},
{
"rect": {
"y": 101.1666669845581,
"width": 11,
"height": 11,
"x": 227.8333282470703
},
"depth": 29,
"enabled": true,
"index": 45,
"type": "Other",
"hittable": false,
"parentIndex": 44,
"ref": "e46"
},
{
"rect": {
"y": 101.1666669845581,
"width": 11,
"height": 5,
"x": 227.8333282470703
},
"depth": 30,
"enabled": true,
"index": 46,
"type": "Other",
"hittable": false,
"parentIndex": 45,
"ref": "e47"
},
{
"rect": {
"y": 107.1666669845581,
"width": 11,
"height": 5,
"x": 227.8333282470703
},
"depth": 30,
"enabled": true,
"index": 47,
"type": "Other",
"hittable": false,
"parentIndex": 45,
"ref": "e48"
},
{
"rect": {
"y": 103.1666669845581,
"width": 1.0049999999999955,
"height": 1,
"x": 229.8333282470703
},
"depth": 30,
"enabled": true,
"index": 48,
"type": "Other",
"hittable": false,
"parentIndex": 45,
"ref": "e49"
},
{
"rect": {
"y": 109.1666669845581,
"width": 1.0049999999999955,
"height": 1,
"x": 229.8333282470703
},
"depth": 30,
"enabled": true,
"index": 49,
"type": "Other",
"hittable": false,
"parentIndex": 45,
"ref": "e50"
},
{
"label": "dev-new",
"rect": {
"y": 98.6666669845581,
"width": 53.00001525878906,
"height": 16,
"x": 242.3333282470703
},
"depth": 28,
"enabled": true,
"index": 50,
"type": "StaticText",
"hittable": false,
"parentIndex": 36,
"ref": "e51"
},
{
"label": "dev-new",
"rect": {
"y": 98.6666669845581,
"width": 53.00001525878906,
"height": 16,
"x": 242.3333282470703
},
"depth": 29,
"enabled": true,
"index": 51,
"type": "StaticText",
"hittable": false,
"parentIndex": 50,
"ref": "e52"
},
{
"identifier": "workspace-header-menu-trigger",
"label": "Workspace actions",
"rect": {
"y": 81.6666669845581,
"width": 32,
"height": 32,
"x": 330
},
"depth": 27,
"enabled": true,
"index": 52,
"type": "Button",
"hittable": false,
"parentIndex": 35,
"ref": "e53"
},
{
"identifier": "workspace-explorer-toggle",
"label": "Open Explorer sidebar",
"rect": {
"y": 81.6666669845581,
"width": 32,
"height": 32,
"x": 362
},
"depth": 26,
"enabled": true,
"index": 53,
"type": "Button",
"hittable": false,
"parentIndex": 28,
"ref": "e54"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 54,
"type": "Other",
"hittable": false,
"parentIndex": 27,
"ref": "e55"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 55,
"type": "Other",
"hittable": false,
"parentIndex": 27,
"ref": "e56"
},
{
"identifier": "workspace-tab-switcher-trigger",
"label": "Switch tabs (2 open)",
"rect": {
"y": 126,
"width": 402,
"height": 34,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 56,
"type": "Button",
"hittable": false,
"parentIndex": 27,
"ref": "e57"
},
{
"identifier": "workspace-active-tab-icon",
"rect": {
"y": 136,
"width": 14,
"height": 14,
"x": 20
},
"depth": 26,
"enabled": true,
"index": 57,
"type": "Other",
"hittable": false,
"parentIndex": 56,
"ref": "e58"
},
{
"identifier": "workspace-tabs-row",
"rect": {
"y": 126,
"width": 402,
"height": 35,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 58,
"type": "Other",
"hittable": false,
"parentIndex": 27,
"ref": "e59"
},
{
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 59,
"type": "Other",
"hittable": false,
"parentIndex": 27,
"ref": "e60"
},
{
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 25,
"enabled": true,
"index": 60,
"type": "Other",
"hittable": false,
"parentIndex": 27,
"ref": "e61"
},
{
"label": "Add attachment",
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 26,
"enabled": true,
"index": 61,
"type": "Other",
"hittable": false,
"parentIndex": 60,
"ref": "e62"
},
{
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 27,
"enabled": true,
"index": 62,
"type": "Other",
"hittable": false,
"parentIndex": 61,
"ref": "e63"
},
{
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 27,
"enabled": true,
"index": 63,
"type": "Other",
"hittable": false,
"parentIndex": 61,
"ref": "e64"
},
{
"identifier": "composer-viewport",
"label": "Message agent... Message, @files, /commands",
"rect": {
"y": 161,
"width": 402,
"height": 713,
"x": 0
},
"depth": 27,
"enabled": true,
"index": 64,
"type": "Other",
"hittable": false,
"parentIndex": 61,
"ref": "e65"
},
{
"label": "Scroll to bottom",
"rect": {
"y": -141,
"width": 402,
"height": 713,
"x": 0
},
"depth": 28,
"enabled": true,
"index": 65,
"type": "Other",
"hittable": false,
"parentIndex": 64,
"ref": "e66"
},
{
"identifier": "composer-dock-content",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -141,
"width": 402,
"height": 575,
"x": 0
},
"depth": 29,
"enabled": true,
"index": 66,
"type": "Other",
"hittable": false,
"parentIndex": 65,
"ref": "e67"
},
{
"rect": {
"y": -141,
"width": 402,
"height": 575,
"x": 0
},
"depth": 30,
"enabled": true,
"index": 67,
"type": "Other",
"hittable": false,
"parentIndex": 66,
"ref": "e68"
},
{
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -141,
"width": 402,
"height": 575,
"x": 0
},
"depth": 30,
"enabled": true,
"index": 68,
"type": "Other",
"hittable": false,
"parentIndex": 66,
"ref": "e69"
},
{
"rect": {
"y": -141,
"width": 402,
"height": 575,
"x": 0
},
"depth": 31,
"enabled": true,
"index": 69,
"type": "Other",
"hittable": false,
"parentIndex": 68,
"ref": "e70"
},
{
"identifier": "agent-chat-scroll",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -141,
"width": 402,
"height": 575,
"x": 0
},
"depth": 31,
"enabled": true,
"index": 70,
"type": "Other",
"hittable": false,
"parentIndex": 68,
"ref": "e71"
},
{
"label": "Thinking",
"rect": {
"y": -141,
"width": 402,
"height": 575.0000000000002,
"x": 0
},
"depth": 32,
"enabled": true,
"index": 71,
"type": "ScrollView",
"hittable": false,
"parentIndex": 70,
"ref": "e72"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3831.666829427083,
"width": 402,
"height": 6169.33349609375,
"x": 0
},
"depth": 33,
"enabled": true,
"index": 72,
"type": "Other",
"hittable": false,
"parentIndex": 71,
"ref": "e73"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3831.666829427083,
"width": 402,
"height": 6169.33349609375,
"x": 0
},
"depth": 34,
"enabled": true,
"index": 73,
"type": "Other",
"hittable": false,
"parentIndex": 72,
"ref": "e74"
},
{
"rect": {
"y": -3831.666829427083,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 74,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e75"
},
{
"identifier": "older-history-slot",
"rect": {
"y": -3831.666829427083,
"width": 378,
"height": 32,
"x": 12
},
"depth": 36,
"enabled": true,
"index": 75,
"type": "Other",
"hittable": false,
"parentIndex": 74,
"ref": "e76"
},
{
"rect": {
"y": -3799.666829427083,
"width": 378,
"height": 747,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 76,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e77"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3052.666829427083,
"width": 378,
"height": 1725.33349609375,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 77,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e78"
},
{
"identifier": "user-message",
"rect": {
"y": -3052.666829427083,
"width": 362,
"height": 1725.33349609375,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 78,
"type": "Other",
"hittable": false,
"parentIndex": 77,
"ref": "e79"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3052.666829427083,
"width": 362,
"height": 1725.33349609375,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 79,
"type": "Other",
"hittable": false,
"parentIndex": 77,
"ref": "e80"
},
{
"rect": {
"y": -3052.666829427083,
"width": 362,
"height": 1693.33349609375,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 80,
"type": "Other",
"hittable": false,
"parentIndex": 79,
"ref": "e81"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3036.666829427083,
"width": 330,
"height": 1661.66650390625,
"x": 36
},
"depth": 37,
"enabled": true,
"index": 81,
"type": "StaticText",
"hittable": false,
"parentIndex": 79,
"ref": "e82"
},
{
"label": "Native scroll fixture 0: distinct history row after submitting from a dock host.\nNative scroll fixture 1: distinct history row after submitting from a dock host.\nNative scroll fixture 2: distinct history row after submitting from a dock host.\nNative scroll fixture 3: distinct history row after submitting from a dock host.\nNative scroll fixture 4: distinct history row after submitting from a dock host.\nNative scroll fixture 5: distinct history row after submitting from a dock host.\nNative scroll fixture 6: distinct history row after submitting from a dock host.\nNative scroll fixture 7: distinct history row after submitting from a dock host.\nNative scroll fixture 8: distinct history row after submitting from a dock host.\nNative scroll fixture 9: distinct history row after submitting from a dock host.\nNative scroll fixture 10: distinct history row after submitting from a dock host.\nNative scroll fixture 11: distinct history row after submitting from a dock host.\nNative scroll fixture 12: distinct history row after submitting from a dock host.\nNative scroll fixture 13: distinct history row after submitting from a dock host.\nNative scroll fixture 14: distinct history row after submitting from a dock host.\nNative scroll fixture 15: distinct history row after submitting from a dock host.\nNative scroll fixture 16: distinct history row after submitting from a dock host.\nNative scroll fixture 17: distinct history row after submitting from a dock host.\nNative scroll fixture 18: distinct history row after submitting from a dock host.\nNative scroll fixture 19: distinct history row after submitting from a dock host.\nNative scroll fixture 20: distinct history row after submitting from a dock host.\nNative scroll fixture 21: distinct history row after submitting from a dock host.\nNative scroll fixture 22: distinct history row after submitting from a dock host.\nNative scroll fixture 23: distinct history row after submitting from a dock host.\nNative scroll fixture 24: distinct history row after submitting from a dock host.\nNative scroll fixture 25: distinct history row after submitting from a dock host.\nNative scroll fixture 26: distinct history row after submitting from a dock host.\nNative scroll fixture 27: distinct history row after submitting from a dock host.\nNative scroll fixture 28: distinct history row after submitting from a dock host.\nNative scroll fixture 29: distinct history row after submitting from a dock host.\nNative scroll fixture 30: distinct history row after submitting from a dock host.\nNative scroll fixture 31: distinct history row after submitting from a dock host.\nNative scroll fixture 32: distinct history row after submitting from a dock host.\nNative scroll fixture 33: distinct history row after submitting from a dock host.\nNative scroll fixture 34: distinct history row after submitting from a dock host.\nNative scroll fixture 35: distinct history row after submitting from a dock host.\nNative scroll fixture 36: distinct history row after submitting from a dock host.\nNative scroll fixture 37: distinct history row after submitting from a dock host.\nNative scroll fixture 38: distinct history row after submitting from a dock host.\nNative scroll fixture 39: distinct history row after submitting from a dock host.\nNative scroll fixture 40: distinct history row after submitting from a dock host.\nNative scroll fixture 41: distinct history row after submitting from a dock host.\nNative scroll fixture 42: distinct history row after submitting from a dock host.\nNative scroll fi",
"rect": {
"y": -3036.666829427083,
"width": 330,
"height": 1661.66650390625,
"x": 36
},
"depth": 38,
"enabled": true,
"index": 82,
"type": "StaticText",
"hittable": false,
"parentIndex": 81,
"ref": "e83"
},
{
"identifier": "user-message-trailing-row",
"rect": {
"y": -1351.3334554036458,
"width": 107.66665649414062,
"height": 24,
"x": 274.3333282470703
},
"depth": 37,
"enabled": true,
"index": 83,
"type": "Other",
"hittable": false,
"parentIndex": 79,
"ref": "e84"
},
{
"identifier": "user-message-timestamp",
"label": "8:53 PM",
"rect": {
"y": -1347.3334554036458,
"width": 49.666656494140625,
"height": 15.66650390625,
"x": 274.3333282470703
},
"depth": 37,
"enabled": true,
"index": 84,
"type": "StaticText",
"hittable": false,
"parentIndex": 79,
"ref": "e85"
},
{
"label": "8:53 PM",
"rect": {
"y": -1347.3334554036458,
"width": 49.666656494140625,
"height": 15.66650390625,
"x": 274.3333282470703
},
"depth": 38,
"enabled": true,
"index": 85,
"type": "StaticText",
"hittable": false,
"parentIndex": 84,
"ref": "e86"
},
{
"label": "Rewind to this message",
"rect": {
"y": -1351.3334554036458,
"width": 24,
"height": 24,
"x": 331.99999618530273
},
"depth": 37,
"enabled": true,
"index": 86,
"type": "Other",
"hittable": false,
"parentIndex": 79,
"ref": "e87"
},
{
"identifier": "rewind-menu-trigger",
"label": "Rewind to this message",
"rect": {
"y": -1351.3334554036458,
"width": 24,
"height": 24,
"x": 331.99999618530273
},
"depth": 38,
"enabled": true,
"index": 87,
"type": "Button",
"hittable": false,
"parentIndex": 86,
"ref": "e88"
},
{
"label": "Copy message",
"rect": {
"y": -1350.3334554036458,
"width": 22,
"height": 22,
"x": 363.99999237060547
},
"depth": 37,
"enabled": true,
"index": 88,
"type": "Button",
"hittable": false,
"parentIndex": 79,
"ref": "e89"
},
{
"label": "Cycle 1",
"rect": {
"y": -1327.3333333333333,
"width": 378,
"height": 394,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 89,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e90"
},
{
"identifier": "assistant-message",
"rect": {
"y": -1327.3333333333333,
"width": 362,
"height": 390,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 90,
"type": "Other",
"hittable": false,
"parentIndex": 89,
"ref": "e91"
},
{
"label": "Cycle 1",
"rect": {
"y": -1291.3333333333333,
"width": 84,
"height": 33,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 91,
"type": "Other",
"hittable": false,
"parentIndex": 89,
"ref": "e92"
},
{
"label": "Cycle 1",
"rect": {
"y": -1291.3333333333333,
"width": 84,
"height": 33,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 92,
"type": "Other",
"hittable": false,
"parentIndex": 91,
"ref": "e93"
},
{
"rect": {
"y": -1291.3333333333333,
"width": 84,
"height": 33,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 93,
"type": "Other",
"hittable": false,
"parentIndex": 92,
"ref": "e94"
},
{
"value": "Cycle 1",
"label": "Cycle 1",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 94,
"type": "TextView",
"hittable": false,
"parentIndex": 92,
"ref": "e95"
},
{
"label": "Cycle 1",
"rect": {
"y": -1291.3333333333333,
"width": 83.7953545153141,
"height": 33,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 95,
"type": "TextView",
"hittable": false,
"parentIndex": 94,
"ref": "e96"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -1291.3333333333333,
"width": 30,
"height": 33,
"x": 71
},
"depth": 39,
"enabled": true,
"index": 96,
"type": "Other",
"hittable": false,
"parentIndex": 94,
"ref": "e97"
},
{
"rect": {
"y": -1330.3333333333333,
"width": 3,
"height": 36,
"x": 98
},
"depth": 40,
"enabled": true,
"index": 97,
"type": "Other",
"hittable": false,
"parentIndex": 96,
"ref": "e98"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -1277.8333333333333,
"width": 84,
"height": 16.5,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 98,
"type": "Other",
"hittable": false,
"parentIndex": 94,
"ref": "e99"
},
{
"rect": {
"y": -1264.3333333333333,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 99,
"type": "Other",
"hittable": false,
"parentIndex": 98,
"ref": "e100"
},
{
"rect": {
"y": -1291.3333333333333,
"width": 362,
"height": 42,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 100,
"type": "Other",
"hittable": false,
"parentIndex": 89,
"ref": "e101"
},
{
"label": "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",
"rect": {
"y": -1225.3333333333333,
"width": 362,
"height": 264,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 101,
"type": "Other",
"hittable": false,
"parentIndex": 89,
"ref": "e102"
},
{
"label": "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",
"rect": {
"y": -1225.3333333333333,
"width": 362,
"height": 264,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 102,
"type": "Other",
"hittable": false,
"parentIndex": 101,
"ref": "e103"
},
{
"rect": {
"y": -1225.3333333333333,
"width": 362,
"height": 264,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 103,
"type": "Other",
"hittable": false,
"parentIndex": 102,
"ref": "e104"
},
{
"value": "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",
"label": "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",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 104,
"type": "TextView",
"hittable": false,
"parentIndex": 102,
"ref": "e105"
},
{
"label": "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.",
"rect": {
"y": -1225.3333333333333,
"width": 362,
"height": 264,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 105,
"type": "TextView",
"hittable": false,
"parentIndex": 104,
"ref": "e106"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -1225.3333333333333,
"width": 30,
"height": 264,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 106,
"type": "Other",
"hittable": false,
"parentIndex": 104,
"ref": "e107"
},
{
"rect": {
"y": -1264.3333333333333,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 107,
"type": "Other",
"hittable": false,
"parentIndex": 106,
"ref": "e108"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -994.3333333333333,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 108,
"type": "Other",
"hittable": false,
"parentIndex": 104,
"ref": "e109"
},
{
"rect": {
"y": -967.3333333333333,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 109,
"type": "Other",
"hittable": false,
"parentIndex": 108,
"ref": "e110"
},
{
"label": "Thinking",
"rect": {
"y": -933.3333333333333,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 110,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e111"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": -933.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 111,
"type": "Other",
"hittable": false,
"parentIndex": 110,
"ref": "e112"
},
{
"label": "Thinking",
"rect": {
"y": -933.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 112,
"type": "Button",
"hittable": false,
"parentIndex": 110,
"ref": "e113"
},
{
"label": "Thinking",
"rect": {
"y": -926.3333333333333,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 113,
"type": "Other",
"hittable": false,
"parentIndex": 112,
"ref": "e114"
},
{
"label": "Thinking",
"rect": {
"y": -926.3333333333333,
"width": 58.666664123535156,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 114,
"type": "StaticText",
"hittable": false,
"parentIndex": 113,
"ref": "e115"
},
{
"label": "Thinking",
"rect": {
"y": -926.3333333333333,
"width": 58.666664123535156,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 115,
"type": "StaticText",
"hittable": false,
"parentIndex": 114,
"ref": "e116"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": -901.3333333333333,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 116,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e117"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": -901.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 117,
"type": "Other",
"hittable": false,
"parentIndex": 116,
"ref": "e118"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": -901.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 118,
"type": "Button",
"hittable": false,
"parentIndex": 116,
"ref": "e119"
},
{
"label": "Read",
"rect": {
"y": -894.3333333333333,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 119,
"type": "Other",
"hittable": false,
"parentIndex": 118,
"ref": "e120"
},
{
"label": "Read",
"rect": {
"y": -894.3333333333333,
"width": 35,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 120,
"type": "StaticText",
"hittable": false,
"parentIndex": 119,
"ref": "e121"
},
{
"label": "Read",
"rect": {
"y": -894.3333333333333,
"width": 35,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 121,
"type": "StaticText",
"hittable": false,
"parentIndex": 120,
"ref": "e122"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": -894.3333333333333,
"width": 301,
"height": 18,
"x": 85
},
"depth": 38,
"enabled": true,
"index": 122,
"type": "StaticText",
"hittable": false,
"parentIndex": 119,
"ref": "e123"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": -894.3333333333333,
"width": 301,
"height": 18,
"x": 85
},
"depth": 39,
"enabled": true,
"index": 123,
"type": "StaticText",
"hittable": false,
"parentIndex": 122,
"ref": "e124"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": -869.3333333333333,
"width": 378,
"height": 36,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 124,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e125"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": -869.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 125,
"type": "Other",
"hittable": false,
"parentIndex": 124,
"ref": "e126"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": -869.3333333333333,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 126,
"type": "Button",
"hittable": false,
"parentIndex": 124,
"ref": "e127"
},
{
"label": "Search",
"rect": {
"y": -862.3333333333333,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 127,
"type": "Other",
"hittable": false,
"parentIndex": 126,
"ref": "e128"
},
{
"label": "Search",
"rect": {
"y": -862.3333333333333,
"width": 48,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 128,
"type": "StaticText",
"hittable": false,
"parentIndex": 127,
"ref": "e129"
},
{
"label": "Search",
"rect": {
"y": -862.3333333333333,
"width": 48,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 129,
"type": "StaticText",
"hittable": false,
"parentIndex": 128,
"ref": "e130"
},
{
"label": "scrollToEnd",
"rect": {
"y": -862.3333333333333,
"width": 79.66667175292969,
"height": 18,
"x": 98
},
"depth": 38,
"enabled": true,
"index": 130,
"type": "StaticText",
"hittable": false,
"parentIndex": 127,
"ref": "e131"
},
{
"label": "scrollToEnd",
"rect": {
"y": -862.3333333333333,
"width": 79.66667175292969,
"height": 18,
"x": 98
},
"depth": 39,
"enabled": true,
"index": 131,
"type": "StaticText",
"hittable": false,
"parentIndex": 130,
"ref": "e132"
},
{
"label": "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:",
"rect": {
"y": -833.3333333333333,
"width": 378,
"height": 646,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 132,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e133"
},
{
"identifier": "assistant-message",
"rect": {
"y": -833.3333333333333,
"width": 362,
"height": 642,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 133,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e134"
},
{
"label": "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:",
"rect": {
"y": -821.3333333333333,
"width": 362,
"height": 132,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 134,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e135"
},
{
"label": "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:",
"rect": {
"y": -821.3333333333333,
"width": 362,
"height": 132,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 135,
"type": "Other",
"hittable": false,
"parentIndex": 134,
"ref": "e136"
},
{
"rect": {
"y": -821.3333333333333,
"width": 362,
"height": 132,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 136,
"type": "Other",
"hittable": false,
"parentIndex": 135,
"ref": "e137"
},
{
"value": "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:",
"label": "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:",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 137,
"type": "TextView",
"hittable": false,
"parentIndex": 135,
"ref": "e138"
},
{
"label": "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:",
"rect": {
"y": -821.3333333333333,
"width": 362,
"height": 132,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 138,
"type": "TextView",
"hittable": false,
"parentIndex": 137,
"ref": "e139"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -821.3333333333333,
"width": 30,
"height": 132,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 139,
"type": "Other",
"hittable": false,
"parentIndex": 137,
"ref": "e140"
},
{
"rect": {
"y": -860.3333333333333,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 140,
"type": "Other",
"hittable": false,
"parentIndex": 139,
"ref": "e141"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -722.3333333333333,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 141,
"type": "Other",
"hittable": false,
"parentIndex": 137,
"ref": "e142"
},
{
"rect": {
"y": -695.3333333333333,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 142,
"type": "Other",
"hittable": false,
"parentIndex": 141,
"ref": "e143"
},
{
"label": "•",
"rect": {
"y": -661.3333333333333,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 143,
"type": "StaticText",
"hittable": false,
"parentIndex": 132,
"ref": "e144"
},
{
"label": "•",
"rect": {
"y": -661.3333333333333,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 144,
"type": "StaticText",
"hittable": false,
"parentIndex": 143,
"ref": "e145"
},
{
"label": "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.",
"rect": {
"y": -661.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 145,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e146"
},
{
"label": "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.",
"rect": {
"y": -661.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 146,
"type": "Other",
"hittable": false,
"parentIndex": 145,
"ref": "e147"
},
{
"rect": {
"y": -661.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 147,
"type": "Other",
"hittable": false,
"parentIndex": 146,
"ref": "e148"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 148,
"type": "TextView",
"hittable": false,
"parentIndex": 146,
"ref": "e149"
},
{
"label": "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.",
"rect": {
"y": -661.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 149,
"type": "TextView",
"hittable": false,
"parentIndex": 148,
"ref": "e150"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -661.3333333333333,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 150,
"type": "Other",
"hittable": false,
"parentIndex": 148,
"ref": "e151"
},
{
"rect": {
"y": -700.3333333333333,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 151,
"type": "Other",
"hittable": false,
"parentIndex": 150,
"ref": "e152"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -606.3333333333333,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 152,
"type": "Other",
"hittable": false,
"parentIndex": 148,
"ref": "e153"
},
{
"rect": {
"y": -579.3333333333333,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 153,
"type": "Other",
"hittable": false,
"parentIndex": 152,
"ref": "e154"
},
{
"label": "•",
"rect": {
"y": -569.3333333333333,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 154,
"type": "StaticText",
"hittable": false,
"parentIndex": 132,
"ref": "e155"
},
{
"label": "•",
"rect": {
"y": -569.3333333333333,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 155,
"type": "StaticText",
"hittable": false,
"parentIndex": 154,
"ref": "e156"
},
{
"label": "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.",
"rect": {
"y": -569.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 156,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e157"
},
{
"label": "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.",
"rect": {
"y": -569.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 157,
"type": "Other",
"hittable": false,
"parentIndex": 156,
"ref": "e158"
},
{
"rect": {
"y": -569.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 158,
"type": "Other",
"hittable": false,
"parentIndex": 157,
"ref": "e159"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 159,
"type": "TextView",
"hittable": false,
"parentIndex": 157,
"ref": "e160"
},
{
"label": "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.",
"rect": {
"y": -569.3333333333333,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 160,
"type": "TextView",
"hittable": false,
"parentIndex": 159,
"ref": "e161"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -569.3333333333333,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 161,
"type": "Other",
"hittable": false,
"parentIndex": 159,
"ref": "e162"
},
{
"rect": {
"y": -608.3333333333333,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 162,
"type": "Other",
"hittable": false,
"parentIndex": 161,
"ref": "e163"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -514.3333333333333,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 163,
"type": "Other",
"hittable": false,
"parentIndex": 159,
"ref": "e164"
},
{
"rect": {
"y": -487.33333333333326,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 164,
"type": "Other",
"hittable": false,
"parentIndex": 163,
"ref": "e165"
},
{
"label": "•",
"rect": {
"y": -477.33333333333326,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 165,
"type": "StaticText",
"hittable": false,
"parentIndex": 132,
"ref": "e166"
},
{
"label": "•",
"rect": {
"y": -477.33333333333326,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 166,
"type": "StaticText",
"hittable": false,
"parentIndex": 165,
"ref": "e167"
},
{
"label": "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.",
"rect": {
"y": -477.33333333333326,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 167,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e168"
},
{
"label": "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.",
"rect": {
"y": -477.33333333333326,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 168,
"type": "Other",
"hittable": false,
"parentIndex": 167,
"ref": "e169"
},
{
"rect": {
"y": -477.33333333333326,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 169,
"type": "Other",
"hittable": false,
"parentIndex": 168,
"ref": "e170"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 170,
"type": "TextView",
"hittable": false,
"parentIndex": 168,
"ref": "e171"
},
{
"label": "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.",
"rect": {
"y": -477.33333333333326,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 171,
"type": "TextView",
"hittable": false,
"parentIndex": 170,
"ref": "e172"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -477.33333333333326,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 172,
"type": "Other",
"hittable": false,
"parentIndex": 170,
"ref": "e173"
},
{
"rect": {
"y": -516.3333333333333,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 173,
"type": "Other",
"hittable": false,
"parentIndex": 172,
"ref": "e174"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -422.33333333333326,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 174,
"type": "Other",
"hittable": false,
"parentIndex": 170,
"ref": "e175"
},
{
"rect": {
"y": -395.33333333333326,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 175,
"type": "Other",
"hittable": false,
"parentIndex": 174,
"ref": "e176"
},
{
"label": "•",
"rect": {
"y": -385.33333333333326,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 176,
"type": "StaticText",
"hittable": false,
"parentIndex": 132,
"ref": "e177"
},
{
"label": "•",
"rect": {
"y": -385.33333333333326,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 177,
"type": "StaticText",
"hittable": false,
"parentIndex": 176,
"ref": "e178"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": -385.33333333333326,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 178,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e179"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": -385.33333333333326,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 179,
"type": "Other",
"hittable": false,
"parentIndex": 178,
"ref": "e180"
},
{
"rect": {
"y": -385.33333333333326,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 180,
"type": "Other",
"hittable": false,
"parentIndex": 179,
"ref": "e181"
},
{
"value": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 181,
"type": "TextView",
"hittable": false,
"parentIndex": 179,
"ref": "e182"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": -385.33333333333326,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 182,
"type": "TextView",
"hittable": false,
"parentIndex": 181,
"ref": "e183"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -385.33333333333326,
"width": 30,
"height": 66,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 183,
"type": "Other",
"hittable": false,
"parentIndex": 181,
"ref": "e184"
},
{
"rect": {
"y": -424.33333333333326,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 184,
"type": "Other",
"hittable": false,
"parentIndex": 183,
"ref": "e185"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -352.33333333333326,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 185,
"type": "Other",
"hittable": false,
"parentIndex": 181,
"ref": "e186"
},
{
"rect": {
"y": -325.33333333333326,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 186,
"type": "Other",
"hittable": false,
"parentIndex": 185,
"ref": "e187"
},
{
"label": "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.",
"rect": {
"y": -303.33333333333326,
"width": 362,
"height": 88,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 187,
"type": "Other",
"hittable": false,
"parentIndex": 132,
"ref": "e188"
},
{
"label": "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.",
"rect": {
"y": -303.33333333333326,
"width": 362,
"height": 88,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 188,
"type": "Other",
"hittable": false,
"parentIndex": 187,
"ref": "e189"
},
{
"rect": {
"y": -303.33333333333326,
"width": 362,
"height": 88,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 189,
"type": "Other",
"hittable": false,
"parentIndex": 188,
"ref": "e190"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 0,
"width": 0,
"height": 0,
"x": 0
},
"depth": 38,
"enabled": true,
"index": 190,
"type": "TextView",
"hittable": false,
"parentIndex": 188,
"ref": "e191"
},
{
"label": "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.",
"rect": {
"y": -303.33333333333326,
"width": 362,
"height": 88,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 191,
"type": "TextView",
"hittable": false,
"parentIndex": 190,
"ref": "e192"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -303.33333333333326,
"width": 30,
"height": 88,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 192,
"type": "Other",
"hittable": false,
"parentIndex": 190,
"ref": "e193"
},
{
"rect": {
"y": -342.33333333333326,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 193,
"type": "Other",
"hittable": false,
"parentIndex": 192,
"ref": "e194"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": -248.33333333333326,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 194,
"type": "Other",
"hittable": false,
"parentIndex": 190,
"ref": "e195"
},
{
"rect": {
"y": -221.33333333333326,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 195,
"type": "Other",
"hittable": false,
"parentIndex": 194,
"ref": "e196"
},
{
"label": "Edit, packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": -187.33333333333326,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 196,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e197"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": -187.33333333333326,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 197,
"type": "Other",
"hittable": false,
"parentIndex": 196,
"ref": "e198"
},
{
"label": "Edit, packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": -187.33333333333326,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 198,
"type": "Button",
"hittable": false,
"parentIndex": 196,
"ref": "e199"
},
{
"label": "Edit",
"rect": {
"y": -180.33333333333326,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 199,
"type": "Other",
"hittable": false,
"parentIndex": 198,
"ref": "e200"
},
{
"label": "Edit",
"rect": {
"y": -180.33333333333326,
"width": 26.666664123535156,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 200,
"type": "StaticText",
"hittable": false,
"parentIndex": 199,
"ref": "e201"
},
{
"label": "Edit",
"rect": {
"y": -180.33333333333326,
"width": 26.666664123535156,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 201,
"type": "StaticText",
"hittable": false,
"parentIndex": 200,
"ref": "e202"
},
{
"label": "packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": -180.33333333333326,
"width": 309.3333435058594,
"height": 18,
"x": 76.66666793823242
},
"depth": 38,
"enabled": true,
"index": 202,
"type": "StaticText",
"hittable": false,
"parentIndex": 199,
"ref": "e203"
},
{
"label": "packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": -180.33333333333326,
"width": 309.3333435058594,
"height": 18,
"x": 76.66666793823242
},
"depth": 39,
"enabled": true,
"index": 203,
"type": "StaticText",
"hittable": false,
"parentIndex": 202,
"ref": "e204"
},
{
"label": "Shell, node scripts/simulate-stream-burst.mjs",
"rect": {
"y": -155.33333333333326,
"width": 378,
"height": 36,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 204,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e205"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": -155.33333333333326,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 205,
"type": "Other",
"hittable": false,
"parentIndex": 204,
"ref": "e206"
},
{
"label": "Shell, node scripts/simulate-stream-burst.mjs",
"rect": {
"y": -155.33333333333326,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 206,
"type": "Button",
"hittable": false,
"parentIndex": 204,
"ref": "e207"
},
{
"label": "Shell",
"rect": {
"y": -148.33333333333326,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 207,
"type": "Other",
"hittable": false,
"parentIndex": 206,
"ref": "e208"
},
{
"label": "Shell",
"rect": {
"y": -148.33333333333326,
"width": 33.666664123535156,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 208,
"type": "StaticText",
"hittable": false,
"parentIndex": 207,
"ref": "e209"
},
{
"label": "Shell",
"rect": {
"y": -148.33333333333326,
"width": 33.666664123535156,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 209,
"type": "StaticText",
"hittable": false,
"parentIndex": 208,
"ref": "e210"
},
{
"label": "node scripts/simulate-stream-burst.mjs",
"rect": {
"y": -148.33333333333326,
"width": 271.3333435058594,
"height": 18,
"x": 83.66666793823242
},
"depth": 38,
"enabled": true,
"index": 210,
"type": "StaticText",
"hittable": false,
"parentIndex": 207,
"ref": "e211"
},
{
"label": "node scripts/simulate-stream-burst.mjs",
"rect": {
"y": -148.33333333333326,
"width": 271.3333435058594,
"height": 18,
"x": 83.66666793823242
},
"depth": 39,
"enabled": true,
"index": 211,
"type": "StaticText",
"hittable": false,
"parentIndex": 210,
"ref": "e212"
},
{
"label": "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",
"rect": {
"y": -119.33333333333326,
"width": 378,
"height": 570,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 212,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e213"
},
{
"identifier": "assistant-message",
"rect": {
"y": -119.33333333333326,
"width": 362,
"height": 566,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 213,
"type": "Other",
"hittable": false,
"parentIndex": 212,
"ref": "e214"
},
{
"label": "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",
"rect": {
"y": -107.33333333333326,
"width": 362,
"height": 242,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 214,
"type": "Other",
"hittable": false,
"parentIndex": 212,
"ref": "e215"
},
{
"label": "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",
"rect": {
"y": -107.33333333333326,
"width": 362,
"height": 242,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 215,
"type": "Other",
"hittable": false,
"parentIndex": 214,
"ref": "e216"
},
{
"rect": {
"y": -107.33333333333326,
"width": 362,
"height": 242,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 216,
"type": "Other",
"hittable": false,
"parentIndex": 215,
"ref": "e217"
},
{
"value": "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",
"label": "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",
"rect": {
"y": 0,
"width": 362,
"height": 134.66666666666674,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 217,
"type": "TextView",
"hittable": false,
"parentIndex": 215,
"ref": "e218"
},
{
"label": "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",
"rect": {
"y": -107.33333333333326,
"width": 362,
"height": 242,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 218,
"type": "TextView",
"hittable": false,
"parentIndex": 217,
"ref": "e219"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": -107.33333333333326,
"width": 30,
"height": 242,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 219,
"type": "Other",
"hittable": false,
"parentIndex": 217,
"ref": "e220"
},
{
"rect": {
"y": -146.33333333333326,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 220,
"type": "Other",
"hittable": false,
"parentIndex": 219,
"ref": "e221"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 101.66666666666674,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 221,
"type": "Other",
"hittable": false,
"parentIndex": 217,
"ref": "e222"
},
{
"rect": {
"y": 128.66666666666674,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 222,
"type": "Other",
"hittable": false,
"parentIndex": 221,
"ref": "e223"
},
{
"label": "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",
"rect": {
"y": 158.66666666666674,
"width": 362,
"height": 264,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 223,
"type": "Other",
"hittable": false,
"parentIndex": 212,
"ref": "e224"
},
{
"label": "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",
"rect": {
"y": 158.66666666666674,
"width": 362,
"height": 264,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 224,
"type": "Other",
"hittable": false,
"parentIndex": 223,
"ref": "e225"
},
{
"rect": {
"y": 158.66666666666674,
"width": 362,
"height": 264,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 225,
"type": "Other",
"hittable": false,
"parentIndex": 224,
"ref": "e226"
},
{
"value": "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",
"label": "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",
"rect": {
"y": 158.66666666666674,
"width": 362,
"height": 264,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 226,
"type": "TextView",
"hittable": false,
"parentIndex": 224,
"ref": "e227"
},
{
"label": "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.",
"rect": {
"y": 158.66666666666674,
"width": 362,
"height": 264,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 227,
"type": "TextView",
"hittable": false,
"parentIndex": 226,
"ref": "e228"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 158.66666666666674,
"width": 30,
"height": 264,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 228,
"type": "Other",
"hittable": false,
"parentIndex": 226,
"ref": "e229"
},
{
"rect": {
"y": 119.66666666666674,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 229,
"type": "Other",
"hittable": false,
"parentIndex": 228,
"ref": "e230"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 389.66666666666674,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 230,
"type": "Other",
"hittable": false,
"parentIndex": 226,
"ref": "e231"
},
{
"rect": {
"y": 416.66666666666674,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 231,
"type": "Other",
"hittable": false,
"parentIndex": 230,
"ref": "e232"
},
{
"label": "Thinking",
"rect": {
"y": 450.66666666666674,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 232,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e233"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 450.66666666666674,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 233,
"type": "Other",
"hittable": false,
"parentIndex": 232,
"ref": "e234"
},
{
"label": "Thinking",
"rect": {
"y": 450.66666666666674,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 234,
"type": "Button",
"hittable": false,
"parentIndex": 232,
"ref": "e235"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 482.66666666666674,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 235,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e236"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 482.66666666666674,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 236,
"type": "Other",
"hittable": false,
"parentIndex": 235,
"ref": "e237"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 482.66666666666674,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 237,
"type": "Button",
"hittable": false,
"parentIndex": 235,
"ref": "e238"
},
{
"label": "Read",
"rect": {
"y": 489.66666666666674,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 238,
"type": "Other",
"hittable": false,
"parentIndex": 237,
"ref": "e239"
},
{
"label": "Read",
"rect": {
"y": 489.66666666666674,
"width": 35,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 239,
"type": "StaticText",
"hittable": false,
"parentIndex": 238,
"ref": "e240"
},
{
"label": "Read",
"rect": {
"y": 489.66666666666674,
"width": 35,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 240,
"type": "StaticText",
"hittable": false,
"parentIndex": 239,
"ref": "e241"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 489.66666666666674,
"width": 301,
"height": 18,
"x": 85
},
"depth": 38,
"enabled": true,
"index": 241,
"type": "StaticText",
"hittable": false,
"parentIndex": 238,
"ref": "e242"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 489.66666666666674,
"width": 301,
"height": 18,
"x": 85
},
"depth": 39,
"enabled": true,
"index": 242,
"type": "StaticText",
"hittable": false,
"parentIndex": 241,
"ref": "e243"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": 514.6666666666667,
"width": 378,
"height": 36,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 243,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e244"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 514.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 244,
"type": "Other",
"hittable": false,
"parentIndex": 243,
"ref": "e245"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": 514.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 245,
"type": "Button",
"hittable": false,
"parentIndex": 243,
"ref": "e246"
},
{
"label": "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:",
"rect": {
"y": 550.6666666666667,
"width": 378,
"height": 646,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 246,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e247"
},
{
"identifier": "assistant-message",
"rect": {
"y": 550.6666666666667,
"width": 362,
"height": 642,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 247,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e248"
},
{
"label": "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:",
"rect": {
"y": 562.6666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 248,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e249"
},
{
"label": "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:",
"rect": {
"y": 562.6666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 249,
"type": "Other",
"hittable": false,
"parentIndex": 248,
"ref": "e250"
},
{
"rect": {
"y": 562.6666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 250,
"type": "Other",
"hittable": false,
"parentIndex": 249,
"ref": "e251"
},
{
"value": "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:",
"label": "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:",
"rect": {
"y": 562.6666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 251,
"type": "TextView",
"hittable": false,
"parentIndex": 249,
"ref": "e252"
},
{
"label": "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:",
"rect": {
"y": 562.6666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 252,
"type": "TextView",
"hittable": false,
"parentIndex": 251,
"ref": "e253"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 562.6666666666667,
"width": 30,
"height": 132,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 253,
"type": "Other",
"hittable": false,
"parentIndex": 251,
"ref": "e254"
},
{
"rect": {
"y": 523.6666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 254,
"type": "Other",
"hittable": false,
"parentIndex": 253,
"ref": "e255"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 661.6666666666667,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 255,
"type": "Other",
"hittable": false,
"parentIndex": 251,
"ref": "e256"
},
{
"rect": {
"y": 688.6666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 256,
"type": "Other",
"hittable": false,
"parentIndex": 255,
"ref": "e257"
},
{
"label": "•",
"rect": {
"y": 722.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 257,
"type": "StaticText",
"hittable": false,
"parentIndex": 246,
"ref": "e258"
},
{
"label": "•",
"rect": {
"y": 722.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 258,
"type": "StaticText",
"hittable": false,
"parentIndex": 257,
"ref": "e259"
},
{
"label": "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.",
"rect": {
"y": 722.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 259,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e260"
},
{
"label": "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.",
"rect": {
"y": 722.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 260,
"type": "Other",
"hittable": false,
"parentIndex": 259,
"ref": "e261"
},
{
"rect": {
"y": 722.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 261,
"type": "Other",
"hittable": false,
"parentIndex": 260,
"ref": "e262"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 722.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 262,
"type": "TextView",
"hittable": false,
"parentIndex": 260,
"ref": "e263"
},
{
"label": "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.",
"rect": {
"y": 722.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 263,
"type": "TextView",
"hittable": false,
"parentIndex": 262,
"ref": "e264"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 722.6666666666667,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 264,
"type": "Other",
"hittable": false,
"parentIndex": 262,
"ref": "e265"
},
{
"rect": {
"y": 683.6666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 265,
"type": "Other",
"hittable": false,
"parentIndex": 264,
"ref": "e266"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 777.6666666666667,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 266,
"type": "Other",
"hittable": false,
"parentIndex": 262,
"ref": "e267"
},
{
"rect": {
"y": 804.6666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 267,
"type": "Other",
"hittable": false,
"parentIndex": 266,
"ref": "e268"
},
{
"label": "•",
"rect": {
"y": 814.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 268,
"type": "StaticText",
"hittable": false,
"parentIndex": 246,
"ref": "e269"
},
{
"label": "•",
"rect": {
"y": 814.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 269,
"type": "StaticText",
"hittable": false,
"parentIndex": 268,
"ref": "e270"
},
{
"label": "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.",
"rect": {
"y": 814.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 270,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e271"
},
{
"label": "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.",
"rect": {
"y": 814.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 271,
"type": "Other",
"hittable": false,
"parentIndex": 270,
"ref": "e272"
},
{
"rect": {
"y": 814.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 272,
"type": "Other",
"hittable": false,
"parentIndex": 271,
"ref": "e273"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 814.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 273,
"type": "TextView",
"hittable": false,
"parentIndex": 271,
"ref": "e274"
},
{
"label": "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.",
"rect": {
"y": 814.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 274,
"type": "TextView",
"hittable": false,
"parentIndex": 273,
"ref": "e275"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 814.6666666666667,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 275,
"type": "Other",
"hittable": false,
"parentIndex": 273,
"ref": "e276"
},
{
"rect": {
"y": 775.6666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 276,
"type": "Other",
"hittable": false,
"parentIndex": 275,
"ref": "e277"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 869.6666666666667,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 277,
"type": "Other",
"hittable": false,
"parentIndex": 273,
"ref": "e278"
},
{
"rect": {
"y": 896.6666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 278,
"type": "Other",
"hittable": false,
"parentIndex": 277,
"ref": "e279"
},
{
"label": "•",
"rect": {
"y": 906.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 279,
"type": "StaticText",
"hittable": false,
"parentIndex": 246,
"ref": "e280"
},
{
"label": "•",
"rect": {
"y": 906.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 280,
"type": "StaticText",
"hittable": false,
"parentIndex": 279,
"ref": "e281"
},
{
"label": "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.",
"rect": {
"y": 906.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 281,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e282"
},
{
"label": "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.",
"rect": {
"y": 906.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 282,
"type": "Other",
"hittable": false,
"parentIndex": 281,
"ref": "e283"
},
{
"rect": {
"y": 906.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 283,
"type": "Other",
"hittable": false,
"parentIndex": 282,
"ref": "e284"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 906.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 284,
"type": "TextView",
"hittable": false,
"parentIndex": 282,
"ref": "e285"
},
{
"label": "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.",
"rect": {
"y": 906.6666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 285,
"type": "TextView",
"hittable": false,
"parentIndex": 284,
"ref": "e286"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 906.6666666666667,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 286,
"type": "Other",
"hittable": false,
"parentIndex": 284,
"ref": "e287"
},
{
"rect": {
"y": 867.6666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 287,
"type": "Other",
"hittable": false,
"parentIndex": 286,
"ref": "e288"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 961.6666666666667,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 288,
"type": "Other",
"hittable": false,
"parentIndex": 284,
"ref": "e289"
},
{
"rect": {
"y": 988.6666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 289,
"type": "Other",
"hittable": false,
"parentIndex": 288,
"ref": "e290"
},
{
"label": "•",
"rect": {
"y": 998.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 290,
"type": "StaticText",
"hittable": false,
"parentIndex": 246,
"ref": "e291"
},
{
"label": "•",
"rect": {
"y": 998.6666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 291,
"type": "StaticText",
"hittable": false,
"parentIndex": 290,
"ref": "e292"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": 998.6666666666667,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 292,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e293"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": 998.6666666666667,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 293,
"type": "Other",
"hittable": false,
"parentIndex": 292,
"ref": "e294"
},
{
"rect": {
"y": 998.6666666666667,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 294,
"type": "Other",
"hittable": false,
"parentIndex": 293,
"ref": "e295"
},
{
"value": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": 998.6666666666667,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 295,
"type": "TextView",
"hittable": false,
"parentIndex": 293,
"ref": "e296"
},
{
"label": "Coalescing happens upstream, so the FlatList sees fewer updates than the wire — but each batch can still cause a relayout.",
"rect": {
"y": 998.6666666666667,
"width": 340.6666564941406,
"height": 66,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 296,
"type": "TextView",
"hittable": false,
"parentIndex": 295,
"ref": "e297"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 998.6666666666667,
"width": 30,
"height": 66,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 297,
"type": "Other",
"hittable": false,
"parentIndex": 295,
"ref": "e298"
},
{
"rect": {
"y": 959.6666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 298,
"type": "Other",
"hittable": false,
"parentIndex": 297,
"ref": "e299"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 1031.6666666666667,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 299,
"type": "Other",
"hittable": false,
"parentIndex": 295,
"ref": "e300"
},
{
"rect": {
"y": 1058.6666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 300,
"type": "Other",
"hittable": false,
"parentIndex": 299,
"ref": "e301"
},
{
"label": "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.",
"rect": {
"y": 1080.6666666666667,
"width": 362,
"height": 88,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 301,
"type": "Other",
"hittable": false,
"parentIndex": 246,
"ref": "e302"
},
{
"label": "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.",
"rect": {
"y": 1080.6666666666667,
"width": 362,
"height": 88,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 302,
"type": "Other",
"hittable": false,
"parentIndex": 301,
"ref": "e303"
},
{
"rect": {
"y": 1080.6666666666667,
"width": 362,
"height": 88,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 303,
"type": "Other",
"hittable": false,
"parentIndex": 302,
"ref": "e304"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 1080.6666666666667,
"width": 362,
"height": 88,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 304,
"type": "TextView",
"hittable": false,
"parentIndex": 302,
"ref": "e305"
},
{
"label": "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.",
"rect": {
"y": 1080.6666666666667,
"width": 362,
"height": 88,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 305,
"type": "TextView",
"hittable": false,
"parentIndex": 304,
"ref": "e306"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 1080.6666666666667,
"width": 30,
"height": 88,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 306,
"type": "Other",
"hittable": false,
"parentIndex": 304,
"ref": "e307"
},
{
"rect": {
"y": 1041.6666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 307,
"type": "Other",
"hittable": false,
"parentIndex": 306,
"ref": "e308"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 1135.6666666666667,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 308,
"type": "Other",
"hittable": false,
"parentIndex": 304,
"ref": "e309"
},
{
"rect": {
"y": 1162.6666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 309,
"type": "Other",
"hittable": false,
"parentIndex": 308,
"ref": "e310"
},
{
"label": "Edit, packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": 1196.6666666666667,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 310,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e311"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 1196.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 311,
"type": "Other",
"hittable": false,
"parentIndex": 310,
"ref": "e312"
},
{
"label": "Edit, packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": 1196.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 312,
"type": "Button",
"hittable": false,
"parentIndex": 310,
"ref": "e313"
},
{
"label": "Edit",
"rect": {
"y": 1203.6666666666667,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 313,
"type": "Other",
"hittable": false,
"parentIndex": 312,
"ref": "e314"
},
{
"label": "Edit",
"rect": {
"y": 1203.6666666666667,
"width": 26.666664123535156,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 314,
"type": "StaticText",
"hittable": false,
"parentIndex": 313,
"ref": "e315"
},
{
"label": "Edit",
"rect": {
"y": 1203.6666666666667,
"width": 26.666664123535156,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 315,
"type": "StaticText",
"hittable": false,
"parentIndex": 314,
"ref": "e316"
},
{
"label": "packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": 1203.6666666666667,
"width": 309.3333435058594,
"height": 18,
"x": 76.66666793823242
},
"depth": 38,
"enabled": true,
"index": 316,
"type": "StaticText",
"hittable": false,
"parentIndex": 313,
"ref": "e317"
},
{
"label": "packages/app/src/hooks/use-scroll-anchor.ts",
"rect": {
"y": 1203.6666666666667,
"width": 309.3333435058594,
"height": 18,
"x": 76.66666793823242
},
"depth": 39,
"enabled": true,
"index": 317,
"type": "StaticText",
"hittable": false,
"parentIndex": 316,
"ref": "e318"
},
{
"label": "Shell, node scripts/simulate-stream-burst.mjs",
"rect": {
"y": 1228.6666666666667,
"width": 378,
"height": 36,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 318,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e319"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 1228.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 319,
"type": "Other",
"hittable": false,
"parentIndex": 318,
"ref": "e320"
},
{
"label": "Shell, node scripts/simulate-stream-burst.mjs",
"rect": {
"y": 1228.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 320,
"type": "Button",
"hittable": false,
"parentIndex": 318,
"ref": "e321"
},
{
"label": "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",
"rect": {
"y": 1264.6666666666667,
"width": 378,
"height": 570,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 321,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e322"
},
{
"identifier": "assistant-message",
"rect": {
"y": 1264.6666666666667,
"width": 362,
"height": 566,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 322,
"type": "Other",
"hittable": false,
"parentIndex": 321,
"ref": "e323"
},
{
"label": "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",
"rect": {
"y": 1276.6666666666667,
"width": 362,
"height": 242,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 323,
"type": "Other",
"hittable": false,
"parentIndex": 321,
"ref": "e324"
},
{
"label": "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",
"rect": {
"y": 1276.6666666666667,
"width": 362,
"height": 242,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 324,
"type": "Other",
"hittable": false,
"parentIndex": 323,
"ref": "e325"
},
{
"rect": {
"y": 1276.6666666666667,
"width": 362,
"height": 242,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 325,
"type": "Other",
"hittable": false,
"parentIndex": 324,
"ref": "e326"
},
{
"value": "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",
"label": "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",
"rect": {
"y": 1276.6666666666667,
"width": 362,
"height": 242,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 326,
"type": "TextView",
"hittable": false,
"parentIndex": 324,
"ref": "e327"
},
{
"label": "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",
"rect": {
"y": 1276.6666666666667,
"width": 362,
"height": 242,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 327,
"type": "TextView",
"hittable": false,
"parentIndex": 326,
"ref": "e328"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 1276.6666666666667,
"width": 30,
"height": 242,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 328,
"type": "Other",
"hittable": false,
"parentIndex": 326,
"ref": "e329"
},
{
"rect": {
"y": 1237.6666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 329,
"type": "Other",
"hittable": false,
"parentIndex": 328,
"ref": "e330"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 1485.6666666666667,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 330,
"type": "Other",
"hittable": false,
"parentIndex": 326,
"ref": "e331"
},
{
"rect": {
"y": 1512.6666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 331,
"type": "Other",
"hittable": false,
"parentIndex": 330,
"ref": "e332"
},
{
"label": "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",
"rect": {
"y": 1542.6666666666667,
"width": 362,
"height": 264,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 332,
"type": "Other",
"hittable": false,
"parentIndex": 321,
"ref": "e333"
},
{
"label": "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",
"rect": {
"y": 1542.6666666666667,
"width": 362,
"height": 264,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 333,
"type": "Other",
"hittable": false,
"parentIndex": 332,
"ref": "e334"
},
{
"rect": {
"y": 1542.6666666666667,
"width": 362,
"height": 264,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 334,
"type": "Other",
"hittable": false,
"parentIndex": 333,
"ref": "e335"
},
{
"value": "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",
"label": "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",
"rect": {
"y": 1542.6666666666667,
"width": 362,
"height": 264,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 335,
"type": "TextView",
"hittable": false,
"parentIndex": 333,
"ref": "e336"
},
{
"label": "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.",
"rect": {
"y": 1542.6666666666667,
"width": 362,
"height": 264,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 336,
"type": "TextView",
"hittable": false,
"parentIndex": 335,
"ref": "e337"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 1542.6666666666667,
"width": 30,
"height": 264,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 337,
"type": "Other",
"hittable": false,
"parentIndex": 335,
"ref": "e338"
},
{
"rect": {
"y": 1503.6666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 338,
"type": "Other",
"hittable": false,
"parentIndex": 337,
"ref": "e339"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 1773.6666666666667,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 339,
"type": "Other",
"hittable": false,
"parentIndex": 335,
"ref": "e340"
},
{
"rect": {
"y": 1800.6666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 340,
"type": "Other",
"hittable": false,
"parentIndex": 339,
"ref": "e341"
},
{
"label": "Thinking",
"rect": {
"y": 1834.6666666666667,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 341,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e342"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 1834.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 342,
"type": "Other",
"hittable": false,
"parentIndex": 341,
"ref": "e343"
},
{
"label": "Thinking",
"rect": {
"y": 1834.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 343,
"type": "Button",
"hittable": false,
"parentIndex": 341,
"ref": "e344"
},
{
"label": "Thinking",
"rect": {
"y": 1841.6666666666667,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 344,
"type": "Other",
"hittable": false,
"parentIndex": 343,
"ref": "e345"
},
{
"label": "Thinking",
"rect": {
"y": 1841.6666666666667,
"width": 58.666664123535156,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 345,
"type": "StaticText",
"hittable": false,
"parentIndex": 344,
"ref": "e346"
},
{
"label": "Thinking",
"rect": {
"y": 1841.6666666666667,
"width": 58.666664123535156,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 346,
"type": "StaticText",
"hittable": false,
"parentIndex": 345,
"ref": "e347"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 1866.6666666666667,
"width": 378,
"height": 32,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 347,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e348"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 1866.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 348,
"type": "Other",
"hittable": false,
"parentIndex": 347,
"ref": "e349"
},
{
"label": "Read, packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 1866.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 349,
"type": "Button",
"hittable": false,
"parentIndex": 347,
"ref": "e350"
},
{
"label": "Read",
"rect": {
"y": 1873.6666666666667,
"width": 344,
"height": 18,
"x": 42
},
"depth": 37,
"enabled": true,
"index": 350,
"type": "Other",
"hittable": false,
"parentIndex": 349,
"ref": "e351"
},
{
"label": "Read",
"rect": {
"y": 1873.6666666666667,
"width": 35,
"height": 18,
"x": 42
},
"depth": 38,
"enabled": true,
"index": 351,
"type": "StaticText",
"hittable": false,
"parentIndex": 350,
"ref": "e352"
},
{
"label": "Read",
"rect": {
"y": 1873.6666666666667,
"width": 35,
"height": 18,
"x": 42
},
"depth": 39,
"enabled": true,
"index": 352,
"type": "StaticText",
"hittable": false,
"parentIndex": 351,
"ref": "e353"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 1873.6666666666667,
"width": 301,
"height": 18,
"x": 85
},
"depth": 38,
"enabled": true,
"index": 353,
"type": "StaticText",
"hittable": false,
"parentIndex": 350,
"ref": "e354"
},
{
"label": "packages/app/src/components/conversation-list.tsx",
"rect": {
"y": 1873.6666666666667,
"width": 301,
"height": 18,
"x": 85
},
"depth": 39,
"enabled": true,
"index": 354,
"type": "StaticText",
"hittable": false,
"parentIndex": 353,
"ref": "e355"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": 1898.6666666666667,
"width": 378,
"height": 36,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 355,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e356"
},
{
"identifier": "tool-call-badge",
"rect": {
"y": 1898.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 356,
"type": "Other",
"hittable": false,
"parentIndex": 355,
"ref": "e357"
},
{
"label": "Search, scrollToEnd",
"rect": {
"y": 1898.6666666666667,
"width": 388,
"height": 32,
"x": 7
},
"depth": 36,
"enabled": true,
"index": 357,
"type": "Button",
"hittable": false,
"parentIndex": 355,
"ref": "e358"
},
{
"label": "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:",
"rect": {
"y": 1934.666666666667,
"width": 378,
"height": 336,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 358,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e359"
},
{
"identifier": "assistant-message",
"rect": {
"y": 1934.666666666667,
"width": 362,
"height": 336,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 359,
"type": "Other",
"hittable": false,
"parentIndex": 358,
"ref": "e360"
},
{
"label": "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:",
"rect": {
"y": 1946.666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 360,
"type": "Other",
"hittable": false,
"parentIndex": 358,
"ref": "e361"
},
{
"label": "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:",
"rect": {
"y": 1946.666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 361,
"type": "Other",
"hittable": false,
"parentIndex": 360,
"ref": "e362"
},
{
"rect": {
"y": 1946.666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 362,
"type": "Other",
"hittable": false,
"parentIndex": 361,
"ref": "e363"
},
{
"value": "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:",
"label": "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:",
"rect": {
"y": 1946.666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 363,
"type": "TextView",
"hittable": false,
"parentIndex": 361,
"ref": "e364"
},
{
"label": "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:",
"rect": {
"y": 1946.666666666667,
"width": 362,
"height": 132,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 364,
"type": "TextView",
"hittable": false,
"parentIndex": 363,
"ref": "e365"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 1946.666666666667,
"width": 30,
"height": 132,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 365,
"type": "Other",
"hittable": false,
"parentIndex": 363,
"ref": "e366"
},
{
"rect": {
"y": 1907.666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 366,
"type": "Other",
"hittable": false,
"parentIndex": 365,
"ref": "e367"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 2045.666666666667,
"width": 362,
"height": 30,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 367,
"type": "Other",
"hittable": false,
"parentIndex": 363,
"ref": "e368"
},
{
"rect": {
"y": 2072.666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 368,
"type": "Other",
"hittable": false,
"parentIndex": 367,
"ref": "e369"
},
{
"label": "•",
"rect": {
"y": 2106.666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 369,
"type": "StaticText",
"hittable": false,
"parentIndex": 358,
"ref": "e370"
},
{
"label": "•",
"rect": {
"y": 2106.666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 370,
"type": "StaticText",
"hittable": false,
"parentIndex": 369,
"ref": "e371"
},
{
"label": "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.",
"rect": {
"y": 2106.666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 371,
"type": "Other",
"hittable": false,
"parentIndex": 358,
"ref": "e372"
},
{
"label": "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.",
"rect": {
"y": 2106.666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 372,
"type": "Other",
"hittable": false,
"parentIndex": 371,
"ref": "e373"
},
{
"rect": {
"y": 2106.666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 373,
"type": "Other",
"hittable": false,
"parentIndex": 372,
"ref": "e374"
},
{
"value": "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.",
"label": "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.",
"rect": {
"y": 2106.666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 374,
"type": "TextView",
"hittable": false,
"parentIndex": 372,
"ref": "e375"
},
{
"label": "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.",
"rect": {
"y": 2106.666666666667,
"width": 340.6666564941406,
"height": 88,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 375,
"type": "TextView",
"hittable": false,
"parentIndex": 374,
"ref": "e376"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 2106.666666666667,
"width": 30,
"height": 88,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 376,
"type": "Other",
"hittable": false,
"parentIndex": 374,
"ref": "e377"
},
{
"rect": {
"y": 2067.666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 377,
"type": "Other",
"hittable": false,
"parentIndex": 376,
"ref": "e378"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 2161.666666666667,
"width": 340.6666564941406,
"height": 30,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 378,
"type": "Other",
"hittable": false,
"parentIndex": 374,
"ref": "e379"
},
{
"rect": {
"y": 2188.666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 379,
"type": "Other",
"hittable": false,
"parentIndex": 378,
"ref": "e380"
},
{
"label": "•",
"rect": {
"y": 2198.666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 36,
"enabled": true,
"index": 380,
"type": "StaticText",
"hittable": false,
"parentIndex": 358,
"ref": "e381"
},
{
"label": "•",
"rect": {
"y": 2198.666666666667,
"width": 7.333332061767578,
"height": 22,
"x": 30
},
"depth": 37,
"enabled": true,
"index": 381,
"type": "StaticText",
"hittable": false,
"parentIndex": 380,
"ref": "e382"
},
{
"label": "We rely on onContentSizeChange to dete",
"rect": {
"y": 2198.666666666667,
"width": 340.6666564941406,
"height": 22,
"x": 41.33333396911621
},
"depth": 36,
"enabled": true,
"index": 382,
"type": "Other",
"hittable": false,
"parentIndex": 358,
"ref": "e383"
},
{
"label": "We rely on onContentSizeChange to dete",
"rect": {
"y": 2198.666666666667,
"width": 340.6666564941406,
"height": 22,
"x": 41.33333396911621
},
"depth": 37,
"enabled": true,
"index": 383,
"type": "Other",
"hittable": false,
"parentIndex": 382,
"ref": "e384"
},
{
"rect": {
"y": 2198.666666666667,
"width": 340.6666564941406,
"height": 22,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 384,
"type": "Other",
"hittable": false,
"parentIndex": 383,
"ref": "e385"
},
{
"value": "We rely on onContentSizeChange to dete",
"label": "We rely on onContentSizeChange to dete",
"rect": {
"y": 2198.666666666667,
"width": 340.6666564941406,
"height": 22,
"x": 41.33333396911621
},
"depth": 38,
"enabled": true,
"index": 385,
"type": "TextView",
"hittable": false,
"parentIndex": 383,
"ref": "e386"
},
{
"label": "We rely on onContentSizeChange to dete",
"rect": {
"y": 2198.666666666667,
"width": 278.07421875,
"height": 22,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 386,
"type": "TextView",
"hittable": false,
"parentIndex": 385,
"ref": "e387"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 2198.666666666667,
"width": 30,
"height": 22,
"x": 349.00000063578284
},
"depth": 39,
"enabled": true,
"index": 387,
"type": "Other",
"hittable": false,
"parentIndex": 385,
"ref": "e388"
},
{
"rect": {
"y": 2159.666666666667,
"width": 3,
"height": 36,
"x": 376.00000063578284
},
"depth": 40,
"enabled": true,
"index": 388,
"type": "Other",
"hittable": false,
"parentIndex": 387,
"ref": "e389"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 2206.666666666667,
"width": 340.6666564941406,
"height": 11,
"x": 41.33333396911621
},
"depth": 39,
"enabled": true,
"index": 389,
"type": "Other",
"hittable": false,
"parentIndex": 385,
"ref": "e390"
},
{
"rect": {
"y": 2214.666666666667,
"width": 36,
"height": 3,
"x": 2.333333969116211
},
"depth": 40,
"enabled": true,
"index": 390,
"type": "Other",
"hittable": false,
"parentIndex": 389,
"ref": "e391"
},
{
"label": "(end of synthetic stream)",
"rect": {
"y": 2236.666666666667,
"width": 362,
"height": 22,
"x": 20
},
"depth": 36,
"enabled": true,
"index": 391,
"type": "Other",
"hittable": false,
"parentIndex": 358,
"ref": "e392"
},
{
"label": "(end of synthetic stream)",
"rect": {
"y": 2236.666666666667,
"width": 362,
"height": 22,
"x": 20
},
"depth": 37,
"enabled": true,
"index": 392,
"type": "Other",
"hittable": false,
"parentIndex": 391,
"ref": "e393"
},
{
"rect": {
"y": 2236.666666666667,
"width": 362,
"height": 22,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 393,
"type": "Other",
"hittable": false,
"parentIndex": 392,
"ref": "e394"
},
{
"value": "(end of synthetic stream)",
"label": "(end of synthetic stream)",
"rect": {
"y": 2236.666666666667,
"width": 362,
"height": 22,
"x": 20
},
"depth": 38,
"enabled": true,
"index": 394,
"type": "TextView",
"hittable": false,
"parentIndex": 392,
"ref": "e395"
},
{
"label": "(end of synthetic stream)",
"rect": {
"y": 2236.666666666667,
"width": 183.234375,
"height": 22,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 395,
"type": "TextView",
"hittable": false,
"parentIndex": 394,
"ref": "e396"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 2236.666666666667,
"width": 30,
"height": 22,
"x": 349
},
"depth": 39,
"enabled": true,
"index": 396,
"type": "Other",
"hittable": false,
"parentIndex": 394,
"ref": "e397"
},
{
"rect": {
"y": 2197.666666666667,
"width": 3,
"height": 36,
"x": 376
},
"depth": 40,
"enabled": true,
"index": 397,
"type": "Other",
"hittable": false,
"parentIndex": 396,
"ref": "e398"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 2244.666666666667,
"width": 362,
"height": 11,
"x": 20
},
"depth": 39,
"enabled": true,
"index": 398,
"type": "Other",
"hittable": false,
"parentIndex": 394,
"ref": "e399"
},
{
"rect": {
"y": 2252.666666666667,
"width": 36,
"height": 3,
"x": -19
},
"depth": 40,
"enabled": true,
"index": 399,
"type": "Other",
"hittable": false,
"parentIndex": 398,
"ref": "e400"
},
{
"label": "Copy turn",
"rect": {
"y": 2270.666666666667,
"width": 378,
"height": 67,
"x": 12
},
"depth": 35,
"enabled": true,
"index": 400,
"type": "Other",
"hittable": false,
"parentIndex": 73,
"ref": "e401"
},
{
"label": "Copy turn",
"rect": {
"y": 2283.666666666667,
"width": 22,
"height": 22,
"x": 16
},
"depth": 36,
"enabled": true,
"index": 401,
"type": "Button",
"hittable": false,
"parentIndex": 400,
"ref": "e402"
},
{
"label": "Fork chat from here",
"rect": {
"y": 2283.666666666667,
"width": 22,
"height": 22,
"x": 46
},
"depth": 36,
"enabled": true,
"index": 402,
"type": "Other",
"hittable": false,
"parentIndex": 400,
"ref": "e403"
},
{
"identifier": "assistant-fork-menu-trigger",
"label": "Fork chat from here",
"rect": {
"y": 2283.666666666667,
"width": 22,
"height": 22,
"x": 46
},
"depth": 37,
"enabled": true,
"index": 403,
"type": "Button",
"hittable": false,
"parentIndex": 402,
"ref": "e404"
},
{
"label": "Worked for 10s, ended 8:53 PM",
"rect": {
"y": 2286.9999999205274,
"width": 91.33332824707031,
"height": 15.666671752929688,
"x": 76
},
"depth": 36,
"enabled": true,
"index": 404,
"type": "Button",
"hittable": false,
"parentIndex": 400,
"ref": "e405"
},
{
"label": "Worked for 10s",
"rect": {
"y": 2286.9999999205274,
"width": 91.33332824707031,
"height": 15.666671752929688,
"x": 76
},
"depth": 37,
"enabled": true,
"index": 405,
"type": "StaticText",
"hittable": false,
"parentIndex": 404,
"ref": "e406"
},
{
"label": "Worked for 10s",
"rect": {
"y": 2286.9999999205274,
"width": 91.33332824707031,
"height": 15.666671752929688,
"x": 76
},
"depth": 38,
"enabled": true,
"index": 406,
"type": "StaticText",
"hittable": false,
"parentIndex": 405,
"ref": "e407"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 164,
"width": 402,
"height": 30,
"x": 0
},
"depth": 33,
"enabled": true,
"index": 407,
"type": "Other",
"hittable": false,
"parentIndex": 71,
"ref": "e408"
},
{
"rect": {
"y": 164,
"width": 393,
"height": 3,
"x": 3
},
"depth": 34,
"enabled": true,
"index": 408,
"type": "Other",
"hittable": false,
"parentIndex": 407,
"ref": "e409"
},
{
"value": "32%",
"label": "Vertical scroll bar, 23 pages",
"rect": {
"y": 161,
"width": 30,
"height": 273.0000000000002,
"x": 369
},
"depth": 33,
"enabled": true,
"index": 409,
"type": "Other",
"hittable": false,
"parentIndex": 71,
"ref": "e410"
},
{
"rect": {
"y": 320.3333333333337,
"width": 3,
"height": 36,
"x": 396
},
"depth": 34,
"enabled": true,
"index": 410,
"type": "Other",
"hittable": false,
"parentIndex": 409,
"ref": "e411"
},
{
"value": "32%",
"label": "Vertical scroll bar, 23 pages",
"rect": {
"y": 161,
"width": 30,
"height": 273.0000000000002,
"x": 369
},
"depth": 33,
"enabled": true,
"index": 411,
"type": "Other",
"hittable": false,
"parentIndex": 71,
"ref": "e412"
},
{
"rect": {
"y": 320.3333333333337,
"width": 3,
"height": 36,
"x": 396
},
"depth": 34,
"enabled": true,
"index": 412,
"type": "Other",
"hittable": false,
"parentIndex": 411,
"ref": "e413"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 164,
"width": 402,
"height": 30,
"x": 0
},
"depth": 33,
"enabled": true,
"index": 413,
"type": "Other",
"hittable": false,
"parentIndex": 71,
"ref": "e414"
},
{
"rect": {
"y": 164,
"width": 393,
"height": 3,
"x": 3
},
"depth": 34,
"enabled": true,
"index": 414,
"type": "Other",
"hittable": false,
"parentIndex": 413,
"ref": "e415"
},
{
"label": "Scroll to bottom",
"rect": {
"y": 370,
"width": 48,
"height": 48,
"x": 177
},
"depth": 31,
"enabled": true,
"index": 415,
"type": "Other",
"hittable": false,
"parentIndex": 68,
"ref": "e416"
},
{
"identifier": "scroll-to-bottom-button",
"label": "Scroll to bottom",
"rect": {
"y": 370,
"width": 48,
"height": 48,
"x": 177
},
"depth": 32,
"enabled": true,
"index": 416,
"type": "Button",
"hittable": false,
"parentIndex": 415,
"ref": "e417"
},
{
"identifier": "composer-viewport-content",
"label": "Message agent... Message, @files, /commands",
"rect": {
"y": 434,
"width": 402,
"height": 138,
"x": 0
},
"depth": 29,
"enabled": true,
"index": 417,
"type": "Other",
"hittable": false,
"parentIndex": 65,
"ref": "e418"
},
{
"identifier": "message-input-root",
"rect": {
"y": 434,
"width": 370,
"height": 88,
"x": 16
},
"depth": 30,
"enabled": true,
"index": 418,
"type": "Other",
"hittable": false,
"parentIndex": 417,
"ref": "e419"
},
{
"rect": {
"y": 434,
"width": 370,
"height": 88,
"x": 16
},
"depth": 30,
"enabled": true,
"index": 419,
"type": "Other",
"hittable": false,
"parentIndex": 417,
"ref": "e420"
},
{
"label": "Message agent... Message, @files, /commands",
"rect": {
"y": 443,
"width": 344,
"height": 30,
"x": 29
},
"depth": 30,
"enabled": true,
"index": 420,
"type": "Other",
"hittable": false,
"parentIndex": 417,
"ref": "e421"
},
{
"label": "Message agent... Message, @files, /commands",
"rect": {
"y": 443,
"width": 344,
"height": 30,
"x": 29
},
"depth": 31,
"enabled": true,
"index": 421,
"type": "TextView",
"hittable": false,
"parentIndex": 420,
"ref": "e422"
},
{
"value": "0%",
"label": "Vertical scroll bar, 1 page",
"rect": {
"y": 443,
"width": 30,
"height": 30,
"x": 340
},
"depth": 32,
"enabled": true,
"index": 422,
"type": "Other",
"hittable": false,
"parentIndex": 421,
"ref": "e423"
},
{
"rect": {
"y": 439,
"width": 3,
"height": 31,
"x": 367
},
"depth": 33,
"enabled": true,
"index": 423,
"type": "Other",
"hittable": false,
"parentIndex": 422,
"ref": "e424"
},
{
"value": "0%",
"label": "Horizontal scroll bar, 1 page",
"rect": {
"y": 455,
"width": 344,
"height": 15,
"x": 29
},
"depth": 32,
"enabled": true,
"index": 424,
"type": "Other",
"hittable": false,
"parentIndex": 421,
"ref": "e425"
},
{
"rect": {
"y": 467,
"width": 338,
"height": 3,
"x": 32
},
"depth": 33,
"enabled": true,
"index": 425,
"type": "Other",
"hittable": false,
"parentIndex": 424,
"ref": "e426"
},
{
"identifier": "message-input-attach-button",
"label": "Add attachment",
"rect": {
"y": 485,
"width": 28,
"height": 28,
"x": 23
},
"depth": 30,
"enabled": true,
"index": 426,
"type": "Button",
"hittable": false,
"parentIndex": 417,
"ref": "e427"
},
{
"rect": {
"y": 485,
"width": 28,
"height": 28,
"x": 23
},
"depth": 31,
"enabled": true,
"index": 427,
"type": "Other",
"hittable": false,
"parentIndex": 426,
"ref": "e428"
},
{
"rect": {
"y": 489,
"width": 20,
"height": 20,
"x": 27
},
"depth": 32,
"enabled": true,
"index": 428,
"type": "Other",
"hittable": false,
"parentIndex": 427,
"ref": "e429"
},
{
"rect": {
"y": 492.3333333333333,
"width": 13.333333333333332,
"height": 13.333333333333371,
"x": 30.333333333333332
},
"depth": 33,
"enabled": true,
"index": 429,
"type": "Other",
"hittable": false,
"parentIndex": 428,
"ref": "e430"
},
{
"rect": {
"y": 498.16666666666663,
"width": 13.333333333333332,
"height": 1.6666666666666856,
"x": 30.333333333333332
},
"depth": 34,
"enabled": true,
"index": 430,
"type": "Other",
"hittable": false,
"parentIndex": 429,
"ref": "e431"
},
{
"rect": {
"y": 492.33333333333337,
"width": 1.6666666666666643,
"height": 13.333333333333314,
"x": 36.16666666666667
},
"depth": 34,
"enabled": true,
"index": 431,
"type": "Other",
"hittable": false,
"parentIndex": 429,
"ref": "e432"
},
{
"label": "Select model (Ten second stream)",
"rect": {
"y": 485,
"width": 232,
"height": 28,
"x": 51
},
"depth": 30,
"enabled": true,
"index": 432,
"type": "Other",
"hittable": false,
"parentIndex": 417,
"ref": "e433"
},
{
"identifier": "combined-model-selector",
"label": "Select model (Ten second stream)",
"rect": {
"y": 485,
"width": 202,
"height": 28,
"x": 51
},
"depth": 31,
"enabled": true,
"index": 433,
"type": "Button",
"hittable": false,
"parentIndex": 432,
"ref": "e434"
},
{
"rect": {
"y": 489,
"width": 20,
"height": 20,
"x": 59
},
"depth": 32,
"enabled": true,
"index": 434,
"type": "Other",
"hittable": false,
"parentIndex": 433,
"ref": "e435"
},
{
"rect": {
"y": 489,
"width": 20,
"height": 20,
"x": 59
},
"depth": 33,
"enabled": true,
"index": 435,
"type": "Other",
"hittable": false,
"parentIndex": 434,
"ref": "e436"
},
{
"rect": {
"y": 491.5,
"width": 18.33333333333332,
"height": 15,
"x": 59.833333333333336
},
"depth": 34,
"enabled": true,
"index": 436,
"type": "Other",
"hittable": false,
"parentIndex": 435,
"ref": "e437"
},
{
"rect": {
"y": 494.83333333333337,
"width": 15,
"height": 11.666666666666686,
"x": 61.5
},
"depth": 35,
"enabled": true,
"index": 437,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e438"
},
{
"rect": {
"y": 491.5,
"width": 5,
"height": 5,
"x": 64.83333333333333
},
"depth": 35,
"enabled": true,
"index": 438,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e439"
},
{
"rect": {
"y": 499.83333333333337,
"width": 3.3333333333333357,
"height": 1.6666666666666856,
"x": 59.83333333333333
},
"depth": 35,
"enabled": true,
"index": 439,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e440"
},
{
"rect": {
"y": 499,
"width": 1.6666666666666714,
"height": 3.3333333333333144,
"x": 65.66666666666666
},
"depth": 35,
"enabled": true,
"index": 440,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e441"
},
{
"rect": {
"y": 499,
"width": 1.6666666666666714,
"height": 3.3333333333333144,
"x": 70.66666666666667
},
"depth": 35,
"enabled": true,
"index": 441,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e442"
},
{
"rect": {
"y": 499.83333333333337,
"width": 3.3333333333333286,
"height": 1.6666666666666856,
"x": 74.83333333333334
},
"depth": 35,
"enabled": true,
"index": 442,
"type": "Other",
"hittable": false,
"parentIndex": 436,
"ref": "e443"
},
{
"label": "Ten second stream",
"rect": {
"y": 490,
"width": 130.3333282470703,
"height": 18,
"x": 83
},
"depth": 32,
"enabled": true,
"index": 443,
"type": "StaticText",
"hittable": false,
"parentIndex": 433,
"ref": "e444"
},
{
"label": "Ten second stream",
"rect": {
"y": 490,
"width": 130.3333282470703,
"height": 18,
"x": 83
},
"depth": 33,
"enabled": true,
"index": 444,
"type": "StaticText",
"hittable": false,
"parentIndex": 443,
"ref": "e445"
},
{
"identifier": "context-window-meter",
"label": "Context window 2% used",
"rect": {
"y": 485,
"width": 28,
"height": 28,
"x": 283
},
"depth": 30,
"enabled": true,
"index": 445,
"type": "Image",
"hittable": false,
"parentIndex": 417,
"ref": "e446"
},
{
"label": "Start dictation",
"rect": {
"y": 485,
"width": 28,
"height": 28,
"x": 315
},
"depth": 30,
"enabled": true,
"index": 446,
"type": "Button",
"hittable": false,
"parentIndex": 417,
"ref": "e447"
},
{
"label": "Enable Voice mode",
"rect": {
"y": 485,
"width": 28,
"height": 28,
"x": 351
},
"depth": 30,
"enabled": true,
"index": 447,
"type": "Button",
"hittable": false,
"parentIndex": 417,
"ref": "e448"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 11,
"enabled": true,
"index": 448,
"type": "Other",
"hittable": false,
"parentIndex": 12,
"ref": "e449"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 7,
"enabled": true,
"index": 449,
"type": "Other",
"hittable": false,
"parentIndex": 6,
"ref": "e450"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 8,
"enabled": true,
"index": 450,
"type": "Other",
"hittable": false,
"parentIndex": 449,
"ref": "e451"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 9,
"enabled": true,
"index": 451,
"type": "Other",
"hittable": false,
"parentIndex": 450,
"ref": "e452"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 1,
"enabled": true,
"index": 452,
"type": "Window",
"hittable": false,
"parentIndex": 0,
"ref": "e453"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 2,
"enabled": true,
"index": 453,
"type": "Other",
"hittable": false,
"parentIndex": 452,
"ref": "e454"
},
{
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 3,
"enabled": true,
"index": 454,
"type": "Other",
"hittable": false,
"parentIndex": 453,
"ref": "e455"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 336,
"x": 0
},
"depth": 3,
"enabled": true,
"index": 455,
"type": "Other",
"hittable": false,
"parentIndex": 453,
"ref": "e456"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 278,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 456,
"type": "Other",
"hittable": false,
"parentIndex": 455,
"ref": "e457"
},
{
"label": "Emoji",
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 1,
"enabled": true,
"index": 457,
"type": "Window",
"hittable": true,
"parentIndex": 0,
"ref": "e458"
},
{
"label": "Emoji",
"rect": {
"y": 0,
"width": 402,
"height": 874,
"x": 0
},
"depth": 2,
"enabled": true,
"index": 458,
"type": "Other",
"hittable": true,
"parentIndex": 457,
"ref": "e459"
},
{
"label": "Emoji",
"rect": {
"y": 538,
"width": 402,
"height": 336,
"x": 0
},
"depth": 3,
"enabled": true,
"index": 459,
"type": "Other",
"hittable": true,
"parentIndex": 458,
"ref": "e460"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 460,
"type": "Other",
"hittable": false,
"parentIndex": 459,
"ref": "e461"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 5,
"enabled": true,
"index": 461,
"type": "Other",
"hittable": false,
"parentIndex": 460,
"ref": "e462"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 6,
"enabled": true,
"index": 462,
"type": "Other",
"hittable": false,
"parentIndex": 461,
"ref": "e463"
},
{
"identifier": "SystemInputAssistantView",
"label": "Typing Predictions",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 463,
"type": "Other",
"hittable": true,
"parentIndex": 459,
"ref": "e464"
},
{
"label": "Typing Predictions",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 5,
"enabled": true,
"index": 464,
"type": "Other",
"hittable": true,
"parentIndex": 463,
"ref": "e465"
},
{
"identifier": "CenterPageView",
"label": "Typing Predictions",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 6,
"enabled": true,
"index": 465,
"type": "Other",
"hittable": true,
"parentIndex": 464,
"ref": "e466"
},
{
"rect": {
"y": -62,
"width": 402,
"height": 1245,
"x": 0
},
"depth": 7,
"enabled": true,
"index": 466,
"type": "Other",
"hittable": false,
"parentIndex": 465,
"ref": "e467"
},
{
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 8,
"enabled": true,
"index": 467,
"type": "ScrollView",
"hittable": false,
"parentIndex": 466,
"ref": "e468"
},
{
"label": "Typing Predictions",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 7,
"enabled": true,
"index": 468,
"type": "Other",
"hittable": true,
"parentIndex": 465,
"ref": "e469"
},
{
"label": "Typing Predictions",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 8,
"enabled": true,
"index": 469,
"type": "Other",
"hittable": true,
"parentIndex": 468,
"ref": "e470"
},
{
"label": "I",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 9,
"enabled": true,
"index": 470,
"type": "Other",
"hittable": true,
"parentIndex": 469,
"ref": "e471"
},
{
"label": "I",
"rect": {
"y": 538,
"width": 402,
"height": 45,
"x": 0
},
"depth": 10,
"enabled": true,
"index": 471,
"type": "Other",
"hittable": true,
"parentIndex": 470,
"ref": "e472"
},
{
"label": "I",
"rect": {
"y": 538,
"width": 134,
"height": 45,
"x": 0
},
"depth": 11,
"enabled": true,
"index": 472,
"type": "Other",
"hittable": true,
"parentIndex": 471,
"ref": "e473"
},
{
"label": "The",
"rect": {
"y": 538,
"width": 134,
"height": 45,
"x": 134
},
"depth": 11,
"enabled": true,
"index": 473,
"type": "Other",
"hittable": true,
"parentIndex": 471,
"ref": "e474"
},
{
"label": "I’m",
"rect": {
"y": 538,
"width": 134,
"height": 45,
"x": 268
},
"depth": 11,
"enabled": true,
"index": 474,
"type": "Other",
"hittable": true,
"parentIndex": 471,
"ref": "e475"
},
{
"rect": {
"y": 583,
"width": 402,
"height": 233,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 475,
"type": "Other",
"hittable": false,
"parentIndex": 459,
"ref": "e476"
},
{
"rect": {
"y": 583,
"width": 402,
"height": 291,
"x": 0
},
"depth": 5,
"enabled": true,
"index": 476,
"type": "Other",
"hittable": false,
"parentIndex": 475,
"ref": "e477"
},
{
"rect": {
"y": 583,
"width": 402,
"height": 291,
"x": 0
},
"depth": 6,
"enabled": true,
"index": 477,
"type": "Other",
"hittable": false,
"parentIndex": 476,
"ref": "e478"
},
{
"rect": {
"y": 583,
"width": 402,
"height": 291,
"x": 0
},
"depth": 7,
"enabled": true,
"index": 478,
"type": "Other",
"hittable": false,
"parentIndex": 477,
"ref": "e479"
},
{
"label": "Q",
"rect": {
"y": 583,
"width": 402,
"height": 233,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 479,
"type": "Other",
"hittable": false,
"parentIndex": 459,
"ref": "e480"
},
{
"label": "Q",
"rect": {
"y": 583,
"width": 402,
"height": 233,
"x": 0
},
"depth": 5,
"enabled": true,
"index": 480,
"type": "Keyboard",
"hittable": false,
"parentIndex": 479,
"ref": "e481"
},
{
"label": "Q",
"rect": {
"y": 583,
"width": 402,
"height": 233,
"x": 0
},
"depth": 6,
"enabled": true,
"index": 481,
"type": "Other",
"hittable": false,
"parentIndex": 480,
"ref": "e482"
},
{
"identifier": "UIKeyboardLayoutStar Preview",
"label": "Q",
"rect": {
"y": 583,
"width": 402,
"height": 233,
"x": 0
},
"depth": 7,
"enabled": true,
"index": 482,
"type": "Other",
"hittable": false,
"parentIndex": 481,
"ref": "e483"
},
{
"label": "Q",
"rect": {
"y": 590,
"width": 40.333333333333336,
"height": 46,
"x": 0
},
"depth": 8,
"enabled": true,
"index": 483,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e484"
},
{
"label": "W",
"rect": {
"y": 590,
"width": 40.00000000000001,
"height": 46,
"x": 40.333333333333336
},
"depth": 8,
"enabled": true,
"index": 484,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e485"
},
{
"label": "E",
"rect": {
"y": 590,
"width": 40.33333333333334,
"height": 46,
"x": 80.33333333333334
},
"depth": 8,
"enabled": true,
"index": 485,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e486"
},
{
"label": "R",
"rect": {
"y": 590,
"width": 40,
"height": 46,
"x": 120.66666666666669
},
"depth": 8,
"enabled": true,
"index": 486,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e487"
},
{
"label": "T",
"rect": {
"y": 590,
"width": 40.33333333333334,
"height": 46,
"x": 160.66666666666669
},
"depth": 8,
"enabled": true,
"index": 487,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e488"
},
{
"label": "Y",
"rect": {
"y": 590,
"width": 40.33333333333334,
"height": 46,
"x": 201.00000000000003
},
"depth": 8,
"enabled": true,
"index": 488,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e489"
},
{
"label": "U",
"rect": {
"y": 590,
"width": 40,
"height": 46,
"x": 241.33333333333337
},
"depth": 8,
"enabled": true,
"index": 489,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e490"
},
{
"label": "I",
"rect": {
"y": 590,
"width": 40.333333333333314,
"height": 46,
"x": 281.33333333333337
},
"depth": 8,
"enabled": true,
"index": 490,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e491"
},
{
"label": "O",
"rect": {
"y": 590,
"width": 40,
"height": 46,
"x": 321.6666666666667
},
"depth": 8,
"enabled": true,
"index": 491,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e492"
},
{
"label": "P",
"rect": {
"y": 590,
"width": 40.333333333333314,
"height": 46,
"x": 361.6666666666667
},
"depth": 8,
"enabled": true,
"index": 492,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e493"
},
{
"label": "A",
"rect": {
"y": 644,
"width": 40.33333333333333,
"height": 46,
"x": 19.666666666666668
},
"depth": 8,
"enabled": true,
"index": 493,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e494"
},
{
"label": "S",
"rect": {
"y": 644,
"width": 40.33333333333334,
"height": 46,
"x": 60
},
"depth": 8,
"enabled": true,
"index": 494,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e495"
},
{
"label": "D",
"rect": {
"y": 644,
"width": 40,
"height": 46,
"x": 100.33333333333334
},
"depth": 8,
"enabled": true,
"index": 495,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e496"
},
{
"label": "F",
"rect": {
"y": 644,
"width": 40.33333333333334,
"height": 46,
"x": 140.33333333333334
},
"depth": 8,
"enabled": true,
"index": 496,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e497"
},
{
"label": "G",
"rect": {
"y": 644,
"width": 40,
"height": 46,
"x": 181.2026666666667
},
"depth": 8,
"enabled": true,
"index": 497,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e498"
},
{
"label": "H",
"rect": {
"y": 644,
"width": 40.333333333333314,
"height": 46,
"x": 221.2026666666667
},
"depth": 8,
"enabled": true,
"index": 498,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e499"
},
{
"label": "J",
"rect": {
"y": 644,
"width": 40,
"height": 46,
"x": 261.536
},
"depth": 8,
"enabled": true,
"index": 499,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e500"
},
{
"label": "K",
"rect": {
"y": 644,
"width": 40.333333333333314,
"height": 46,
"x": 301.536
},
"depth": 8,
"enabled": true,
"index": 500,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e501"
},
{
"label": "L",
"rect": {
"y": 644,
"width": 40.333333333333314,
"height": 46,
"x": 341.8693333333333
},
"depth": 8,
"enabled": true,
"index": 501,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e502"
},
{
"identifier": "shift",
"label": "shift",
"rect": {
"y": 698,
"width": 51.333333333333336,
"height": 46,
"x": 0
},
"selected": true,
"enabled": true,
"depth": 8,
"index": 502,
"type": "Button",
"hittable": false,
"parentIndex": 482,
"ref": "e503"
},
{
"label": "Z",
"rect": {
"y": 698,
"width": 40.33333333333334,
"height": 46,
"x": 60
},
"depth": 8,
"enabled": true,
"index": 503,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e504"
},
{
"label": "X",
"rect": {
"y": 698,
"width": 40,
"height": 46,
"x": 100.33333333333334
},
"depth": 8,
"enabled": true,
"index": 504,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e505"
},
{
"label": "C",
"rect": {
"y": 698,
"width": 40.33333333333334,
"height": 46,
"x": 140.33333333333334
},
"depth": 8,
"enabled": true,
"index": 505,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e506"
},
{
"label": "V",
"rect": {
"y": 698,
"width": 40,
"height": 46,
"x": 181.2026666666667
},
"depth": 8,
"enabled": true,
"index": 506,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e507"
},
{
"label": "B",
"rect": {
"y": 698,
"width": 40.333333333333314,
"height": 46,
"x": 221.2026666666667
},
"depth": 8,
"enabled": true,
"index": 507,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e508"
},
{
"label": "N",
"rect": {
"y": 698,
"width": 40,
"height": 46,
"x": 261.536
},
"depth": 8,
"enabled": true,
"index": 508,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e509"
},
{
"label": "M",
"rect": {
"y": 698,
"width": 40.333333333333314,
"height": 46,
"x": 301.536
},
"depth": 8,
"enabled": true,
"index": 509,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e510"
},
{
"identifier": "delete",
"label": "delete",
"rect": {
"y": 698,
"width": 51.333333333333314,
"height": 46,
"x": 350.42133333333334
},
"depth": 8,
"enabled": true,
"index": 510,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e511"
},
{
"identifier": "more",
"label": "numbers",
"rect": {
"y": 752,
"width": 101,
"height": 46,
"x": 0
},
"depth": 8,
"enabled": true,
"index": 511,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e512"
},
{
"identifier": "space",
"label": "space",
"rect": {
"y": 752,
"width": 201.33333333333334,
"height": 46,
"x": 100.33333333333334
},
"depth": 8,
"enabled": true,
"index": 512,
"type": "Key",
"hittable": false,
"parentIndex": 482,
"ref": "e513"
},
{
"identifier": "Return",
"label": "return",
"rect": {
"y": 752,
"width": 100.33333333333331,
"height": 46,
"x": 301.6666666666667
},
"depth": 8,
"enabled": true,
"index": 513,
"type": "Button",
"hittable": false,
"parentIndex": 482,
"ref": "e514"
},
{
"label": "Emoji",
"rect": {
"y": 583,
"width": 402,
"height": 291,
"x": 0
},
"depth": 4,
"enabled": true,
"index": 514,
"type": "Other",
"hittable": true,
"parentIndex": 459,
"ref": "e515"
},
{
"label": "Emoji",
"rect": {
"y": 805.6989567998571,
"width": 68.0852958475086,
"height": 68.73516393505099,
"x": 8.47726568115926
},
"depth": 5,
"enabled": true,
"index": 515,
"type": "Button",
"hittable": true,
"parentIndex": 514,
"ref": "e516"
},
{
"rect": {
"y": 805.6989567998571,
"width": 0,
"height": 0,
"x": 8.47726568115926
},
"depth": 6,
"enabled": true,
"index": 516,
"type": "StaticText",
"hittable": false,
"parentIndex": 515,
"ref": "e517"
},
{
"identifier": "dictation",
"label": "Dictate",
"rect": {
"y": 805.3656234665239,
"width": 68.08529584750863,
"height": 68.73516393505099,
"x": 325.43743847133214
},
"depth": 5,
"enabled": true,
"index": 517,
"type": "Button",
"hittable": false,
"parentIndex": 514,
"ref": "e518"
},
{
"rect": {
"y": 805.3656234665239,
"width": 0,
"height": 0,
"x": 325.43743847133214
},
"depth": 6,
"enabled": true,
"index": 518,
"type": "StaticText",
"hittable": false,
"parentIndex": 517,
"ref": "e519"
},
{
"identifier": "dictation",
"label": "Dictate",
"rect": {
"y": 805.3656234665239,
"width": 68.08529584750863,
"height": 68.73516393505099,
"x": 325.43743847133214
},
"depth": 5,
"enabled": true,
"index": 519,
"type": "Button",
"hittable": true,
"parentIndex": 514,
"ref": "e520"
},
{
"rect": {
"y": 805.3656234665239,
"width": 0,
"height": 0,
"x": 325.43743847133214
},
"depth": 6,
"enabled": true,
"index": 520,
"type": "StaticText",
"hittable": false,
"parentIndex": 519,
"ref": "e521"
}
],
"truncated": false,
"appName": "sh.paseo.debug",
"appBundleId": "sh.paseo.debug",
"visibility": {
"partial": false,
"visibleNodeCount": 521,
"totalNodeCount": 521,
"reasons": []
},
"snapshotQuality": {
"state": "healthy",
"backend": "tree"
},
"snapshotDiagnostics": {
"stats": {
"count": 120,
"p50Ms": 143,
"p95Ms": 1129,
"maxMs": 3250,
"slowThresholdMs": 1500,
"platform": "ios",
"backends": {
"xctest": 120
}
}
},
"refsGeneration": 776184
}
}