summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-02 10:50:50 -0600
committerGitHub <[email protected]>2026-03-02 10:50:50 -0600
commit8176bafc555e562ade48a675dffa3f38751ed8c9 (patch)
tree7d4b0f6e98f431999b89c1f24687f6f53bd0bc6b /packages/app/src/components
parent0a3a3216db5974efd3edc9a213054fd97d8dbd34 (diff)
downloadopencode-8176bafc555e562ade48a675dffa3f38751ed8c9.tar.gz
opencode-8176bafc555e562ade48a675dffa3f38751ed8c9.zip
chore(app): solidjs refactoring (#13399)
Diffstat (limited to 'packages/app/src/components')
-rw-r--r--packages/app/src/components/file-tree.tsx6
-rw-r--r--packages/app/src/components/prompt-input.tsx9
-rw-r--r--packages/app/src/components/session/session-header.tsx11
-rw-r--r--packages/app/src/components/terminal.tsx7
4 files changed, 8 insertions, 25 deletions
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<PromptInputProps> = (props) => {
setActive: setSlashActive,
onInput: slashOnInput,
onKeyDown: slashOnKeyDown,
- refetch: slashRefetch,
} = useFilteredList<SlashCommand>({
items: slashCommands,
key: (x) => x?.id,
@@ -648,14 +647,6 @@ export const PromptInput: Component<PromptInputProps> = (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)
}}
>
<For each={options()}>
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<TerminalColors>(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)
})