2bbbc5e283
The relay web client re-fetched every macro image through the relay->desktop proxy on each render (tab switch, WS update) and revoked the object URL on load, so nothing was reused and fetches were serial — slow to display. - Client: cache image_path -> Promise<objectURL> and reuse across renders (macro images are content-addressed by uuid, so immutable); fetch in parallel and de-duplicate concurrent requests. - Proxy: send Cache-Control: private, max-age=31536000, immutable on image responses so the browser also disk-caches them across reloads. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>