Luma is a native macOS photo-editing prototype built with SwiftUI and Core Image.
The goal is a fast local editor for browsing photos, making common non-destructive adjustments, applying simple portrait retouching, and exporting edited JPEG, HEIC, PNG, or TIFF files without sending images to a server.
- Import local photos and folders.
- Drag photos or folders into the workspace to import them.
- Click the empty workspace to open the system file picker.
- Restore the local catalog across launches.
- Load photo metadata, histograms, and thumbnails in the background so importing and restoring large libraries stays responsive.
- Browse thumbnails and preview the selected photo.
- Adjust the thumbnail grid size from the library sidebar.
- Keep thumbnail cells stable while showing rating and flag state.
- Move to the previous or next visible photo from the toolbar or keyboard.
- Jump to the first or last visible photo from the Photo menu.
- Search by filename, camera, lens, format, and common exposure metadata.
- Sort by file name, capture date, rating, flag, color label, file size, format, camera, lens, or import date.
- Reverse the current library sort order.
- Filter by picked, rejected, rated, unrated, unflagged, labeled, unlabeled, individual color labels, recent imports, RAW, non-RAW, edited, unedited, and minimum star rating.
- Clear active library filters in one action.
- Hide rejected photos during everyday browsing.
- Keep the preview selection aligned with the visible library filter.
- Clear in-memory image caches when needed.
- Rate photos from zero to five stars.
- Use number keys 0-5 to clear or set the selected photo rating.
- Mark photos as picked or rejected.
- Add color labels and use number keys 6-9 for red, yellow, green, and blue labels.
- Clear rating, flag, and color label from the selected photo in one action.
- Sync the selected rating and color label to all picked photos.
- Remove photos from the local catalog without deleting the original file.
- Remove all rejected photos from the local catalog without deleting original files.
- Reveal the selected original file in Finder.
- Copy the selected original file path to the clipboard.
- Create virtual copies for alternate edits without duplicating the original image file.
- Non-destructive adjustment model.
- Before and after comparison.
- Side-by-side original and edited comparison.
- Luminance and RGB histogram display.
- Fit, 100 percent, zoom in, and zoom out controls in the preview.
- Highlight clipped shadows and highlights in the preview.
- Undo and redo for adjustment changes.
- Collapse advanced adjustment panel sections.
- In-memory preview caching for repeated renders.
- Keep the current preview on screen while edits re-render, showing a small progress indicator instead of a full-screen spinner.
- In-memory thumbnail caching for smoother library browsing.
- Rotate left and right.
- Flip photos horizontally or vertically.
- Straighten.
- Vertical and horizontal perspective transform controls.
- Crop to common aspect ratios, including square, portrait, classic photo, and wide formats.
- Adjust the crop framing position after choosing a fixed aspect ratio.
- Reset crop framing, straighten, and rotation without changing tone edits.
- Apply built-in presets for vivid color, landscapes, portraits, black and white, warm film, and matte film.
- Apply one-click Auto Enhance.
- Apply a one-click black and white look from the panel or Photo menu.
- Copy and paste adjustments between photos.
- Sync the current adjustments to all picked photos.
- Reset the selected photo adjustments from the Photo menu or keyboard.
- Reset tone adjustments without changing crop, local, or retouching edits.
- Apply a built-in preset to all picked photos.
- Reset adjustments on all picked photos.
- Inspect a luminance histogram.
- Lens distortion correction for mild barrel or pincushion adjustment.
- Defringe control for reducing color fringing on high-contrast edges.
- Lens vignette correction for brightening dark corners.
- Reset lens corrections without changing crop, tone, local, or retouching edits.
- Exposure.
- Highlights.
- Shadows.
- Whites.
- Blacks.
- Contrast.
- Saturation.
- Hue.
- Warmth.
- Tint.
- Vibrance.
- Fade for matte black-point lift.
- Texture.
- Clarity.
- Dehaze.
- Noise reduction.
- Sharpness.
- Vignette with radius control.
- Film grain with amount, size, and roughness controls.
- Tone curve controls for shadows, darks, lights, and highlights.
- Color grading for shadows, midtones, and highlights with balance control.
- Radial local exposure, saturation, and warmth with center, radius, and feather controls.
- Linear gradient exposure, saturation, and warmth with start and end controls.
- Invert radial and linear local masks.
- Flip linear gradient direction without changing the exposure amount.
- Reset radial and linear local adjustments independently.
- Multi-point spot healing with source offset, radius, feather, and strength controls.
- Add, select, delete, and reset spot-heal points.
- Click the preview image to place a selected spot-heal point directly on the photo.
- Reset local adjustments without changing global edits.
- HSL Color Mixer controls for red, orange, yellow, green, aqua, blue, purple, and magenta.
- Reset color mixer channels without changing other edits.
- One-click Auto Beauty.
- Skin smoothing.
- Wrinkle softening.
- Blemish fading.
- Whitening.
- Rosy tone.
- Brightening.
- Skin warmth.
- Glow.
- Softening.
- Detail.
- Eye enlargement using face detection when eye landmarks are available.
- Face slimming using face detection.
- Body slimming with a simple center-weighted distortion.
- Reset beauty adjustments without changing other edits.
- View basic file information.
- Inspect common EXIF fields such as camera, lens, exposure, focal length, and capture time.
- Identify system-readable RAW files with a RAW badge and filter RAW or non-RAW images.
- Render and export in a color-managed sRGB space, so exported files are correctly tagged and match the on-screen preview.
- Export the selected edited photo as JPEG, HEIC, PNG, or TIFF.
- Apply export presets for full-size, large web, social, and thumbnail output.
- Choose JPEG or HEIC quality.
- Resize exports by long edge.
- Apply output sharpening after export resizing.
- Add a text watermark during export.
- Choose whether exported filenames get a custom suffix.
- Reset export settings to the default JPEG output.
- Batch export all picked photos as JPEG, HEIC, PNG, or TIFF.
Open the package in Xcode:
open Package.swiftOr build it from the command line:
swift buildRun tests from the command line:
swift test- RAW support depends on what macOS ImageIO and Core Image can decode on the current machine.
- RAW files are decoded through the Core Image RAW pipeline (CIRAWFilter), which handles demosaicing. Luma does not yet expose camera-profile, lens-correction, or wide-gamut controls, and the working and output space is sRGB rather than a full ICC color-management pipeline.
- Portrait retouching is simple Core Image based processing. It is useful for quick edits, but it is not yet a semantic face/body retouching engine.
- Healing and masking are still early, and brush-based retouching is not complete yet.
- Preview and thumbnail caching are in memory only. Very large libraries and large RAW files still need disk-backed caching and more scheduling work.
- More local adjustment mask types.
- Brush and more gradient tools.
- Brush-based healing and spot removal.
- Disk-backed preview and thumbnail cache for very large libraries.
- More complete RAW and color pipeline, including camera profiles, lens correction, and wide-gamut output.