Skip to content
CAI
Software that uses CAICheck a score

FluidGroup/Brightroom

63.1

Adequate · 30 September 2026

26.6k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a parametric image editing engine and UI library for iOS and macOS, designed to handle complex photo manipulation with high performance. It provides a unified rendering pipeline using Metal for GPU-accelerated previews and exports, supporting features like tone curves, color mixing, LUT application, and brush-based masking. The library includes a modern SwiftUI-based crop editor and manages image data through flexible providers, ensuring consistent results between live editing and final output.

How it got here

2018–2021 — Brightroom v5 engine and UI rewrite

14 changes.

This period focused on a comprehensive rewrite of the Brightroom engine and UI, introducing a parametric editing architecture with Metal-accelerated rendering for improved performance. Key developments included the implementation of a unified image processing pipeline, support for 3D color LUTs, and a complete overhaul of the crop editor using SwiftUI and Metal. The work also involved modernizing dependencies, removing legacy framework structures, and establishing robust state management and logging infrastructure.

2023–2024 — Xcode modernization and demo apps

7 changes.

The project modernized its Xcode project configuration and workspace structure to support newer tooling versions. New demo applications for macOS and SwiftUI were introduced to showcase library capabilities, alongside extensions for LUT import and sharing. Comprehensive unit tests were added to verify core image processing behaviors and rendering parity.

2025–2026 — Metal rendering and parametric editing

5 changes.

This period focused on overhauling the rendering pipeline to use Metal for improved performance and wide-gamut color accuracy, alongside introducing a new parametric editing foundation. Key developments included a SwiftUI-based crop editor, GPU-accelerated tone curves, and a perceptual color mixer, all supported by comprehensive test coverage.

Features

Add support for loading and applying 3D color lookup tables (LUTs)

The Brightroom engine now includes a new ColorCube module that enables users to apply 3D color grading via LUTs. This change introduces a loader that discovers and parses LUT files from the app bundle, supporting both standard .cube text files and image-based LUTs (JPG, PNG) following a specific naming convention. The system parses the LUT data, converts it into a format suitable for Core Image, and applies the color transformation using the CIColorCubeWithColorSpace filter, with optional caching for performance.

Sources/BrightroomEngine/ColorCube · high confidence

Add tone curve and configurable color mixer features

This change introduces new GPU-accelerated color adjustment capabilities by adding Metal shader kernels for tone curves and a configurable color mixer. The tone curve kernel applies scene-linear RGB curves in Display-P3 while preserving original luminance, and the color mixer kernel performs perceptual adjustments to hue, chroma, and lightness in OKLab space. These kernels are compiled via a new SwiftPM build plugin and packaged as platform-specific Metal libraries for iOS, macOS, and Mac Catalyst.

Plugins/BuildColorAdjustmentKernels, Sources/BrightroomColorAdjustmentKernels · high confidence

Added Import LUT and Share LUT extensions

The Dev/Bundle now includes two new macOS/iOS extensions: an 'Import LUT' action that processes web page background colors via JavaScript preprocessing and native Swift handling, and a 'Share LUT' share extension for exporting LUT files. These additions provide the underlying bundle components for importing and sharing LUT data, though the specific UI wiring or main application integration for these features is not present in this location.

Dev/Bundle · high confidence

Added Reveal-SDK submodule

The Reveal-SDK submodule from muukii has been added to the project, pointing to commit 039bf6b. This integration likely enables remote debugging or inspection capabilities for the application, depending on how the SDK is utilized in the main codebase.

submodules · high confidence

Added Xcode schemes for Brightroom components and demo apps

New Xcode schemes have been added for the BrightroomEngine framework, BrightroomEngineTests, BrightroomUI, ParametricMacDemo, and SwiftUIDemo. These schemes configure build, test, launch, and archive actions for their respective targets, enabling developers to run and debug the engine, UI library, and demo applications directly from Xcode.

