refactor(tui): rename v2 sync context to data

This commit is contained in:
Dax Raad
2026-06-10 19:11:35 -04:00
parent cc22646467
commit 7de746fade
5 changed files with 43 additions and 43 deletions
+3 -3
View File
@@ -34,7 +34,7 @@ import { useEvent } from "./context/event"
import { SDKProvider, useSDK } from "./context/sdk"
import { StartupLoading } from "./component/startup-loading"
import { SyncProvider, useSync } from "./context/sync"
import { SyncProviderV2 } from "./context/sync-v2"
import { DataProvider } from "./context/data"
import { LocalProvider, useLocal } from "./context/local"
import { DialogModel } from "./component/dialog-model"
import { useConnected } from "./component/use-connected"
@@ -294,7 +294,7 @@ export const run = Effect.fn("Tui.run")(function* (input: TuiInput) {
>
<ProjectProvider>
<SyncProvider>
<SyncProviderV2>
<DataProvider>
<ThemeProvider mode={mode}>
<LocalProvider>
<PromptStashProvider>
@@ -315,7 +315,7 @@ export const run = Effect.fn("Tui.run")(function* (input: TuiInput) {
</PromptStashProvider>
</LocalProvider>
</ThemeProvider>
</SyncProviderV2>
</DataProvider>
</SyncProvider>
</ProjectProvider>
</SDKProvider>
@@ -9,7 +9,7 @@ import { useEditorContext } from "../../context/editor"
import { useProject } from "../../context/project"
import { useSDK } from "../../context/sdk"
import { useSync } from "../../context/sync"
import { useSyncV2 } from "../../context/sync-v2"
import { useData } from "../../context/data"
import { getScrollAcceleration } from "../../util/scroll"
import { useTuiPaths } from "../../context/runtime"
import { useTuiConfig } from "../../config"
@@ -85,7 +85,7 @@ export function Autocomplete(props: {
const editor = useEditorContext()
const sdk = useSDK()
const sync = useSync()
const syncV2 = useSyncV2()
const syncV2 = useData()
const project = useProject()
const slashes = useCommandSlashes()
const modeStack = useOpencodeModeStack()
@@ -56,8 +56,8 @@ function prepend(messages: SessionMessage[], message: SessionMessage) {
messages.unshift(message)
}
export const { use: useSyncV2, provider: SyncProviderV2 } = createSimpleContext({
name: "SyncV2",
export const { use: useData, provider: DataProvider } = createSimpleContext({
name: "Data",
init: () => {
const [store, setStore] = createStore<{
messages: {
@@ -1,6 +1,6 @@
import type { TuiPlugin, TuiPluginApi } from "@opencode-ai/plugin/tui"
import type { BuiltinTuiPlugin } from "../builtins"
import { useSyncV2 } from "../../context/sync-v2"
import { useData } from "../../context/data"
import { SplitBorder } from "../../ui/border"
import { Spinner } from "../../component/spinner"
import { useTheme } from "../../context/theme"
@@ -44,7 +44,7 @@ function currentSessionID(api: TuiPluginApi) {
}
function View(props: { api: TuiPluginApi; sessionID: string }) {
const sync = useSyncV2()
const sync = useData()
const dimensions = useTerminalDimensions()
const { theme, syntax, subtleSyntax } = useTheme()
const messages = createMemo(() => sync.data.messages[props.sessionID] ?? [])
@@ -85,7 +85,7 @@ function View(props: { api: TuiPluginApi; sessionID: string }) {
>
<box height={1} />
<Show when={messages().length === 0}>
<MissingData label="Messages" detail="No v2 messages loaded from useSyncV2 yet." />
<MissingData label="Messages" detail="No v2 messages loaded from useData yet." />
</Show>
<For each={renderedMessages()}>
{(message, index) => (
@@ -5,7 +5,7 @@ import type { Event, GlobalEvent } from "@opencode-ai/sdk/v2"
import { onMount } from "solid-js"
import { ProjectProvider } from "../../../src/context/project"
import { SDKProvider } from "../../../src/context/sdk"
import { SyncProviderV2, useSyncV2 } from "../../../src/context/sync-v2"
import { DataProvider, useData } from "../../../src/context/data"
import { createEventSource, createFetch, directory, json } from "../../fixture/tui-sdk"
import { TestTuiContexts } from "../../fixture/tui-environment"
@@ -38,14 +38,14 @@ test("sync v2 refreshes references after updates", async () => {
data: requests === 1 ? [] : [{ name: "docs", path: "/docs", source: { type: "local", path: "/docs" } }],
})
})
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -54,9 +54,9 @@ test("sync v2 refreshes references after updates", async () => {
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -76,14 +76,14 @@ test("sync v2 refreshes references after updates", async () => {
test("sync v2 settles pending tools when a live failure arrives", async () => {
const events = createEventSource()
const calls = createFetch()
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -92,9 +92,9 @@ test("sync v2 settles pending tools when a live failure arrives", async () => {
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -205,14 +205,14 @@ test("sync v2 settles pending tools when a live failure arrives", async () => {
test("sync v2 renders admitted prompts only after promotion", async () => {
const events = createEventSource()
const calls = createFetch()
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -221,9 +221,9 @@ test("sync v2 renders admitted prompts only after promotion", async () => {
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -269,14 +269,14 @@ test("sync v2 renders admitted prompts only after promotion", async () => {
test("sync v2 renders a promoted prompt when admission was missed", async () => {
const events = createEventSource()
const calls = createFetch()
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -285,9 +285,9 @@ test("sync v2 renders a promoted prompt when admission was missed", async () =>
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -317,14 +317,14 @@ test("sync v2 renders a promoted prompt when admission was missed", async () =>
test("sync v2 projects live context updates with their message ID", async () => {
const events = createEventSource()
const calls = createFetch()
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -333,9 +333,9 @@ test("sync v2 projects live context updates with their message ID", async () =>
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -372,14 +372,14 @@ test("sync v2 preserves live events while snapshot hydration is in flight", asyn
if (url.pathname === "/api/session/session-1/message") return response.promise
return undefined
})
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -388,9 +388,9 @@ test("sync v2 preserves live events while snapshot hydration is in flight", asyn
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -422,14 +422,14 @@ test("sync v2 replaces stale cached rows while preserving in-flight live rows",
if (url.pathname === "/api/session/session-1/message") return response.promise
return undefined
})
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -438,9 +438,9 @@ test("sync v2 replaces stale cached rows while preserving in-flight live rows",
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>
@@ -491,14 +491,14 @@ test("sync v2 preserves snapshot order and metadata for in-flight updates", asyn
if (url.pathname === "/api/session/session-1/message") return response.promise
return undefined
})
let sync!: ReturnType<typeof useSyncV2>
let sync!: ReturnType<typeof useData>
let ready!: () => void
const mounted = new Promise<void>((resolve) => {
ready = resolve
})
function Probe() {
sync = useSyncV2()
sync = useData()
onMount(ready)
return <box />
}
@@ -507,9 +507,9 @@ test("sync v2 preserves snapshot order and metadata for in-flight updates", asyn
<TestTuiContexts>
<SDKProvider url="http://test" directory={directory} events={events.source} fetch={calls.fetch}>
<ProjectProvider>
<SyncProviderV2>
<DataProvider>
<Probe />
</SyncProviderV2>
</DataProvider>
</ProjectProvider>
</SDKProvider>
</TestTuiContexts>