# Motion Polish Pass - Status: `completed` - Owner: `codex` - Date: `2026-03-25` ## Goal Run a second polish pass focused on interaction motion across six existing component surfaces. The goal is to add the missing sense of staged, spatial feedback described in `DESIGN.md` without introducing a second motion language, widening public APIs unnecessarily, or making the system feel busy. ## Scope - In scope: - add polished active-guide, tooltip, and marker motion to `Chart` - add a one-time sweep and value count-up feel to `Gauge` - add shared active-pill motion to `Tabs` and `SegmentedControl` - add lighter interaction transitions to the newly polished `DataTable` - add subtle media float/breathe and CTA stagger to `EmptyState` - add active-row glide, list crossfade, and softer loading treatment to `Command` and `Combobox` - update the nearest stories and tests when behavior changes need review or coverage - Out of scope: - introducing new animation dependencies - changing shared token files unless the main thread explicitly decides it is necessary - turning core surfaces into ambient animation showcases ## Constraints - Respect reduced motion and the repo's current Material-runtime design direction. - Favor `transform`, `opacity`, `box-shadow`, and state-driven transitions over layout-heavy motion. - Keep each worker on an isolated write scope. - Preserve existing public component contracts unless a small compatibility-safe extension is justified. - Do not revert or overwrite unrelated in-progress repo changes. ## Affected Surfaces - `packages/ui/src/components/chart*` - `packages/ui/src/components/gauge*` - `packages/ui/src/components/tabs*` - `packages/ui/src/components/segmented-control*` - `packages/ui/src/components/data-table*` - `packages/ui/src/components/empty-state*` - `packages/ui/src/components/command*` - `packages/ui/src/components/combobox*` - `apps/docs/src/components/chart.stories.tsx` - `apps/docs/src/components/gauge.stories.tsx` - `apps/docs/src/components/tabs.stories.tsx` - `apps/docs/src/components/segmented-control.stories.tsx` - `apps/docs/src/components/data-table.stories.tsx` - `apps/docs/src/components/empty-state.stories.tsx` - `apps/docs/src/components/command.stories.tsx` - `apps/docs/src/components/combobox.stories.tsx` - `docs/exec-plans` ## Plan 1. Write a dedicated execution plan for the motion pass so the second round of work is resumable. 2. Dispatch six isolated workers, each owning one motion slice and its closest tests/docs. 3. Review the combined result set in the main thread and fix any compatibility or API-semantics issues before broader validation. 4. Run focused component, typecheck, and docs validation on the combined motion changes. 5. Record results, remaining risks, and any intentionally deferred motion refinements. ## Validation - `pnpm --filter @ai-ui/ui exec vitest run ` - `pnpm --filter @ai-ui/ui exec tsc --noEmit` - `pnpm --dir apps/docs exec tsc --noEmit` - `pnpm build:docs` ## Orchestration Task Sketch - `T1`: polish `Chart` motion - `T2`: polish `Gauge` motion - `T3`: polish `Tabs` and `SegmentedControl` motion - `T4`: polish `DataTable` motion - `T5`: polish `EmptyState` motion - `T6`: polish `Command` and `Combobox` motion - `T7 -> T1,T2,T3,T4,T5,T6`: integrate results and validate ## Status Log - `2026-03-25 16:45` started the motion-focused second pass after confirming the current component state from the first visual polish round - `2026-03-25 16:47` wrote the motion pass plan and prepared six isolated worker slices with main-thread integration reserved for compatibility fixes and validation - `2026-03-25 16:59` all six motion slices returned from delegated workers: `Chart`, `Gauge`, `Tabs/SegmentedControl`, `DataTable`, `EmptyState`, and `Command/Combobox` - `2026-03-25 17:00` validated the combined result set with targeted Vitest coverage, `pnpm --filter @ai-ui/ui exec tsc --noEmit`, `pnpm --dir apps/docs exec tsc --noEmit`, and `pnpm build:docs`