Files
lightcraft/docs/ui-parity.md
T
Fabio LussiandClaude Opus 5.5 9ac38222e1 Alt/Option-drag previews for clipping and sharpening
Holding Alt (Option on macOS) while dragging an Edit slider shows
Lightroom's temporary previews: highlight clipping for Exposure,
Highlights and Whites, shadow clipping for Shadows and Blacks, greyscale
for Sharpening Amount, the detail band for Radius / Detail and the
sharpening mask for Masking. They are render overlays (pipeline
visualize), drawn the same way after the CPU and GPU renderers; the
sharpening views read each renderer's own detail planes. Settings and
normal output are unchanged.

Fixes #937

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 17:25:47 +02:00

8.3 KiB
Raw Blame History

UI parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: minor (Alt/Option-drag slider previews) · Target: Adobe Lightroom Classic 15.5 / Lightroom 9.6

How LightCraft's interaction compares with Lightroom's: views, panels, tools and handles, modifier keys, shortcuts, zoom, context menus and feel. Rows for individual menu items and shortcuts live in parity-checklist.md (sections Y and Z, Classic keys); this page is the assessment and the notes that don't fit a row. Visual reference for agents: plan/lightroom/ (local, gitignored; 10-observed-ui.md and screenshots).

Measured counts (2026-10-10)

  • 226 engine commands (crates/engine/src/cmd/, 30 modules) and 143 UI commands (UI_COMMANDS in crates/ui-egui/src/menus.rs, 73 with a shortcut) plus 10 language commands; 23 secondary shortcut bindings (ALIASES, crates/ui-egui/src/shortcuts.rs); a keymap editor.
  • 122 develop controls plus 10 indexed templates (crates/develop/src/controls.rs).
  • Checklist: menus 95.3% (86 in-scope rows), desktop shortcuts 94.4% (81 rows), Classic extras 48.2% (82 rows), measured by recounting parity-checklist.md.
  • 31 panel modules (crates/ui-egui/src/panels/), 26 context-menu sites.

Assessment by area

