Files
harbor-net/docs/goals/windows-client-service-control-ui-system/EVIDENCE.md

4.1 KiB

Windows Client Service-Control UI System Evidence

Acceptance Evidence

  • Desktop Summary screenshot: docs/goals/windows-client-service-control-ui-system/evidence/01-summary-desktop.png
    • Shows shared tabs, shared refresh button, and friendly preview error: Desktop-команды недоступны.
  • Desktop ProxiFyre screenshot: docs/goals/windows-client-service-control-ui-system/evidence/02-proxifyre-desktop.png
    • Shows ProxiFyre rendered through the shared service-control row pattern.
    • Shows apply blocker: ProxiFyre не установлен.
    • Shows Обновить конфиг disabled instead of green/ready.
  • Desktop VPN / Proxy screenshot: docs/goals/windows-client-service-control-ui-system/evidence/03-proxy-desktop.png
    • Shows route mode buttons through shared button variants.
    • Shows apply blocker before route apply.
  • Narrow ProxiFyre screenshot: docs/goals/windows-client-service-control-ui-system/evidence/04-proxifyre-narrow.png
    • Shows service row and setup checklist reflow at 420px.
    • Shows compact log dock title instead of long raw runtime error text.

Captured DOM state from Browser preview:

{
  "proxState": {
    "disabledApply": true,
    "blockerText": true,
    "friendlyError": true,
    "rawInvokeCurrent": false
  },
  "routeState": {
    "externalButtonClass": "ui-button ui-button--primary ui-button--md",
    "externalAriaPressed": "true"
  },
  "narrowState": {
    "width": 420,
    "hasHorizontalOverflow": false,
    "setupStripOverflow": false
  }
}

Native/elevated install/start/stop/uninstall service actions were not executed in this evidence pass. They are implemented through the existing handlers and shared callbacks, but real elevated service execution remains implemented but unproven.

Verification

Build was run with bundled Node because system npm is not in PATH in this Codex shell.

& 'C:\Users\PC\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe' '.\node_modules\typescript\bin\tsc'
& 'C:\Users\PC\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\bin\node.exe' '.\node_modules\vite\bin\vite.js' build

Relevant output:

vite v7.3.6 building client environment for production...
✓ 1800 modules transformed.
✓ built in 1.14s

Cutover check:

rg -n 'transition:\s*all|className=.*(apply-button|service-button|ghost-button|add-tile|open-config-button)' apps\windows-client\src

Relevant output:

no legacy className or transition: all matches

Notes:

  • pnpm run build was attempted through the bundled runtime, but it began reinstalling node_modules because dependencies were originally installed by another package manager. The process was stopped; no package or lockfile changes were recorded by git.
  • Browser preview was served from http://127.0.0.1:5174/.

Review Notes

  • Visual self-review found that active route mode lost its active styling after switching to shared Button; CSS was corrected with .route-switch .ui-button--primary.
  • Visual self-review found setup chips still horizontally scrolled at 420px; narrow CSS was corrected to wrap .setup-strip-items.
  • Residual product issue from the earlier audit remains: Summary still has Состояние загружается beside Совпадает. That state language was outside the implemented high-value slice and should be handled in a follow-up Summary view-model cleanup.
  • POST plan review: aligned. Implementation stayed inside the approved ownership and contract boundaries: shared UI components are presentational, App.tsx still owns orchestration, and Tauri wrappers remain the command boundary.
  • Correctness review: no blocker found. Real elevated service actions were not executed, so that lane remains implemented but unproven.
  • Maintainability review: no blocker found. Old dominant className paths for apply/service/ghost/add/open buttons were displaced from App.tsx; stale legacy CSS selectors remain in app.css as non-dominant compatibility residue and should be removed in a follow-up CSS pruning pass if desired.