Repository navigation
procdeck@0.4.0
Minor Changes
- 8e4b627: procdeck runs in the background now.
procdeck up(and bareprocdeck) starts the
deck detached, opens the UI and returns — no terminal tab kept hostage;up --fgis
the old foreground mode. New commands, all working from anywhere inside the project:
down(terminates every process tree),restart,status,ls(every running deck
on the machine),openandlogs [-f]. Running decks register in
~/.procdeck/instances/(stale entries pruned by pid;PROCDECK_HOMErelocates it);
a detached deck's own output goes to~/.procdeck/logs/.uprefuses a port already
held by another deck — naming it — or simply busy, before anything spawns; a bad
config is reported in the terminal, not in a log file. In the UI: ⏻ shuts the deck
down (with a confirm), the page says so instead of "reconnecting" and revives itself
whenprocdeck upruns again; the deck name in the bar lists the other running decks
as links. The CLI moved toeffect/unstable/cli—--helpper command, shell
completions via--completions. - f2abc61: Three things for the first real release. Loopback only: the server binds
127.0.0.1by default — the UI types into real terminals, so it is not something to
put on the LAN by accident;"host": "0.0.0.0"in the config opens it up for
devcontainers and VMs. Per-proc backlog: each proc keeps its last 256 KB of output
and a new tab gets every pane's history plus asyncedmarker before live events — a
chatty ticker can no longer evict a quiet server's startup lines, a deck that has run
for days still opens with every pane populated, the UI knows exactly which chunks are
news, and a reconnect replays into freshly reset panes instead of appending history to
itself.procdeck init: writes a firstprocdeck.config.jsonfrom what is already there —
a Procfile, workspace packages withdevscripts (via the package manager your lockfile
points at), plainbackend/+frontend/subdirectories (each its own package.json or
a Django / Go / Rust / Rails / compose project, withcwdset), or the root itself.
Patch Changes
-
9f944e5: The deck tells you when it needs you. Procs that crashed, are blocked on a preflight,
carry an alert or have unread error lines count into the tab title ((2) garage · procdeck) and put a red dot on the favicon — visible from the tab strip and the Dock.
A bell in the global bar turns on system notifications: a crash, a block or a new alert
while the tab is hidden or the window unfocused shows one (click brings the deck back);
replayed history on reconnect never notifies. The bell state persists with the UI state;
the browser permission is asked for on the first click. -
1db7f78: Grid pinning. Pin a proc (📌 in its pane header or sidebar row, ⌥P on the active one) and
the grid shows only pinned procs; the rest collapse into a tray strip under the tiles —
status dot, id, badges — where a click peeks at one and the pin puts it back. Nothing
pinned = everyone tiled, as before. ⌥Z zooms the active tile in and out of single. The
grid now sizes its columns from the tile count (near-square, at most 4) so the deck fits
the screen when it can and scrolls only when tiles would drop under 180 px. Pins persist
with the rest of the UI state. -
e90a08c: Polish before publishing, part one.
- URLs in pane output are clickable (
Local: http://localhost:5173/from every dev
server opens in a new tab). - Exit status reads like a human wrote it:
exit 1 · 2m ago,killed (SIGTERM) · 5s ago
— signal names instead of numbers, and no moresignal 0on a plain non-zero exit.
Running procs that were respawned show a restart count (↻3), so crash loops are
visible from the status line. The sidebar shows the same exit summary where uptime sits
while running. - Grid tile headers keep the
*.localhostaddress whole instead of clipping it to:61:
compact tiles show only the primary address (raw ports in its tooltip) and the status
text is what gives way first. - The assigned port no longer also counts as "internal" when it lands in the ephemeral
range.
- URLs in pane output are clickable (
-
a85d537: Light theme. A System · Light · Dark switch in the global bar; System follows the OS
(prefers-color-scheme) and tracks it live. The terminals switch palette too — light gets
its own ANSI set (GitHub Light), since xterm's defaults are unreadable on white. The choice
is stored with the rest of the UI state and painted before the first frame, so there is
no flash on reload. -
512e814: The UI remembers itself across reloads, and says when it has lost the server.
Layout (single/grid) and the selected pane are kept in localStorage — per origin, so per
deck — and restored on the next load; a stored pane that is no longer in the config falls
back to the first one. While the event stream is down (aprocdeck restart, a killed
server) a "reconnecting" banner sits over the panes instead of the UI silently showing
stale state; when the stream is back the proc snapshot is refetched so statuses that
changed in the meantime catch up. A stream the browser gave up on (server answered with
something other than an event stream) is retried every 2 s.