summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/layout.tsx
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-03-05 17:15:14 +0800
committerGitHub <[email protected]>2026-03-05 09:15:14 +0000
commit4e26b0aec7052b9daf1f1d26906198775cd3ad66 (patch)
tree3161089461eed754faa2c493cf91916b11db9339 /packages/app/src/pages/layout.tsx
parent6531cfc521f069ad86eb22990fc42924d161d0d9 (diff)
downloadopencode-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.tsx19
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(() => {