From 8838c29149ad2235d71261c6483ae58804e1b94d Mon Sep 17 00:00:00 2001 From: booleanmaybe Date: Sun, 19 Apr 2026 17:02:07 -0400 Subject: [PATCH] reassign action palette to asterisk --- config/aitools.go | 2 +- controller/actions.go | 2 +- controller/input_router.go | 4 ++-- integration/action_palette_test.go | 18 +++++++++--------- integration/input_action_test.go | 4 ++-- internal/app/input.go | 2 +- view/doki_plugin_view.go | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/config/aitools.go b/config/aitools.go index 2fca945..b4f9eb7 100644 --- a/config/aitools.go +++ b/config/aitools.go @@ -4,7 +4,7 @@ import "path" // AITool defines a supported AI coding assistant. // To add a new tool, add an entry to the aiTools slice below. -// NOTE: the action palette (press ?) surfaces available actions; update docs if tool names change. +// NOTE: the action palette (press *) surfaces available actions; update docs if tool names change. type AITool struct { Key string // config identifier: "claude", "gemini", "codex", "opencode" DisplayName string // human-readable label for UI: "Claude Code" diff --git a/controller/actions.go b/controller/actions.go index 07e72f3..2185113 100644 --- a/controller/actions.go +++ b/controller/actions.go @@ -272,7 +272,7 @@ func DefaultGlobalActions() *ActionRegistry { r.Register(Action{ID: ActionQuit, Key: tcell.KeyRune, Rune: 'q', Label: "Quit", ShowInHeader: true}) r.Register(Action{ID: ActionRefresh, Key: tcell.KeyRune, Rune: 'r', Label: "Refresh", ShowInHeader: true}) r.Register(Action{ID: ActionToggleHeader, Key: tcell.KeyF10, Label: "Toggle Header", ShowInHeader: true}) - r.Register(Action{ID: ActionOpenPalette, Key: tcell.KeyRune, Rune: '?', Label: "All", ShowInHeader: true, HideFromPalette: true}) + r.Register(Action{ID: ActionOpenPalette, Key: tcell.KeyRune, Rune: '*', Label: "All", ShowInHeader: true, HideFromPalette: true}) return r } diff --git a/controller/input_router.go b/controller/input_router.go index 098c7a8..38cf018 100644 --- a/controller/input_router.go +++ b/controller/input_router.go @@ -106,14 +106,14 @@ func (ir *InputRouter) SetPaletteConfig(pc *model.ActionPaletteConfig) { func (ir *InputRouter) HandleInput(event *tcell.EventKey, currentView *ViewEntry) bool { slog.Debug("input received", "name", event.Name(), "key", int(event.Key()), "rune", string(event.Rune()), "modifiers", int(event.Modifiers())) - // if the input box is focused, let it handle all input (including '?' and F10) + // if the input box is focused, let it handle all input (including '*' and F10) if activeView := ir.navController.GetActiveView(); activeView != nil { if iv, ok := activeView.(InputableView); ok && iv.IsInputBoxFocused() { return false } } - // pre-gate: ActionOpenPalette (?) and ActionToggleHeader (F10) must fire before + // pre-gate: ActionOpenPalette (*) and ActionToggleHeader (F10) must fire before // task-edit Prepare and before search/fullscreen/editor gates, so they stay truly // global without triggering edit-session setup or focus churn. if action := ir.globalActions.Match(event); action != nil { diff --git a/integration/action_palette_test.go b/integration/action_palette_test.go index d7f37e8..3948c4b 100644 --- a/integration/action_palette_test.go +++ b/integration/action_palette_test.go @@ -13,10 +13,10 @@ func TestActionPalette_OpenAndClose(t *testing.T) { defer ta.Cleanup() ta.Draw() - // ? opens the palette - ta.SendKey(tcell.KeyRune, '?', tcell.ModNone) + // * opens the palette + ta.SendKey(tcell.KeyRune, '*', tcell.ModNone) if !ta.GetPaletteConfig().IsVisible() { - t.Fatal("palette should be visible after pressing '?'") + t.Fatal("palette should be visible after pressing '*'") } // Esc closes it @@ -56,7 +56,7 @@ func TestActionPalette_ModalBlocksGlobals(t *testing.T) { startVisible := hc.IsVisible() // open palette - ta.SendKey(tcell.KeyRune, '?', tcell.ModNone) + ta.SendKey(tcell.KeyRune, '*', tcell.ModNone) if !ta.GetPaletteConfig().IsVisible() { t.Fatal("palette should be open") } @@ -72,23 +72,23 @@ func TestActionPalette_ModalBlocksGlobals(t *testing.T) { ta.SendKey(tcell.KeyEscape, 0, tcell.ModNone) } -func TestActionPalette_QuestionMarkFiltersInPalette(t *testing.T) { +func TestActionPalette_AsteriskFiltersInPalette(t *testing.T) { ta := testutil.NewTestApp(t) defer ta.Cleanup() ta.Draw() // open palette - ta.SendKey(tcell.KeyRune, '?', tcell.ModNone) + ta.SendKey(tcell.KeyRune, '*', tcell.ModNone) if !ta.GetPaletteConfig().IsVisible() { t.Fatal("palette should be open") } - // typing '?' while palette is open should be treated as filter text, not open another palette - ta.SendKeyToFocused(tcell.KeyRune, '?', tcell.ModNone) + // typing '*' while palette is open should be treated as filter text, not open another palette + ta.SendKeyToFocused(tcell.KeyRune, '*', tcell.ModNone) // palette should still be open if !ta.GetPaletteConfig().IsVisible() { - t.Fatal("palette should remain open when '?' is typed as filter") + t.Fatal("palette should remain open when '*' is typed as filter") } ta.SendKey(tcell.KeyEscape, 0, tcell.ModNone) diff --git a/integration/input_action_test.go b/integration/input_action_test.go index 00674fc..b352718 100644 --- a/integration/input_action_test.go +++ b/integration/input_action_test.go @@ -383,8 +383,8 @@ func TestInputAction_PaletteBlockedDuringModal(t *testing.T) { t.Fatal("input box should be focused") } - // '?' should be typed into the input box as text, not open the palette - ta.SendKey(tcell.KeyRune, '?', tcell.ModNone) + // '*' should be typed into the input box as text, not open the palette + ta.SendKey(tcell.KeyRune, '*', tcell.ModNone) if ta.GetPaletteConfig().IsVisible() { t.Fatal("palette should not open while input box is editing") } diff --git a/internal/app/input.go b/internal/app/input.go index 4dbc814..75bde97 100644 --- a/internal/app/input.go +++ b/internal/app/input.go @@ -10,7 +10,7 @@ import ( // InstallGlobalInputCapture installs the global keyboard handler // (palette modal short-circuit, statusline auto-hide dismiss, router dispatch). -// F10 (toggle header) and ? (open palette) are both routed through InputRouter +// F10 (toggle header) and * (open palette) are both routed through InputRouter // rather than handled here, so keyboard and palette-entered globals behave identically. func InstallGlobalInputCapture( app *tview.Application, diff --git a/view/doki_plugin_view.go b/view/doki_plugin_view.go index a7c40d3..ba399b3 100644 --- a/view/doki_plugin_view.go +++ b/view/doki_plugin_view.go @@ -90,7 +90,7 @@ func (dv *DokiView) build() { // The default Help plugin previously used this with embedded markdown: // cnt := map[string]string{"Help": helpMd, "tiki.md": tikiMd, "view.md": customMd} // provider := &internalDokiProvider{content: cnt} - // That usage was replaced by the action palette (press ? to open). + // That usage was replaced by the action palette (press * to open). case "internal": provider := &internalDokiProvider{content: map[string]string{}} content, err = provider.FetchContent(nav.NavElement{Text: dv.pluginDef.Text})