Dev/Brightroom.xcodeproj/xcshareddata · high confidence

Introduce ImageProvider and ImageSource for flexible image loading

The DataSource layer now includes a new \ImageProvider\ class that manages image loading state and errors, supporting initialization from raw data, URLs, or custom external providers via a pending action. It also introduces an \ImageSource\ class that wraps Core Graphics objects (\CGImage\, \CGImageSource\) to provide thread-safe access to original images, thumbnails, and CIImages, enabling more robust and flexible image handling within the editing stack.

Sources/BrightroomEngine/DataSource · high confidence

Introduce platform-agnostic image type alias

The BrightroomEngine module now defines a \PlatformImage\ type alias that maps to \NSImage\ on macOS and \UIImage\ on iOS, enabling the engine to handle image operations in a platform-independent manner.

Sources/BrightroomEngine · high confidence

Introduces parametric image editing foundation with brush masks, color cubes, and color mixer

This change adds the BrightroomParametric module, providing the core infrastructure for parametric image editing. It introduces a shared Metal-based brush rasterizer (BrushStampPipeline) that unifies live canvas previews and export rendering, ensuring consistent brush mask appearance. The module also adds support for loading and applying 3D color lookup tables (LUTs) from .cube files and Hald/CLUT images, alongside a new eight-band Color Mixer feature that adjusts hue, saturation, and luminance per color band using the OKLCh color model. Additionally, it includes a streaming file writer (CIImageStreamingFileWriter) to enable memory-efficient export of large images by rendering them strip-by-strip to disk-backed buffers.

Sources/BrightroomParametric · high confidence

Introduction of BrightroomUI module entry point and Wrap utility

The BrightroomUI module now includes a central entry point (BrightroomUI.swift) that exposes the module's resource bundle via a public constant (BrightroomUIBundle) and defines a NonL10n type alias, while also providing a Wrap utility struct with helper methods like map, do, modify, and filter to facilitate functional-style data transformation within the UI layer.

Sources/BrightroomUI/Shared · high confidence

New Parametric Mac and SwiftUI demo applications

Added new demo applications (\ParametricMacDemo\ and \SwiftUIDemo\) that showcase the library's capabilities. The Mac demo provides a feature editor for parametric image processing with drag-and-drop reordering and real-time preview, while the SwiftUI demo includes a comprehensive navigation interface for testing various editing modes (including PhotosUI integration, face detection, and remote image loading), parametric feature previews, video rendering playgrounds, and PencilKit reference sandboxes.

Dev/Sources · high confidence

Unified parametric editing engine with face-detection crop and preset support

The Brightroom engine now uses a single parametric \EditingDocument\ to drive both previews and exports, ensuring consistent results. Local adjustment masks are automatically flipped to match the renderer's coordinate space, and the crop tool now supports automatic face-detection-based cropping with configurable padding and aspect ratios. A new \PresetStorage\ allows UI layers to load and apply filter presets (e.g., LUTs) as global effects, while the feature tree provides stable identities for effects and crops to support complex editing workflows.

Sources/BrightroomEngine/Core · high confidence

Removals

Removal of PixelEngine Xcode project and scheme files

The PixelEngine Xcode project configuration (project.pbxproj) and the associated user scheme management file (xcschememanagement.plist) have been deleted. This removes the local build settings, target definitions, and scheme ordering for the PixelEngine framework from the repository.

PixelEngine.xcodeproj · high confidence

Removal of PixelEngine public header

The public header file for the PixelEngine framework has been removed. This eliminates the exported version symbols and the umbrella header that previously aggregated public imports, effectively stripping the framework's public interface definition from this location.

PixelEngine · high confidence

Behavioural changes

4 commits (1 fix) modifying Resources

A change to existing behaviour in Resources — 4 commits (1 fix), 3 files.

Resources · medium confidence · unverified

Brightroom Engine v5: New core geometry, sanitization, and logging infrastructure

