aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/WINDOWS-PORT.md32
1 files changed, 29 insertions, 3 deletions
diff --git a/docs/WINDOWS-PORT.md b/docs/WINDOWS-PORT.md
index 8fc169b..e33b6f5 100644
--- a/docs/WINDOWS-PORT.md
+++ b/docs/WINDOWS-PORT.md
@@ -295,14 +295,25 @@ same no-admin-by-default reason service mode below needs one prompt.
#### Service mode (one admin confirmation)
-A Scheduled Task via **S4U** (Service For User) logon —
-`schtasks /create ... /sc onstart /ru <user> /rp ""`, no `/it` — not a real
-Windows Service (`pywin32`/NSSM), because a Service runs under
+A Scheduled Task via **S4U** (Service For User) logon — not a real Windows
+Service (`pywin32`/NSSM), because a Service runs under
LocalSystem/NetworkService, accounts with no normal user profile, so
`%LOCALAPPDATA%\meshbay\` would not exist for it. S4U starts at boot with no
sign-in and no stored password, and — the whole reason S4U and not
LocalSystem — loads the signed-in user's own profile, so nothing in
`platform.py` needed to change to support it.
+
+Registered via `Register-ScheduledTask -LogonType S4U` (the `ScheduledTasks`
+PowerShell module), **not** `schtasks /create`: schtasks has no flag naming
+the logon type, only inference from whether `/rp` is present, and both
+readings broke live on a blank-password account (common on a personal PC,
+confirmed 2026-09-05) — `/rp ""` fails schtasks' own credential validation
+under Windows' default blank-password policy, and omitting `/rp` registers
+"Interactive only" instead of S4U, which installs cleanly but never actually
+launches the process, at boot or on demand. `-LogonType S4U` names it
+explicitly. Verified live end-to-end after the fix: install, manual start,
+and unattended boot-time start (the process already running on next login,
+no manual action taken).
`packaging/win/service.ps1` + `service-mode.ps1` (one elevation, folds the
firewall rules into the same UAC prompt) +
`meshbay_node.platform.service_install/_remove/_status/_run/_end` + CLI
@@ -554,6 +565,21 @@ alone — Task Scheduler owns that process's creation flags and its own stop
semantics are a separate, unverified surface, not something `service.ps1`
controls.
+### 5.10 System tray (2026-09-05)
+
+**Scope:** `preload.js` + `src/main.js` (two lines) + `test_desktop_shell.py`
+
+The GNOME tray (minimise-to-indicator, Start/Stop menu) was built against
+`nodeService.status()/stop()/restart()` — the same abstraction the Node
+page's own Stop/Restart buttons use, which already had full win32 branches
+(§5.3) covering both startup modes. So the tray needed no new logic for
+Windows, only its two platform gates widened from Linux-only to
+Linux-or-win32: the `tray` capability in `preload.js`, and the
+`window:minimize-to-tray` IPC handler in `main.js`. Reuses the existing
+`tray-icon.png`/`@2x.png` (already packaged for every OS via `package.json`'s
+`files`, no separate Windows list). `test_desktop_shell.py` now pins that
+both gates name the same platform set — nothing did before.
+
---
## 6. Execution order