From 28aba35ff9b1d1fe58da24735a51299ffe1f65d0 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 16 Dec 2025 13:19:32 -0600 Subject: feat(desktop): show retries --- packages/ui/src/components/session-turn.css | 14 +++++++++ packages/ui/src/components/session-turn.tsx | 46 +++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 3 deletions(-) (limited to 'packages/ui/src') diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css index 5f95b2c30..c0408cb0c 100644 --- a/packages/ui/src/components/session-turn.css +++ b/packages/ui/src/components/session-turn.css @@ -238,6 +238,10 @@ justify-content: space-between; width: 100%; gap: 20px; + + [data-expandable="false"] { + pointer-events: none; + } } [data-slot="session-turn-file-info"] { @@ -323,6 +327,16 @@ height: 14px; } } + [data-slot="session-turn-retry-message"] { + font-weight: 500; + color: var(--syntax-critical); + } + [data-slot="session-turn-retry-seconds"] { + color: var(--text-weak); + } + [data-slot="session-turn-retry-attempt"] { + color: var(--text-weak); + } [data-slot="session-turn-details-text"] { font-size: 13px; /* text-12-medium */ diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index 5bf3c0bbd..ade9a04ab 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -3,7 +3,7 @@ import { useData } from "../context" import { useDiffComponent } from "../context/diff" import { getDirectory, getFilename } from "@opencode-ai/util/path" import { checksum } from "@opencode-ai/util/encode" -import { createEffect, createMemo, For, Match, onCleanup, ParentProps, Show, Switch } from "solid-js" +import { createEffect, createMemo, createSignal, For, Match, onCleanup, ParentProps, Show, Switch } from "solid-js" import { createResizeObserver } from "@solid-primitives/resize-observer" import { DiffChanges } from "./diff-changes" import { Typewriter } from "./typewriter" @@ -49,6 +49,29 @@ export function SessionTurn( }, ) const working = createMemo(() => status()?.type !== "idle") + const retry = createMemo(() => { + const s = status() + if (s.type !== "retry") return + return s + }) + const [retrySeconds, setRetrySeconds] = createSignal(0) + + createEffect(() => { + const r = retry() + if (!r) { + setRetrySeconds(0) + return + } + + const updateSeconds = () => { + const next = r.next + if (next) setRetrySeconds(Math.max(0, Math.round((next - Date.now()) / 1000))) + } + updateSeconds() + + const timer = setInterval(updateSeconds, 1000) + onCleanup(() => clearInterval(timer)) + }) let scrollRef: HTMLDivElement | undefined const [state, setState] = createStore({ @@ -300,10 +323,12 @@ export function SessionTurn( {/* Trigger (sticky) */}
setState("stickyTriggerRef", el)} data-slot="session-turn-response-trigger">
{/* Response */} - + 0}>
{(assistantMessage) => { -- cgit v1.2.3