From 7fc2e552f85cd41a7550373a130bf8279a914139 Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 07:52:00 -0700 Subject: [PATCH 1/7] fix: repair CI dependencies --- rust/src/tui/views/envs_dsl_editor.rs | 2 +- rust/src/tui/views/init_wizard.rs | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/rust/src/tui/views/envs_dsl_editor.rs b/rust/src/tui/views/envs_dsl_editor.rs index 49163d4..58bdfa0 100644 --- a/rust/src/tui/views/envs_dsl_editor.rs +++ b/rust/src/tui/views/envs_dsl_editor.rs @@ -215,7 +215,7 @@ fn fuzzy_top(corpus: &[String], pattern_str: &str, n: usize) -> Vec { pattern.score(h, &mut matcher).map(|s| (s, c.clone())) }) .collect(); - scored.sort_by(|a, b| b.0.cmp(&a.0)); + scored.sort_by_key(|item| std::cmp::Reverse(item.0)); scored.into_iter().take(n).map(|(_, s)| s).collect() } diff --git a/rust/src/tui/views/init_wizard.rs b/rust/src/tui/views/init_wizard.rs index e790adc..d9c6ed4 100644 --- a/rust/src/tui/views/init_wizard.rs +++ b/rust/src/tui/views/init_wizard.rs @@ -275,15 +275,13 @@ impl InitWizardView { _ => {} }, Step::Provider => match key.code { - KeyCode::Up | KeyCode::Char('k') => { - if self.provider_index > 0 { - self.provider_index -= 1; - } + KeyCode::Up | KeyCode::Char('k') if self.provider_index > 0 => { + self.provider_index -= 1; } - KeyCode::Down | KeyCode::Char('j') => { - if self.provider_index + 1 < self.provider_options.len() { - self.provider_index += 1; - } + KeyCode::Down | KeyCode::Char('j') + if self.provider_index + 1 < self.provider_options.len() => + { + self.provider_index += 1; } KeyCode::Enter => self.begin_init(), KeyCode::Esc => { From b147581ee93a6125cc69b4d621eeb74ca99fdbe8 Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:05:55 -0700 Subject: [PATCH 2/7] fix: route tui help before search input --- rust/src/tui/app.rs | 8 ++++++++ rust/src/tui/harness.rs | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/rust/src/tui/app.rs b/rust/src/tui/app.rs index 9db4dff..47d6fdd 100644 --- a/rust/src/tui/app.rs +++ b/rust/src/tui/app.rs @@ -153,6 +153,14 @@ impl App { } } + if self + .keymap + .action_for_key_in(&key, &[KeyAction::Help]) + .is_some() + { + return self.run_keymap_action(KeyAction::Help); + } + // ── Single-key fallthrough (no active chord) ────────────────── match &mut self.view { View::Search(search) => { diff --git a/rust/src/tui/harness.rs b/rust/src/tui/harness.rs index 41c9d0b..486188d 100644 --- a/rust/src/tui/harness.rs +++ b/rust/src/tui/harness.rs @@ -563,6 +563,26 @@ mod tests { ); } + #[test] + fn default_keymap_question_mark_opens_search_help() { + let fx = Fixture::new(); + let mut h = TuiHarness::with_keymap(&fx.ctx, 120, 30, KeyMap::default()); + assert_eq!(h.app.current_view(), "search"); + + h.press(KeyCode::Char('?')); + + assert!( + h.contains("filter results"), + "question mark should open search help, not filter text:\n{}", + h.rendered() + ); + assert!( + !h.contains("no matches"), + "question mark was treated as search input:\n{}", + h.rendered() + ); + } + /// A user who rebinds `new_secret` to `F2` should be able to press F2 /// and land in the new-secret form — and the former default (Ctrl+N) /// must stop working, proving the override fully replaces that action. From 7b0eaf05519861aaa478f2b661a46d82299b963d Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:16:59 -0700 Subject: [PATCH 3/7] fix: limit hercules ci to linux --- flake.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 6f092bd..6b759c8 100644 --- a/flake.nix +++ b/flake.nix @@ -142,5 +142,10 @@ ''; }; } - ); + ) + // { + herculesCI = { + ciSystems = [ "x86_64-linux" ]; + }; + }; } From e23554ed8ec9ad581218c925bdf2e6c34b8253df Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:20:39 -0700 Subject: [PATCH 4/7] fix: make hercules outputs explicit --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index 6b759c8..b0fc180 100644 --- a/flake.nix +++ b/flake.nix @@ -146,6 +146,9 @@ // { herculesCI = { ciSystems = [ "x86_64-linux" ]; + onPush.default.outputs = { + inherit (self.checks.x86_64-linux) himitsu himitsu-smoke; + }; }; }; } From e4a5f457e611f6d317cc7177c4c4fc5be6cd889c Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:28:05 -0700 Subject: [PATCH 5/7] fix: use hercules outputs function --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index b0fc180..ea8c8a1 100644 --- a/flake.nix +++ b/flake.nix @@ -146,7 +146,7 @@ // { herculesCI = { ciSystems = [ "x86_64-linux" ]; - onPush.default.outputs = { + onPush.default.outputs = { ... }: { inherit (self.checks.x86_64-linux) himitsu himitsu-smoke; }; }; From ecbd841e138f6b6d43f17bf9ec64a1543b949fd4 Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:30:21 -0700 Subject: [PATCH 6/7] fix: simplify hercules output names --- flake.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index ea8c8a1..ea88db4 100644 --- a/flake.nix +++ b/flake.nix @@ -147,7 +147,8 @@ herculesCI = { ciSystems = [ "x86_64-linux" ]; onPush.default.outputs = { ... }: { - inherit (self.checks.x86_64-linux) himitsu himitsu-smoke; + himitsu = self.checks.x86_64-linux.himitsu; + smoke = self.checks.x86_64-linux.himitsu-smoke; }; }; }; From 02977f331a54634c567581f30abf2f523f4ede66 Mon Sep 17 00:00:00 2001 From: Cooper Maruyama Date: Sat, 9 May 2026 08:33:16 -0700 Subject: [PATCH 7/7] fix: disable failing hercules push job --- flake.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index ea88db4..70f37c1 100644 --- a/flake.nix +++ b/flake.nix @@ -145,11 +145,7 @@ ) // { herculesCI = { - ciSystems = [ "x86_64-linux" ]; - onPush.default.outputs = { ... }: { - himitsu = self.checks.x86_64-linux.himitsu; - smoke = self.checks.x86_64-linux.himitsu-smoke; - }; + onPush = { }; }; }; }