Skip to content

feat: add restart command to CLI#134

Merged
jdx merged 3 commits intomainfrom
feat/restart-command
Jan 19, 2026
Merged

feat: add restart command to CLI#134
jdx merged 3 commits intomainfrom
feat/restart-command

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Jan 19, 2026

Summary

  • Add pitchfork restart command that stops then starts daemons
  • Supports restarting specific daemons or all running daemons with --all
  • Matches functionality already available in the web UI

Usage

pitchfork restart api           # Restart a single daemon
pitchfork restart api worker    # Restart multiple daemons
pitchfork restart --all         # Restart all running daemons
pitchfork restart api -q        # Restart without showing startup logs

Test plan

  • Build passes
  • All tests pass
  • Manual testing: pitchfork restart <daemon>

🤖 Generated with Claude Code


Note

Adds a new pitchfork restart subcommand and integrates it into the CLI.

  • Implements src/cli/restart.rs: validates targets (or --all), skips disabled/ad‑hoc daemons, sends stop signals, then restarts in parallel using tokio::spawn; waits for readiness and exits non‑zero on failures
  • Supports flags: -a --all to restart all running, -q --quiet to suppress startup logs; prints startup logs via print_startup_logs when not quiet
  • Wires command into src/cli/mod.rs and updates usage spec pitchfork.usage.kdl
  • Documents command in docs/cli/restart.md, adds to docs/cli/index.md, and updates docs/cli/commands.json

Written by Cursor Bugbot for commit 5652953. This will update automatically on new commits. Configure here.

Adds a `pitchfork restart` command that stops and then starts daemons,
matching the functionality already available in the web UI.

Usage:
  pitchfork restart api           # Restart a single daemon
  pitchfork restart api worker    # Restart multiple daemons
  pitchfork restart --all         # Restart all running daemons

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

- Filter --all to only include daemons in config, preventing ad-hoc
  daemons (started via `pitchfork run`) from being stopped without
  being able to restart them
- Check if daemon was actually started before reporting success,
  fixing incorrect success reports when DaemonAlreadyRunning

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

When specific daemon IDs are provided (not --all), now validates that each
daemon exists in config and is not disabled BEFORE stopping any of them.
This prevents ad-hoc daemons from being terminated without the ability
to restart them.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jdx jdx merged commit 3f2c65d into main Jan 19, 2026
4 checks passed
@jdx jdx deleted the feat/restart-command branch January 19, 2026 03:18
jdx added a commit that referenced this pull request Jan 19, 2026
## Summary

- Add missing `depends` field to `RunOptions` in restart command

## Problem

The restart command (PR #134) was merged after the daemon dependencies
feature (PR #135), causing a build failure on main due to the missing
`depends` field in `RunOptions`.

## Test plan

- [x] `cargo build` passes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Ensures the restart command constructs `RunOptions` with an explicit
empty `depends` list when calling `ipc.run`, aligning with the updated
`RunOptions` struct.
> 
> - Update `src/cli/restart.rs` to set `depends: vec![]` in `RunOptions`
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6874f15. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
jdx added a commit that referenced this pull request Jan 19, 2026
## 🤖 New release

* `pitchfork-cli`: 0.3.0 -> 0.3.1

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [0.3.1](v0.3.0...v0.3.1) -
2026-01-19

### Added

- implement daemon dependency resolution
([#135](#135))
- add restart command to CLI
([#134](#134))

### Fixed

- restart command preserves daemon dependency configuration
([#142](#142))
- add missing depends field to restart command
([#136](#136))
- set IPC socket permissions to 0600 for security
([#133](#133))
- handle shell command parsing errors instead of silently failing
([#132](#132))

### Other

- reduce unnecessary daemon cloning in loops
([#144](#144))
- use periodic log flushing instead of per-line
([#139](#139))
- refresh only tracked PIDs instead of all processes
([#141](#141))
- cache compiled regex patterns
([#143](#143))

### Security

- add rate limiting to IPC server
([#137](#137))
- canonicalize config paths to prevent symlink exploitation
([#138](#138))
- add centralized daemon ID validation
([#140](#140))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Prepares the 0.3.1 release and updates metadata/documentation
accordingly.
> 
> - **Changelog**: Adds `0.3.1` entry detailing added dependency
resolution, new `restart` command, fixes, performance tweaks, and
security hardening
> - **Version bumps**: Updates `version` to `0.3.1` in `Cargo.toml`,
`Cargo.lock`, `docs/cli/commands.json`, `docs/cli/index.md`, and
`pitchfork.usage.kdl`
> - **Docs regen**: Refreshes CLI docs/spec to reflect the new version
(no behavioral changes in this diff)
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9f9d386. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
@jdx jdx mentioned this pull request Jan 19, 2026
jdx added a commit that referenced this pull request Jan 19, 2026
## 🤖 New release

* `pitchfork-cli`: 1.0.0

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [1.0.0](https://github.com/jdx/pitchfork/releases/tag/v1.0.0) -
2026-01-19

### Added

- implement daemon dependency resolution
([#135](#135))
- add restart command to CLI
([#134](#134))

### Fixed

- restart command preserves daemon dependency configuration
([#142](#142))
- add missing depends field to restart command
([#136](#136))
- set IPC socket permissions to 0600 for security
([#133](#133))
- handle shell command parsing errors instead of silently failing
([#132](#132))

### Other

- bump version to 1.0.0
([#147](#147))
- release v0.3.1 ([#121](#121))
- reduce unnecessary daemon cloning in loops
([#144](#144))
- use periodic log flushing instead of per-line
([#139](#139))
- refresh only tracked PIDs instead of all processes
([#141](#141))
- cache compiled regex patterns
([#143](#143))

### Security

- add rate limiting to IPC server
([#137](#137))
- canonicalize config paths to prevent symlink exploitation
([#138](#138))
- add centralized daemon ID validation
([#140](#140))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Prepares the 1.0.0 release and updates `CHANGELOG.md` with the
finalized notes.
> 
> - Adds `1.0.0` section: daemon dependency resolution, new CLI
`restart` command, fixes for dependency preservation and shell parsing,
secure IPC socket perms, plus performance/maintenance updates
> - Documents security hardening: IPC rate limiting, config path
canonicalization, centralized daemon ID validation
> - Retains prior `0.3.1` notes for historical context
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4182984. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
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