Skip to content

Chat motion: dedupe --chat-ease onto react-ui's real easing tokens - #243

Merged
TheGreatAxios merged 1 commit into
mainfrom
cl-ui-chat
Aug 21, 2026
Merged

Chat motion: dedupe --chat-ease onto react-ui's real easing tokens#243
TheGreatAxios merged 1 commit into
mainfrom
cl-ui-chat

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

  • packages/chat-ui/src/styles.css invented its own --chat-ease cubic-bezier instead of consuming react-ui's --ease-out (CL-6487 finding Bench chat defaults with per-channel context-window overrides #3). It now aliases var(--ease-out, ...), keeping the old curve only as a fallback for contexts without react-ui's theme stylesheet loaded.
  • The composer's auto-grow height transition (a resize-in-place, not an entrance) now uses --ease-in-out per DESIGN.md's explicit guidance, instead of the entrance curve every other --chat-ease transition in this file uses.
  • chat-workbench-loading-tip-fade was animating at 400ms, over DESIGN.md's 150–300ms motion ceiling; dropped to 280ms.

Context / audit findings already resolved on main

Investigated CL-6487/6488/6489 (the audit tickets backing this lane) against current main. Three of CL-6488's four "chat canon" criticals are already fixed by a prior commit (3429637b, merged via PR #221) even though the Linear ticket is still marked Todo:

  • Own messages are NOT right-aligned bubbles — .chat-bubble has no border/background/radius, and there is no row-reverse/[data-own] styling anywhere in the stylesheet.
  • The composer is NOT capped at 42rem — it's width: 100% in .chat-composer-stack/.chat-composer.
  • The tool-activity running/pending marker does NOT use brand --primary — it's var(--muted-foreground); only the failed state gets color, matching DESIGN.md's "color reserved for failure" rule.

Known gap (not fixed here — flagging honestly)

  • Model attribution per turn (CL-6488 finding Approvals: show who and where, badge needs-you in the shell #2): the mock's .when slot shows "10:03 · opus-5" for agent turns. MessageSender (packages/chat-ui/src/api.ts) has no model field, and no model is persisted onto a message anywhere in packages/chat today (it's resolved per-turn for the LLM call in inference-preferences.ts/platform-adapter.ts but never attached to the posted message). Closing this needs a wire schema change plus orchestrator work in packages/chat, which is out of this lane's chat-ui-only scope and risks colliding with sibling lanes — flagging rather than rushing a partial fix.
  • CL-6487's other findings (stale connection status polling, sidebar row-menu tap target, DESIGN.md/react-ui token reconciliation, .onboarding-phase-in 320ms) are outside the chat surface (Settings/Plugins/sidebar chrome) — left for the owning lane.
  • CL-6489 (shell/onboarding canon violations) is entirely outside chat scope.

Test plan

  • bun install in the fresh worktree (was missing @happy-dom/global-registrator), then bun test in packages/chat-ui: 650 pass / 0 fail
  • bunx prettier --write on the changed file (no changes needed — already formatted)
  • Manual read-through of timeline.tsx, tool-activity.ts/tool-activity-view.tsx, composer.tsx, chat-page.tsx, id-leak-guard.ts against mock-spec §12 — no further chat-scope gaps found beyond the model-attribution item above

The chat surface was inventing its own easing curve instead of consuming
react-ui's --ease-out, and the composer's in-place height transition used
an entrance curve where DESIGN.md calls for --ease-in-out. Also brings the
loading-tip fade under DESIGN.md's 300ms motion ceiling (was 400ms).
@TheGreatAxios
TheGreatAxios merged commit c6c684f into main Aug 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant