Source: 21 orphaned bun src/main.ts processes found on the development machine, 2026-09-09, ages 14 minutes to 2 hours 12 minutes.
Reached by: start vsys in a terminal, then close the terminal, drop the SSH session, or kill the tmux pane. The process stays alive and keeps sampling.
vsys does not exit when the terminal it draws on goes away. It receives the hangup and keeps running, with no terminal attached and nothing reading its output. It goes on collecting samples on the very machine it is meant to be watching.
This was found through a screenshot harness that ran the app in a tmux pane and ended with tmux kill-session. That kills the pane; it left the app spinning every time. Twenty-one accumulated over two hours before anyone noticed, and their CPU showed up inside vsys's own agent readings.
A reader does not need a harness to reach it. Closing a terminal is the ordinary way to stop a terminal program.
Done when
- The process exits when its controlling terminal goes away, releasing the history database handle and its renderer the same way the quit key does.
- A test proves the shutdown path a hangup takes is the one the quit key takes, so the two cannot drift.
Context
- Location:
src/main.ts, where the renderer and the session are created and where the quit path already exists.
- Exit should be the ordinary shutdown, not an abort: a half-written history database is worse than a leaked process.
Source: 21 orphaned
bun src/main.tsprocesses found on the development machine, 2026-09-09, ages 14 minutes to 2 hours 12 minutes.Reached by: start vsys in a terminal, then close the terminal, drop the SSH session, or kill the tmux pane. The process stays alive and keeps sampling.
vsys does not exit when the terminal it draws on goes away. It receives the hangup and keeps running, with no terminal attached and nothing reading its output. It goes on collecting samples on the very machine it is meant to be watching.
This was found through a screenshot harness that ran the app in a tmux pane and ended with
tmux kill-session. That kills the pane; it left the app spinning every time. Twenty-one accumulated over two hours before anyone noticed, and their CPU showed up inside vsys's own agent readings.A reader does not need a harness to reach it. Closing a terminal is the ordinary way to stop a terminal program.
Done when
Context
src/main.ts, where the renderer and the session are created and where the quit path already exists.