import { Show, createMemo } from "solid-js" import { DateTime } from "luxon" import { useSync } from "@/context/sync" import { Icon } from "@opencode-ai/ui/icon" import { getDirectory, getFilename } from "@opencode-ai/util/path" import { Select } from "@opencode-ai/ui/select" const MAIN_WORKTREE = "main" const CREATE_WORKTREE = "create" interface NewSessionViewProps { worktree: string onWorktreeChange: (value: string) => void } export function NewSessionView(props: NewSessionViewProps) { const sync = useSync() const sandboxes = createMemo(() => sync.project?.sandboxes ?? []) const options = createMemo(() => [MAIN_WORKTREE, ...sandboxes(), CREATE_WORKTREE]) const current = createMemo(() => { const selection = props.worktree if (options().includes(selection)) return selection return MAIN_WORKTREE }) const projectRoot = createMemo(() => sync.project?.worktree ?? sync.data.path.directory) const isWorktree = createMemo(() => { const project = sync.project if (!project) return false return sync.data.path.directory !== project.worktree }) const label = (value: string) => { if (value === MAIN_WORKTREE) { if (isWorktree()) return "Main branch" const branch = sync.data.vcs?.branch if (branch) return `Main branch (${branch})` return "Main branch" } if (value === CREATE_WORKTREE) return "Create new worktree" return getFilename(value) } return (