Skip to content

Feat: View animation system with smooth camera transitions#86

Merged
arossti merged 7 commits intomainfrom
Animate
Feb 10, 2026
Merged

Feat: View animation system with smooth camera transitions#86
arossti merged 7 commits intomainfrom
Animate

Conversation

@arossti
Copy link
Owner

@arossti arossti commented Feb 10, 2026

Summary

  • New rt-animate.js module: smooth camera animation between saved views using slerp + smoothstep easing
  • Per-view timing controls (T button with HiFi popup slider, 1–24s)
  • Preview loop (▶/■ toggle), Batch SVG export, Animated SVG+SMIL export
  • Workplan documenting Phase 6 dual-row UI (Camera vs Camera + Scene)

Changes

  • modules/rt-animate.js — New module (409 lines): animateToView(), previewAnimation(), exportBatch(), exportAnimation(), _assembleSMIL()
  • modules/rt-init.js — Import and init RTAnimate after ViewManager
  • modules/rt-viewmanager.js — ▶ delegates to RTAnimate, T button + timing popup, transitionDuration in view data model
  • index.html — Preview/Batch/Animation button row with green ▶ / red ■ icons
  • art.css — Timing button styling
  • Geometry documents/Animations.md — Full workplan with state machine spec, Phases 1–6, known bugs

Test plan

  • Load app, save 2+ views, click ▶ — camera should slerp smoothly
  • Click T on a view row — HiFi slider popup (1–24s) appears, updates timing
  • Click Preview (▶) — loops through all views, toggles to ■ Stop
  • Click ▶ on a specific view during Preview — exits loop, animates to that view
  • Click Batch — downloads individual SVGs for each saved view
  • Click Animation — downloads single animated SVG+SMIL file
  • Import/export views — transitionDuration persists

🤖 Generated with Claude Code

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 andy@openbuilding.ca

Complete spec for rt-animate.js module: smooth camera transitions,
timing controls, Preview/Stop/▶ cancel logic, SVG+SMIL export,
and Python favicon build pipeline.

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
New rt-animate.js module with slerp + smoothstep easing. The ▶ button
now animates the camera instead of snapping. Includes cancel/retarget
logic for interrupting mid-animation.

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
T button on each view row shows transition duration (1-24s). Click
opens a HiFi LED slider popup. Workplan updated with Phase 5: drag
reorder, object dissolve per view, and Papercut opacity guard.

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
Preview loops through all views with Stop toggle. Batch exports
individual SVGs. Animation exports SVG+SMIL with interpolated frames.
Fix: preview loop no longer self-cancels (cancelPreview flag).

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
Replace Preview/Stop text with green ▶ / red ■ icons (14px).
Add 8px margin-top for breathing room between button rows.

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
Interactive mode (▶/Preview) = camera-only for creative exploration.
Export mode (Batch/Animation) = full state restore via loadView().
Noted cutplane state regression when ▶ switched to animateToView().

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
Scope broadened beyond favicon to general animation system.
Phase 6: two button rows — "Camera" (camera-only) and "Camera + Scene"
(full state restore with cutplanes, object dissolve, projections).
Resolves cutplane bug by design — each row has clear intent.

🤖 Co-Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Andy🤦‍♂️ & Claude🤖 <andy@openbuilding.ca>
@github-actions
Copy link

🤖 Claude Code Review

Looking through the provided PR diff and file contents, I notice this PR only adds a markdown documentation file (Animations.md) which contains a detailed design specification for an animation system.

Since this PR only contains documentation and no actual code implementation, there are no code quality issues to report.

No issues found.


ℹ️ About this review

This automated review checks for:

  • Debug statements (console.log)
  • Commented-out code
  • Code duplication
  • Large functions (>50 lines)
  • Unused variables

Human review required - these are suggestions only.
Diff size: 56971 bytes

@arossti arossti self-assigned this Feb 10, 2026
@arossti arossti merged commit 77d8b3f into main Feb 10, 2026
3 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

Comments