feat(n7web): enhance control workflows and status feedback

This commit is contained in:
Miayui
2026-09-16 12:52:07 +08:00
parent 84a3cd73bb
commit 0e4328f548
45 changed files with 7317 additions and 1001 deletions
+54 -11
View File
@@ -6,7 +6,10 @@ WEB = ROOT / "apps" / "web-console"
def source(name: str) -> str:
return (WEB / name).read_text(encoding="utf-8")
content = (WEB / name).read_text(encoding="utf-8")
if name == "index.html":
content += "\n" + (WEB / "src" / "App.vue").read_text(encoding="utf-8")
return content
def test_shadcn_semantic_theme_tokens_drive_the_console() -> None:
@@ -36,19 +39,20 @@ def test_shadcn_semantic_theme_tokens_drive_the_console() -> None:
def test_theme_asset_versions_are_consistent_with_the_pwa_shell() -> None:
html = source("index.html")
main = source("src/main.js")
service_worker = source("service-worker.js")
for asset in (
"/styles.css?v=dual-seat-23",
"/console-v2.css?v=delivery-state-69",
"/self-extension.css?v=pet-settings-52",
"/speech-input.css?v=sensevoice-7",
"/codepen-glass-theme.css?v=creative-cloud-2",
for source_asset, cached_asset in (
('import "../styles.css"', "/styles.css?v=dual-seat-23"),
('import "../console-v2.css"', "/console-v2.css?v=delivery-state-69"),
('import "../self-extension.css"', "/self-extension.css?v=pet-settings-52"),
('import "../speech-input.css"', "/speech-input.css?v=sensevoice-7"),
('import "../codepen-glass-theme.css"', "/codepen-glass-theme.css?v=creative-cloud-5"),
):
assert asset in html
assert f'"{asset}"' in service_worker
assert 'const CACHE_VERSION = "cognitive-agent-pad-v305"' in service_worker
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-v315-vue-vite"' in service_worker
def test_reference_glass_theme_covers_the_complete_workspace() -> None:
@@ -91,6 +95,45 @@ def test_reference_glass_theme_covers_the_complete_workspace() -> None:
assert "border-radius: 0 !important" in theme
def test_reference_theme_uses_one_transform_only_floating_card_contract() -> None:
theme = source("codepen-glass-theme.css")
for contract in (
"--glass-card-radius:",
"--glass-card-lift:",
"--glass-card-rest-shadow:",
"--glass-card-float-shadow:",
".assistant-dispatched-controls",
".assistant-mode-draft",
".mode-gallery-card",
".mode-editor-command-card",
".v2-device-card",
".v2-pet-card",
".energy-kpi",
"transform: translateY(var(--glass-card-lift))",
"@media (prefers-reduced-motion: reduce)",
"transition: none !important",
):
assert contract in theme
def test_dark_theme_uses_one_glass_scrim_for_every_modal_backdrop() -> None:
theme = source("codepen-glass-theme.css")
for contract in (
"--glass-dialog-scrim:",
"--glass-dialog-scrim-filter:",
".mode-gallery-backdrop",
".mode-editor-backdrop",
".energy-monitor-layer",
".device-power-backdrop",
".v2-extension-dialog::backdrop",
"background: var(--glass-dialog-scrim) !important",
"backdrop-filter: var(--glass-dialog-scrim-filter) !important",
):
assert contract in theme
def test_vehicle_twin_icons_and_nested_overlays_use_semantic_tokens() -> None:
styles = source("styles.css")
console = source("console-v2.css")