Purpose
Add a configurable workspace camera animation mode so users can choose whether workspace pan and zoom changes remain immediate (Minimal) or transition smoothly (Smooth) during scroll and zoom gestures. Minimal preserves the current direct behavior. Smooth should feel comparable to canvas tools such as Miro: zooming in or out eases toward the target view instead of snapping instantly.
Agent Execution Mode
Agent Routing Hints
- Lead agent:
developer.
- Suggested specialist agents:
test-engineer, performance-engineer, a11y-auditor, verifier.
- Primary area label:
area: workspace.
- Expected write ownership:
packages/keiko-ui/src/app/components/desktop/** and focused tests for workspace camera behavior.
Existing Capability Review
Expected Verification
Scope
- Add a workspace camera animation mode with the values
Minimal and Smooth.
- Preserve current scroll and zoom behavior when
Minimal is active.
- Add smooth interpolation for viewport pan and zoom changes when
Smooth is active.
- Keep the canonical workspace state model owned by
useWorkspace and rendered by the existing DOM workspace.
- Respect reduced-motion preferences so users who prefer less motion are not forced into animated camera transitions.
- Cover the behavior with focused tests and relevant local CI checks.
Out of Scope
- New canvas or graph substrate adoption.
- Server-side persistence, account-level preferences, or new BFF routes.
- Reworking workspace object layout, window registry, connection rendering, fit-to-view, grouping, or keyboard graph navigation.
- Large-scale visual redesign of the workspace shell.
Deliverables
Acceptance Criteria
Engineering Notes
- ADR-0026 establishes
useWorkspace as the workspace editor, the DOM as renderer, and View { zoom, x, y } as the canonical camera record.
- ADR-0027 keeps workspace UI state ownership in
keiko-ui; this feature should not add a new durable store.
- ADR-0028 should be respected if commands/events are touched; viewport animation should not alter undo semantics.
- Keep runtime dependencies minimal. Prefer
requestAnimationFrame, deterministic easing, and cleanup on unmount over adding an animation library.
- The smooth path should animate display projection while preserving a single canonical target view to avoid drift, stale persistence, or inconsistent connection rendering.
Purpose
Add a configurable workspace camera animation mode so users can choose whether workspace pan and zoom changes remain immediate (
Minimal) or transition smoothly (Smooth) during scroll and zoom gestures.Minimalpreserves the current direct behavior.Smoothshould feel comparable to canvas tools such as Miro: zooming in or out eases toward the target view instead of snapping instantly.Agent Execution Mode
Agent Routing Hints
developer.test-engineer,performance-engineer,a11y-auditor,verifier.area: workspace.packages/keiko-ui/src/app/components/desktop/**and focused tests for workspace camera behavior.Existing Capability Review
useWorkspacecamera state and DOM workspace renderer will be reused.Expected Verification
ci.Minimal,Smooth, and reduced-motion behavior.Scope
MinimalandSmooth.Minimalis active.Smoothis active.useWorkspaceand rendered by the existing DOM workspace.Out of Scope
Deliverables
Minimalparity.Minimal.Acceptance Criteria
Minimalmode keeps current workspace pan and zoom behavior immediate.Smoothmode eases scroll and zoom camera changes toward the target view without changing final coordinates or zoom constraints.Smoothis selected.useWorkspace/Workspace.tsxsubstrate and does not introduce a parallel camera state owner.cipipeline.Engineering Notes
useWorkspaceas the workspace editor, the DOM as renderer, andView { zoom, x, y }as the canonical camera record.keiko-ui; this feature should not add a new durable store.requestAnimationFrame, deterministic easing, and cleanup on unmount over adding an animation library.