From 8176bafc555e562ade48a675dffa3f38751ed8c9 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 2 Mar 2026 10:50:50 -0600 Subject: chore(app): solidjs refactoring (#13399) --- packages/app/src/components/file-tree.tsx | 6 ------ packages/app/src/components/prompt-input.tsx | 9 --------- packages/app/src/components/session/session-header.tsx | 11 +++++------ packages/app/src/components/terminal.tsx | 7 +++---- 4 files changed, 8 insertions(+), 25 deletions(-) (limited to 'packages/app/src/components') diff --git a/packages/app/src/components/file-tree.tsx b/packages/app/src/components/file-tree.tsx index 3840f18ed..930832fb6 100644 --- a/packages/app/src/components/file-tree.tsx +++ b/packages/app/src/components/file-tree.tsx @@ -325,12 +325,6 @@ export default function FileTree(props: { ), ) - createEffect(() => { - const dir = file.tree.state(props.path) - if (!shouldListExpanded({ level, dir })) return - void file.tree.list(props.path) - }) - const nodes = createMemo(() => { const nodes = file.tree.children(props.path) const current = filter() diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index d16791a61..b99ac9373 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -591,7 +591,6 @@ export const PromptInput: Component = (props) => { setActive: setSlashActive, onInput: slashOnInput, onKeyDown: slashOnKeyDown, - refetch: slashRefetch, } = useFilteredList({ items: slashCommands, key: (x) => x?.id, @@ -648,14 +647,6 @@ export const PromptInput: Component = (props) => { } } - createEffect( - on( - () => sync.data.command, - () => slashRefetch(), - { defer: true }, - ), - ) - // Auto-scroll active command into view when navigating with keyboard createEffect(() => { const activeId = slashActive() diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx index 27b1b9cc0..94edb8258 100644 --- a/packages/app/src/components/session/session-header.tsx +++ b/packages/app/src/components/session/session-header.tsx @@ -306,11 +306,10 @@ export function SessionHeader() { const current = createMemo(() => options().find((o) => o.id === prefs.app) ?? options()[0]) const opening = createMemo(() => openRequest.app !== undefined) - createEffect(() => { - const value = prefs.app - if (options().some((o) => o.id === value)) return - setPrefs("app", options()[0]?.id ?? "finder") - }) + const selectApp = (app: OpenApp) => { + if (!options().some((item) => item.id === app)) return + setPrefs("app", app) + } const openDir = (app: OpenApp) => { if (opening() || !canOpen() || !platform.openPath) return @@ -458,7 +457,7 @@ export function SessionHeader() { value={current().id} onChange={(value) => { if (!OPEN_APPS.includes(value as OpenApp)) return - setPrefs("app", value as OpenApp) + selectApp(value as OpenApp) }} > diff --git a/packages/app/src/components/terminal.tsx b/packages/app/src/components/terminal.tsx index ce811463f..601ace28d 100644 --- a/packages/app/src/components/terminal.tsx +++ b/packages/app/src/components/terminal.tsx @@ -1,7 +1,7 @@ import { type HexColor, resolveThemeVariant, useTheme, withAlpha } from "@opencode-ai/ui/theme" import { showToast } from "@opencode-ai/ui/toast" import type { FitAddon, Ghostty, Terminal as Term } from "ghostty-web" -import { type ComponentProps, createEffect, createSignal, onCleanup, onMount, splitProps } from "solid-js" +import { type ComponentProps, createEffect, createMemo, onCleanup, onMount, splitProps } from "solid-js" import { SerializeAddon } from "@/addons/serialize" import { matchKeybind, parseKeybind } from "@/context/command" import { useLanguage } from "@/context/language" @@ -219,7 +219,7 @@ export const Terminal = (props: TerminalProps) => { } } - const [terminalColors, setTerminalColors] = createSignal(getTerminalColors()) + const terminalColors = createMemo(getTerminalColors) const scheduleFit = () => { if (disposed) return @@ -259,8 +259,7 @@ export const Terminal = (props: TerminalProps) => { } createEffect(() => { - const colors = getTerminalColors() - setTerminalColors(colors) + const colors = terminalColors() if (!term) return setOptionIfSupported(term, "theme", colors) }) -- cgit v1.2.3