diff --git a/apps/desktop/src/components/chat/disclosure-row.tsx b/apps/desktop/src/components/chat/disclosure-row.tsx index 56cd6d9a3ddd..fc81ea867c70 100644 --- a/apps/desktop/src/components/chat/disclosure-row.tsx +++ b/apps/desktop/src/components/chat/disclosure-row.tsx @@ -55,7 +55,7 @@ export function DisclosureRow({ 'flex h-(--conversation-line-height) shrink-0 items-center justify-center transition-opacity duration-150', open ? 'opacity-80' - : 'opacity-0 group-hover/disclosure-row:opacity-80 group-focus-within/disclosure-row:opacity-80' + : 'opacity-(--disclosure-caret-rest) group-hover/disclosure-row:opacity-80 group-focus-within/disclosure-row:opacity-80' )} > diff --git a/apps/desktop/src/styles.css b/apps/desktop/src/styles.css index e304eb9487e9..b37d94bc2941 100644 --- a/apps/desktop/src/styles.css +++ b/apps/desktop/src/styles.css @@ -413,6 +413,9 @@ /* Tight gap between tool rows inside a single action group, so a back-to-back run still reads as one cohesive sequence. */ --tool-row-gap: 0.375rem; + /* Resting opacity of a disclosure caret — invisible until hover, except + where a surface opts into a faint hint of the affordance. */ + --disclosure-caret-rest: 0; /* Paragraph spacing — vertical gap between prose paragraphs, both inside a markdown block and between consecutive prose parts. Single knob; tweak freely. */ @@ -1548,6 +1551,14 @@ text-* variant utilities. */ .btn-arc { margin-block: var(--turn-block-gap); } +/* Thinking headers carry a faint resting caret. A run of them is the one place + the affordance isn't otherwise discoverable — every other disclosure sits in + a row you're already reaching for. The scaffold fade multiplies this, so the + painted value lands well under the number here. */ +[data-slot='aui_thinking-disclosure'] { + --disclosure-caret-rest: 0.4; +} + /* A streaming turn is sealed into several assistant bubbles as it goes (`message.interim`) and rehydrates into fewer, so the same two blocks are sometimes siblings inside one bubble and sometimes split across two. The