diff --git a/docker/frontend/src/App.tsx b/docker/frontend/src/App.tsx index 2a402a6..81b6b9f 100644 --- a/docker/frontend/src/App.tsx +++ b/docker/frontend/src/App.tsx @@ -1111,12 +1111,20 @@ export function Workspace() { const bytes = await fileToBytes(file); if (isRawName(file.name)) { // A camera RAW: parked in OPFS whole, developed to the JPEG the studio - // works on, and remembered in that same shape by the session — so the - // 30MB is read once, not once per reload. + // works on. The developed JPEG is deliberately NOT the session's copy: + // it is this build's reading of the sensor, and a session keeps it + // across reloads — so the next build's colour fix would never reach a + // frame already open, which is exactly how a fixed develop kept opening + // olive. The RAW is in OPFS either way, so the reload re-develops it + // (a few seconds) and always opens at the current engine's colour; the + // session's slot is cleared rather than left holding an older photo. + // + // ponytail: the reload pays one develop. Stamp the session copy with + // the build and keep it while the stamp holds, if that ever hurts. await storeRaw(bytes, file.name); const jpeg = await developRaw(bytes); await adoptPhoto(jpeg, file.name, new Blob([jpeg as BlobPart], { type: 'image/jpeg' }), false, bytes); - void savePhoto(file.name, jpeg); + void forgetPhoto(); return; } await clearRaw();