Download packages/app/src/pages/new-session.tsx from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.97 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/pages/new-session.tsx
- Command line
-
hf download hf://SaylorTwift/opencode/packages/app/src/pages/new-session.tsx
-
curl -L -o new-session.tsx https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/app/src/pages/new-session.tsx
1.97 kB
| import { createPromptProjectController } from "@/components/prompt-project-selector" | |
| import { useTitlebarRightMount } from "@/components/titlebar" | |
| import { useSettings } from "@/context/settings" | |
| import { createEffect, createResource } from "solid-js" | |
| import { createNewSessionDraftController } from "./new-session/new-session-draft-controller" | |
| import { NewSessionStatus, NewSessionView } from "./new-session/new-session-view" | |
| import { createNewSessionWorkspaceController } from "./new-session/new-session-workspace-controller" | |
| import { useNewSessionCommands } from "./new-session/use-new-session-commands" | |
| /** The draft-only V2 session page. Submitting promotes the draft into a real session. */ | |
| export default function NewSessionPage() { | |
| const settings = useSettings() | |
| const rightMount = useTitlebarRightMount() | |
| const workspace = createNewSessionWorkspaceController() | |
| const draft = createNewSessionDraftController({ | |
| worktree: workspace.selection.value, | |
| resetWorktree: workspace.selection.reset, | |
| }) | |
| const project = createPromptProjectController({ | |
| controls: draft.project.controls, | |
| onDone: draft.input.restoreFocus, | |
| }) | |
| useNewSessionCommands({ | |
| restoreFocus: draft.input.restoreFocus, | |
| project: { | |
| empty: project.empty, | |
| open: () => project.setOpen(true), | |
| }, | |
| }) | |
| createEffect(() => { | |
| if (!draft.prompt.ready()) return | |
| draft.input.restoreFocus() | |
| }) | |
| const ready = Promise.resolve() | |
| const [suspendUntilPromptReady] = createResource( | |
| () => draft.prompt.readyPromise() ?? ready, | |
| (promise) => promise.then(() => true), | |
| ) | |
| return ( | |
| <div class="relative size-full overflow-hidden flex flex-col"> | |
| {suspendUntilPromptReady()} | |
| <NewSessionStatus mount={rightMount} visible={settings.visibility.status} /> | |
| <div class="flex-1 min-h-0 flex flex-col gap-2 p-2"> | |
| <NewSessionView input={draft.input} project={project} workspace={workspace} /> | |
| </div> | |
| </div> | |
| ) | |
| } | |