From fc5fc2c570e6ac5a6f9647080b80f7fec0c4b605 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 18 Nov 2025 11:00:27 -0600 Subject: wip(desktop): new layout work --- packages/desktop/src/pages/directory-layout.tsx | 25 +++ packages/desktop/src/pages/home.tsx | 20 ++ packages/desktop/src/pages/layout.tsx | 266 +++++++++++++----------- packages/desktop/src/pages/session-layout.tsx | 24 --- packages/desktop/src/pages/session.tsx | 162 ++++++++------- 5 files changed, 274 insertions(+), 223 deletions(-) create mode 100644 packages/desktop/src/pages/directory-layout.tsx create mode 100644 packages/desktop/src/pages/home.tsx delete mode 100644 packages/desktop/src/pages/session-layout.tsx (limited to 'packages/desktop/src/pages') diff --git a/packages/desktop/src/pages/directory-layout.tsx b/packages/desktop/src/pages/directory-layout.tsx new file mode 100644 index 000000000..fe35f20f9 --- /dev/null +++ b/packages/desktop/src/pages/directory-layout.tsx @@ -0,0 +1,25 @@ +import { createMemo, Show, type ParentProps } from "solid-js" +import { useParams } from "@solidjs/router" +import { SDKProvider } from "@/context/sdk" +import { SyncProvider } from "@/context/sync" +import { LocalProvider } from "@/context/local" +import { useGlobalSync } from "@/context/global-sync" +import { base64Decode } from "@/utils" + +export default function Layout(props: ParentProps) { + const params = useParams() + const sync = useGlobalSync() + const directory = createMemo(() => { + const decoded = base64Decode(params.dir) + return sync.data.projects.find((x) => x.worktree === decoded)?.worktree ?? "/" + }) + return ( + + + + {props.children} + + + + ) +} diff --git a/packages/desktop/src/pages/home.tsx b/packages/desktop/src/pages/home.tsx new file mode 100644 index 000000000..e2f99afa8 --- /dev/null +++ b/packages/desktop/src/pages/home.tsx @@ -0,0 +1,20 @@ +import { useGlobalSync } from "@/context/global-sync" +import { base64Encode, getFilename } from "@/utils" +import { For } from "solid-js" +import { A } from "@solidjs/router" +import { Button } from "@opencode-ai/ui" + +export default function Home() { + const sync = useGlobalSync() + return ( +
+ + {(project) => ( + + )} + +
+ ) +} diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx index 6e0078a16..33cf7b66f 100644 --- a/packages/desktop/src/pages/layout.tsx +++ b/packages/desktop/src/pages/layout.tsx @@ -1,19 +1,25 @@ -import { Button, Tooltip, DiffChanges, IconButton, Mark, Icon } from "@opencode-ai/ui" -import { createMemo, For, Match, ParentProps, Show, Switch } from "solid-js" +import { Button, Tooltip, DiffChanges, IconButton, Mark, Icon, Collapsible } from "@opencode-ai/ui" +import { createMemo, For, ParentProps, Show } from "solid-js" import { DateTime } from "luxon" -import { useSync } from "@/context/sync" import { A, useParams } from "@solidjs/router" import { useLayout } from "@/context/layout" +import { useGlobalSync } from "@/context/global-sync" +import { base64Encode, getFilename } from "@/utils" export default function Layout(props: ParentProps) { const params = useParams() - const sync = useSync() + const globalSync = useGlobalSync() const layout = useLayout() + const handleOpenProject = async () => { + // layout.projects.open(dir.) + } + return (
-
-
+
-
- - - - - - - - - - -
- - - - -
-
-
- - - + + + + + + + +
diff --git a/packages/desktop/src/pages/session-layout.tsx b/packages/desktop/src/pages/session-layout.tsx deleted file mode 100644 index 7f355c9bc..000000000 --- a/packages/desktop/src/pages/session-layout.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Show, type ParentProps } from "solid-js" -import { SessionProvider, useSession } from "@/context/session" -import { useParams } from "@solidjs/router" -import { SDKProvider, useSDK } from "@/context/sdk" -import { LocalProvider } from "@/context/local" - -export default function Layout(props: ParentProps) { - const params = useParams() - const root = useSDK() - return ( - - - {(() => { - const session = useSession() - return ( - - {props.children} - - ) - })()} - - - ) -} diff --git a/packages/desktop/src/pages/session.tsx b/packages/desktop/src/pages/session.tsx index 884d789b1..01d32a672 100644 --- a/packages/desktop/src/pages/session.tsx +++ b/packages/desktop/src/pages/session.tsx @@ -294,7 +294,7 @@ export default function Page() {
-
Chat
+
Session
1}> -
    - - {(message) => { - const assistantMessages = createMemo(() => { - if (!session.id) return [] - return sync.data.message[session.id]?.filter( - (m) => m.role === "assistant" && m.parentID == message.id, - ) as AssistantMessageType[] - }) - const error = createMemo(() => assistantMessages().find((m) => m?.error)?.error) - const working = createMemo(() => !message.summary?.body && !error()) + {(_) => { + const expanded = createMemo(() => layout.review.state() === "tab" || !session.diffs().length) - const handleClick = () => session.messages.setActive(message.id) + return ( +
      + + {(message) => { + const assistantMessages = createMemo(() => { + if (!session.id) return [] + return sync.data.message[session.id]?.filter( + (m) => m.role === "assistant" && m.parentID == message.id, + ) as AssistantMessageType[] + }) + const error = createMemo(() => assistantMessages().find((m) => m?.error)?.error) + const working = createMemo(() => !message.summary?.body && !error()) - return ( -
    • - - - {message.summary?.title} -
- } - > - - - - - ) - }} - - + + + {message.summary?.title} +
+ } + > + + + + + ) + }} + + + ) + }}
-- cgit v1.2.3