Skip to content

#83 Lights Out viewing in Library and Editor - #104

Merged
yojen7 merged 15 commits into
mainfrom
claude/affectionate-bell-jsswho
Oct 4, 2026
Merged

yojen7 merged 15 commits into
mainfrom
claude/affectionate-bell-jsswho

Conversation

@yojen7

@yojen7 yojen7 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Closes #83

What and why

L cycles Off, Dim and Black in the library/editor; Shift+L reverses and Escape restores the normal view. Dim fades controls; Black hides chrome and keeps the photo or reference photos visible. Black temporarily enters native fullscreen and restores the original fullscreen state on exit. Existing custom keybindings are preserved; the default folder-tree shortcut moves from L to N.

Local review fixes a fullscreen race by serialising transitions, so rapid off/on requests and failed transitions preserve the original window state. Reference-view chrome follows Lights Out while its photos remain visible. Default rendering is unchanged.

Integrated with current main and #128/#106; merge those preceding verified branches first.

Source

  • Original work for RapidRoom
  • Harvested from zeromeridian/RapidRAW-Enhanced, 69bdb283, by Emil Zimmermann. Original author, source trailers and CREDITS.md retained. Author contact remains a maintainer decision.
  • rapidroom/changes.json and generated docs updated.
  • Also offered upstream.

How it was made

  • Written by an AI agent: original cloud integration by Claude; local integration, race fixes, tests and verification by Codex. Original source authorship retained.
  • Mostly AI-generated, reviewed and edited by a human
  • Written by a human with AI help
  • Written without AI

Who answers review: Yojen with Codex; maintainers decide.

Testing

  • fmt, strict locked all-target/all-feature Clippy, 230 Rust tests (3 pre-existing ignored), 101 Vitest tests, generated-doc check and locked release build pass.
  • TypeScript: same 46 baseline errors; scoped ESLint: same 202 findings. No new diagnostics; scoped Prettier passes.
  • Six fullscreen-controller tests cover windowed/originally fullscreen entry, cancellation during query or entry, renewed Black during restoration, and recovery after enter/restore errors. Existing mode-cycle, workspace migration and keyboard tests pass.
  • 60/60 default renders pixel-identical to approved baseline-int7, same Intel xe / Mesa 26.2.2 / Linux 7.2.5 environment. No baseline/tolerance change. Engine SHA-256 9644f306b45aacb167d2710fd1bf772e52f4822833d946b3b27e57373c6b0c08.
  • Tested by a human in the running app
  • Default rendering unchanged by the full-corpus comparison.

Hosted checks must pass for this exact head before merge. Actual native fullscreen, Reference View layout, editing with hidden chrome, light/dark themes, and other platforms still need the desktop checks in #63. Fullscreen tests use a mock window, not real OS transitions.

Screenshots / before and after

No desktop screenshots; the native UI was not exercised here. Local logs, comparison JSON and manifest remain in /tmp/rapidroom-codex-104/; temporary corpus TIFFs removed.

lalibertemarc and others added 15 commits October 4, 2026 01:24
The Color panel eye bypasses every color tool at once. Color Grading and
Color Mixer now get their own eye toggle, stored per image and per mask
as sectionVisibility.colorGrading / colorMixer (default on, so existing
sidecars render unchanged). The renderer applies each only when both
the Color panel and the tool are visible. Resetting or pasting a section
re-enables its tool toggles.

The eye button is extracted into a shared VisibilityToggle used by both
CollapsibleSection and AdjustmentSubSection, and the Rust section
visibility lookup is shared between the global and mask builders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 879b4146fa4d87ecfa3580261cfc0554ffb1555f)
A sectionVisibility object without the new colorGrading/colorMixer keys
(an older or partial one) made the first eye click a no-op, because
!undefined is true.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SHAmUdMPzKcgwDMEftFCrN
L cycles Normal -> Dim -> Black, Shift+L cycles backward (both
configurable). Escape restores normal lighting before its existing
action. Dim fades the surrounding chrome to black; Black hides it,
flattens the layout and puts the window in fullscreen until Lights Out
is turned off again. The photo, thumbnails and editing overlays are not
dimmed, and exports are unaffected.

(from zeromeridian/RapidRAW-Enhanced@69bdb28)

Adapted for RapidRoom's panel layout:
- Dim uses opacity on the chrome instead of a CSS filter, so fixed
  popovers inside panels keep their positioning.
- Backgrounds go black through the components and the wgpu clear
  colours, so the transparent wgpu preview area is never painted over.
- Toggle folder tree moves from L to N; RapidRoom already bound L to it.
- Lights Out only cycles in the library and editor views; the window
  fullscreen switch is skipped on Android.
- Catalan and Dutch strings added; tests for the cycle and for
  duplicate default shortcuts.
- Dropped the donor's FEATURES.md, RELEASE_NOTES.MD and tauri.conf.json
  version change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKn2QWXeYf2rr2z39dZggU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WKn2QWXeYf2rr2z39dZggU
Absent or partial sectionVisibility must produce byte-identical uniforms
to an explicit all-on one, for global and mask adjustments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SHAmUdMPzKcgwDMEftFCrN
Retain all change/credit entries and both color-visibility and pixel-format conversion test modules.
Give the shared eye button a translated accessible label and pressed state; reveal focused eyes in subsection and section headers.

Co-authored-by: marclaliberte <laliberte.marc1@gmail.com>
Retain Reference View, pick/reject badges and shortcut tests, workspace migration coverage and all existing change/credit rows.
…lidation

Retain the read-only importer, all credits and change entries; validate the full stacked source before pushing or merging.
Complete restoration before capturing a new Black session; preserve existing fullscreen and recover from failed native requests. Add six asynchronous behavioral tests for cancelled entry, entry/restore races and failures.

Co-authored-by: Emil Zimmermann <emil@zeromeridian.biz>
Keep shared migration controls and regenerated status docs; validate the combined source before pushing.
Keep both photos visible while dimming or hiding reference labels, chooser controls and the active-image badge; use black around the reference photo when Lights Out is enabled.
@yojen7
yojen7 merged commit 6e54bd3 into main Oct 4, 2026
9 checks passed
@yojen7

yojen7 commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Verified and merged as 6e54bd33 by Yojen following the maintainer queue; local adaptation and verification by Codex.

  • 230 Rust tests pass (3 pre-existing ignored), 101 Vitest tests, fmt, strict locked all-target/all-feature Clippy, generated docs, scoped Prettier and locked release build pass. TypeScript/scoped ESLint have no new diagnostics.
  • 60/60 default renders pixel-identical to approved baseline-int7, same Intel xe / Mesa 26.2.2 / Linux 7.2.5 environment. No baseline/tolerance change. Engine SHA-256 9644f306b45aacb167d2710fd1bf772e52f4822833d946b3b27e57373c6b0c08.
  • Exact-head hosted CI green, including build, headless exits and lavapipe regression.
  • Six fullscreen-controller tests cover original/windowed fullscreen state, rapid off/on races, cancellation during query/entry and retry after failures. Reference View keeps photos visible while its controls follow the mode. Existing custom shortcuts preserved; default folder-tree shortcut is N.

Native desktop fullscreen, Reference View layout, editing with hidden chrome, light/dark themes and other platforms still need the checks in #63. Fullscreen tests use a mock window; no real OS transitions or desktop screenshots claimed. Logs/JSON retained in /tmp/rapidroom-codex-104/; temporary full-corpus TIFFs removed. Original Emil Zimmermann source credit retained.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Viewing: Lightroom-style Lights Out in Library and Develop

3 participants