perf(mobile): open a session with its last tab strip (#39158)

This commit is contained in:
Kelvin Amoaba
2026-11-07 04:55:01 +00:00
committed by GitHub
parent 1712936c29
commit b0cd6d391c
11 changed files with 2116 additions and 2018 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -4,6 +4,11 @@
"family": "session.startup",
"namedDeltas": [],
"values": {
"04cec5da2df1": {
"name": "clear-delayed-action-timers",
"ordinal": 22,
"value": {}
},
"04f9f79493f1": {
"name": "fetch-terminals",
"ordinal": 13,
@@ -11,19 +16,17 @@
"allowEmptyLoaded": true
}
},
"14cc324e5867": {
"name": "ensure-session-tabs",
"ordinal": 21,
"value": {}
},
"1e39202de11e": {
"name": "clear-pending-live-input-commit",
"1c425a4c02bb": {
"name": "toast",
"ordinal": 18,
"value": {}
"value": {
"durationMs": 3000,
"message": "Open Orca on the host to wake sleeping agents."
}
},
"2532b032374f": {
"name": "clear-delayed-action-timers",
"ordinal": 28,
"30f5e556f9c1": {
"name": "ensure-session-tabs",
"ordinal": 15,
"value": {}
},
"343bb26c2588": {
@@ -39,6 +42,13 @@
"ordinal": 5,
"value": {}
},
"39ed117c65f2": {
"name": "fetch-terminals",
"ordinal": 17,
"value": {
"allowEmptyLoaded": false
}
},
"4669e4d646e8": {
"name": "fetch-terminals",
"ordinal": 6,
@@ -46,44 +56,9 @@
"allowEmptyLoaded": false
}
},
"51ae204eb34b": {
"status": "fulfilled",
"startedAt": 2550,
"settledAt": 2550,
"value": {
"$rpc": "undefined"
}
},
"5543ee241dbb": {
"name": "clear-pending-live-input-commit",
"ordinal": 27,
"value": {}
},
"6419a011f13b": {
"name": "clear-terminal-cache",
"ordinal": 1,
"value": {}
},
"70715317cc92": {
"name": "diagnostics-reset-route",
"ordinal": 17,
"value": {}
},
"791c598994de": {
"name": "clear-delayed-action-timers",
"ordinal": 19,
"value": {}
},
"7953dfb08a13": {
"name": "fetch-terminals",
"ordinal": 8,
"value": {
"allowEmptyLoaded": true
}
},
"92e7422b7481": {
"4e82c0d6a331": {
"name": "worktree.activate#2",
"ordinal": 20,
"ordinal": 14,
"args": [
{
"name": "method",
@@ -117,6 +92,82 @@
}
}
},
"51ae204eb34b": {
"status": "fulfilled",
"startedAt": 2550,
"settledAt": 2550,
"value": {
"$rpc": "undefined"
}
},
"629aee3fec6c": {
"name": "worktree.activate#2",
"ordinal": 16,
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}"
},
"6419a011f13b": {
"name": "clear-terminal-cache",
"ordinal": 1,
"value": {}
},
"7953dfb08a13": {
"name": "fetch-terminals",
"ordinal": 8,
"value": {
"allowEmptyLoaded": true
}
},
"84c0839eccca": {
"name": "fetch-terminals",
"ordinal": 20,
"value": {
"allowEmptyLoaded": true
}
},
"854cb236952a": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": false
},
"8ac1a3109c04": {
"name": "worktree.activate#2",
"ordinal": 14,
"args": [
{
"name": "method",
"value": "worktree.activate"
},
{
"name": "params",
"value": {
"navigation": "caller",
"notifyClients": false,
"worktree": "id:wt-1"
}
},
{
"name": "options",
"value": {
"$rpc": "absent"
}
}
],
"settlement": {
"status": "pending",
"startedAt": 2550
}
},
"9440e16e975c": {
"name": "worktree.activate#1",
"ordinal": 9,
@@ -157,103 +208,16 @@
"allowEmptyLoaded": false
}
},
"a64fb4d065f5": {
"name": "worktree.activate#2",
"ordinal": 20,
"args": [
{
"name": "method",
"value": "worktree.activate"
},
{
"name": "params",
"value": {
"navigation": "caller",
"notifyClients": false,
"worktree": "id:wt-1"
}
},
{
"name": "options",
"value": {
"$rpc": "absent"
}
}
],
"settlement": {
"status": "pending",
"startedAt": 2550
}
},
"a7a4537b3b5c": {
"name": "worktree.activate#2",
"ordinal": 22,
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}"
},
"aab012c297bd": {
"name": "diagnostics-reset-route",
"ordinal": 2,
"value": {}
},
"acf0370bfacc": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"terminalsLoaded": false
},
"ad31ee4e38f7": {
"name": "fetch-terminals",
"ordinal": 23,
"value": {
"allowEmptyLoaded": false
}
},
"c03aaed85eb1": {
"name": "fetch-terminals",
"ordinal": 25,
"value": {
"allowEmptyLoaded": false
}
},
"c59295cf1c69": {
"name": "worktree.activate#1",
"ordinal": 10,
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"worktree.activate\",\"params\":{\"worktree\":\"id:wt-1\",\"notifyClients\":false,\"navigation\":\"caller\"}}"
},
"d002ac5f4bf4": {
"name": "clear-terminal-cache",
"ordinal": 16,
"value": {}
},
"d2a0170e903b": {
"name": "toast",
"ordinal": 24,
"value": {
"durationMs": 3000,
"message": "Open Orca on the host to wake sleeping agents."
}
},
"d4bedafff7b3": {
"name": "clear-pending-live-input-commit",
"ordinal": 14,
"value": {}
},
"d5099139e4c2": {
"name": "fetch-terminals",
"ordinal": 26,
"value": {
"allowEmptyLoaded": true
}
},
"da6deb44ce71": {
"name": "fetch-terminals",
"ordinal": 12,
@@ -297,21 +261,6 @@
}
}
},
"e2a7de11a524": {
"actionSheetRequestSeq": 3,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"terminalsLoaded": false
},
"e927128e41fc": {
"name": "clear-pending-live-input-commit",
"ordinal": 3,
@@ -325,9 +274,16 @@
"$rpc": "undefined"
}
},
"f3cfad7c767c": {
"name": "clear-delayed-action-timers",
"ordinal": 15,
"f7e803082fc4": {
"name": "fetch-terminals",
"ordinal": 19,
"value": {
"allowEmptyLoaded": false
}
},
"f97fb55d23d2": {
"name": "clear-pending-live-input-commit",
"ordinal": 21,
"value": {}
}
},
@@ -342,7 +298,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -361,7 +317,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -382,7 +338,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -405,7 +361,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -424,13 +380,13 @@
{
"id": "activating",
"observation": {
"sender": ["defd9bef9981", "a64fb4d065f5"],
"payloads": ["c59295cf1c69", "a7a4537b3b5c"],
"sender": ["defd9bef9981", "8ac1a3109c04"],
"payloads": ["c59295cf1c69", "629aee3fec6c"],
"settlements": {
"mount": "eb79a9b3682a",
"consume-route": "51ae204eb34b"
},
"state": "e2a7de11a524",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -443,27 +399,21 @@
"343bb26c2588",
"da6deb44ce71",
"04f9f79493f1",
"d4bedafff7b3",
"f3cfad7c767c",
"d002ac5f4bf4",
"70715317cc92",
"1e39202de11e",
"791c598994de",
"14cc324e5867",
"ad31ee4e38f7"
"30f5e556f9c1",
"39ed117c65f2"
]
}
},
{
"id": "activated",
"observation": {
"sender": ["defd9bef9981", "92e7422b7481"],
"payloads": ["c59295cf1c69", "a7a4537b3b5c"],
"sender": ["defd9bef9981", "4e82c0d6a331"],
"payloads": ["c59295cf1c69", "629aee3fec6c"],
"settlements": {
"mount": "eb79a9b3682a",
"consume-route": "51ae204eb34b"
},
"state": "e2a7de11a524",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -476,28 +426,22 @@
"343bb26c2588",
"da6deb44ce71",
"04f9f79493f1",
"d4bedafff7b3",
"f3cfad7c767c",
"d002ac5f4bf4",
"70715317cc92",
"1e39202de11e",
"791c598994de",
"14cc324e5867",
"ad31ee4e38f7",
"d2a0170e903b"
"30f5e556f9c1",
"39ed117c65f2",
"1c425a4c02bb"
]
}
},
{
"id": "reloaded",
"observation": {
"sender": ["defd9bef9981", "92e7422b7481"],
"payloads": ["c59295cf1c69", "a7a4537b3b5c"],
"sender": ["defd9bef9981", "4e82c0d6a331"],
"payloads": ["c59295cf1c69", "629aee3fec6c"],
"settlements": {
"mount": "eb79a9b3682a",
"consume-route": "51ae204eb34b"
},
"state": "e2a7de11a524",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -510,30 +454,24 @@
"343bb26c2588",
"da6deb44ce71",
"04f9f79493f1",
"d4bedafff7b3",
"f3cfad7c767c",
"d002ac5f4bf4",
"70715317cc92",
"1e39202de11e",
"791c598994de",
"14cc324e5867",
"ad31ee4e38f7",
"d2a0170e903b",
"c03aaed85eb1",
"d5099139e4c2"
"30f5e556f9c1",
"39ed117c65f2",
"1c425a4c02bb",
"f7e803082fc4",
"84c0839eccca"
]
}
},
{
"id": "cleanup",
"observation": {
"sender": ["defd9bef9981", "92e7422b7481"],
"payloads": ["c59295cf1c69", "a7a4537b3b5c"],
"sender": ["defd9bef9981", "4e82c0d6a331"],
"payloads": ["c59295cf1c69", "629aee3fec6c"],
"settlements": {
"mount": "eb79a9b3682a",
"consume-route": "51ae204eb34b"
},
"state": "e2a7de11a524",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -546,19 +484,13 @@
"343bb26c2588",
"da6deb44ce71",
"04f9f79493f1",
"d4bedafff7b3",
"f3cfad7c767c",
"d002ac5f4bf4",
"70715317cc92",
"1e39202de11e",
"791c598994de",
"14cc324e5867",
"ad31ee4e38f7",
"d2a0170e903b",
"c03aaed85eb1",
"d5099139e4c2",
"5543ee241dbb",
"2532b032374f"
"30f5e556f9c1",
"39ed117c65f2",
"1c425a4c02bb",
"f7e803082fc4",
"84c0839eccca",
"f97fb55d23d2",
"04cec5da2df1"
]
}
}
@@ -28,6 +28,22 @@
"allowEmptyLoaded": true
}
},
"854cb236952a": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": false
},
"95c8385db422": {
"name": "clear-delayed-action-timers",
"ordinal": 4,
@@ -50,21 +66,6 @@
"ordinal": 2,
"value": {}
},
"acf0370bfacc": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"terminalsLoaded": false
},
"bc94d6f00eeb": {
"name": "clear-pending-live-input-commit",
"ordinal": 9,
@@ -95,7 +96,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -114,7 +115,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -135,7 +136,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -49,21 +49,6 @@
"ordinal": 12,
"value": {}
},
"83ed906e3d41": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"terminalsLoaded": true
},
"8c990409ac55": {
"name": "worktree.activate#1",
"ordinal": 5,
@@ -115,6 +100,22 @@
"allowEmptyLoaded": false
}
},
"a98356c9153c": {
"actionSheetRequestSeq": 2,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": true
},
"aa6511b23729": {
"status": "fulfilled",
"startedAt": 1500,
@@ -135,8 +136,8 @@
"allowEmptyLoaded": true
}
},
"c7e9a0eef4ce": {
"actionSheetRequestSeq": 2,
"e022e11065b3": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
@@ -148,6 +149,7 @@
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": true
},
"e927128e41fc": {
@@ -185,7 +187,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "83ed906e3d41",
"state": "e022e11065b3",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -204,7 +206,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "83ed906e3d41",
"state": "e022e11065b3",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -226,7 +228,7 @@
"mount": "eb79a9b3682a",
"unmount": "aa6511b23729"
},
"state": "c7e9a0eef4ce",
"state": "a98356c9153c",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -49,6 +49,22 @@
"ordinal": 12,
"value": {}
},
"854cb236952a": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": false
},
"8c990409ac55": {
"name": "worktree.activate#1",
"ordinal": 5,
@@ -105,21 +121,6 @@
"ordinal": 2,
"value": {}
},
"acf0370bfacc": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"terminalsLoaded": false
},
"ba45b883b259": {
"name": "fetch-terminals",
"ordinal": 10,
@@ -162,7 +163,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -181,7 +182,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -202,7 +203,7 @@
"settlements": {
"mount": "eb79a9b3682a"
},
"state": "acf0370bfacc",
"state": "854cb236952a",
"effects": [
"6419a011f13b",
"aab012c297bd",
@@ -0,0 +1,593 @@
{
"goldenFormatVersion": 6,
"operation": "session.startup",
"family": "session.startup",
"namedDeltas": [],
"values": {
"0808af971d7f": {
"name": "diagnostics-reset-route",
"ordinal": 22,
"value": {}
},
"0c745b7b3cbc": {
"name": "clear-pending-live-input-commit",
"ordinal": 35,
"value": {}
},
"169deb3ae6af": {
"actionSheetRequestSeq": 1,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": ["tab-a", "tab-b", "tab-x"],
"terminalsLoaded": false
},
"1e3a1c95aa65": {
"name": "clear-pending-live-input-commit",
"ordinal": 31,
"value": {}
},
"1eb7c62d5c7f": {
"actionSheetRequestSeq": 3,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": ["tab-a", "tab-b"],
"terminalsLoaded": false
},
"2071fa4023ba": {
"actionSheetRequestSeq": 9,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": false
},
"2196d8ddca7b": {
"name": "clear-delayed-action-timers",
"ordinal": 24,
"value": {}
},
"234a43e6bd65": {
"name": "ensure-session-tabs",
"ordinal": 41,
"value": {}
},
"2532b032374f": {
"name": "clear-delayed-action-timers",
"ordinal": 28,
"value": {}
},
"30f5e556f9c1": {
"name": "ensure-session-tabs",
"ordinal": 15,
"value": {}
},
"38b377793c34": {
"name": "ensure-session-tabs",
"ordinal": 5,
"value": {}
},
"40d47c7b9e56": {
"name": "ensure-session-tabs",
"ordinal": 25,
"value": {}
},
"414746be507d": {
"name": "diagnostics-reset-route",
"ordinal": 12,
"value": {}
},
"42f2550e7540": {
"name": "clear-delayed-action-timers",
"ordinal": 40,
"value": {}
},
"4669e4d646e8": {
"name": "fetch-terminals",
"ordinal": 6,
"value": {
"allowEmptyLoaded": false
}
},
"48aab64376df": {
"name": "clear-delayed-action-timers",
"ordinal": 32,
"value": {}
},
"4ab868ee910c": {
"name": "diagnostics-reset-route",
"ordinal": 30,
"value": {}
},
"4e668f2777e4": {
"name": "diagnostics-reset-route",
"ordinal": 38,
"value": {}
},
"4fb364aab7f9": {
"name": "clear-terminal-cache",
"ordinal": 29,
"value": {}
},
"51245db218dd": {
"name": "clear-terminal-cache",
"ordinal": 37,
"value": {}
},
"5543ee241dbb": {
"name": "clear-pending-live-input-commit",
"ordinal": 27,
"value": {}
},
"5bd54a356841": {
"name": "fetch-terminals",
"ordinal": 8,
"value": {
"allowEmptyLoaded": false
}
},
"5c6699f9b431": {
"name": "ensure-session-tabs",
"ordinal": 7,
"value": {}
},
"5d381bbc8fd2": {
"name": "clear-pending-live-input-commit",
"ordinal": 19,
"value": {}
},
"5dbd71a7b565": {
"name": "fetch-terminals",
"ordinal": 26,
"value": {
"allowEmptyLoaded": false
}
},
"6419a011f13b": {
"name": "clear-terminal-cache",
"ordinal": 1,
"value": {}
},
"7cf846aa3529": {
"name": "clear-terminal-cache",
"ordinal": 21,
"value": {}
},
"95c8385db422": {
"name": "clear-delayed-action-timers",
"ordinal": 4,
"value": {}
},
"968d084a5a35": {
"name": "clear-delayed-action-timers",
"ordinal": 10,
"value": {}
},
"98136c40e776": {
"name": "fetch-terminals",
"ordinal": 18,
"value": {
"allowEmptyLoaded": false
}
},
"9c976031a154": {
"name": "ensure-session-tabs",
"ordinal": 33,
"value": {}
},
"a80c93135833": {
"name": "clear-delayed-action-timers",
"ordinal": 20,
"value": {}
},
"aab012c297bd": {
"name": "diagnostics-reset-route",
"ordinal": 2,
"value": {}
},
"b2e323ccc369": {
"actionSheetRequestSeq": 7,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": [],
"terminalsLoaded": false
},
"b6770e9b4df2": {
"name": "fetch-terminals",
"ordinal": 34,
"value": {
"allowEmptyLoaded": false
}
},
"bc94d6f00eeb": {
"name": "clear-pending-live-input-commit",
"ordinal": 9,
"value": {}
},
"c5b498aff2c9": {
"name": "clear-terminal-cache",
"ordinal": 11,
"value": {}
},
"c63b05cb8b5c": {
"actionSheetRequestSeq": 5,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": ["tab-a", "tab-b"],
"terminalsLoaded": false
},
"cc01cec0da32": {
"name": "fetch-terminals",
"ordinal": 42,
"value": {
"allowEmptyLoaded": false
}
},
"cc93e616e745": {
"name": "clear-delayed-action-timers",
"ordinal": 36,
"value": {}
},
"d000b4c837b7": {
"name": "clear-pending-live-input-commit",
"ordinal": 13,
"value": {}
},
"d0f2ffb3342b": {
"name": "clear-pending-live-input-commit",
"ordinal": 39,
"value": {}
},
"d42d15a1b559": {
"name": "clear-pending-live-input-commit",
"ordinal": 23,
"value": {}
},
"dc4910b3e253": {
"name": "fetch-terminals",
"ordinal": 16,
"value": {
"allowEmptyLoaded": false
}
},
"e6ba1c0e09a4": {
"actionSheetRequestSeq": 3,
"activeHandle": {
"$rpc": "null"
},
"appliedSnapshotMarker": {
"epoch": {
"$rpc": "null"
},
"version": -1
},
"closedTabTombstones": 0,
"initializedHandles": [],
"sessionTabs": ["tab-a", "tab-b", "tab-x"],
"terminalsLoaded": false
},
"e927128e41fc": {
"name": "clear-pending-live-input-commit",
"ordinal": 3,
"value": {}
},
"eb79a9b3682a": {
"status": "fulfilled",
"startedAt": 0,
"settledAt": 0,
"value": {
"$rpc": "undefined"
}
},
"f0f3f352c679": {
"name": "ensure-session-tabs",
"ordinal": 17,
"value": {}
},
"fde92e0a066b": {
"name": "clear-delayed-action-timers",
"ordinal": 14,
"value": {}
}
},
"recording": {
"scenario": "session-startup-reopens-with-last-strip",
"checkpoints": [
{
"id": "live",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a"
},
"state": "169deb3ae6af",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841"
]
}
},
{
"id": "reopened-with-last-strip",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a",
"leave": "eb79a9b3682a",
"reopen": "eb79a9b3682a"
},
"state": "e6ba1c0e09a4",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841",
"bc94d6f00eeb",
"968d084a5a35",
"c5b498aff2c9",
"414746be507d",
"d000b4c837b7",
"fde92e0a066b",
"30f5e556f9c1",
"dc4910b3e253"
]
}
},
{
"id": "snapshot-replaced-strip",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a",
"leave": "eb79a9b3682a",
"reopen": "eb79a9b3682a",
"host-closed-x": "eb79a9b3682a"
},
"state": "1eb7c62d5c7f",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841",
"bc94d6f00eeb",
"968d084a5a35",
"c5b498aff2c9",
"414746be507d",
"d000b4c837b7",
"fde92e0a066b",
"30f5e556f9c1",
"dc4910b3e253",
"f0f3f352c679",
"98136c40e776"
]
}
},
{
"id": "closed-tab-stays-gone",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a",
"leave": "eb79a9b3682a",
"reopen": "eb79a9b3682a",
"host-closed-x": "eb79a9b3682a",
"leave-again": "eb79a9b3682a",
"reopen-again": "eb79a9b3682a"
},
"state": "c63b05cb8b5c",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841",
"bc94d6f00eeb",
"968d084a5a35",
"c5b498aff2c9",
"414746be507d",
"d000b4c837b7",
"fde92e0a066b",
"30f5e556f9c1",
"dc4910b3e253",
"f0f3f352c679",
"98136c40e776",
"5d381bbc8fd2",
"a80c93135833",
"7cf846aa3529",
"0808af971d7f",
"d42d15a1b559",
"2196d8ddca7b",
"40d47c7b9e56",
"5dbd71a7b565"
]
}
},
{
"id": "next-worktree-starts-empty",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a",
"leave": "eb79a9b3682a",
"reopen": "eb79a9b3682a",
"host-closed-x": "eb79a9b3682a",
"leave-again": "eb79a9b3682a",
"reopen-again": "eb79a9b3682a",
"switch-to-wt-2": "eb79a9b3682a"
},
"state": "b2e323ccc369",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841",
"bc94d6f00eeb",
"968d084a5a35",
"c5b498aff2c9",
"414746be507d",
"d000b4c837b7",
"fde92e0a066b",
"30f5e556f9c1",
"dc4910b3e253",
"f0f3f352c679",
"98136c40e776",
"5d381bbc8fd2",
"a80c93135833",
"7cf846aa3529",
"0808af971d7f",
"d42d15a1b559",
"2196d8ddca7b",
"40d47c7b9e56",
"5dbd71a7b565",
"5543ee241dbb",
"2532b032374f",
"4fb364aab7f9",
"4ab868ee910c",
"1e3a1c95aa65",
"48aab64376df",
"9c976031a154",
"b6770e9b4df2"
]
}
},
{
"id": "next-worktree-never-took-the-last-strip",
"observation": {
"sender": [],
"payloads": [],
"settlements": {
"mount": "eb79a9b3682a",
"host-lists-three": "eb79a9b3682a",
"leave": "eb79a9b3682a",
"reopen": "eb79a9b3682a",
"host-closed-x": "eb79a9b3682a",
"leave-again": "eb79a9b3682a",
"reopen-again": "eb79a9b3682a",
"switch-to-wt-2": "eb79a9b3682a",
"leave-wt-2": "eb79a9b3682a",
"reopen-wt-2": "eb79a9b3682a"
},
"state": "2071fa4023ba",
"effects": [
"6419a011f13b",
"aab012c297bd",
"e927128e41fc",
"95c8385db422",
"38b377793c34",
"4669e4d646e8",
"5c6699f9b431",
"5bd54a356841",
"bc94d6f00eeb",
"968d084a5a35",
"c5b498aff2c9",
"414746be507d",
"d000b4c837b7",
"fde92e0a066b",
"30f5e556f9c1",
"dc4910b3e253",
"f0f3f352c679",
"98136c40e776",
"5d381bbc8fd2",
"a80c93135833",
"7cf846aa3529",
"0808af971d7f",
"d42d15a1b559",
"2196d8ddca7b",
"40d47c7b9e56",
"5dbd71a7b565",
"5543ee241dbb",
"2532b032374f",
"4fb364aab7f9",
"4ab868ee910c",
"1e3a1c95aa65",
"48aab64376df",
"9c976031a154",
"b6770e9b4df2",
"0c745b7b3cbc",
"cc93e616e745",
"51245db218dd",
"4e668f2777e4",
"d0f2ffb3342b",
"42f2550e7540",
"234a43e6bd65",
"cc01cec0da32"
]
}
}
]
}
}
@@ -21887,6 +21887,98 @@
}
]
},
{
"id": "session-startup-reopens-with-last-strip",
"operation": "session.startup",
"family": "session.startup",
"sites": ["mobile/src/session/use-mobile-session-startup.ts"],
"schedules": [],
"steps": [
{
"action": "mount",
"id": "mount",
"args": {
"floating": true
}
},
{
"action": "host-tabs",
"id": "host-lists-three",
"args": {
"tabs": ["tab-a", "tab-b", "tab-x"]
}
},
{
"checkpoint": "live"
},
{
"action": "leave",
"id": "leave"
},
{
"action": "mount",
"id": "reopen",
"args": {
"floating": true
}
},
{
"checkpoint": "reopened-with-last-strip"
},
{
"action": "host-tabs",
"id": "host-closed-x",
"args": {
"tabs": ["tab-a", "tab-b"]
}
},
{
"checkpoint": "snapshot-replaced-strip"
},
{
"action": "leave",
"id": "leave-again"
},
{
"action": "mount",
"id": "reopen-again",
"args": {
"floating": true
}
},
{
"checkpoint": "closed-tab-stays-gone"
},
{
"action": "switch-worktree",
"id": "switch-to-wt-2",
"args": {
"worktree": "wt-2"
}
},
{
"checkpoint": "next-worktree-starts-empty"
},
{
"action": "leave",
"id": "leave-wt-2"
},
{
"action": "mount",
"id": "reopen-wt-2",
"args": {
"floating": true
}
},
{
"checkpoint": "next-worktree-never-took-the-last-strip"
},
{
"action": "unmount",
"id": "unmount"
}
]
},
{
"id": "session-startup-keeps-terminals-visible-on-reconnect",
"operation": "session.startup",
@@ -1,11 +1,18 @@
import { useEffect } from 'react'
import { useEffect, useMemo, useRef } from 'react'
import { skipToken, useQuery, useQueryClient } from '@tanstack/react-query'
import { translate } from '../i18n/mobile-i18n'
import { useWorkspaceExecutionHost } from '../navigation/workspace-execution-host'
import { hostQueryKey } from '../query/host-query-key'
import { worktreeActivate } from '../host-screen/host-screen-operations'
import { headlessActivationNeedsHostRenderer } from '../worktree/worktree-activation-result'
import { createInitialSessionAutoCreateState } from './use-initial-session-terminal-autocreate'
import type { MobileSessionKeyboardStateModel } from './use-mobile-session-keyboard-state'
import type { MobileSessionTab } from './mobile-session-route-types'
import { withoutSessionTabHostOwnership } from './mobile-session-tab-status-clock'
import type { RpcResponse } from '../transport/types'
const LAST_TABS_META = { streamBacked: true }
export function useMobileSessionStartup(scope: MobileSessionKeyboardStateModel) {
const {
hostId,
@@ -16,8 +23,10 @@ export function useMobileSessionStartup(scope: MobileSessionKeyboardStateModel)
client,
setTerminals,
terminalsRef,
sessionTabs,
setSessionTabs,
appliedSnapshotMarkerRef,
appliedSessionTabsRevisionRef,
closedTabTombstonesRef,
setTerminalsLoaded,
setActiveHandle,
@@ -46,6 +55,20 @@ export function useMobileSessionStartup(scope: MobileSessionKeyboardStateModel)
fetchTerminals,
ensureSessionTabs
} = scope
const queryClient = useQueryClient()
const exec = useWorkspaceExecutionHost() ?? 'local'
const lastTabsKey = useMemo(
() => hostQueryKey(hostId, 'session.tabs', { exec, worktree: worktreeId }, {}),
[hostId, exec, worktreeId]
)
// Never fetched: this hook writes the entry, and observing it holds it until 10 min after leaving.
useQuery({
queryKey: lastTabsKey,
queryFn: skipToken,
meta: LAST_TABS_META,
notifyOnChangeProps: []
})
const seedRevisionRef = useRef(0)
useEffect(() => {
// Reset reused-route state so the next workspace cannot inherit stale UI or snapshot gates.
sessionTabActionSheetRequestSeqRef.current += 1
@@ -74,7 +97,13 @@ export function useMobileSessionStartup(scope: MobileSessionKeyboardStateModel)
setActiveHandle(null)
setTerminals([])
terminalsRef.current = []
setSessionTabs([])
// Paint the last strip until the host's snapshot replaces it (which treats it as the previous strip); offline keeps the empty-state body.
const lastTabs =
connState === 'connected'
? queryClient.getQueryData<MobileSessionTab[]>(lastTabsKey)
: undefined
seedRevisionRef.current = appliedSessionTabsRevisionRef.current
setSessionTabs(lastTabs ? withoutSessionTabHostOwnership(lastTabs) : [])
setActiveSessionTabId(null)
clearPendingLiveInputCommit()
setMarkdownDocs(new Map())
@@ -92,10 +121,16 @@ export function useMobileSessionStartup(scope: MobileSessionKeyboardStateModel)
clearTerminalCache,
setSplitTerminalHandles,
terminalPaneViewportsRef,
hostId,
worktreeId
lastTabsKey
])
useEffect(() => {
// Only strips this visit took from the host; writing back the seed would pass it off as fresh.
if (appliedSessionTabsRevisionRef.current > seedRevisionRef.current) {
queryClient.setQueryData(lastTabsKey, sessionTabs)
}
}, [queryClient, lastTabsKey, sessionTabs])
// Every setTimeout goes through addTimer into `timers`, which the returned cleanup clears.
// react-doctor-disable-next-line react-doctor/effect-needs-cleanup
useEffect(() => {
@@ -116,7 +116,7 @@ export const BRIDGED_PARITY_EXCLUSIONS: Readonly<Partial<Record<BridgedParityCla
// Pin strict History verdicts and unchanged legacy counts in both directions.
export const BRIDGED_PARITY_BASELINE: Readonly<Record<BridgedParityClass | 'identical', number>> = {
identical: 384,
identical: 385,
'reply-meta-required': 0,
'result-absent-settlement': 330,
'result-absent-observation': 3,
@@ -1,13 +1,14 @@
import { hookMount } from '../hook-mount'
import { mountFixture } from '../recorder-fixture-shape'
import type { MobileSessionTab } from '../../../session/mobile-session-route-types'
import type { operationModuleLoader } from '../operation-module-loader'
import type { MountAdapter } from '../recording-scenario'
const WORKTREE_ID = 'wt-1'
const HOST_ID = 'host-1'
// Record callback effects and flags; scenario-declared tab-load rejection tests whether later terminal loads survive.
// Consume created on the same mount to reach both mutually exclusive activation sites through the real effect rerun.
// `host-tabs` stands in for an accepted host snapshot (revision bump, then the strip); `leave` keeps the document's cache for a reopen.
export function sessionStartupMountAdapters(
modules: ReturnType<typeof operationModuleLoader>
): Record<string, MountAdapter> {
@@ -18,6 +19,7 @@ export function sessionStartupMountAdapters(
).useMobileSessionStartup
let created: string | undefined
let worktreeId = 'wt-1'
let isFloatingWorkspaceRoute = false
let tabLoadRejects = false
let terminalsLoaded = true
@@ -29,19 +31,34 @@ export function sessionStartupMountAdapters(
const terminalGestureInputQueuesRef = { current: new Map<string, never>() }
const terminalGestureInputInFlightRef = { current: new Set<string>() }
const sessionTabActionSheetRequestSeqRef = { current: 0 }
let sessionTabs: MobileSessionTab[] = []
const appliedSessionTabsRevisionRef = { current: 0 }
// Stable like the screen's own callbacks, so an update reruns the route reset only when the route changes.
const routeResetDeps = {
setSplitTerminalHandles: () => {},
terminalPaneViewportsRef: { current: new Map() },
clearPendingLiveInputCommit: () => effect('clear-pending-live-input-commit', {}),
clearDelayedActionTimers: () => effect('clear-delayed-action-timers', {}),
clearTerminalCache: () => effect('clear-terminal-cache', {})
}
const hook = hookMount(() => {
useStartup(
mountFixture<Parameters<typeof useStartup>[0]>({
...routeResetDeps,
hostId: HOST_ID,
worktreeId: WORKTREE_ID,
worktreeId,
created,
isFloatingWorkspaceRoute,
connState: 'connected',
client,
setTerminals: () => {},
terminalsRef: { current: [] },
setSessionTabs: () => {},
sessionTabs,
setSessionTabs: (update) => {
sessionTabs = typeof update === 'function' ? update(sessionTabs) : update
},
appliedSessionTabsRevisionRef,
appliedSnapshotMarkerRef,
closedTabTombstonesRef,
setTerminalsLoaded: (value: boolean) => {
@@ -51,8 +68,6 @@ export function sessionStartupMountAdapters(
activeHandle = typeof update === 'function' ? update(activeHandle) : update
},
setActiveSessionTabId: () => {},
setSplitTerminalHandles: () => {},
terminalPaneViewportsRef: { current: new Map() },
setMarkdownDocs: () => {},
setFileDocs: () => {},
terminalGestureInputQueuesRef,
@@ -70,11 +85,8 @@ export function sessionStartupMountAdapters(
pendingBrowserFocusPageIdRef: { current: null },
pendingTerminalActivationAttemptRef: { current: null },
initialSessionAutoCreateRef: { current: null },
clearPendingLiveInputCommit: () => effect('clear-pending-live-input-commit', {}),
clearDelayedActionTimers: () => effect('clear-delayed-action-timers', {}),
showToast: (message: string, durationMs?: number) =>
effect('toast', { message, durationMs: durationMs ?? null }),
clearTerminalCache: () => effect('clear-terminal-cache', {}),
fetchTerminals: async (options) => {
effect('fetch-terminals', { allowEmptyLoaded: options?.allowEmptyLoaded ?? null })
return true
@@ -105,12 +117,34 @@ export function sessionStartupMountAdapters(
created = undefined
return hook.update()
}
if (name === 'host-tabs') {
const ids = Array.isArray(args.tabs) ? args.tabs.map(String) : []
appliedSessionTabsRevisionRef.current += 1
sessionTabs = ids.map((id) =>
mountFixture<Extract<MobileSessionTab, { type: 'terminal' }>>({
id,
type: 'terminal',
title: id,
terminal: id
})
)
return hook.update()
}
if (name === 'switch-worktree') {
// A reused route: same screen, next workspace.
worktreeId = String(args.worktree)
return hook.update()
}
if (name === 'leave') {
return hook.leave()
}
if (name === 'unmount') {
return hook.unmount()
}
throw new Error(`Unknown session startup action: ${name}`)
},
state: () => ({
sessionTabs: sessionTabs.map((tab) => tab.id),
terminalsLoaded,
activeHandle,
initializedHandles: [...initializedHandlesRef.current].sort(),