Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 04:44

Added

  • 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.