Skip to content

#84 Independent visibility toggles for Color Grading and Color Mixer - #106

Merged
yojen7 merged 9 commits into
mainfrom
claude/fervent-lovelace-t2swjs
Oct 4, 2026
Merged

yojen7 merged 9 commits into
mainfrom
claude/fervent-lovelace-t2swjs

Conversation

@yojen7

@yojen7 yojen7 commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Closes #84

What and why

Color Grading and Color Mixer now have independent eye switches globally and per mask. The parent Color eye still bypasses both. Missing keys preserve old sidecars; Reset and Paste re-enable the section and its tools. The shared eye button now has a translated accessible name, pressed state and keyboard focus visibility.

Integrated with current main and the verified catalog develop work in #128. This branch contains that preceding work; merge #128 first.

Source

  • Original work for RapidRoom
  • Harvested from lalibertemarc/RapidRAW, 879b4146, by marclaliberte (upstream PR CyberTimon/RapidRAW#1833). Original author and Claude coauthor trail retained; CREDITS.md retained. Author contact remains a maintainer decision.
  • Entry added to rapidroom/changes.json; generated docs checked.
  • Also offered upstream: original work already has PR #1833 there.

How it was made

  • Written by an AI agent: original implementation and cloud integration with Claude; local integration, accessibility fixes and verification with Codex. No human editing or desktop test claimed.
  • 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), 91 Vitest tests, generated-doc check and locked release build pass.
  • TypeScript: same 46 baseline errors, no new diagnostics. Scoped ESLint: 87 to 86 findings, no new diagnostics. Scoped Prettier passes.
  • 60/60 pixel-identical to approved baseline-int7, same Intel xe / Mesa 26.2.2 / Linux 7.2.5 environment. No reference or tolerance changes. Pinned engine SHA-256 ea5b4233f08f7e892c44e0986cdf7b413bb545ceadfface732ee792fd66aeeb0.
  • Six focused exports of the CC0 Sony A7C II 15MP compressed RAW: missing keys equal explicit all-on exactly; parent Color off equals a neutral control exactly. With deliberate strong edits, each child switch independently changes the relevant result. Original RAW bytes and modification time are unchanged. Native tests also cover global/mask independence and missing-key compatibility.
  • Tested by a human in the running app
  • Default rendering unchanged; explicit tool bypass demonstrated locally.

Desktop, mask UI, autosave/undo and other platforms still need human checks in #63. Hosted CI must pass for this exact head before merge.

Screenshots / before and after

Local CC0 evidence: samples/color-tool-validation-codex-106/color-tool-before-after.png (visually inspected), six focused TIFFs and numerical results in /tmp/rapidroom-codex-106/focused-results.json. These demonstrate bypass behavior, with no image-quality claim. Full-corpus comparison JSON and manifest are retained locally; temporary corpus TIFFs removed.

lalibertemarc and others added 4 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
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
@yojen7 yojen7 added harvest Bring in work from another RapidRAW fork (with credit) rendering-change Changes rendered output; needs before/after and human sign-off labels Oct 4, 2026 — with Claude
yojen7 and others added 5 commits October 4, 2026 03:04
Adapt Laurensius Adi's develop-row source using the existing read-only
catalog/path resolver, bounded Lua parser and image-aware XMP mapper.
Add explicit per-photo selection, independent edit/rating replacement,
stale-preview checks, atomic writes and stable virtual-copy IDs.
Preserve unrelated metadata and reject unreadable edits and Card paths.

(from laurensiusadi/RapidRAW@dda6cc5)

Omit the original second catalog reader, line-based adjustment mapping,
folder-median white-balance estimates, default-sharpening heuristic,
truncated virtual IDs and unreviewed writes. Reuse the current mapper for
supported nested profile luma curves; report unsupported profile/mask data.

Written and reviewed with Codex. Native/frontend fixtures cover read-only
preview, preservation/replacement, repeat/stale/partial failure and Card
mode. Real catalog and desktop/platform checks remain unavailable.

Co-authored-by: Laurensius Adi <laurensiusadi@gmail.com>
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>
…lidation

Retain the read-only importer, all credits and change entries; validate the full stacked source before pushing or merging.
@yojen7
yojen7 merged commit 4871aa1 into main Oct 4, 2026
9 checks passed
@yojen7

yojen7 commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

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

  • 230 Rust tests pass (3 pre-existing ignored), 91 Vitest tests, fmt, strict locked all-target/all-feature Clippy, generated docs, scoped Prettier and locked release build pass. TypeScript and 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 ea5b4233f08f7e892c44e0986cdf7b413bb545ceadfface732ee792fd66aeeb0.
  • Exact-head hosted CI green, including build, headless exits and lavapipe regression.
  • Six focused real-RAW exports confirm missing keys equal all-on, parent-off equals neutral, and individual bypasses affect their own tool. Native tests cover global/mask uniforms and legacy missing-key behavior. Evidence inspected locally; source bytes and mtime unchanged.

Desktop global/mask eyes, keyboard focus, reset/paste/undo/autosave and older edits still need human checks in #63. No desktop interaction claimed. Numerical evidence/logs retained in /tmp/rapidroom-codex-106/; temporary full-corpus TIFFs removed. Original marclaliberte credit retained.

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

Labels

harvest Bring in work from another RapidRAW fork (with credit) rendering-change Changes rendered output; needs before/after and human sign-off

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Color tools: independent visibility toggles for Color Grading and Mixer

3 participants