A failed thumbnail in the detail view's filmstrip is announced with the
file name and "This photo can't be opened" (the painted ! had no name).
The skeleton placeholder is set further off the surfaces in Silver and
Paper (1.3 / 1.2 : 1 on the grid before, about 1.7 / 1.6 after) and the
test floor for the light themes is 1.15. The print preview's empty and
loading cells go back to fixed greys: its page is paper in every theme.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-row bars keep Cancel in its place, a busy button stays focusable
and draws its spinner only when visible, the skeleton colour stands
apart from selected cells too, the filmstrip shows the failed-thumbnail
mark, and more placeholders and waits use the skeleton token and the
spinner.
Co-Authored-By: Claude <noreply@anthropic.com>
Install from file… (denoise) shows busy while the model installs, and
the describe-mask Select button while the AI works.
Co-Authored-By: Claude <noreply@anthropic.com>
The spinner in a text-only busy button is smaller and sits closer to the
text, so the text no longer touches the button's border while the width
stays the same.
Co-Authored-By: Claude <noreply@anthropic.com>
Progress bars were five raw egui::ProgressBar calls with fixed widths
(240, 260, 380), one hand-drawn bar in the activity stack, and a stock
spinner; text-only waits had no sign of life. progress.rs now has
Progress (a clamped, NaN-safe fraction or a gentle sweep when unknown,
fills the layout's width, announced as a progress indicator with its
percentage and registered by id) and a vector-arc spinner. Button::busy
shows the spinner in the icon's place, keeps the width, ignores clicks
and is announced busy.
Thumbnails still being made draw a themed skeleton colour (a Tokens
field, static) in the grid, the filmstrip and Compare, instead of a
literal grey that was nearly black on the light themes.
Co-Authored-By: Claude <noreply@anthropic.com>
On the FreeBSD runner a click's synthetic input can arrive a frame or two late, so after opening
`/a/b/c/d` the row of `/a/b/c/d/e` was not drawn yet when the next click asked for it. The
fixture now steps until each level's chevron is drawn before clicking it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
build.rs requires every *-formats.json to carry the same messages. The sv (7), fi (1),
id (1) and vi (49) format catalogs predate messages main has added; those entries use the
English text until they are translated.
docs/parity-checklist.md: header keeps the newer date; LR-IMP-FORMATS row keeps both sides' changes.
docs/raw-parity.md: header change note names both sides' changes.
docs/raw/coverage.tsv: merged cleanly; same rows as both sides, no duplicates (regenerated on the combined branch).
crates/raw/src/kelvin_presets.rs: covered_models keeps the Z5II asserts (#2006) and the Canon cases (#2009).
docs/parity-checklist.md: LR-EDIT-COLOR-TEMP row keeps both sides' preset clauses.
crates/ui-egui/src/tests_grid.rs: both sides' tests
docs/whats-new.md: both entries under one 2026-10-16 heading
docs/parity-checklist.md: header and revision rows from both sides
crates/engine/src/camera_preview.rs: LOOK_VERSION keeps both history lines and the higher value.
crates/engine/src/media.rs: RENDER_CACHE_VERSION keeps the higher value.
docs/whats-new.md: both 2026-10-14 entries under one heading.