@@ -1553,8 +1553,8 @@ func (m *appModel) Help() help.KeyMap {
15531553 return core .NewSimpleHelp (m .Bindings ())
15541554}
15551555
1556- // Bindings returns the key bindings shown in the status bar .
1557- func (m * appModel ) Bindings () []key.Binding {
1556+ // AllBindings returns ALL available key bindings for the help dialog (comprehensive list) .
1557+ func (m * appModel ) AllBindings () []key.Binding {
15581558 quitBinding := key .NewBinding (
15591559 key .WithKeys ("ctrl+c" ),
15601560 key .WithHelp ("Ctrl+c" , "quit" ),
@@ -1572,10 +1572,48 @@ func (m *appModel) Bindings() []key.Binding {
15721572 bindings := []key.Binding {quitBinding , tabBinding }
15731573 bindings = append (bindings , m .tabBar .Bindings ()... )
15741574
1575- bindings = append (bindings , key .NewBinding (
1576- key .WithKeys ("ctrl+k" ),
1577- key .WithHelp ("Ctrl+k" , "commands" ),
1578- ))
1575+ // Additional global shortcuts
1576+ bindings = append (bindings ,
1577+ key .NewBinding (
1578+ key .WithKeys ("ctrl+k" ),
1579+ key .WithHelp ("Ctrl+k" , "commands" ),
1580+ ),
1581+ key .NewBinding (
1582+ key .WithKeys ("ctrl+h" ),
1583+ key .WithHelp ("Ctrl+h" , "help" ),
1584+ ),
1585+ key .NewBinding (
1586+ key .WithKeys ("ctrl+y" ),
1587+ key .WithHelp ("Ctrl+y" , "toggle yolo mode" ),
1588+ ),
1589+ key .NewBinding (
1590+ key .WithKeys ("ctrl+o" ),
1591+ key .WithHelp ("Ctrl+o" , "toggle hide tool results" ),
1592+ ),
1593+ key .NewBinding (
1594+ key .WithKeys ("ctrl+s" ),
1595+ key .WithHelp ("Ctrl+s" , "cycle agent" ),
1596+ ),
1597+ key .NewBinding (
1598+ key .WithKeys ("ctrl+m" ),
1599+ key .WithHelp ("Ctrl+m" , "model picker" ),
1600+ ),
1601+ key .NewBinding (
1602+ key .WithKeys ("ctrl+x" ),
1603+ key .WithHelp ("Ctrl+x" , "clear queue" ),
1604+ ),
1605+ key .NewBinding (
1606+ key .WithKeys ("ctrl+z" ),
1607+ key .WithHelp ("Ctrl+z" , "suspend" ),
1608+ ),
1609+ )
1610+
1611+ if ! m .leanMode {
1612+ bindings = append (bindings , key .NewBinding (
1613+ key .WithKeys ("ctrl+b" ),
1614+ key .WithHelp ("Ctrl+b" , "toggle sidebar" ),
1615+ ))
1616+ }
15791617
15801618 // Show newline help based on keyboard enhancement support
15811619 if m .keyboardEnhancementsSupported {
@@ -1608,6 +1646,47 @@ func (m *appModel) Bindings() []key.Binding {
16081646 return bindings
16091647}
16101648
1649+ // Bindings returns the key bindings shown in the status bar (a curated subset).
1650+ // This filters AllBindings() to show only the most essential commands.
1651+ func (m * appModel ) Bindings () []key.Binding {
1652+ all := m .AllBindings ()
1653+
1654+ // Define which keys should appear in the status bar
1655+ statusBarKeys := map [string ]bool {
1656+ "ctrl+c" : true , // quit
1657+ "tab" : true , // switch focus
1658+ "ctrl+t" : true , // new tab (from tabBar)
1659+ "ctrl+w" : true , // close tab (from tabBar)
1660+ "ctrl+p" : true , // prev tab (from tabBar)
1661+ "ctrl+n" : true , // next tab (from tabBar)
1662+ "ctrl+k" : true , // commands
1663+ "ctrl+h" : true , // help
1664+ "shift+enter" : true , // newline
1665+ "ctrl+j" : true , // newline fallback
1666+ "ctrl+g" : true , // edit in external editor (editor context)
1667+ "ctrl+r" : true , // history search (editor context)
1668+ // Content panel bindings (↑↓, c, e, d) are always included
1669+ "up" : true ,
1670+ "down" : true ,
1671+ "c" : true ,
1672+ "e" : true ,
1673+ "d" : true ,
1674+ }
1675+
1676+ // Filter to only include status bar keys
1677+ var filtered []key.Binding
1678+ for _ , binding := range all {
1679+ if len (binding .Keys ()) > 0 {
1680+ bindingKey := binding .Keys ()[0 ]
1681+ if statusBarKeys [bindingKey ] {
1682+ filtered = append (filtered , binding )
1683+ }
1684+ }
1685+ }
1686+
1687+ return filtered
1688+ }
1689+
16111690// handleKeyPress handles all keyboard input with proper priority routing.
16121691func (m * appModel ) handleKeyPress (msg tea.KeyPressMsg ) (tea.Model , tea.Cmd ) {
16131692 // Check if we should stop transcription on Enter or Escape
@@ -1687,6 +1766,12 @@ func (m *appModel) handleKeyPress(msg tea.KeyPressMsg) (tea.Model, tea.Cmd) {
16871766
16881767 case key .Matches (msg , key .NewBinding (key .WithKeys ("ctrl+x" ))):
16891768 return m , core .CmdHandler (messages.ClearQueueMsg {})
1769+
1770+ case key .Matches (msg , key .NewBinding (key .WithKeys ("ctrl+h" , "f1" , "ctrl+?" ))):
1771+ // Show contextual help dialog with ALL available key bindings
1772+ return m , core .CmdHandler (dialog.OpenDialogMsg {
1773+ Model : dialog .NewHelpDialog (m .AllBindings ()),
1774+ })
16901775 }
16911776
16921777 // History search is a modal state — capture all remaining keys before normal routing
0 commit comments