From 679270d9e0731c2b3e2c059d83907cb4086d90e2 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 12 Jan 2026 10:11:29 -0600 Subject: [PATCH] feat(app): new layout --- packages/app/index.html | 1 - .../src/components/session/session-header.tsx | 101 +--- packages/app/src/components/titlebar.tsx | 115 ++++ packages/app/src/context/layout.tsx | 8 + packages/app/src/context/sync.tsx | 2 +- packages/app/src/index.css | 4 + packages/app/src/pages/layout.tsx | 523 ++++++++++++------ packages/app/src/pages/session.tsx | 19 +- packages/desktop/index.html | 2 +- packages/desktop/src-tauri/Cargo.toml | 1 + .../src-tauri/capabilities/default.json | 1 + packages/desktop/src-tauri/src/lib.rs | 45 +- packages/desktop/src-tauri/tauri.conf.json | 14 + .../desktop/src-tauri/tauri.prod.conf.json | 21 + packages/ui/src/components/hover-card.css | 55 ++ packages/ui/src/components/hover-card.tsx | 31 ++ packages/ui/src/components/icon.tsx | 6 +- packages/ui/src/components/spinner.tsx | 7 +- packages/ui/src/styles/index.css | 1 + 19 files changed, 681 insertions(+), 276 deletions(-) create mode 100644 packages/app/src/components/titlebar.tsx create mode 100644 packages/ui/src/components/hover-card.css create mode 100644 packages/ui/src/components/hover-card.tsx diff --git a/packages/app/index.html b/packages/app/index.html index e0fbe6913..a8d663454 100644 --- a/packages/app/index.html +++ b/packages/app/index.html @@ -13,7 +13,6 @@ -
diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx index b2e7fafeb..5ed721740 100644 --- a/packages/app/src/components/session/session-header.tsx +++ b/packages/app/src/components/session/session-header.tsx @@ -34,6 +34,17 @@ export function SessionHeader() { const sync = useSync() const projectDirectory = createMemo(() => base64Decode(params.dir ?? "")) + const project = createMemo(() => { + const directory = projectDirectory() + if (!directory) return + return layout.projects.list().find((p) => p.worktree === directory || p.sandboxes?.includes(directory)) + }) + const name = createMemo(() => { + const current = project() + if (current) return current.name || getFilename(current.worktree) + return getFilename(projectDirectory()) + }) + const hotkey = createMemo(() => command.keybind("file.open")) const sessions = createMemo(() => (sync.data.session ?? []).filter((s) => !s.parentID)) const currentSession = createMemo(() => sync.data.session.find((s) => s.id === params.id)) @@ -58,87 +69,29 @@ export function SessionHeader() { navigate(`/${params.dir}/session/${session.id}`) } - const leftMount = createMemo(() => document.getElementById("opencode-titlebar-left")) + const centerMount = createMemo(() => document.getElementById("opencode-titlebar-center")) const rightMount = createMemo(() => document.getElementById("opencode-titlebar-right")) return ( <> -