| ... | @@ -2816,11 +2816,13 @@ export default function SidebarV2() { | ... | @@ -2816,11 +2816,13 @@ export default function SidebarV2() { |
| 2816 | openCommandPalette({ open: "new-thread-in" }); | 2816 | openCommandPalette({ open: "new-thread-in" }); |
| 2817 | }, [isMobile, newThreadContext, projectGroups.length, setOpenMobile]); | 2817 | }, [isMobile, newThreadContext, projectGroups.length, setOpenMobile]); |
| 2818 | | 2818 | |
| 2819 | // Same resolution as v1: prefer the local-thread binding, fall back to | 2819 | // The button mirrors chat.new: in multi-project setups both route through |
| 2820 | // chat.new, no platform gating — web users have working shortcuts too. | 2820 | // the command palette's "New thread in..." picker, and in single-project |
| | 2821 | // setups both create immediately. chat.newLocal always creates directly, so |
| | 2822 | // it is only a correct label when chat.new is unbound. |
| 2821 | const newThreadShortcutLabel = | 2823 | const newThreadShortcutLabel = |
| 2822 | shortcutLabelForCommand(keybindings, "chat.newLocal") ?? | 2824 | shortcutLabelForCommand(keybindings, "chat.new") ?? |
| 2823 | shortcutLabelForCommand(keybindings, "chat.new"); | 2825 | shortcutLabelForCommand(keybindings, "chat.newLocal"); |
| 2824 | return ( | 2826 | return ( |
| 2825 | <> | 2827 | <> |
| 2826 | <SidebarChromeHeader isElectron={isElectron} /> | 2828 | <SidebarChromeHeader isElectron={isElectron} /> |