mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-08 01:14:52 +00:00
8319 lines
227 KiB
JSON
8319 lines
227 KiB
JSON
{
|
||
"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
|
||
}
|
||
}
|