summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ui/src/components')
-rw-r--r--packages/ui/src/components/session-turn.css6
-rw-r--r--packages/ui/src/components/session-turn.tsx19
2 files changed, 24 insertions, 1 deletions
diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css
index 9887ce2fc..414e8a359 100644
--- a/packages/ui/src/components/session-turn.css
+++ b/packages/ui/src/components/session-turn.css
@@ -560,6 +560,12 @@
overflow-y: auto;
}
+ .retry-error-link,
+ .error-card-link {
+ color: var(--text-strong);
+ text-decoration: underline;
+ }
+
[data-slot="session-turn-collapsible-content-inner"] {
width: 100%;
min-width: 0;
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx
index 9ffa671e6..c03622105 100644
--- a/packages/ui/src/components/session-turn.tsx
+++ b/packages/ui/src/components/session-turn.tsx
@@ -436,6 +436,11 @@ export function SessionTurn(
if (s.type !== "retry") return
return s
})
+ const isRetryFreeUsageLimitError = createMemo(() => {
+ const r = retry()
+ if (!r) return false
+ return r.message.includes("Free usage exceeded")
+ })
const response = createMemo(() => lastTextPart()?.text)
const responsePartId = createMemo(() => lastTextPart()?.id)
@@ -691,10 +696,22 @@ export function SessionTurn(
{(() => {
const r = retry()
if (!r) return ""
- const msg = unwrap(r.message)
+ const msg = isRetryFreeUsageLimitError()
+ ? i18n.t("ui.sessionTurn.error.freeUsageExceeded")
+ : unwrap(r.message)
return msg.length > 60 ? msg.slice(0, 60) + "..." : msg
})()}
</span>
+ <Show when={isRetryFreeUsageLimitError()}>
+ <a
+ href="https://opencode.ai/zen"
+ target="_blank"
+ class="retry-error-link"
+ rel="noopener noreferrer"
+ >
+ {i18n.t("ui.sessionTurn.error.addCredits")}
+ </a>
+ </Show>
<span data-slot="session-turn-retry-seconds">
ยท {i18n.t("ui.sessionTurn.retry.retrying")}
{store.retrySeconds > 0