Skip to content

Add SVG animation editor with timeline, tweening and SMIL export - #292

Open
simonw wants to merge 3 commits into
mainfrom
claude/svg-animation-editor-rtxi4f
Open

Add SVG animation editor with timeline, tweening and SMIL export#292
simonw wants to merge 3 commits into
mainfrom
claude/svg-animation-editor-rtxi4f

Conversation

@simonw

Copy link
Copy Markdown
Owner

A keyframe animation studio in a single HTML file: draw rects,
ellipses, lines, polygons, text and bezier pen paths, then animate
them with a multi-track timeline. Auto-key records tweens when shapes
are edited away from existing keyframes, including path morphing of
pen geometry. Features per-keyframe cubic-bezier easing, onion
skinning, a layers panel, undo/redo, localStorage autosave, SVG
import, JSON project save/load and export to a self-contained
SMIL-animated SVG with spline easing.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01BRc6VWxYVrEgEzzrJ2mai3

A keyframe animation studio in a single HTML file: draw rects,
ellipses, lines, polygons, text and bezier pen paths, then animate
them with a multi-track timeline. Auto-key records tweens when shapes
are edited away from existing keyframes, including path morphing of
pen geometry. Features per-keyframe cubic-bezier easing, onion
skinning, a layers panel, undo/redo, localStorage autosave, SVG
import, JSON project save/load and export to a self-contained
SMIL-animated SVG with spline easing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BRc6VWxYVrEgEzzrJ2mai3
@claude

claudeBot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Claude encountered an error —— View job


I'll analyze this and get back to you.

- Use 100dvh so the timeline is not hidden under Safari's browser
chrome (body is overflow:hidden, so it was unreachable before)
- Stack the layout vertically on small screens: swipeable single-row
toolbar and transport, side-by-side properties/layers panel, and a
shorter timeline that always stays on screen
- Add a "fit" zoom mode (default on small screens) that scales the
canvas to the available space; the stage wrapper now uses flex +
margin:auto so oversized canvases scroll correctly in both axes
- Fix touch interaction: timeline tracks allow touch scrolling
(pan-x pan-y) while the ruler and keyframe diamonds remain
draggable (touch-action:none), with pointercancel cleanup
- Larger touch targets on coarse pointers: keyframe diamonds,
selection/rotate handles and path nodes
- Add a floating done/cancel bar while drawing pen paths and polygons
(no Enter/Escape keys on mobile)
- Inset timeline tracks by 8px so t=0 keyframes are not stuck under
the sticky label column
- maximum-scale=1 viewport stops iOS auto-zoom when focusing inputs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BRc6VWxYVrEgEzzrJ2mai3
@cloudflare-workers-and-pages

cloudflare-workers-and-pagesBot commented Jul 10, 2026

Copy link
Copy Markdown

Deploying tools with Cloudflare Pages Cloudflare Pages

Latest commit:3ad65f6
Status: ✅ Deploy successful!
Preview URL:https://47a3c28d.tools-b1q.pages.dev
Branch Preview URL:https://claude-svg-animation-editor.tools-b1q.pages.dev

View logs

@claude

claudeBot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Claude encountered an error —— View job


I'll analyze this and get back to you.

On phones the side panel now stays hidden by default so the canvas
gets the space; a floating "panel" button in the corner of the stage
toggles it. Fit zoom recalculates when the panel opens or closes.
Desktop layout is unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BRc6VWxYVrEgEzzrJ2mai3
@claude

claudeBot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Claude encountered an error —— View job


I'll analyze this and get back to you.

Sign up for freeto 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.

2 participants

@simonw@claude