anomalyco / anomalyco/opencode

[Desktop] Tool status title animates width on state swaps (small layout churn)

Open
#48,697 0 comments 0 reactions 1 assignee View on GitHub

@Brendonovich is already working on this.

Since Sep 12, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Description

ToolStatusTitle (the "Gathering context" → "Gathered context" label) writes an explicit pixel width during the text swap, and the CSS transitions that width over 480ms (packages/session-ui/src/components/tool-status-title.css:23). Each frame of that transition recalculates style and layout.

Removing just the width transition keeps the existing crossfade (opacity/filter/transform) and lets the width snap.

Measured in a real desktop instance (1.18.29, via CDP) forcing 125 swaps in 2s:

  • before: RecalcStyleDuration +0.081s, LayoutDuration +0.005s
  • after: 0.000s / 0.000s

Real-world frequency is low (roughly once per turn, when the context group label flips), so this is a small cleanup rather than a big win. No rest-state visual change.

Plugins

none

OpenCode version

OpenCode Desktop 1.18.29

Steps to reproduce
  1. Open a session and run a turn that gathers context (file reads/searches)
  2. Watch the "Gathering context" label swap to "Gathered context"
  3. In DevTools Performance, style/layout recalculation runs every frame during the 480ms swap
Screenshot and/or share link

No screenshot — no visual difference at rest.

Operating System

CachyOS (Arch Linux), KDE Plasma 6.7.5, Wayland

Terminal

n/a (desktop app)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.