Add Windows Chrome side panel and scoped IDE native bridge

This commit is contained in:
yilsem committed 2026-09-07 12:45:45 +03:00
1 parent 75afd01b4b
commit fb6f57cd36
14 files changed
+1018 -1

No files matched your search

+14 -1
View File
@@ -2613,7 +2613,17 @@ def write_json(obj: dict) -> bool:
from tui_gateway.event_replay import _stamp_event
_stamp_event(obj)
return t.write(obj)
# Desktop and its Chrome companion may view the same running task.
# Stamp once, then fan out to each attached viewer exactly once.
# Keep ownership for lifecycle/requests; observers do not own work.
viewers = list(((_sessions.get(sid) or {}).get("viewers") or {}).keys())
delivered = False
for viewer in dict.fromkeys([t, *viewers]):
try:
delivered = viewer.write(obj) or delivered
except Exception:
logger.debug("Session viewer disconnected during event delivery")
return delivered
from tui_gateway.event_replay import _stamp_event
@@ -11430,6 +11440,9 @@ def _live_session_payload(
if cols is not None:
session["cols"] = cols
if transport is not None:
previous_transport = session.get("transport")
if previous_transport is not None and previous_transport is not _detached_ws_transport:
session.setdefault("viewers", {})[previous_transport] = time.time()
session["transport"] = transport
# Track every transport that has shown this session (multi-window:
# pop-out windows each resume the same sid). The last viewer