cloudcli moves to d12813e1, which carries the fix this workspace was missing:
PluginsProvider and TasksSettingsProvider sit above ProtectedRoute and fetched
exactly once, on mount, so in a browser holding no token yet the request landed
on the login screen, came back 401, and nothing asked again — the whole session
then ran with an empty plugin list and no Tasks section until a reload.
plugin-taskwork moves to fdae5240, which keeps a task draft that loses focus.
dev-host-proxy.sh gains ALLOWED_HOST. Publishing the dev host under a name
rather than localhost — a port forward, a reverse proxy — otherwise ends at
Vite's "Blocked request. This host is not allowed.". The value goes into the
variable Vite reads for exactly this, so vite.config.js needs no local patch,
and leaving ALLOWED_HOST unset passes an empty string, which Vite ignores.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The host never started on Windows: `setsid: command not found`, after
which the script wrote the dead setsid pid to .dev-host.pid and counted
out its full timeout printing dots. setsid is Linux-only, so this would
have hit macOS too.
Four Linux assumptions, replaced with probed alternatives:
setsid used when present; otherwise plain nohup, and stop
walks the process tree instead of killing the group
ss falls back to lsof (macOS), then netstat (Windows)
node -p require reads the version with sed instead: bash hands Node
/c/Users/..., which Node resolves as C:\c\Users\...
and throws MODULE_NOT_FOUND
--show-current falls back to `describe`, empty on the detached HEAD
a fresh submodule checkout leaves behind
Also, so the next failure is legible rather than a wall of dots:
the readiness loop now stops the moment the host process dies, and the
timeout prints the log's error lines instead of `tail -5`, which the
per-file session-sync chatter had made useless. Timeout raised to 120s
for cold first starts (tsx compile + vite optimizeDeps), overridable
with READY_TIMEOUT_SECONDS.
Unrelated bug found while there: stop_host used `exit 0` when nothing was
running, so `restart` on a stopped host never reached start_host.
Verified on Linux: the three port backends agree, and the no-setsid path
was exercised in isolation — group kill fails as expected and kill_tree
reaps parent and children. The netstat and ps branches are written to
documented behaviour but untested for lack of a Windows or macOS host.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dev-host.sh and export-patches.sh tested the submodule with `[ -d
cloudcli/.git ]`. In a normal submodule checkout .git is a *file*
pointing at ../.git/modules/cloudcli, so the check failed and both
scripts reported "not initialised" right after a successful
bootstrap.sh.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>