Commit Graph

864 Commits

Author SHA1 Message Date
Kit Langton
82a29ba9b9 fix(ui): add top padding to text parts after tool calls
Text/reasoning parts get 8px top padding inside the GrowBox body
so it animates with height. Tool/context parts stay at 0.
2026-03-04 21:47:26 -05:00
Kit Langton
7ebf1c3707 fix(ui): keep interrupted copy row left-aligned 2026-03-04 21:47:26 -05:00
Kit Langton
24bcc96511 fix(ui): unify turn row heights and remove inter-part gaps
Standardize all turn rows (tool calls, thinking, diff summary) to 36px
height with zero gaps between them. Previously rows were 32px with
varying gaps (2px/6px/8px/12px) causing inconsistent spacing and a
margin-top pop when the thinking indicator's gap changed reactively.

- Collapsible trigger: 32px -> 36px
- Thinking box: min-height 32px -> height 36px, gap removed (was 12px)
- Diff summary trigger: min-height 24px -> height 36px, gap removed
- Part gaps: removed all inter-part padding-top (was 0/2/6px)
- User message GrowBox: removed 8px gap
- Thread working prop to text parts for copy button visibility
- Wrap copy button in animated GrowBox with open/close transitions
- Simplify thinking show/hide by removing delay timer and using
  entry gate to prevent animation before live signal
- Batch optimistic message updates to prevent animate race condition
2026-03-04 21:47:25 -05:00
Kit Langton
7e5477c7c4 fix(ui): close tool-output css block for app build 2026-03-04 21:47:25 -05:00
Kit Langton
a0296094c5 fix(ui): preserve SolidJS reactivity and clean up minor issues
Use splitProps instead of JS destructuring in ToolCallRoot to preserve
reactivity on forwarded props. Extract fade helpers in GrowBox to
deduplicate opacity/filter/blur patterns across mount and toggle paths
(also fixes mount fade-in cleanup not checking open() state). Simplify
redundant getDirectory ternary guards and contextToolSummary iteration.
2026-03-04 21:47:25 -05:00
Kit Langton
7add2e67c3 chore(ui): add skill label translations 2026-03-04 21:47:24 -05:00
Kit Langton
a16d77b08d fix(app/ui/opencode): align tool detail reveal timing and turn animation gating 2026-03-04 21:47:24 -05:00
Kit Langton
4e05d3487c fix(app/ui): resolve rebase regressions 2026-03-04 21:47:23 -05:00
Kit Langton
9cba8f9349 fix(ui): inline turn diff summary under assistant text 2026-03-04 21:47:23 -05:00
Kit Langton
45eb4be7f2 refactor(ui): standardize tool call variants 2026-03-04 21:47:23 -05:00
Kit Langton
8851c619b4 fix(ui): speed up nested collapsible panels 2026-03-04 21:47:23 -05:00
Kit Langton
418ecc7073 fix(ui): align defer behavior for animated tools 2026-03-04 21:47:22 -05:00
Kit Langton
55762b2bbb fix(ui): restore in-flow user copy row spacing 2026-03-04 21:47:22 -05:00
Kit Langton
0ce963bfb3 fix(ui): keep apply_patch tool collapsed by default 2026-03-04 21:47:22 -05:00
Kit Langton
6f8f0d1830 fix(ui): fix backfill scroll preservation for column-reverse
Disable browser scroll anchoring (overflow-anchor: none) which
interferes with column-reverse, and restore scrollTop synchronously
before paint instead of in rAF with delta math.
2026-03-04 21:47:21 -05:00
Kit Langton
969f434769 fix(ui): restore patch collapse behavior and add user message entry spacing 2026-03-04 21:47:21 -05:00
Kit Langton
49f55ae426 fix(ui): fix user message animation and smooth BasicTool toggle
- Pass props.animate (not live()) to Message so user message GrowBox
  mounts with animate=true and properly runs height + fade animation
- Remove Math.ceil from BasicTool height spring to prevent 1px jitter
- Remove rAF debounce from BasicTool ResizeObserver for same-frame updates
- Use live() for AssistantParts to defer animation until streaming starts
2026-03-04 21:47:21 -05:00
Kit Langton
28538bc65d fix(ui): use column-reverse for jitter-free bottom-anchored scrolling
Switch the scroll viewport to flex-direction: column-reverse so the
browser natively anchors to the bottom (scrollTop=0 = bottom). This
eliminates the 1-frame jitter between content height changes and scroll
position updates. Update all scrollTop math across auto-scroll, scroll
spy, gesture detection, hash scroll, and custom thumb to account for
the inverted coordinate system.
2026-03-04 21:47:21 -05:00
Kit Langton
1b9ca3da27 fix(ui): eliminate auto-scroll jitter and add compositor hints
Remove rAF debounce from ResizeObserver callback in createAutoScroll
so scrollToBottom fires in the same frame as layout changes (no 1-frame
lag). Add GPU layer promotion (translateZ) on GrowBox and layout
containment on assistant content to reduce cross-element repaint.
2026-03-04 21:47:20 -05:00
Kit Langton
c96a3b15c5 fix(ui): remove legacy shell submessage width style 2026-03-04 21:47:20 -05:00
Kit Langton
21b6a5f5fd fix(ui): reduce height animation jitter in GrowBox and thinking box
- Remove Math.ceil rounding from spring animation frames to eliminate
  1px oscillation during height transitions
- Add will-change:height and contain:layout style during active springs
  for better compositor performance
- Replace blanket ResizeObserver gate with spring target deduplication
  so genuine content changes can re-target mid-flight without feedback loops
