summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-05 00:25:44 -0600
committeradamelmore <[email protected]>2026-01-26 11:07:51 -0600
commitd9eed4c6cacf59089e6b6d6101deff58c7bd5040 (patch)
tree9baa833645787d9b9d66cfcbe8363962a85aa6b5 /packages/app/src/pages
parent7e34d27b77b3ce51cda27110b4ad1d3d5bc4317c (diff)
downloadopencode-d9eed4c6cacf59089e6b6d6101deff58c7bd5040.tar.gz
opencode-d9eed4c6cacf59089e6b6d6101deff58c7bd5040.zip
feat(app): file tree
Diffstat (limited to 'packages/app/src/pages')
-rw-r--r--packages/app/src/pages/session.tsx24
1 files changed, 23 insertions, 1 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 5e5cba69c..413d8ac34 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -32,6 +32,7 @@ import { checksum, base64Encode, base64Decode } from "@opencode-ai/util/encode"
import { findLast } from "@opencode-ai/util/array"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { DialogSelectFile } from "@/components/dialog-select-file"
+import FileTree from "@/components/file-tree"
import { DialogSelectModel } from "@/components/dialog-select-model"
import { DialogSelectMcp } from "@/components/dialog-select-mcp"
import { DialogFork } from "@/components/dialog-fork"
@@ -1811,8 +1812,29 @@ export default function Page() {
<aside
id="review-panel"
aria-label={language.t("session.panel.reviewAndFiles")}
- class="relative flex-1 min-w-0 h-full border-l border-border-weak-base"
+ class="relative flex-1 min-w-0 h-full border-l border-border-weak-base flex"
>
+ <Show when={layout.fileTree.opened()}>
+ <div class="relative shrink-0 h-full" style={{ width: `${layout.fileTree.width()}px` }}>
+ <div class="h-full bg-background-base border-r border-border-weak-base flex flex-col">
+ <div class="hidden h-12 shrink-0 flex items-center px-3 border-b border-border-weak-base text-12-medium text-text-weak">
+ Files
+ </div>
+ <div class="flex-1 min-h-0 overflow-y-auto no-scrollbar p-2">
+ <FileTree path="" onFileClick={(node) => openTab(file.tab(node.path))} />
+ </div>
+ </div>
+ <ResizeHandle
+ direction="horizontal"
+ size={layout.fileTree.width()}
+ min={200}
+ max={480}
+ collapseThreshold={160}
+ onResize={layout.fileTree.resize}
+ onCollapse={layout.fileTree.close}
+ />
+ </div>
+ </Show>
<DragDropProvider
onDragStart={handleDragStart}
onDragEnd={handleDragEnd}