summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-09 03:45:50 -0600
committerAdam <[email protected]>2025-12-09 06:12:09 -0600
commit0a357be160d672791bb99a36fc7d7c1299d5493d (patch)
tree5c5c3ee1360a0adf40b1e47691fb2ef9ef2408aa /packages/desktop/src/context
parentd29205e67787d49de9dd4c271ec8e4e7848d81ad (diff)
downloadopencode-0a357be160d672791bb99a36fc7d7c1299d5493d.tar.gz
opencode-0a357be160d672791bb99a36fc7d7c1299d5493d.zip
wip(desktop): progress
Diffstat (limited to 'packages/desktop/src/context')
-rw-r--r--packages/desktop/src/context/global-sync.tsx7
-rw-r--r--packages/desktop/src/context/layout.tsx20
2 files changed, 13 insertions, 14 deletions
diff --git a/packages/desktop/src/context/global-sync.tsx b/packages/desktop/src/context/global-sync.tsx
index 9f795cded..188db1e69 100644
--- a/packages/desktop/src/context/global-sync.tsx
+++ b/packages/desktop/src/context/global-sync.tsx
@@ -51,7 +51,6 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
init: () => {
const [globalStore, setGlobalStore] = createStore<{
ready: boolean
- defaultProject?: Project // TODO: remove this when we can select projects
projects: Project[]
children: Record<string, State>
}>({
@@ -165,11 +164,11 @@ export const { use: useGlobalSync, provider: GlobalSyncProvider } = createSimple
sdk.client.project.list().then((x) =>
setGlobalStore(
"projects",
- x.data!.filter((x) => !x.worktree.includes("opencode-test")),
+ x
+ .data!.filter((x) => !x.worktree.includes("opencode-test") && x.vcs)
+ .sort((a, b) => b.time.created - a.time.created),
),
),
- // TODO: remove this when we can select projects
- sdk.client.project.current().then((x) => setGlobalStore("defaultProject", x.data)),
]).then(() => setGlobalStore("ready", true))
return {
diff --git a/packages/desktop/src/context/layout.tsx b/packages/desktop/src/context/layout.tsx
index ca736e84e..1b43cf511 100644
--- a/packages/desktop/src/context/layout.tsx
+++ b/packages/desktop/src/context/layout.tsx
@@ -2,17 +2,15 @@ import { createStore } from "solid-js/store"
import { createMemo } from "solid-js"
import { createSimpleContext } from "@opencode-ai/ui/context"
import { makePersisted } from "@solid-primitives/storage"
-import { useGlobalSync } from "./global-sync"
export const { use: useLayout, provider: LayoutProvider } = createSimpleContext({
name: "Layout",
init: () => {
- const globalSync = useGlobalSync()
const [store, setStore] = makePersisted(
createStore({
- projects: [] as { directory: string; expanded: boolean }[],
+ projects: [] as { directory: string; expanded: boolean; lastSession?: string }[],
sidebar: {
- opened: true,
+ opened: false,
width: 280,
},
terminal: {
@@ -24,17 +22,13 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
},
}),
{
- name: "____default-layout",
+ name: "default-layout.v4",
},
)
return {
projects: {
- list: createMemo(() =>
- globalSync.data.defaultProject
- ? [{ directory: globalSync.data.defaultProject!.worktree, expanded: true }, ...store.projects]
- : store.projects,
- ),
+ list: createMemo(() => store.projects),
open(directory: string) {
if (store.projects.find((x) => x.directory === directory)) return
setStore("projects", (x) => [...x, { directory, expanded: true }])
@@ -48,6 +42,12 @@ export const { use: useLayout, provider: LayoutProvider } = createSimpleContext(
collapse(directory: string) {
setStore("projects", (x) => x.map((x) => (x.directory === directory ? { ...x, expanded: false } : x)))
},
+ lastSession(directory: string) {
+ return store.projects.find((x) => x.directory === directory)?.lastSession
+ },
+ setLastSession(directory: string, session: string | undefined) {
+ setStore("projects", (x) => x.map((x) => (x.directory === directory ? { ...x, lastSession: session } : x)))
+ },
},
sidebar: {
opened: createMemo(() => store.sidebar.opened),