- Apply same Math.ceil removal and will-change/contain hints to the
  thinking box show/hide animations in session-turn
2026-03-04 21:47:19 -05:00
Kit Langton
474e2e5165 fix(ui): smooth timeline motion and auto-scroll during tool updates 2026-03-04 21:47:19 -05:00
Kit Langton
eadd42bfe1 feat(ui): add gradient wipe reveal for tool metadata 2026-03-04 21:47:19 -05:00
Kit Langton
b939299a0f wip: checkpoint tool-call motion and timeline animation fixes 2026-03-04 21:47:18 -05:00
Kit Langton
bc56419124 fix(ui): keep TextShimmer mounted for smooth transitions, move shell submessage fade to JS
- Fix 6 instances where TextShimmer was destroyed/recreated via <Show>
  swap instead of toggling active prop (bash, webfetch, edit, write,
  context tools, basic-tool fallback)
- Move shell submessage opacity/blur from CSS transitions to animate()
  so they respect the animate prop and don't fire on page load
- Remove data-visible attribute pattern, all animation now driven by
  Motion's animate() when animate=true
2026-03-04 21:46:52 -05:00
Kit Langton
55ab1f094c feat(ui): spring width animation for shell submessage, replace TextOdometer with TextReveal
- Shell submessage now uses Motion's animate() with width: "auto" for
  spring-driven width reveal instead of CSS grid 0fr→1fr transition
- Skip animation on page load (sawPending flag), only animate live tool calls
- Fix baseline alignment with overflow: clip instead of overflow: hidden
- Replace TextOdometer with TextReveal in production (session-turn, todo-dock)
- Remove TextOdometer component, CSS, and stories
- Add TextReveal to thinking-heading story
- Update shell submessage story with visualDuration/bounce sliders
2026-03-04 21:46:52 -05:00
Kit Langton
14f88ae889 feat(ui): spring animations for composer mode toggle and tray transitions
Add spring-based animations to the prompt input composer:
- Mode toggle (shell/conversation) indicator uses spring cubic-bezier
- Submit and plus buttons animate with individual scale, opacity, and blur
- Tray items (agent, model, variant selectors) crossfade with spring
- Shell label animates in/out opposite to normal mode controls
- Add TextStrikethrough component for todo item completion
- Add truncate support to TextReveal
- Wire up count mask/height/width props through composer region
2026-03-04 21:46:51 -05:00
Kit Langton
9d53b3a221 wip: checkpoint todo panel + odometer motion work 2026-03-04 21:46:46 -05:00
Kit Langton
0ad0d84402 chore(storybook): simplify animated count story locales 2026-03-04 21:46:30 -05:00
Kit Langton
33b6ba68fc refactor(ui): simplify text shimmer API and story controls 2026-03-04 21:46:30 -05:00
Kit Langton
90345c57e1 tweak(ui): shimmering titles and animated counts 2026-03-04 21:46:29 -05:00
Brendan Allan
db3eddc51f ui: rely on task part href instead of onClick handler (#15978) 2026-03-04 16:41:20 +08:00
Brendan Allan
5cf235fa6c desktop: add electron version (#15663) 2026-03-04 15:12:34 +08:00
Adam
70c6fcfbbf chore: cleanup 2026-03-03 10:25:49 -06:00
Adam
fa45422bf9 chore: cleanup 2026-03-03 07:10:52 -06:00
Adam
7305fc044d chore: cleanup 2026-03-03 06:20:48 -06:00
Adam
e4af1bb422 fix(app): timeline jank 2026-03-03 05:35:15 -06:00
Adam
5e8742f431 fix(app): timeline jank 2026-03-03 05:35:15 -06:00
opencode-agent[bot]
b5dc6e670a chore: generate 2026-03-02 22:25:39 +00:00
Kit Langton
9d7852b5c3 Animation Smorgasbord (#15637)
Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com>
2026-03-02 16:24:32 -06:00
David Hill
0a3a3216db ui: move session review bottom padding
Remove bottom padding from the scroll wrapper and apply it to the accordion content instead.
2026-03-02 16:19:35 +00:00
David Hill
633a3ba03a ui: avoid session review header clipping
Move the session review header outside the scroll viewport and drop strict containment so shadows can render without being cropped.
2026-03-02 16:05:16 +00:00
David Hill
d60696ded8 ui: tighten scroll thumb and review padding
Keep the scroll thumb visually slim (4px) while preserving a 12px drag target, and remove extra right padding in session review content.
2026-03-02 15:37:41 +00:00
David Hill
4c2aa4ab90 ui: widen scroll thumb hit area
Make the thumb overlay 12px wide while keeping the visible bar 6px centered for easier hover/drag.
2026-03-02 15:26:55 +00:00
David Hill
51e6000194 core: keep review header buttons visible when scroll thumb shows 2026-03-02 14:59:12 +00:00
Filip
bf2cc3aa2f feat(app): show which messages are queued (#15587) 2026-03-02 13:27:34 +05:30
Filip
b15fb21191 feat(app): add compact ui (#15578) 2026-03-01 08:41:47 -06:00
Filip
c8866e60ba fix(app): make provider icon resolved id reactive (#15583) 2026-03-01 08:40:04 -06:00
Filip
438610aa64 fix(app): show proper usage limit errors (#15496) 2026-03-01 06:48:11 -06:00
mridul
971bd30516 fix(app): fallback to synthetic icon for unknown provider IDs (#15295) 2026-02-28 15:13:23 -06:00