Area Target LightCraft Ready Main gaps
Layout and views Lightroom: grid / detail / edit; Classic: Library, Develop, Map, Book, Slideshow, Print, Web modules, filmstrip, panels Lightroom-style single window: Photo Grid, Square Grid, Detail, Compare, Survey (≤ 48), Before / After, People, quick slideshow, second window, filmstrip 75% no Classic module switcher (by design) or output modules; dark theme only
Develop panels and sliders Light, Color, Effects, Detail, Optics, Geometry, Lens Blur, Calibration every global slider; scrub, double-click reset, Alt-drag previews where implemented 80% Lens Blur, Calibration panel depth; slider feel (acceleration, fine Shift-drag) unmeasured
Crop, Upright, transform handles handles, aspect lock, angle, overlays (O / ⇧O), guided Upright ✅ all of them; overlay cycle on ⇧O 85% crop opacity of cut-out area (15.5)
Masking tools brush (A / B, flow, density, auto mask, pressure), linear / radial, range masks, AI masks, pins brush, linear, radial, colour / luminance range, add / subtract / intersect / invert, masks panel, pins 60% brush live preview (#517 / #518), no pen pressure, no depth range, AI masks, Feather / Edge controls (15.5)
Remove / heal content-aware remove, heal, clone, visualize spots heal, clone, auto source, visualize spots, red / pet eye 65% content-aware (patch synthesis) remove, generative remove, detect distractions
Zoom and navigation Fit / Fill / 1:1 / 2:1 … 11:1, Navigator, spacebar pan Fit to 800%, pinch zoom, pan, Navigator-like 60% original-pixel detail at 100% with a mask overlay or soft proofing (no zoom window there; Detail, Before/After, Compare and Reference have them; P0 gap LR-VIEW-ZOOM)
Library culling and metadata ratings, flags, labels with keys, painter, keywording, metadata panel, filter bar ratings / flags / labels and advance, keyword list and sets, keywording box, metadata fields, smart albums, filter bar 85% painter tool, quick collection, some Classic keys
Shortcuts Lightroom desktop and Classic keymaps Lightroom-desktop keymap with Classic additions, editable 85% deliberate differences below; no Classic keymap layer
Context menus everywhere 26 sites (grid, filmstrip, albums, folders, keywords, masks, presets…) 70% unaudited against Lightroom's menus item by item
Text fields native editing behaviour custom text field (LR-BEHAV-TEXTFIELD) 70% IME and selection edge cases
Accessibility VoiceOver / Narrator, keyboard navigation AccessKit: sliders, buttons, dropdowns, section headers announce 30% canvas tools pointer-only; not audited with a screen reader
Feel and responsiveness GPU-interactive sliders (15.3) ≤ 16 ms slider budget on GPU; background renders 75% colour NR at half resolution, 100k-photo grid test
UI/UX overall ~70% estimated, weighted by use (develop and library 60%, tools 25%, rest 15%)

Remaining: 40–70 h (zoom detail 8–15 h, brush and masking feel 8–12 h, accessibility audit 10–20 h, Classic keymap layer 4–8 h, context-menu audit 4–8 h, text-field and IME polish 4–8 h). Output modules and AI tools are counted with their features in target-app-parity.md.

Shortcuts

Compared plan/lightroom/06-shortcuts.md (desktop part) with our bindings: command specs in crates/engine/src/cmd/, UI_COMMANDS in crates/ui-egui/src/menus.rs and secondary bindings (ALIASES) in crates/ui-egui/src/shortcuts.rs. no_conflicting_bindings (same file) fails when one key fires two actions.

Fixed (M16.1): added Lightroom-desktop keys as secondary bindings for existing commands — ⌘D Select None, ⇧E Export dialog, Space Toggle zoom, ⇧M Create Version, ⇧X Reject + advance, ⇧U Unflag + advance. ⇧Y fired both Before/After Split and the History panel; History lost the binding. W and ⇧⌘I also fired the engine command under the UI command that wraps it (a no-op error); the UI command now wins.

Deliberate differences (our key → Lightroom desktop key) — each is a conflict with another binding we have:

Action Ours Lightroom desktop Why
Pick flag P Z Z = toggle zoom (Classic convention); P is the Classic pick key
Photos panel (left) ⌘⇧L P P = pick
Expand/collapse edit sections ⌘⌥1–5 ⌘1–6 ⌘0 = Zoom to Fit, ⌘1 = Zoom 100 %; Geometry lives in the Crop panel
Histogram ⌘⇧H ⌘0 ⌘0 = Zoom to Fit
Square Grid ⇧G (none; ⇧G = Guided Upright) Guided Upright is a button in the Crop panel
Export dialog ⌘⇧E (+ ⇧E) ⇧E ⌘⇧E is "Edit in Photoshop" there; no external-editor command yet
Crop overlay cycle ⇧O O O = mask overlay; ⇧O (mask colour / overlay orientation) unused otherwise
Create Version ⌘⇧S (+ ⇧M) ⇧M (Windows: Ctrl+⇧S) —
Select None ⌘⇧A (+ ⌘D) ⌘D —

Library culling (KEYC-RATING): 0–5, 6–9 and P/X/U reach egui on macOS even when displayed in the native menu (adapted from PR #261; issue #283). Shift+0–9 applies and advances once; Shift+P picks and advances in Photo Grid / Square Grid and retains Presets elsewhere. See library shortcuts for the verified Classic mapping and regression coverage. Remaining Classic gaps: rating [ / ], flag cycling and filter-bar keys.

Alt/Option-drag previews (issue #937): hold Alt (Option on macOS) while dragging an Edit slider, before or during the drag. Exposure, Highlights and Whites show highlight clipping (black, clipped channels in their colour, white where all three clip); Shadows and Blacks show shadow clipping (white, black where all three clip). Sharpening Amount shows greyscale, Radius and Detail the detail band sharpening amplifies, Masking the mask (white = sharpened). Releasing the key or the slider brings the photo back; the edit and its history are unchanged. Not yet: Noise Reduction, mask range sliders and the Masking panel's local sliders. On Linux desktops that move windows with Alt+drag (KDE Plasma's default, also some GNOME / Xfce setups) the window manager takes the drag first: set its window-move modifier to Meta.

Still missing / broken:

  • No command yet: F1 help (verify the rest of the old list: full screen, settings, stacks, visualize spots and merges have commands now).
  • H opens Remove; Lightroom also uses it (Classic) to hide pins — pins toggle from View → Show Mask Pins.
  • ⌘M / ⌘H / ⌘Q / ⌘W rely on the platform window defaults (unverified).

Revision history

Date Change Summary
2026-10-11 minor Alt/Option-drag slider previews (clipping, sharpening) and the Linux window-manager note
2026-10-11 minor Zoom row: Compare and Reference get zoom windows; what remains of LR-VIEW-ZOOM is overlays and soft proofing
2026-10-10 major Created: measured command and shortcut counts, assessment by area, estimates; moved the shortcut conflicts section here from the checklist