Repository navigation
Add CLI management commands: doctor, url --qr, config, auth and more - #416
Merged
Merged
Conversation
Route every subcommand through one dispatcher with consistent help and exit codes (0 ok, 1 failure, 2 usage), and list all commands, including herdr, in `roamgate --help`. New commands act on the managed service's environment and data: - doctor: check config, credentials, TLS expiry, service, listener, exposure, Herdr, connections, Web Push and updates, with fixes - url [--qr]: print login URLs and a terminal QR code for phones - config show/get/set/unset/edit/path: validated, atomic edits - auth show/rotate/revoke-sessions - connections list/test/add/remove/set-default - push test, update [--check], rollback, service logs, completion Share the update installer, push registry, token, session-secret and private-file helpers with the server instead of duplicating them. Show HTTPS in `plugin url` when native TLS is configured, and detect a crashed LaunchAgent as not running. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ac4f947a58
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
On an in-place upgrade from 0.7.0 only the generated herdr-gui service exists. The CLI's service status looked only for the roamgate definition, so config --restart, auth rotate/revoke-sessions, update and connection edits treated a running legacy service as stopped and skipped the restart. Resolve the same verified legacy definition that service commands already manage, and query its own unit, label or task. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TT8VYocGaqQ88nYmTDTCiT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Routine operations no longer need hand-edited env files, the web UI or long
docs procedures. All subcommands now go through one dispatcher with
consistent help and exit codes (0 ok, 1 failure, 2 usage).
roamgate --helplists every command; it previously omitted
herdr.New commands, which act on the managed service's environment file and data
directory:
roamgate doctor [--offline] [--json]roamgate url [--qr] [--address <host>]roamgate config show|get|set|unset|edit|pathroamgate.env;--restart;KEY=-reads secrets from stdin.roamgate auth show|rotate|revoke-sessionsroamgate connections list|test|add|remove|set-defaultroamgate push testroamgate update [--check],roamgate rollbackroamgate.previous.roamgate service logs [-f] [-n N]~/Library/Logson macOS.roamgate completion bash|zsh|fishShared code instead of duplication: the update installer and manifest fetch,
the Web Push registry reader and sender, token rotation, session-secret
revocation, and one private-file writer (now with a directory fsync) are
exported and used by both the server and the CLI.
plugin urland the Herdrpanel now use the same URL code as
roamgate url, which also fixes themshowing
http://for TLS services.Other notes:
qrcode-generator@2.0.4(pinned, zero dependencies,MIT). A test checks that the rendered code matches the library's module grid.
launchctl printreportsstate = running, not just when the job is loaded.touch the developer's real
~/.config.Documentation: new "Command-line management" section in
docs/DEPLOYMENT.mdplus pointers from README, FEATURES, logging, Web Push, connections and token
rotation.
Verification
In the full suite, every test this branch touches passes. Unrelated timing
tests (
server/src/worktree/remove.test.ts,web/src/components/AssistantPanel.test.ts, worktree hooks) time outintermittently under
test:quick's four workers and pass when run alone.I also checked every command manually against an isolated
HOMEand a realbridge. After
auth rotateand a restart, the new token signs in and theold one redirects to
/login.doctorpasses against the running bridge,the connections write guard refuses while it serves, and the zsh and bash
completion scripts parse.
🤖 Generated with Claude Code