Fix workbench dark theme and enlarge dialogs

This commit is contained in:
Miayui
2026-09-18 09:11:59 +08:00
parent c812a1a595
commit e920a92505
18 changed files with 328 additions and 49 deletions
+7 -6
View File
@@ -1017,7 +1017,7 @@ operations:
) as response:
extension_script = response.read().decode("utf-8")
with self.opener.open(
f"{self.base_url}/self-extension.css?v=pet-settings-52", timeout=3
f"{self.base_url}/self-extension.css?v=pet-settings-54-dialog-size", timeout=3
) as response:
extension_styles = response.read().decode("utf-8").replace("\r\n", "\n")
with self.opener.open(
@@ -1029,7 +1029,7 @@ operations:
) as response:
energy_script = response.read().decode("utf-8")
with self.opener.open(
f"{self.base_url}/energy-monitor.css?v=energy-monitor-4", timeout=3
f"{self.base_url}/energy-monitor.css?v=energy-monitor-5-dialog-size", timeout=3
) as response:
energy_styles = response.read().decode("utf-8")
with self.opener.open(
@@ -1385,18 +1385,19 @@ operations:
self.assertIn('canvas.addEventListener("webglcontextlost"', app_script)
self.assertIn('"cognitive-agent:module-change"', app_script)
self.assertIn(
'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"',
'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"',
service_worker,
)
self.assertIn('/console-v2.css?v=delivery-state-69', service_worker)
self.assertIn('/console-v2.js?v=local-first-77-performance', service_worker)
self.assertIn('/assistant-chat.css?v=codex-assistant-29', service_worker)
self.assertIn('/assistant-chat.js?v=codex-assistant-34', service_worker)
self.assertIn('/energy-monitor.css?v=energy-monitor-4', service_worker)
self.assertIn('/energy-monitor.css?v=energy-monitor-5-dialog-size', service_worker)
self.assertIn('/energy-monitor.js?v=energy-monitor-5-performance', service_worker)
self.assertIn('"/app.js?v=dual-seat-145-n7-dispatch"', service_worker)
self.assertIn('/firmware-workbench-entry.css?v=1', service_worker)
self.assertIn('/firmware-workbench-entry.js?v=2', service_worker)
self.assertIn('/firmware-workbench-entry.css?v=2', service_worker)
self.assertIn('/firmware-workbench-entry.js?v=3', service_worker)
self.assertIn('/firmware-workbench-theme.js?v=1', service_worker)
self.assertIn('/firmware-workbench.html', service_worker)
self.assertIn('"/speech-input.js?v=sensevoice-13"', service_worker)
self.assertIn('"/speech-input.css?v=sensevoice-7"', service_worker)
@@ -27,7 +27,7 @@ def test_console_contains_ai_assistant_surface():
def test_codex_assistant_assets_are_versioned_together_in_the_service_worker():
service_worker = (ROOT / "apps/web-console/service-worker.js").read_text(encoding="utf-8")
assert (
'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"'
'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"'
in service_worker
)
assert '"/assistant-chat.css?v=codex-assistant-29"' in service_worker
@@ -31,7 +31,7 @@ def test_energy_monitor_assets_are_versioned_and_cached() -> None:
service_worker = source("service-worker.js")
for asset in (
"/energy-monitor.css?v=energy-monitor-4",
"/energy-monitor.css?v=energy-monitor-5-dialog-size",
"/energy-monitor.js?v=energy-monitor-5-performance",
):
assert f'"{asset}"' in service_worker
@@ -41,7 +41,7 @@ def test_energy_monitor_assets_are_versioned_and_cached() -> None:
"/energy-monitor.js?v=energy-monitor-5-performance"
)
assert (
'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"'
'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"'
in service_worker
)
@@ -51,21 +51,59 @@ def test_workbench_exposes_artifact_actions_and_always_starts_a_new_task() -> No
assert "已发布,待车机端下载升级" not in script
assert 'id = "firmwareWorkbenchToggle"' in entry
assert 'className = "firmware-workbench-layer"' in entry
assert "/firmware-workbench-entry.js?v=2" in index
assert "/firmware-workbench-entry.css?v=1" in index
assert "/firmware-workbench-entry.js?v=3" in index
assert "/firmware-workbench-entry.css?v=2" in index
for asset in (
"/firmware-workbench-entry.css?v=1",
"/firmware-workbench-entry.js?v=2",
"/firmware-workbench-entry.css?v=2",
"/firmware-workbench-entry.js?v=3",
"/firmware-workbench.html",
"/firmware-workbench.css?v=5",
"/firmware-workbench-theme.js?v=1",
"/firmware-workbench.css?v=6",
"/firmware-workbench.js?v=3",
):
assert f'"{asset}"' in worker
for runtime_file in (
"firmware-workbench-entry.js",
"firmware-workbench-entry.css",
"firmware-workbench-theme.js",
"firmware-workbench.html",
"firmware-workbench.js",
"firmware-workbench.css",
):
assert f'"{runtime_file}"' in vite
def test_workbench_inherits_live_theme_and_uses_the_larger_dialog_frame() -> None:
html = source("firmware-workbench.html")
entry = source("firmware-workbench-entry.js")
entry_styles = source("firmware-workbench-entry.css")
workbench_styles = source("firmware-workbench.css")
theme = source("firmware-workbench-theme.js")
assert 'content="light dark"' in html
assert 'id="firmwareWorkbenchThemeColor"' in html
assert '/firmware-workbench-theme.js?v=1' in html
assert 'data-glass-theme="dark"' in workbench_styles
assert 'window.parent?.document?.documentElement?.dataset?.glassTheme' in theme
assert 'event.data?.type !== "cognitive-agent:theme-change"' in theme
assert 'window.addEventListener("cognitive-agent:theme-change"' in entry
assert 'attributeFilter: ["data-glass-theme"]' in entry
assert 'width: min(1480px, 100%);' in entry_styles
assert 'height: min(900px, 100%);' in entry_styles
assert 'width: min(1040px, 100%);' in workbench_styles
assert 'max-height: min(820px, calc(100dvh - 48px));' in workbench_styles
def test_peer_dialogs_share_the_expanded_desktop_size_contract() -> None:
gallery = source("styles.css")
energy = source("energy-monitor.css")
extension = source("self-extension.css")
assert 'width: min(1320px, calc(100vw - 32px));' in gallery
assert 'height: min(860px, calc(100dvh - 32px));' in gallery
assert 'width: min(1480px, 100%);' in energy
assert 'height: min(900px, 100%);' in energy
assert 'width: min(780px, calc(100vw - 32px));' in extension
assert 'width: min(960px, calc(100vw - 30px));' in extension
assert 'width: min(1180px, calc(100vw - 28px));' in extension
assert 'width: min(980px, calc(100vw - 32px));' in extension
@@ -99,5 +99,5 @@ def test_performance_assets_have_a_new_cache_generation() -> None:
):
assert asset in html
assert f'"{asset}"' in worker
assert 'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"' in worker
assert 'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"' in worker
assert '"/codepen-glass-theme.css?v=creative-cloud-6-performance"' in worker
+3 -3
View File
@@ -45,16 +45,16 @@ def test_theme_asset_versions_are_consistent_with_the_pwa_shell() -> None:
service_worker = source("service-worker.js")
for source_asset, cached_asset in (
('import "../styles.css"', "/styles.css?v=dual-seat-23"),
('import "../styles.css"', "/styles.css?v=dual-seat-24-dialog-size"),
('import "../console-v2.css"', "/console-v2.css?v=delivery-state-69"),
('import "../self-extension.css"', "/self-extension.css?v=pet-settings-52"),
('import "../self-extension.css"', "/self-extension.css?v=pet-settings-54-dialog-size"),
('import "../speech-input.css"', "/speech-input.css?v=sensevoice-7"),
('import "../codepen-glass-theme.css"', "/codepen-glass-theme.css?v=creative-cloud-6-performance"),
):
assert source_asset in main
assert f'"{cached_asset}"' in service_worker
assert 'import "./styles/design-system.css"' in main
assert 'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"' in service_worker
assert 'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"' in service_worker
def test_reference_glass_theme_covers_the_complete_workspace() -> None:
+1 -1
View File
@@ -31,7 +31,7 @@ def test_vue_vite_application_is_the_primary_frontend_entry() -> None:
assert package["scripts"]["build"] == "vite build"
assert 'import vue from "@vitejs/plugin-vue"' in vite
assert 'outDir: outputRoot' in vite
assert 'const CACHE_VERSION = "cognitive-agent-pad-v322-n7-firmware-merge"' in service_worker
assert 'const CACHE_VERSION = "cognitive-agent-pad-v323-dialog-theme"' in service_worker
assert "unpkg.com" not in html
assert "cdn.jsdelivr.net" not in html