[v1.122.0] - 2026-08-18
New Features
- Added file watching: a per-process
watchblock restarts a process when its files change, with include/exclude globs, a configurabledebounce, andcascade: trueto restart the process's dependents transitively (in dependency order, so a rebuilt artifact is ready before its consumers restart). A process that has exited while its watch is still armed reports the newWatchingstate, and the TUI names the file that caused each restart. Watch-triggered restarts skip the restart backoff and reset the restart counter, since they are user intent rather than a crash loop. File watching can be turned off entirely with--no-watch/PC_NO_WATCH. - Added support for multiple namespaces per process:
namespacenow accepts either a single string or a list of strings (similar to docker-compose profiles), so a shared process (e.g. a database) can be selected and operated as part of any of its namespaces, addresses issue #519.
Bug Fixes
- Fixed restarting a process shutting the whole project down when that process was configured with
availability.exit_on_endorrestart: exit_on_failure. Every exit routed through the same path, and a restarted process does not exit cleanly (aSIGTERMed process reports a non-zero code), so an intentional restart was indistinguishable from the process ending. This affected manual restarts from the TUI, the CLI and the API; it is also what would have made every watch-triggered restart end the project. - Fixed namespace operations skipping processes that were not started:
process-compose namespace start <ns>now starts every configured member of the namespace, including processes excluded from anup <process>...selection or markeddisabled: true, instead of failing with "namespace not found (no processes assigned)", addresses issue #528. - Fixed a project update or reload starting the processes that were excluded from a
process-compose up <process>...selection: the selection is now re-applied to the reloaded configuration, the same way the--namespaceadmission policies already were. - Fixed a project or process update shutting the project down when it restarted the only running process: the momentary gap while the process is stopped is no longer mistaken for the project having completed.
- Fixed stopping or restarting a process while it is still waiting on its dependencies: the process was left wedged in
Terminatingand its still-waiting instance later started an untracked copy, whichstop,startandrestartcould not manage, which a subsequentstartduplicated, and which surviveddownas an orphan. A pending process now stops immediately instead of waiting for its dependencies to resolve, and a superseded instance can no longer deregister its replacement, addresses issue #530. - Fixed the TUI Namespace Operations modal silently ignoring failures: a failed namespace start, stop or restart is now reported in an error dialog instead of only being written to the log file.
- Fixed the HTTP API rejecting process names that contain slashes: routes are now matched against the raw percent-encoded path and the client encodes process names as path segments, addresses issue #523.
- Client-mode commands (
down,attach,list,process,project,namespace) now write their internal logs to a separate log file (/tmp/process-compose-$USER-client.logby default) instead of truncating the log file of a running server, documentation by @soy-chrislo.
Changelog
- 4857b39 Merge branch 'main' of github.com:F1bonacc1/process-compose
- c458fd2 chore: release v1.122.0 notes and update vendor hash
- 644f0e8 chore: update project dependencies
- 414372e docs(logging): clarify PC_LOG_FILE truncation between server and client commands (#516)
- 54c2ef9 feat: implement filesystem watching to trigger process restarts with optional cascading dependents
- f5a43e7 feat: implement multi-namespace support for processes with configuration and TUI updates Addresses: #519
- e421750 fix: allow starting disabled namespace members and fix TUI error reporting and project shutdown race conditions Addresses #528
- 54273f8 fix: handle process names with slashes by updating API routing and normalizing path segment encoding Addresses: #523
- 673850d fix: prevent restart-in-flight from overriding stop requests by tracking stop epochs and retriggering completion checks.
- 8528c8d fix: resolve process restart deadlock by aborting dependency wait on termination and properly initializing incarnation state Addresses #530
- 8352b2f refactor: redirect client-mode command logs to separate files using cobra annotations