From 094a2608f3f83675d84f4aa1e3956b483fa28fe6 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Sat, 21 Feb 2026 05:11:36 -0500 Subject: [PATCH 1/2] feat: add sidebar clock with toggle command --- packages/opencode/src/cli/cmd/tui/app.tsx | 14 ++++++++ .../cli/cmd/tui/routes/session/sidebar.tsx | 34 ++++++++++++++----- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index ab3d0968925..cc1fcdb887d 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -251,6 +251,7 @@ function App() { renderer.clearSelection() } const [terminalTitleEnabled, setTerminalTitleEnabled] = createSignal(kv.get("terminal_title_enabled", true)) + const [sidebarClockEnabled, setSidebarClockEnabled] = createSignal(kv.get("sidebar_clock_visible", true)) createEffect(() => { console.log(JSON.stringify(route.data)) @@ -652,6 +653,19 @@ function App() { dialog.clear() }, }, + { + title: sidebarClockEnabled() ? "Hide sidebar clock" : "Show sidebar clock", + value: "system.toggle.sidebar_clock", + category: "System", + onSelect: (dialog) => { + setSidebarClockEnabled((prev) => { + const next = !prev + kv.set("sidebar_clock_visible", next) + return next + }) + dialog.clear() + }, + }, ]) createEffect(() => { diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx index 42ac5fbe080..465925f2fa6 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx @@ -1,5 +1,5 @@ import { useSync } from "@tui/context/sync" -import { createMemo, For, Show, Switch, Match } from "solid-js" +import { createMemo, For, Show, Switch, Match, createSignal, onMount, onCleanup } from "solid-js" import { createStore } from "solid-js/store" import { useTheme } from "../../context/theme" import { Locale } from "@/util/locale" @@ -67,6 +67,19 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { sync.data.provider.some((x) => x.id !== "opencode" || Object.values(x.models).some((y) => y.cost?.input !== 0)), ) const gettingStartedDismissed = createMemo(() => kv.get("dismissed_getting_started", false)) + const showSidebarClock = createMemo(() => kv.get("sidebar_clock_visible", true)) + + const formatTime = () => { + const now = new Date() + return now.toLocaleTimeString("en-GB", { hour: "2-digit", minute: "2-digit", hour12: false }) + } + + const [clockTime, setClockTime] = createSignal(formatTime()) + + onMount(() => { + const interval = setInterval(() => setClockTime(formatTime()), 10000) + onCleanup(() => clearInterval(interval)) + }) return ( @@ -307,13 +320,18 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { {directory().split("/").slice(0, -1).join("/")}/ {directory().split("/").at(-1)} - - Open - - Code - {" "} - {Installation.VERSION} - + + + Open + + Code + {" "} + {Installation.VERSION} + + + {clockTime()} + + From f2ee82e30eaefac66db44e63d648176fe47a67f9 Mon Sep 17 00:00:00 2001 From: Ariane Emory Date: Mon, 23 Feb 2026 09:55:29 -0500 Subject: [PATCH 2/2] style: use brighter text color for sidebar clock --- packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx index 465925f2fa6..178f33e81a3 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/sidebar.tsx @@ -329,7 +329,7 @@ export function Sidebar(props: { sessionID: string; overlay?: boolean }) { {Installation.VERSION} - {clockTime()} + {clockTime()}