The star row is a single Tab stop (the current rating's star, or the first) with the arrow keys
stepping inside it and the focus following. favorite_button registers its automation id only while
on screen again. The module and test docs no longer mention a size/read-only API that doesn't exist.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
egui picks the neighbour to focus from the arrow key in begin_pass,
before a widget can set a focus lock for the frame it just gained
focus (set_focus_lock_filter needs a frame of focus first). A focused
star that consumes an arrow now cancels that pending focus move. The
favourite toggle is one interact-height line square again, so Manage
Effect Presets rows keep their height.
Co-Authored-By: Claude <noreply@anthropic.com>
Left/right moved egui focus to the neighbouring widget after one or
two steps. A focused star now locks horizontal arrows (as the slider
does) and draws the accent focus ring. Rating drops the options no
caller uses (size, read_only, enabled). The mask-effect favourite
stars use paint_star and a shared favorite_button instead of a raw
egui::Button and a "★" glyph.
Co-Authored-By: Claude <noreply@anthropic.com>
The bottom bar, the Info panel and the filter bar each drew their own
row of stars, and the grid badge, filmstrip badges and compare caption
had private painter loops. They now share rating::Rating (a clickable
row: hover previews, clicking the current rating clears it, read-only
and disabled states, left/right arrows on a focused star) and
rating::paint_rating / paint_star for painter-only contexts.
Existing automation ids (star:bottom:n, star:info:n, filter:starN) are
unchanged. The preset, profile and theme favourite stars use
paint_star too, so Icon::Star lives only in rating.rs.
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.
crates/engine/src/media.rs, crates/engine/src/smart.rs: DecodedSource keeps both new fields, from_proxy (#1809) and reduced (#2263); a smart preview loads with from_proxy true, reduced false.
crates/engine/src/cmd/previews.rs: original_only refuses both proxy-loaded and reduced sources.