diff options
| author | Brendan Allan <[email protected]> | 2026-03-05 17:15:14 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-05 09:15:14 +0000 |
| commit | 4e26b0aec7052b9daf1f1d26906198775cd3ad66 (patch) | |
| tree | 3161089461eed754faa2c493cf91916b11db9339 /packages/app/src/pages/layout.tsx | |
| parent | 6531cfc521f069ad86eb22990fc42924d161d0d9 (diff) | |
| download | opencode-4e26b0aec7052b9daf1f1d26906198775cd3ad66.tar.gz opencode-4e26b0aec7052b9daf1f1d26906198775cd3ad66.zip | |
desktop: new-session deeplink (#15322)
Diffstat (limited to 'packages/app/src/pages/layout.tsx')
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 2fd2f2fe3..cc322d74f 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -44,6 +44,7 @@ import { playSound, soundSrc } from "@/utils/sound" import { createAim } from "@/utils/aim" import { setNavigate } from "@/utils/notification-click" import { Worktree as WorktreeState } from "@/utils/worktree" +import { setSessionHandoff } from "@/pages/session/handoff" import { useDialog } from "@opencode-ai/ui/context/dialog" import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme" @@ -67,7 +68,12 @@ import { sortedRootSessions, workspaceKey, } from "./layout/helpers" -import { collectOpenProjectDeepLinks, deepLinkEvent, drainPendingDeepLinks } from "./layout/deep-links" +import { + collectNewSessionDeepLinks, + collectOpenProjectDeepLinks, + deepLinkEvent, + drainPendingDeepLinks, +} from "./layout/deep-links" import { createInlineEditorController } from "./layout/inline-editor" import { LocalWorkspace, @@ -1177,9 +1183,20 @@ export default function Layout(props: ParentProps) { const handleDeepLinks = (urls: string[]) => { if (!server.isLocal()) return + for (const directory of collectOpenProjectDeepLinks(urls)) { openProject(directory) } + + for (const link of collectNewSessionDeepLinks(urls)) { + openProject(link.directory, false) + const slug = base64Encode(link.directory) + if (link.prompt) { + setSessionHandoff(slug, { prompt: link.prompt }) + } + const href = link.prompt ? `/${slug}/session?prompt=${encodeURIComponent(link.prompt)}` : `/${slug}/session` + navigateWithSidebarReset(href) + } } onMount(() => { |
