aboutsummaryrefslogtreecommitdiff
path: root/src/config/keybinds.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-01 15:48:22 +0300
committerGitHub <noreply@github.com>2026-09-01 15:48:22 +0300
commit207be3c771d281baae6e5fa0fb74be9a056e97a2 (patch)
treed7b037ecdf629224a048c841d11659efdc23507d /src/config/keybinds.rs
parent8a6d697308162874a236c84aac0b0f8c7ac01f83 (diff)
refactor: render the shell in the client (#3487)
* feat: add opt-in client-rendered shell * feat: add client-owned shell mouse controls * feat: complete client-owned shell chrome * feat: add client-owned shell settings and notifications * feat: run client shell custom commands * feat: render popup terminals in client shell * feat: add client-owned scrollback and copy mode * fix: preserve client worktree trust defaults * feat: render startup diagnostics in client shell * feat: render onboarding in client shell * feat: render product announcements in client shell * feat: render release notes in client shell * feat: render mobile switcher in client shell * feat: render kitty graphics in client shell * fix: preserve client shell lifecycle coherence * refactor: route client shell commands through endpoint connections * refactor: make the client-rendered shell the default * refactor: remove monolithic launch mode * refactor: complete client-rendered shell cutover * perf: retain client pane surface updates * perf: scale retained pane surface updates * perf: remove remote pane input latency * test: make client shell checks platform-independent * fix: prevent client timer starvation * test: fix client shell platform gates * test: accept retained surfaces in cross-area checks * test: make client mode assertions platform-neutral * fix: badge only outdated integrations
Diffstat (limited to 'src/config/keybinds.rs')
-rw-r--r--src/config/keybinds.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/config/keybinds.rs b/src/config/keybinds.rs
index 6cddd3ac..bec1af66 100644
--- a/src/config/keybinds.rs
+++ b/src/config/keybinds.rs
@@ -169,6 +169,18 @@ pub struct ActionKeybinds {
}
impl ActionKeybinds {
+ pub(crate) fn from_labels(labels: &[String]) -> Result<Self, String> {
+ let mut bindings = Vec::new();
+ for label in labels {
+ match parse_binding_string(label) {
+ Some(ParsedBinding::Single(binding)) => bindings.push(binding),
+ Some(ParsedBinding::Range(range)) => bindings.extend(range),
+ None => return Err(format!("invalid endpoint command binding: {label}")),
+ }
+ }
+ Ok(Self { bindings })
+ }
+
#[cfg(test)]
pub fn prefix(label: &str) -> Self {
let raw = if label.starts_with("prefix+") {