* Render cloud strategy images from their URL on web Opening a cloud strategy with an image on web threw: ImageWidget dereferenced the null storageDirectory and called File.existsSync, and hydration asked the media cache to write files. One resolver now decides where an image's bytes come from: strategyImageSourceProvider returns LocalImageFile, RemoteImageUrl, ImageLoading or ImageFailed. The file lookup sits behind a conditional import (lib/services/local_image_file*.dart); the web stub never finds a file, so web always paints from the cloud URL. The placed image widget, its full-screen overlay, the lineup carousel, the lineup media editor and the lineup panel thumbnail all render from it, and the media cache does nothing on a platform without image files. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Check image files on every build and paint lineup tiles as Images Review found two problems in the image resolver: - The cached provider only looked on disk again when the storage folder, remote asset, or first cache membership changed, so a file written or removed while an image was on screen stayed stale. watchStrategyImageSource now runs from each widget build, checks the disk every time as before, and rebuilds on any media cache change. - The lineup media editor painted tiles with a DecorationImage, which cannot draw the web <img> fallback. Tiles now hold a clipped Image. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
10 files changedLine totals unavailable