aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-06 02:27:06 +0300
committerGitHub <noreply@github.com>2026-09-06 02:27:06 +0300
commit9e9bc8a144667a6b7debfd4f0c7a31ff0e11493a (patch)
tree03f1259f91fd9edeacfd4b904f2e84d4acf25232 /src/main.rs
parent35b0dff96579f099e0436290085024424ffb289c (diff)
feat: manage multiple ssh machines from one client (#3670)
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index ee38e84b..4d7e2f88 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -330,18 +330,18 @@ const DEFAULT_CONFIG: &str = r##"# herdr configuration
# distinct static glyphs for blocked, working, done, idle, and unknown states.
# status_indicators = "dots"
-# Expanded agent rows. Built-ins are state_icon, state_text, workspace, tab, pane, agent,
-# terminal_title, and terminal_title_stripped.
+# Expanded agent rows. Built-ins are state_icon, state_text, machine, workspace, tab,
+# pane, agent, terminal_title, and terminal_title_stripped.
# Custom values reported through pane metadata use a $name token.
# A token occurrence may be styled with { token = "workspace", fg = "#89b4fa", bold = true, dim = false }.
# Omitted style fields preserve the contextual default.
# [ui.sidebar.agents]
# Blank rows between agent entries. Set to 1 to restore the previous spacing.
# row_gap = 0
-# rows = [["state_icon", "workspace", "tab"], ["agent"]]
+# rows = [["state_icon", "machine", "workspace", "tab"], ["agent"]]
# Optional canonical agent IDs replace the default rows for matching agents.
# [ui.sidebar.agents.rows_by_agent]
-# claude = [["state_icon", "workspace", "tab"], ["terminal_title_stripped"], ["agent"]]
+# claude = [["state_icon", "machine", "workspace", "tab"], ["terminal_title_stripped"], ["agent"]]
# Expanded space rows. Built-ins are state_icon, state_text, workspace, branch, and git_status.
# Custom values reported through workspace metadata use a $name token, for example $jj_status.
@@ -587,6 +587,7 @@ fn main() -> io::Result<()> {
println!(" herdr completion zsh");
println!(" herdr update [--handoff]");
println!(" herdr channel set <stable|preview>");
+ println!(" herdr machine <subcommand> ...");
println!(" herdr server stop");
println!(" herdr server reload-config");
println!(" herdr api <subcommand> ...");
@@ -631,6 +632,7 @@ fn main() -> io::Result<()> {
"herdr channel <subcommand>",
"Manage the stable or preview update channel",
),
+ ("herdr machine <subcommand>", "Manage saved SSH machines"),
(
"herdr api <subcommand>",
"Inspect socket API metadata and live runtime state",
@@ -737,6 +739,7 @@ fn main() -> io::Result<()> {
"status",
"config",
"channel",
+ "machine",
"workspace",
"worktree",
"pane",
@@ -764,7 +767,9 @@ fn main() -> io::Result<()> {
let loaded_config = config::Config::load();
exit_if_nested_disabled(&loaded_config.config);
- if let Err(err) = server::autodetect::auto_detect_launch() {
+ let saved_federation =
+ client::endpoint::EndpointCatalog::load().is_ok_and(|catalog| catalog.has_enabled_ssh());
+ if let Err(err) = server::autodetect::auto_detect_launch(saved_federation) {
eprintln!("herdr: {err}");
std::process::exit(1);
}