# Print Platform Pro Browser — Windows

Native Windows build of the local HTTP/HTTPS print agent. Same
wire protocol as the Linux build (`localhost:9100` / `:9101`,
routes `/available` / `/default` / `/write` / `/read`), so web
apps that target the Mac/Windows Browser Print SDK or our Linux
agent work unchanged.

## Status

**v2.1.0 — first Windows cut.** Ships as a portable `.zip`:

- `pppro-browser-windows.exe` — the agent itself, with a native
  system-tray icon backed by [`getlantern/systray`].
- `Install.bat` — copies the .exe to `%LOCALAPPDATA%\PrintPlatformPro\`,
  registers it under `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`
  for logon autostart, and launches it. Run as a normal user, no
  admin required.
- `Uninstall.bat` — stops the running agent, removes the registry
  entry, deletes the install dir.

A code-signed MSI installer is tracked in
[.planning/installers.md](../../../.planning/installers.md) and will
land in v2.2 once the EV certificate is provisioned.

## Build

The agent is built on `windows-latest` GitHub-hosted runners via
`.github/workflows/release-windows.yml` — fires on every `v*` tag
push the same way the Linux release fires `release-linux.yml`.
Local Windows build:

```powershell
cd apps\browser-print\linux
go build -tags release -o pppro-browser-windows.exe .\cmd\pppro-browser-linux
```

(Source still lives under `apps/browser-print/linux/` despite the
folder name — that's where the cross-platform Go module lives.
`apps/browser-print/{windows,macos}/` host only the per-platform
installer + packaging assets.)

USB enumeration requires the [libusb] 1.0 runtime on the user's
machine. The release `.zip` bundles `libusb-1.0.dll` alongside the
agent so end users don't need to install anything separately.

## USB hardware

Same vendor filter as the Linux side — Zebra Technologies USB-IF
vendor `0x0a5f`. Tested:

- ZD220 / ZD230 / ZD421 (desktop)
- ZT411 / ZT421 (industrial)
- ZQ511 (mobile, via USB)

Other Zebra USB models should work without per-model config.

## Settings UI

Windows doesn't currently ship a native settings UI. The tray menu's
**Settings…** and **Approved sites…** entries log a hint to journald
and exit — Windows users manage state from the command line:

- `pppro-browser-windows --list-origins` — show approved origins
- `pppro-browser-windows --allow https://example.com` — add an origin
- `pppro-browser-windows --revoke https://example.com` — remove one
- `pppro-browser-windows --add-printer NAME=HOST[:PORT]` — register a network printer

A future WinUI 3 native Settings app will replace this. The agent's
JSON admin endpoints (`/__origins`, `/__origins/revoke`,
`/__license`, `/__info`) are already in place and will be the data
source for the eventual WinUI app.

[`getlantern/systray`]: https://github.com/getlantern/systray
[libusb]: https://libusb.info
