# Windows Local Sing-Box Evidence

## Acceptance Evidence

Record the real artifact that proves the outcome from the Windows-client user's perspective.

- Windows client now has two independent component blocks:
  - `ProxiFyre` block remains the existing required app-routing layer.
  - `Local sing-box` block is optional, visually matches the ProxiFyre finder card, has setup details, install/start/stop/uninstall actions, subscription input, route switch, server list, ping, and config generation actions.
- Route choice is explicit:
  - `Внешний прокси` keeps the existing external SOCKS5 flow.
  - `Local sing-box` generates `sing-box-config.json`, ensures target `local-singbox` at `127.0.0.1:1080`, and applies ProxiFyre to that local target.
- Generated config proof is covered by `singbox_command_tests::generate_writes_config_and_local_singbox_target`:
  - generated config contains a local mixed inbound;
  - selected outbound is retagged to stable `vpn`;
  - persisted target is `local-singbox`, `kind=local`, `protocol=socks5`, `host=127.0.0.1`, `port=1080`, `requiresComponent=singbox`.
- Browser visual proof:
  - Vite dev server: `http://127.0.0.1:5173/`
  - Playwright/system Chrome desktop screenshot showed ProxiFyre and Local sing-box blocks, route switch, subscription input, ping/config actions, and apply/open controls.
  - Mobile screenshot at `390px` width showed the same controls stacked without overlap.
  - Final mobile layout metric: `docScrollWidth=390`, `viewportWidth=390`, `overflow=[]`.
- Privileged Windows service lane:
  - Implemented install/start/stop/uninstall paths and PowerShell parser checks.
  - Real elevated UAC install/start was not executed in this session, so this lane is `implemented but unproven` until manual Windows validation runs.

## Verification

Record focused checks that passed, including command and relevant output.

- `cd apps/windows-client && npm run build`
  - Passed: `tsc && vite build`.
- `cd apps/windows-client/src-tauri && cargo test --test storage_tests --test subscription_tests --test singbox_adapter_tests --test component_detection_tests --test singbox_service_tests --test command_tests --test singbox_command_tests`
  - Passed:
    - `command_tests`: 8 passed
    - `component_detection_tests`: 7 passed
    - `singbox_adapter_tests`: 6 passed
    - `singbox_command_tests`: 7 passed
    - `singbox_service_tests`: 6 passed
    - `storage_tests`: 8 passed
    - `subscription_tests`: 7 passed
  - Total focused Local sing-box backend path: 49 passed.
- `cd apps/windows-client/src-tauri && cargo test --test proxifyre_adapter_tests`
  - Passed: 6 passed.
  - Proves existing external SOCKS5 route still generates and `local-singbox` route is blocked when the required component is missing but works when it is running.
- `cargo fmt`
  - Passed.
- `apps/windows-client/scripts/install-singbox.ps1` parser check:
  - Covered by `singbox_service_tests::install_singbox_script_parses_as_powershell` on Windows.
- Playwright/system Chrome visual check:
  - Desktop viewport `1280x1200`: main controls rendered.
  - Mobile viewport `390x900`: no horizontal overflow after CSS fix.

## Review Notes

Record PRE reviewer, maintainer, or verifier findings that changed the result.

- PRE self-review: aligned after tightening the service-wrapper contract to WinSW and requiring `start_singbox_service` to regenerate/check config before service start.
- POST plan review: implementation stayed inside `apps/windows-client` and did not reuse root Node subscription parsing. External proxy remains default and does not require Local sing-box.
- Correctness review: covered storage defaults, redacted subscription URL, HTTP/HTTPS validation, JSON/base64/VLESS subscription parsing, selected-outbound config generation, missing selected server errors, component detection, service command output parsing, Tauri command orchestration, route target generation, TypeScript build, and responsive UI.
- Maintainability review: Rust owns subscription/cache/config/service state; React owns transient UI only. Tauri commands are typed and do not expose raw PowerShell/stdout to the UI.
- Residual risk: real UAC install/start/stop/uninstall for `VpnProxySingBox` must be validated manually on a Windows machine with admin confirmation and network access to GitHub releases.
