lightcraft/docs
goujicheng bc2cbf41db LR-IMP-PREVIEW-READ: an unedited raw's grid thumbnail is its embedded JPEG
The grid already showed the camera's embedded preview first, then queued a render of the whole raw
to replace it. For a 512 px thumbnail that render decodes 50 of a 56 MB Fuji RAF's bytes for a
picture the 4 416 × 2 944 embedded JPEG already covers — 45 s a photo on the 1.2 MB/s share this was
measured on, 8.3 GB of traffic for a 149-photo folder, and a queue that delayed the render the user
was actually waiting for (measured: the first loupe render of a cold photo finished 174 s after the
click, most of it spent behind thumbnails). Idle for a minute afterwards, the same folder read 12
previews (26.9 MB) and decoded zero raws for thumbnails, against 638 MB of whole-file reads before.

- `Session::embedded_thumb_is_final` answers whether a photo is an unedited raw whose camera JPEG the
  viewer is showing — the same `has_import_look` gate the preview path uses.
- `grid::skips_the_real_render` is the decision (unit-tested): a cached render as stand-in, an edited
  photo and a raw without an embedded JPEG all still render, because their thumbnail must show the
  pipeline's output rather than the camera's.
- `Renderer::remember_embedded_thumb` records the quick render's key and the bucket, and
  `thumb_quick_is_final` / `thumb_quick_pending` let the per-frame grid request stop at the embedded
  preview instead of rebuilding the render job (and its cache key) every frame.
- The thumbnail key still follows the settings hash, so editing a photo re-renders its thumbnail
  through the ordinary background path.

`docs/raw-preview-reads.md` and the `LR-IMP-PREVIEW-READ` parity row record the behaviour and the
numbers.

Co-Authored-By: DeepSeek V3.2 <noreply@deepseek.com>
2026-10-11 09:39:32 +08:00
..
brand Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms 2026-10-04 10:05:02 -04:00
images docs: README (MCP, CLI, export, status, contributing), AGENTS.md (asset enforcement, crash recovery, testing/perf), screenshots re-captured with Inter 2026-09-30 23:52:34 -04:00
showcase M1.4: crash-safe catalog persistence (op log + snapshot) 2026-09-30 23:40:40 -04:00
ai-masks.md Merge remote-tracking branch 'origin/main' into fix-359 2026-10-08 23:57:36 -04:00
background-tasks.md Issue #345: long-running tasks use the activity stack (rule and guide) 2026-10-10 09:31:32 +02:00
camera-preview-colour.md Merge PR #590 2026-10-10 04:01:27 -04:00
contributors.md About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#252) 2026-10-07 21:22:08 -04:00
control-protocol.md Issue #345: ask before quitting while tasks run 2026-10-10 08:47:58 +02:00
cr3.md Merge PR #465 2026-10-09 08:34:42 -04:00
denoise.md LR-EDIT-DETAIL-DENOISE: avoid shared vector write races (#479) 2026-10-09 13:12:47 +01:00
display-profiles.md LR-PREF-DISPLAY: monitor ICC profiles (display colour management) 2026-10-09 11:21:09 -07:00
faces.md Issue #345: long-running tasks use the activity stack (rule and guide) 2026-10-10 09:31:32 +02:00
gpu-pipeline.md LR-BEHAV-GPU: no render is inside the GPU driver when the app quits (issue #620) 2026-10-10 00:46:24 -05:00
library-shortcuts.md LR-LIB-RATING: fix relative ratings and grid bracket shortcuts 2026-10-09 22:48:00 +10:00
lightroom-catalog-import.md Merge PR #533 2026-10-09 20:50:41 -04:00
localization-de.md M16: add German localization using the existing catalogs 2026-10-08 07:27:32 +02:00
localization-es.md Fix #371: Spanish interface 2026-10-08 20:20:17 +00:00
localization-ja.md LRC-LIB-SMARTCOLL: localization-ja example uses the new field labels 2026-10-09 10:54:56 -04:00
localization-pt-br.md i18n: add Brazilian Portuguese (pt-br) UI translation 2026-10-07 17:03:20 -03:00
localization-ru.md i18n: German and Russian follow-ups (#265, #264) 2026-10-08 18:26:56 +00:00
localization-zh-hans.md fix #425: Restore Simplified Chinese font rendering 2026-10-09 15:12:33 +08:00
localization-zh-hant.md fix #425: Restore Simplified Chinese font rendering 2026-10-09 15:12:33 +08:00
localization.md Merge PR #564 2026-10-09 20:56:56 -04:00
mcp.md Merge PR #623 (updated head) 2026-10-10 01:02:10 -04:00
merge.md Issue #345: long-running tasks use the activity stack (rule and guide) 2026-10-10 09:31:32 +02:00
parity.md LR-IMP-PREVIEW-READ: an unedited raw's grid thumbnail is its embedded JPEG 2026-10-11 09:39:32 +08:00
process-versions.md LRC-DEV-PROCESS: process versions, so a look change can ship without changing existing edits (#146) 2026-10-09 17:03:45 +02:00
raf-compression.md M11.4: harden RAF validation and camera profile fallback 2026-10-08 11:23:55 +02:00
raf-corpus.sha256 M11.4: harden RAF validation and camera profile fallback 2026-10-08 11:23:55 +02:00
raw-preview-reads.md LR-IMP-PREVIEW-READ: an unedited raw's grid thumbnail is its embedded JPEG 2026-10-11 09:39:32 +08:00
releasing.md fix #425: Restore Simplified Chinese font rendering 2026-10-09 15:12:33 +08:00
sony-lens-corrections.md LR-EDIT-OPTICS-PROFILE: merge main; keep main's Sony crop precedence 2026-10-10 03:15:16 -04:00
tint-direction.md Issue #188: Tint sign documented as landed (DNG / Lightroom sign) 2026-10-08 17:29:47 +00:00
vertical-watermarks.md M16: keep grapheme clusters intact in vertical watermarks 2026-10-09 09:02:24 +09:00
web.md Merge PR #460 2026-10-09 09:25:59 -04:00
whats-new.md Merge PR #560 2026-10-10 03:47:10 -04:00
xmp-interop.md Merge PR #533 2026-10-09 20:50:41 -04:00