From 179124cdff5da31c4b300ba3c28ac211f5fb36be Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Fri, 25 Sep 2026 14:10:35 -0500 Subject: [PATCH] fix(gateway): carry customCSS in the change-watcher's resolve_skin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The salvage landed customCSS in server.py's resolve_skin, but that function's runtime home is change_watcher.py: method_ctx.bind_module rebinds the split module's bodies onto server.py's globals at import time, silently overwriting the server.py copy — so skin.changed went out without customCSS and the desktop lost user CSS on every switch. Carry the field in change_watcher.py's resolve_skin (the live source of truth) and drop the duplicated watcher block from server.py, restoring main's single-owner layout. --- tui_gateway/change_watcher.py | 4 +- tui_gateway/server.py | 99 ----------------------------------- 2 files changed, 3 insertions(+), 100 deletions(-) diff --git a/tui_gateway/change_watcher.py b/tui_gateway/change_watcher.py index 9fd4636fa3..2632709430 100644 --- a/tui_gateway/change_watcher.py +++ b/tui_gateway/change_watcher.py @@ -20,7 +20,9 @@ def resolve_skin() -> dict: "light_colors": skin.light_colors, "dark_colors": skin.dark_colors, "branding": skin.branding, "banner_logo": skin.banner_logo, "banner_hero": skin.banner_hero, "tool_prefix": skin.tool_prefix, - "help_header": (skin.branding or {}).get("help_header", "")} + "help_header": (skin.branding or {}).get("help_header", ""), + # Raw user CSS for the desktop GUI's