Add fourth zoom button that calculates bounding box of all active nodes
and zooms out to fit them all in viewport with padding.
- Add compress icon button to zoom controls in footer
- Implement zoomToFitAll() function with bounding box calculation
- Add 80px padding around nodes for visual breathing room
- Respect dynamic minimum zoom limit
- Center viewport on bounding box after zoom animation
- Register core:zoom-fit action for keyboard shortcut support
- Update documentation with new zoom-to-fit feature
Remove 5px grey space that appeared at bottom of canvas when scrolled
to maximum position. The viewport scrollHeight was 8005px instead of
8000px due to default browser SVG margins.
- Add explicit padding and margin resets to workspace chart container
- Set SVG to display:block with zero margin/padding to prevent spacing
- Ensures scrollable area exactly matches 8000px canvas dimensions
- Remove view:selection-changed listener to prevent minimap showing on node selection
- Remove view:navigate emissions from pan mode entry points (no longer shows when starting pan)
- Add view:navigate emission to touchpad scroll handler for consistent behavior
- Minimap now only appears during actual panning and zooming actions
The minimap previously showed when selecting nodes or just starting a pan gesture,
causing unnecessary flashing. Now it only appears during actual navigation (pan/zoom)
and fades after 2 seconds of inactivity.
- Prevent browser's native axis-locked scroll behavior
- Manually handle both deltaX and deltaY in wheel event handler
- Update touch-action CSS from pan-x pan-y to manipulation
- Add documentation of fix to CANVAS_INTERACTION.md
Fixes issue where trackpad scrolling was restricted to horizontal
or vertical movement only, not both simultaneously.