You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
tui: markdown list text keeps old theme color after light/dark switch #55735
When I switch between light and dark color mode while opencode is running, the plain text in markdown list items keeps the old theme's color. Bold and inline code update fine, so in dark mode the list text ends up dark grey on dark and is hard to read. Same thing happens going dark to light. In the screenshots below you can see that also the list indicators like "-" are affected as well.
Switching to another tab / session and back fixes it, also restarting opencode.
Maybe also other elements are affected but this is the most prominent one for me and I encounter it daily.
Thanks for the clear report and screenshots. I reproduced this on v2.0.29, and it still happens on the latest dev (81200db).
Steps: start with the opencode theme in light mode, get a reply containing a markdown list, then switch to dark mode. Plain text and the - markers in the list items keep their light-mode colors (dark grey on dark), while bold, inline code and normal paragraphs update. The recording and screenshots below show it, and the script below reproduces it. Switching the session/tab and back still works around it, as you noted.
recording.mp4
Reproduction script (drive.ts)
import{Effect}from"effect"import{Llm,OpenCodeDriver}from"opencode-drive"// Repro for #55735: markdown list text keeps the old theme color after a light/dark switch.exportdefaultOpenCodeDriver.use({
...(process.env.OC_DEV ? {opencode: {dev: process.env.OC_DEV}} : {}),tui: {recording: true},tuiConfig: {theme: {name: "opencode",mode: "light"},keybinds: {"theme.switch_mode": "ctrl+y"}},},({ ui, llm })=>Effect.gen(function*(){yield*llm.queue(Llm.text("Here are three fruits:\n\n- Apple is **red** and `crisp`\n- Banana is yellow\n- Cherry is small\n\nPlain paragraph text after the list."),)yield*ui.submit("print a markdown list of three fruits")yield*ui.waitFor("Plain paragraph text")yield*Effect.sleep(1000)yield*ui.screenshot("1-light")// theme.switch_mode is bound to ctrl+y above (same as the "Switch to dark mode" command)yield*ui.press("y",{ctrl: true})yield*Effect.sleep(1500)yield*ui.screenshot("2-dark-after-switch")yield*ui.press("y",{ctrl: true})yield*Effect.sleep(1500)yield*ui.screenshot("3-light-again")}),)
Run it with opencode-drive: opencode-drive run ./drive.ts. It drives opencode from your PATH; set OC_DEV to the path of an OpenCode checkout to run that from source instead.
Taking this one. Markdown list runs keep their old theme color after a light/dark switch while other inline styles update, so the list path holds a stale style/binding — I'll find the stale binding in the TUI markdown/theme pipeline and pin it with a test.
Activity
uloco commentedon Oct 15, 2026
looks like table cells are also affected:
opencode-agent commentedon Oct 15, 2026
Thanks for the clear report and screenshots. I reproduced this on v2.0.29, and it still happens on the latest
dev(81200db).Steps: start with the
opencodetheme in light mode, get a reply containing a markdown list, then switch to dark mode. Plain text and the-markers in the list items keep their light-mode colors (dark grey on dark), while bold, inline code and normal paragraphs update. The recording and screenshots below show it, and the script below reproduces it. Switching the session/tab and back still works around it, as you noted.recording.mp4
Reproduction script (drive.ts)
Run it with opencode-drive:
opencode-drive run ./drive.ts. It drivesopencodefrom yourPATH; setOC_DEVto the path of an OpenCode checkout to run that from source instead.Finn763 commentedon Oct 16, 2026
Taking this one. Markdown list runs keep their old theme color after a light/dark switch while other inline styles update, so the list path holds a stale style/binding — I'll find the stale binding in the TUI markdown/theme pipeline and pin it with a test.