From fbd20ad6e488fb3b9efc1612fdffee6e672976c1 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 14 Jun 2026 02:43:45 +0300 Subject: feat: add plugin v1 system Add manifest-driven plugin actions, event hooks, pane entrypoints, link handlers, and host APIs. Support plugin link, GitHub install, build commands, installed plugin registry, pane movement, runtime context, and plugin docs. --- src/protocol/wire.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/protocol') diff --git a/src/protocol/wire.rs b/src/protocol/wire.rs index 03492547..79c051b7 100644 --- a/src/protocol/wire.rs +++ b/src/protocol/wire.rs @@ -628,6 +628,12 @@ pub enum ServerMessage { data: String, }, + /// Set the foreground client's outer terminal window title. + WindowTitle { + /// Sanitized title to write with OSC 0. `None` restores Herdr's default title. + title: Option, + }, + /// Client-local runtime config changed on disk; refresh it without reconnecting. ReloadSoundConfig, @@ -929,7 +935,7 @@ mod tests { } #[test] - fn client_message_wire_tags_preserve_protocol_13_order() { + fn client_message_wire_tags_preserve_protocol_14_order() { fn tag(msg: &ClientMessage) -> u8 { *bincode::serde::encode_to_vec(msg, bincode::config::standard()) .unwrap() @@ -1278,6 +1284,17 @@ mod tests { assert_eq!(msg, decoded); } + #[test] + fn server_window_title_roundtrip() { + for title in [Some("herdr api".to_owned()), None] { + let msg = ServerMessage::WindowTitle { title }; + let encoded = bincode::serde::encode_to_vec(&msg, bincode::config::standard()).unwrap(); + let (decoded, _): (ServerMessage, _) = + bincode::serde::decode_from_slice(&encoded, bincode::config::standard()).unwrap(); + assert_eq!(msg, decoded); + } + } + #[test] fn server_graphics_roundtrip() { let msg = ServerMessage::Graphics { -- cgit v1.2.3