import { Show, createMemo } from "solid-js" import { DateTime } from "luxon" import { useSync } from "@/context/sync" import { useSDK } from "@/context/sdk" import { useLanguage } from "@/context/language" import { Icon } from "@opencode-ai/ui/icon" import { getDirectory, getFilename } from "@opencode-ai/util/path" 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 sdk = useSDK() const language = useLanguage() 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 ?? sdk.directory) const isWorktree = createMemo(() => { const project = sync.project if (!project) return false return sdk.directory !== project.worktree }) const label = (value: string) => { if (value === MAIN_WORKTREE) { if (isWorktree()) return language.t("session.new.worktree.main") const branch = sync.data.vcs?.branch if (branch) return language.t("session.new.worktree.mainWithBranch", { branch }) return language.t("session.new.worktree.main") } if (value === CREATE_WORKTREE) return language.t("session.new.worktree.create") return getFilename(value) } return (
{language.t("command.session.new")}
{getDirectory(projectRoot())} {getFilename(projectRoot())}
{label(current())}
{(project) => (
{language.t("session.new.lastModified")}  {DateTime.fromMillis(project().time.updated ?? project().time.created) .setLocale(language.locale()) .toRelative()}
)}
) }