You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Desktop shortcuts for one server (or a whole repo). The process ⋮ menu gains Add desktop
shortcut; the project ⋮ menu gains the same for every process in the codebase. Double-clicking
the .lnk boots the daemon if it isn't running, loads the project if it isn't registered, starts
the process — bringing up its links group and the project's companions, since it goes through
the ordinary start action — and opens a small focused window showing just that server: status,
metrics, logs, and a Stop button. No console flash (the shortcut runs through wscript.exe and a
generated launcher), and clicking it twice is a no-op rather than a restart. Windows only;
elsewhere the action reports that instead of failing. Backed by new POST /api/processes/:id/shortcut and POST /api/projects/:id/shortcut endpoints, plus the create_process_shortcut / create_project_shortcut MCP tools (now 31 total).
The compiled binary is now also the CLI.dist/devwebui.exe previously only booted the
daemon, so a portable install had no command line at all and nothing for a shortcut to invoke.
Any argument now dispatches to the CLI (devwebui.exe status, … start-process web, … mcp),
while a bare launch still boots the daemon exactly as before. Two new verbs, open-process and open-project, are what the shortcuts run.
Fixed
A managed server no longer pops a console window. Every dev server is spawned through cmd (shell: true) but without windowsHide, so whether a console appeared depended on the
console the daemon itself happened to own — invisible under the tray (which starts the daemon
with CreateNoWindow, and children inherit that headless console), but a desktop shortcut boots
the daemon detached with no console, and Windows then gave each dev server a brand-new console
of its own. With Windows Terminal set as the default terminal that surfaced as a real window that
stayed up for the life of the server. The spawn now sets windowsHide so the result is the same
on every launch path. cli.ts's daemon boot states it too, so "no window" survives someone
dropping detached.
The shortcut's focus window opens small, and remembers the size you give it. It never passed
a size, and Chromium's default for a window it has never seen is roughly the whole work area
(~1905x2092 on a 4K display) — so "a small focused window" was neither small nor sized. It now
opens at a first-run size measured to fit the card exactly, and yields to your own resize
afterwards (Chromium persists a manual resize but not a --window-size, which is what makes
"small by default, yours once you touch it" work rather than fighting you every launch).
The focus window reads as a launcher, not a shrunken dashboard. It reused the dashboard's
full-size ProcessCard, so a small window just clipped a big card: label-above-value metrics
three rows tall, plus star / enable / edit / engine-chip / overflow controls that a launcher has
no use for. ProcessCard gained a compact density (the same component — status, logs, metrics
and Start/Stop must never fork into a launcher copy that drifts) which tightens the type and
spacing, folds the metrics into one icon+value line, and drops the config-only affordances. The
window hugs the result at 440x220 instead of 520x300.
devwebui start from the compiled binary. It hardcoded a spawn of bun server/src/index.ts,
a path that doesn't exist outside a checkout. Daemon launches now resolve the right vector for the
build they're running in.
Restarting the daemon no longer hops it off its own port. The chromeless window the shortcut
opens was launched via cmd /c start "", whose CreateProcess inherits the parent's handles —
including the daemon's listening socket. The browser then pinned the daemon's port for as long as
its window stayed open, so a restart (or auto-update relaunch) found the port still held by the
dead daemon's ghost socket and moved to the next one. The launch now goes through WMI
(Win32_Process.Create), where the service creates the process and it inherits nothing of ours —
still fully detached from the daemon's tree, but no longer holding its socket.
Changed
The focus view moved from /?process=<id> to /focus/<id>. Chromium keys a saved app-window
placement by host + path only — the query string isn't part of it — so every focus window and the
dashboard shared one localhost_/ geometry slot: no focus window could keep its own size, and
resizing one silently resized the others. A path per process gives each window its own remembered
geometry. Nothing on disk needs migrating (a .lnk stores open-process <file> <id>, never a
URL), and the old query form still renders for a window or bookmark left on it.