Both sides' revision-history rows and change lines are kept (newest first);
print_view.rs auto-merged, so main's shared context_menu call sits beside the
PR's current_paper()/paper_name() punctuation and alias fixes.
# Conflicts:
# ROADMAP.md
# docs/gaps.md
# docs/parity-checklist.md
Preserve upstream menu additions and progress documentation while retaining
the focused grid shortcut and native ownership fix. All eight CI gates, five
Windows regressions and native acceptance passed on this exact merged tree.
Co-Authored-By: Codex <noreply@openai.com>
The parity row and the What's New heading said one star rating 'everywhere', but the
Set Rating / Select By Rating menu rows and the grid context menu are separate menu
items with star text and are unchanged. Name the real scope.
Co-Authored-By: Claude Opus 5.5 <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>
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>
Step 1 now uses the current menu label. verified stays 0.7.1 until a release
contains the renamed labels (docs/user/AGENTS.md).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switches read "Show Focus Point ✓" next to "Filmstrip ✓"; now every switch
is named for the thing and the check mark says whether it is on (Focus
Point, Clipping, Photo Counts, Mask Overlay, All Mask Overlays, Mask Pins,
Layout Image). Show Original stays: it is a view, not a switch.
Names that meant two things: View ▸ Detail and the Edit section Detail
(Detail View now, like Reference View), Window ▸ Edit and the Edit menu
(Edit Panel), Compare and Compare Before and After (Before/After Side by
Side, next to Split and Top/Bottom), and Clear/Discard Preview Cache (one
command, now Discard Preview Cache everywhere). New labels in all 13
catalogs. Tests: no "Show …" switch; no two menu commands share a label or
a menu's name.
Co-Authored-By: Claude <noreply@anthropic.com>
A finished scan waits for an open dialog before opening its review; drops are refused while an import runs (and, on the web, while a dialog is open); orphaned doc comment restored to builtin_label.
Co-Authored-By: Claude <noreply@anthropic.com>
While files are dragged over the window a veil and a card say what dropping
does (review N items, import N presets, open the face model; close the open
dialog first when one is open). Dropped photos and folders open the import
review like File > Import; Settings > Import can import them at once. A drop
while a dialog is open is refused with a toast. The web build now reports
unreadable and failed drops. Adds the control request ui.dropFiles.
Co-Authored-By: Claude <noreply@anthropic.com>
A full count (AlbumTally::of, albums.list) keeps each loop-free smart album's photos for the pass and
answers "album is #N" from them, so an album tested by 51 others is worked out once instead of 52 times
per photo. Albums in or reaching a loop, or in a chain too deep for the depth limit, are evaluated by
their rules as before.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The full-screen preview hides the top bar, but on macOS the window controls
stay at the top-left, where the info overlay drew the file name. When they
are visible, the overlay now starts below them. In macOS full screen they
are gone and the overlay keeps the corner.
The overlay also shows the photo's star rating and flag under its lines,
when the photo has them.
- settings::window draws the tab bar, which stays put, above the page of the open tab, which
scrolls: 560 pt wide and up to 640 pt tall on every tab (less in a smaller app window), each
page with a scroll position of its own and a handle that shows without the pointer on it.
- A row's controls wrap in the room beside the label; a label longer than its column wraps.
- Paths (the library's location, the Auto Import folder, the smart previews folder, a monitor
profile's file) are one line shortened from the front, the whole path in a tooltip only when cut.
- The Slideshow tab is one column the width of the page, the preview first; pointing at a
template no longer moves the page, and the Export buttons wrap.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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).