mirror of
https://github.com/anomalyco/opencode.git
synced 2026-02-01 22:48:16 +00:00
perf(app): shared terminal ghostty-web instance
This commit is contained in:
@@ -16,6 +16,19 @@ export interface TerminalProps extends ComponentProps<"div"> {
|
||||
onConnectError?: (error: unknown) => void
|
||||
}
|
||||
|
||||
let shared: Promise<{ mod: typeof import("ghostty-web"); ghostty: Ghostty }> | undefined
|
||||
|
||||
const loadGhostty = () => {
|
||||
if (shared) return shared
|
||||
shared = import("ghostty-web")
|
||||
.then(async (mod) => ({ mod, ghostty: await mod.Ghostty.load() }))
|
||||
.catch((err) => {
|
||||
shared = undefined
|
||||
throw err
|
||||
})
|
||||
return shared
|
||||
}
|
||||
|
||||
type TerminalColors = {
|
||||
background: string
|
||||
foreground: string
|
||||
@@ -53,7 +66,6 @@ export const Terminal = (props: TerminalProps) => {
|
||||
let handleResize: () => void
|
||||
let handleTextareaFocus: () => void
|
||||
let handleTextareaBlur: () => void
|
||||
let reconnect: number | undefined
|
||||
let disposed = false
|
||||
|
||||
const getTerminalColors = (): TerminalColors => {
|
||||
@@ -112,8 +124,11 @@ export const Terminal = (props: TerminalProps) => {
|
||||
|
||||
onMount(() => {
|
||||
const run = async () => {
|
||||
const mod = await import("ghostty-web")
|
||||
ghostty = await mod.Ghostty.load()
|
||||
const loaded = await loadGhostty()
|
||||
if (disposed) return
|
||||
|
||||
const mod = loaded.mod
|
||||
ghostty = loaded.ghostty
|
||||
|
||||
const once = { value: false }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user