summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRahul A Mistry <[email protected]>2026-01-20 22:27:11 +0530
committerGitHub <[email protected]>2026-01-20 10:57:11 -0600
commit8639b0767a5913e8758f9ca00c740ca5a743896c (patch)
treed085efb418f042f3442e164f609d272b56a2a7f6
parent5f67e6fd126b1b4e74c35c3058a1c418649c4f83 (diff)
downloadopencode-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.tsx2
-rw-r--r--packages/app/src/pages/layout.tsx43
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