The BrightroomEngine library has been updated to version 5, introducing a new set of core source files that redefine how image processing and user interaction are handled. A new \CropGeometry\ enum provides robust coordinate conversion and aspect-ratio fitting logic, including specific support for straightening and quarter-turn rotations, which improves the accuracy of crop selections. The engine now includes an \EngineSanitizer\ to detect and report runtime errors (such as failed image resizing) via a configurable callback, enhancing stability. Additionally, a new \EngineLog\ system using \os\_log\ provides structured debug and error logging, and a \PixelAspectRatio\ struct ensures consistent hashing and equality based on the actual proportion rather than raw dimensions. These changes form the foundational layer for the engine's updated editing capabilities.

Sources/BrightroomEngine/Library · high confidence

Crop editing state and layout utilities for Brightroom v5

This change introduces new utility files in the BrightroomUI shared utils to support the v5 crop editing experience. AutoLayout.swift provides a helper for anchoring content views. CropEditingState+.swift adds critical logic for the crop scroll view, including conversions between image and platter coordinates, calculation of zoom scales with a minimum output side length constraint (128pt) to prevent sub-pixel brush issues in masking tools, and handling of output rotation for guide layout. EditorLog.swift sets up structured OSLog categories for debugging crop views and canvas performance. PixelEditorCodeBasedView.swift enforces code-only initialization for specific views and adds an assertion helper to ensure the EditingStack is in a loaded state when UIKit views are created from SwiftUI.

Sources/BrightroomUI/Shared/Utils · high confidence

Crop editor rewritten with Metal rendering and SwiftUI overlays

The Crop component has been completely rewritten to use a fixed Metal canvas for high-performance image preview and gesture handling, replacing the previous UIKit-based rendering approach. This change introduces a new \CropEditingState\ model that manages crop geometry, rotation, and straightening angles in a unified coordinate space, and adds \CropViewFeatureFocus\ to decouple the viewing point from the editing target within the FeatureTree. The UI layer now supports SwiftUI-based inside and outside overlays (such as rule-of-thirds guides and blurred backgrounds) that react to adjustment states, while the underlying scroll and zoom physics are handled by a dedicated \ViewportDisplayLink\ and Metal-backed canvas views.

Sources/BrightroomUI/Shared/Components/Crop · high confidence

Editing canvas re-architected for Metal rendering and wide-gamut color accuracy

The EditingCanvas component has been rebuilt to use a Metal-based rendering pipeline, replacing the previous implementation. This change introduces a new \BrushMaskMetalRasterizer\ to share a single Metal brush rasterizer between the live canvas and the export process, ensuring that brush strokes appear identical in the editor and in the final saved image. The canvas now utilizes \extendedLinearDisplayP3\ for intermediate color processing and \Display-P3\ for the final drawable, preserving wide-gamut colors and preventing the previous clamping to sRGB. Additionally, a new content baking system (\EditingCanvasContentBake\) caches effect graphs into GPU textures, significantly improving performance during crop rotation, panning, and zooming by avoiding expensive per-frame Core Image graph evaluations. Stroke handling has also been refined with a new gesture recognizer and smoothing algorithms (Bezier, CatmullRom, Moving Average) to improve input responsiveness and accuracy.

Sources/BrightroomUI/Shared/Components/EditingCanvas · high confidence

Engine rendering pipeline refactored for GPU performance and parametric exports

The engine's rendering architecture has been overhauled to improve performance and support a new parametric export system. The new \BrightRoomImageRenderer\ now delegates to \ParametricExportRenderer\, enabling async rendering and unified document evaluation for both exports and previews. To eliminate CPU-to-GPU upload bottlenecks during interactive editing, \EditingSourcePreparation\ now uploads source images to persistent GPU textures (using \rgba8Unorm\ or \rgba16Float\ based on bit depth), allowing the canvas to sample directly from the GPU. Additionally, \CoreGraphics+\ extensions have been updated to handle complex bitmap info and color space conversions robustly, and \RenderCrop\ now separates pixel-aligned crop selection from output rotation to prevent quarter-turn truncation artifacts.

Sources/BrightroomEngine/Engine · high confidence

Introduces Metal-accelerated image preview with wide-color support

The image preview component now uses a new Metal-based rendering path (MetalImageView) instead of the previous standard UIImageView implementation. This change improves rendering performance by leveraging Metal and CIContext sharing, and adds support for wide-color (P3) displays on compatible devices by enabling extended dynamic range content. The new view also allows configuring a display background (transparent or solid color) and applies post-processing filters directly during preview.

Sources/BrightroomUI/Shared/Components/ImageViews · high confidence

New SwiftUI-based Photos-style crop editor

The built-in crop editor has been replaced with a new SwiftUI implementation that mirrors the Apple Photos app interface. This update introduces a dark, full-screen editing experience with a dedicated toolbar for switching between Crop, Filters, Adjustments, and Blur Masking modes. Users can now apply built-in filter presets (such as Vivid, Dramatic, and Mono) and adjust parameters like exposure and temperature via sliders. The editor also supports aspect ratio selection, rotation, and local blur masking, with GPU-accelerated filter thumbnails for instant preview.

Sources/BrightroomUI/builtin · high confidence

Fixes

Resolved workspace reference to renamed project

The Xcode workspace configuration has been updated to correctly reference the project file after it was renamed from PixelEngine to Brightroom. This change fixes the workspace's internal file reference, ensuring that the project opens and builds correctly without broken links to the underlying project file.

Dev/Brightroom.xcodeproj/project.xcworkspace · high confidence

Test coverage

Added test coverage for BrightroomParametric rendering and document persistence; Added tests for blur radius resolution, brush mask rasterization, and crop geometry.

Dependencies

Brightroom Swift Package updated to v6.3 with iOS 17+ support

The Brightroom Swift Package has been updated to use Swift 6.3 language mode and now requires iOS 17 or macOS 14 as minimum deployment targets. The package structure now explicitly defines three products: BrightroomParametric, BrightroomEngine, and BrightroomUI. The dependency on Verge has been replaced by swift-state-graph (v0.17.0), which is now a direct dependency for both the Engine and UI targets. Additionally, a new build plugin, BuildColorAdjustmentKernels, has been added to handle Metal kernel compilation for color adjustments.

(dependencies) · high confidence

Housekeeping

Xcode project configuration updated to object version 70

The Brightroom Xcode project file has been regenerated with objectVersion 70, reflecting an update to the Xcode project format. This change ensures the project structure is compatible with newer versions of Xcode and includes the standard resource and framework build file references required for the BrightroomEngine and BrightroomUI targets.

Dev/Brightroom.xcodeproj · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 66 → 63 (-3.4)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 93 → 93 (-0.3)
  • Architecture 100 → 93 (-6.9)
  • Maturity 62 → 66 (+4.0)
  • Readiness 51 → 53 (+1.6)
  • Security 97 → 97 (+0.0)
  • Performance 63 (new)

Resolved (7)

  • Documentation: contradicts the code (docs/editing-engine-todo.md)
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (4–8 lines × 3) (Sources/BrightroomUI/Shared/Components/EditingCanvas/BrushMaskMetalRasterizer.swift)
  • Hotspot: Sources/BrightroomParametric/CIImageStreamingFileWriter.swift (Sources/BrightroomParametric/CIImageStreamingFileWriter.swift)
  • Hotspot: Sources/BrightroomParametric/ColorCube/ColorCubeTextFileParser.swift (Sources/BrightroomParametric/ColorCube/ColorCubeTextFileParser.swift)
  • Hotspot: Sources/BrightroomParametric/Debug/FeatureTreeView.swift (Sources/BrightroomParametric/Debug/FeatureTreeView.swift)
  • Hotspot: Sources/BrightroomUI/Shared/Components/Crop/CropView.swift (Sources/BrightroomUI/Shared/Components/Crop/CropView.swift)

New (25)

  • Ambiguous naming for undo operations. revertCurrentEdit implies reverting the most recent change (effectively an undo), while revert(to: Revision) implies jumping to a specific historical state. However, revert is often used for discarding unsaved changes or resetting to a base state, whereas undo/redo are already present. The distinction between 'reverting the current edit' and 'undoing' is unclear.
  • BrushMaskImageProcessor.rasterizeOnCPU (cognitive 17) (Sources/BrightroomParametric/BrushMaskImageProcessor.swift)
  • Coverage not measured — Swift suite
  • Duplicate state properties. hasUncommittedChanges and isDirty semantically overlap significantly in editing contexts. It is unclear if they represent different conditions (e.g., unsaved vs. uncommitted to history) or are redundant aliases.
  • Duplicated block (10 lines × 2) (Sources/BrightroomEngine/ColorCube/ColorCubeTextParser.swift)
  • Duplicated block (11–12 lines × 3) (Dev/Sources/SwiftUIDemo/ContentView.swift)
  • Duplicated block (13 lines × 2) (Sources/BrightroomUI/builtin/PhotosCrop/PhotosCropContentView.swift)
  • Duplicated block (4–8 lines × 4) (Sources/BrightroomParametric/BrushMaskImageProcessor.swift)
  • Duplicated block (6 lines × 2) (Sources/BrightroomEngine/ColorCube/ColorCubeTextParser.swift)
  • Duplicated block (6 lines × 2) (Sources/BrightroomParametric/ColorMixer/ColorMixerRenderer.swift)
  • Duplicated block (9 lines × 2) (Sources/BrightroomEngine/Library/Orientation.swift)
  • Edited copy of a member (18 corresponding lines) (Sources/BrightroomEngine/ColorCube/ColorCubeTextParser.swift)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (Sources/BrightroomParametric/BrushMaskImageProcessor.swift)
  • MethodTooLong: ContentView.body (Dev/Sources/SwiftUIDemo/ContentView.swift)
  • No assertions: (Dev/Tests/BrightroomEngineTests/BrushMaskImageProcessorTests.swift)
  • No assertions: canonicalDisplayP3HSVAnchorsMatchStoredOKLChHues (Tests/BrightroomParametricTests/ColorMixerRendererTests.swift)
  • No assertions: cropOutsideSourcePreservesCanvasAndPixelPositions (Tests/BrightroomParametricTests/CropOutputGeometryTests.swift)
  • No assertions: cropResolvesAgainstActualInputExtent (Tests/BrightroomParametricTests/CropOutputGeometryTests.swift)
  • No assertions: fullImagePreservesEveryPixel (Tests/BrightroomParametricTests/CropOutputGeometryTests.swift)
  • No assertions: laterCropUsesPreviousOutputDomain (Tests/BrightroomParametricTests/CropOutputGeometryTests.swift)
  • …and 5 more

Changes since last survey

  • 10 commits — 8 feature/other, 2 fixes

By area

  • (root) — 4 commits
  • Dev/Tests — 4 commits
  • Sources/BrightroomParametric — 1 commit
  • Sources/BrightroomUI — 1 commit

Notable commits

  • fix: Fix quarter-turn crop truncation by separating output rotation (#330)
  • fix: Fix transparent exports from dense brush masks (#333)
  • change: Add tone curve and configurable color mixer features (#329)
  • change: Hash PixelAspectRatio by the ratio it compares (#331)
  • change: Remove unused TransitionPatch dependency (#332)
  • change: Share one Metal brush rasterizer between canvas and export (#334)
  • change: Update README.md
  • change: Update README.md
  • change: Update readme
  • change: V5 (#293)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

FluidGroup/Brightroom was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f4cdffd5b2cb6dca4da504e093ad7c62ad6180b0 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.