diff options
| author | Rahul A Mistry <[email protected]> | 2026-01-20 22:27:11 +0530 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-20 10:57:11 -0600 |
| commit | 8639b0767a5913e8758f9ca00c740ca5a743896c (patch) | |
| tree | d085efb418f042f3442e164f609d272b56a2a7f6 | |
| parent | 5f67e6fd126b1b4e74c35c3058a1c418649c4f83 (diff) | |
| download | opencode-8639b0767a5913e8758f9ca00c740ca5a743896c.tar.gz opencode-8639b0767a5913e8758f9ca00c740ca5a743896c.zip | |
feat(app): add tooltips to sidebar new session/workspace buttons (#9652)
| -rw-r--r-- | packages/app/src/components/dialog-select-file.tsx | 2 | ||||
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 43 |
2 files changed, 30 insertions, 15 deletions
diff --git a/packages/app/src/components/dialog-select-file.tsx b/packages/app/src/components/dialog-select-file.tsx index 0e8d69628..b5d98a07f 100644 --- a/packages/app/src/components/dialog-select-file.tsx +++ b/packages/app/src/components/dialog-select-file.tsx @@ -34,7 +34,7 @@ export function DialogSelectFile() { const view = createMemo(() => layout.view(sessionKey())) const state = { cleanup: undefined as (() => void) | void, committed: false } const [grouped, setGrouped] = createSignal(false) - const common = ["session.new", "session.previous", "session.next", "terminal.toggle", "review.toggle"] + const common = ["session.new", "workspace.new", "session.previous", "session.next", "terminal.toggle", "review.toggle"] const limit = 5 const allowed = createMemo(() => diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index ea16e6438..1d870a92d 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -1998,6 +1998,17 @@ export default function Layout(props: ParentProps) { navigate(`/${base64Encode(created.directory)}/session`) } + command.register(() => [ + { + id: "workspace.new", + title: "New workspace", + category: "Workspace", + keybind: "mod+shift+w", + disabled: !layout.sidebar.workspaces(project()?.worktree ?? "")(), + onSelect: createWorkspace, + }, + ]) + const homedir = createMemo(() => sync.data.path.home) return ( @@ -2123,17 +2134,19 @@ export default function Layout(props: ParentProps) { fallback={ <> <div class="py-4 px-3"> - <Button - size="large" - icon="plus-small" - class="w-full" - onClick={() => { - navigate(`/${base64Encode(p.worktree)}/session`) - layout.mobileSidebar.hide() - }} - > - New session - </Button> + <TooltipKeybind title="New session" keybind={command.keybind("session.new")} placement="top"> + <Button + size="large" + icon="plus-small" + class="w-full" + onClick={() => { + navigate(`/${base64Encode(p.worktree)}/session`) + layout.mobileSidebar.hide() + }} + > + New session + </Button> + </TooltipKeybind> </div> <div class="flex-1 min-h-0"> <LocalWorkspace project={p} mobile={sidebarProps.mobile} /> @@ -2143,9 +2156,11 @@ export default function Layout(props: ParentProps) { > <> <div class="py-4 px-3"> - <Button size="large" icon="plus-small" class="w-full" onClick={createWorkspace}> - New workspace - </Button> + <TooltipKeybind title="New workspace" keybind={command.keybind("workspace.new")} placement="top"> + <Button size="large" icon="plus-small" class="w-full" onClick={createWorkspace}> + New workspace + </Button> + </TooltipKeybind> </div> <div class="relative flex-1 min-h-0"> <DragDropProvider |
