Skip to content

feat(cycle-7): polish — bezier canvas, signal animation, traces UI#12

Open
sameerchereddy wants to merge 1 commit intomainfrom
feat/cycle-7-polish
Open

feat(cycle-7): polish — bezier canvas, signal animation, traces UI#12
sameerchereddy wants to merge 1 commit intomainfrom
feat/cycle-7-polish

Conversation

@sameerchereddy
Copy link
Copy Markdown
Owner

@sameerchereddy sameerchereddy commented Apr 10, 2026

Summary

  • Animated Bezier Canvas: Replaced straight spokes with routed SVG bezier connectors; signal dots travel each connector via animateMotion+mpath; active connector highlights and dot accelerates during live WS events; block/tool nodes glow when processing
  • Traces API + UI: GET /api/traces and GET /api/traces/{id} endpoints (asyncpg); TracesPage with agent filter, skeleton loader, fade-in rows; TraceDetailPage with iteration-by-iteration ReAct breakdown and token usage
  • Onboarding polish: 3-step flow with staggered animations and personalized greeting
  • Backend wiring: auto-seed default tools on agent create; enabled_tool_keys passed through to run_react_loop; system prompt guidance to reduce unnecessary tool calls
  • Animations: slideIn, scaleIn, nodeGlow keyframes + utility classes in index.css

Test plan

  • Create a new agent — confirm default tools are seeded automatically
  • Run an agent through a multi-tool task — watch bezier connectors animate and active node glow
  • Open Traces list — confirm skeleton loader then fade-in rows; filter by agent
  • Open a trace detail — confirm per-iteration ReAct breakdown and token counts
  • Complete onboarding flow — confirm 3-step staggered animations and personalized greeting
  • Verify GET /api/traces and GET /api/traces/{id} return correct data

Canvas:
- Replaced straight spoke lines with routed bezier SVG connectors
  (vertical exit for top/bottom blocks, horizontal for left/right)
- SVG uses viewBox="0 0 100 100" + preserveAspectRatio="none" —
  eliminates ResizeObserver/canvasSize; block % positions map directly
- Animated signal dots travel along each connector via animateMotion+mpath
- activeNodeKey state tracks which block is live per WS event;
  active connector highlights and dot accelerates
- Block/tool nodes glow via animate-node-glow when processing
- Colors via style={} (CSS inline) so hsl(var(--channel)) resolves correctly

Backend:
- traces.py: GET /api/traces + GET /api/traces/{id} with asyncpg
- run.py: passes enabled_tool_keys to run_react_loop
- agents.py: auto-seeds default tools on create; seed-defaults endpoint
- loop.py: system prompt guidance to avoid unnecessary tool calls
- main.py: registers traces router

Frontend:
- TracesPage: list with agent_id filter, skeleton loader, fade-in rows
- TraceDetailPage: iteration-by-iteration ReAct breakdown, token usage
- OnboardingPage: 3-step flow with staggered animations, personalized greeting
- index.css: slideIn/scaleIn/nodeGlow keyframes + utility classes
@github-actions
Copy link
Copy Markdown

🤖 AI Code Review

AI review unavailable.


Reviewed by GitHub Models (gpt-4o) · Not a substitute for human review

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