Skip to content

refactor(cli): talk about sessions, not the daemon behind them - #33

Merged
pfriedrix merged 1 commit into
masterfrom
chore/hide-daemon-concept
Aug 6, 2026
Merged

refactor(cli): talk about sessions, not the daemon behind them#33
pfriedrix merged 1 commit into
masterfrom
chore/hide-daemon-concept

Conversation

@pfriedrix

Copy link
Copy Markdown
Owner
  • Every user-facing string now names sessions instead of the process holding their ptys. Nothing a person can act on about the daemon is a fact about the daemon: sessions die with it, sessions hold the build they started under, and sessions are what wants ending. lcc daemon leaves usage but stays dispatchable — watch_client re-execs it to bring the host up, and --foreground / --status are what there is to run when debugging that.
  • lcc watch is deleted rather than kept as an alias. One dashboard reached by two names made which flags existed depend on which name you typed. lcc open now carries --json and the relocated --stop-all (was lcc daemon --stop), and rejects both for the xcode target instead of ignoring them.
  • Breaking --json surface: daemon_runningsessions_live, daemon_outdatedoutdated_build. Nothing outside this repo parses them yet, which makes now the only cheap time to move them. snapshotJson is split out so a test pins the names — a renamed key reads as null, and null reads as "nothing is running" rather than as a contract that moved.

Review notes

--watch / --no-watch and the watchByDefault setting are untouched and now name a concept with no visible command behind it. Renaming them to --background needs a migration path for config files already on disk, so it is left as a separate call.

Nothing a person can act on about the daemon is a fact about the daemon.
Sessions die with it, sessions hold the build they started under, and
sessions are what wants ending — so every line they read says sessions,
and the process holding the ptys is never named.

`lcc daemon` leaves `usage` but stays dispatchable: `watch_client`
re-execs it to bring the host up, and `--foreground` / `--status` are
what there is to run when debugging that. Its `--stop` moves to
`lcc open --stop-all`, where someone looking for a way to end their
sessions would actually look for it.

`lcc watch` is gone rather than kept as an alias. One dashboard reached
by two names made which flags existed depend on which name you typed;
`lcc open` now carries `--json` and `--stop-all`, and rejects them for
the xcode target instead of ignoring them.

The `--json` keys move with the vocabulary — `daemon_running` and
`daemon_outdated` become `sessions_live` and `outdated_build`. Breaking
surface, deliberately: nothing outside this repo parses them yet, which
makes now the only cheap time. `snapshotJson` is split out so a test
pins the names, because a renamed key reads as `null`, and `null` reads
as "nothing is running" rather than as a contract that moved.
@pfriedrix
pfriedrix merged commit aa4b2dd into master Aug 6, 2026
1 check passed
@pfriedrix
pfriedrix deleted the chore/hide-daemon-concept branch August 6, 2026 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant