Raster keyframes are no longer eagerly decoded at load — `raw_pixels` stays empty and is paged in on demand from the project container, so a big paint project opens instantly and only touched frames hit RAM. - core: `read_packed_media_readonly` (fresh read-only connection, can't conflict with an in-place save) + `RasterStore` (holds the container path; `load_pixels` reads+decodes a keyframe's PNG by id). `load_beam_sqlite` stops eager-decoding and instead marks every raster keyframe `needs_fault_in` (recursively, incl. nested); a freshly-created keyframe stays false (blank-resident, nothing to page). Added `Document::all_layers_mut`. - editor: the canvas records a fault-in request when it needs a paged-out keyframe (empty pixels && needs_fault_in); the App drains the sink at the top of update(), pages the pixels in via the store, clears the flag, and repaints. Store path is set on load and after save. Export faults in synchronously per frame. Cold-scrub still shows a 1-frame gap and the page-in is synchronous; the image proxy (3a-2) and async load (3a-3) remove those next. |
||
|---|---|---|
| .. | ||
| assets | ||
| examples | ||
| src | ||
| Cargo.toml | ||
| PLAN.md | ||
| TOOL_IMPLEMENTATION_PLAN.md | ||
| build.rs | ||