Summary
From the zoom-rendering audit (Workspace CC).
PNG/JPEG file nodes render at their native resolution then get scaled by the camera matrix. Zoom in past ~2× and you see bilinear blur. No mipmap pyramid, no progressive resolution loading.
Proposed fix shape
The renderer maintains a downsampled cache (for zoom-out crispness) and requests higher-resolution variants from disk when:
- The source file has them (e.g.
image@2x.png, image@3x.png)
- OR the camera scale exceeds a threshold where the current resolution becomes visibly blurry
Approach:
- Downsampling cache — at parse / first-render time, generate a small thumbnail for zoom-out display
- Resolution selection — at render time, pick the cache entry whose native dimensions × scale ≈ the current display size in device pixels
- Progressive loading — when the camera zooms in past a threshold, kick off an async fetch of the original (or @2x / @3x variant) and swap in when ready
Acceptance criteria
Notes
The CC report flagged this as "out of scope for the Rust port's MVP but worth a backlog ticket on that project". This is a TS-renderer item that doesn't block the Rust port — the image pipeline is renderer-layer concern.
Sizing: L. Cache infrastructure, async loading, eviction policy, image-naming conventions are each their own design call.
Refs
Surfaced during the zoom-rendering improvements audit (Workspace CC).
Summary
From the zoom-rendering audit (Workspace CC).
PNG/JPEG file nodes render at their native resolution then get scaled by the camera matrix. Zoom in past ~2× and you see bilinear blur. No mipmap pyramid, no progressive resolution loading.
Proposed fix shape
The renderer maintains a downsampled cache (for zoom-out crispness) and requests higher-resolution variants from disk when:
image@2x.png,image@3x.png)Approach:
Acceptance criteria
useImageCache.tshook + lifecycle)@Nxdiscovery)Notes
The CC report flagged this as "out of scope for the Rust port's MVP but worth a backlog ticket on that project". This is a TS-renderer item that doesn't block the Rust port — the image pipeline is renderer-layer concern.
Sizing: L. Cache infrastructure, async loading, eviction policy, image-naming conventions are each their own design call.
Refs
Surfaced during the zoom-rendering improvements audit (Workspace CC).