Skip to content

feat(web): animate task completion segments - #10259

Closed
saphid wants to merge 2 commits into
pingdotgg:mainfrom
saphid:feat/composer-task-progress-motion
Closed

saphid wants to merge 2 commits into
pingdotgg:mainfrom
saphid:feat/composer-task-progress-motion

Conversation

@saphid

@saphid saphid commented Sep 6, 2026 •

Copy link
Copy Markdown
Contributor

Task progress segments in the composer tasks badge switch from grey to green instantly, which makes a real task completion easy to miss.

What changed

Each segment now holds a decorative green fill that scales in from the left over 180 ms (transition-transform duration-180 ease-out) when its task completes. The current-task label and completed count still update immediately. Existing history renders at its current state, and motion-reduce:transition-none skips the tween for reduced-motion users. This uses plain Tailwind classes like the rest of apps/web, with no JS animation library and no new dependency. Only the web/desktop badge (ComposerTasksBadge.tsx) changes; the native mobile client is out of scope.

Related: #10250. Task-row status semantics landed separately in #10128.

Media

These recordings come from an earlier revision that animated the same 180 ms ease-out transform with Motion. The current code swaps Motion for an equivalent CSS transition, and I haven't re-recorded it. They show the real ComposerTasksBadge with a synthetic task sequence in an isolated Vite app (dark theme, 1280×800).

Before:

Before: task completion changes the segment immediately

After:

After: the completion segment fills while count and task text update

Before video · After video

Verification

Rebased onto main at 211618f. Targeted vp lint apps/web/src/components/chat/ComposerTasksBadge.tsx and apps/web typecheck both pass. The change is class-only, so there's no new unit test.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Coordination trace: T3 thread e10b5b61-fcab-4631-ad0c-e9b702dcb786

Model and harness: GPT-6 Astra medium in Codex/T3 Code (implementation); Claude Opus 5 in Claude Code (rebase and review-readiness).

🤖 Generated with Claude Code

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 6, 2026
Comment thread apps/web/src/components/chat/ComposerTasksBadge.tsx Outdated
@saphid

saphid commented Sep 8, 2026

Copy link
Copy Markdown
Contributor Author

Integrated pass in a real client (web, worktree build at head 94e5450, isolated state, real provider turns): ChatView lifecycle is healthy across multiple provider-driven turns (task creation, file edits, completion) — no crashes, no console errors, composer/banners/stash all behave.

One gap I could not close: the tasks badge itself never renders because no provider available to me emits plan events. The CC (claudeAgent) harness exposes no TodoWrite tool, and native Codex (0.153.4 via app-server) turns completed without any turn.plan.updated events (model reports update_plan as unavailable; confirmed zero plan events in orchestration_events). So the badge + tween path remains exercised only by the isolated fixture, not by a live provider turn. If a maintainer has a provider config that does emit plan updates, I'd appreciate a heads-up — otherwise this may be worth a note in the PR on which provider setups actually surface the badge.

Reduced motion remains verified by the component tests (useReducedMotion → duration: 0); I couldn't emulate the media query in the automation browser. Holding in draft until the plan-event path is demonstrated live.

@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 8, 2026
@saphid
saphid force-pushed the feat/composer-task-progress-motion branch from ed8a006 to aad8b0d Compare September 11, 2026 07:52
@maria-rcks maria-rcks closed this Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants