Releases: Nano-AI/Orion
Release list
Orion v0.4.0-alpha.6
A small fix release on top of alpha.5.
Apple silicon only. Ad-hoc signed, not notarized — first launch needs
right-click → Open. README-FIRST.txt inside the disk image says the same.
Fixed
Hovering an ⓘ opened two windows. alpha.5 drew its own hint bubble and left
the system tooltip in place as a fallback — and the fallback turned out to work,
so both appeared: the bubble immediately, the tooltip a second later. There is
one now, and it is the immediate one. A hint that arrives after the pointer does
is a hint nobody waits for.
Known limits
- Ad-hoc signed, not notarized.
- A lens profile cannot be chosen by hand. Orion matches the lens by the
name in the file's EXIF, and when that name is not one the bundled database
recognises there is no fallback — the Optics panel offers the manual sliders
and nothing else. A search-and-pick control is wanted and is not built. - A spot placed across a hard edge is corrected wrongly on both sides — it is a
single number for the whole disc. - No X-Trans support yet; Bayer sensors only.
Orion v0.4.0-alpha.5
A fix release. If you have alpha.4, take this one instead.
Apple silicon only. Ad-hoc signed, not notarized — first launch needs
right-click → Open. README-FIRST.txt inside the disk image says the same.
Fixed
The ⓘ icons next to each panel section now actually show their text. In
alpha.4 they drew correctly and explained nothing — the release notes described
controls that explain themselves on hover, and they did not. The icon was a
plain image carrying the system tooltip modifier, which macOS only honours on a
view that takes part in hit testing. It now has a real hover target, and the
text is drawn rather than handed to the system tooltip, which did not appear at
all on the machine this was tested on.
Everything else is unchanged from alpha.4 — see those notes for perspective
correction, versions, highlight reconstruction, film grain, the creative
vignette, and a brush that no longer slows down as you paint.
Known limits
- Ad-hoc signed, not notarized.
- A spot placed across a hard edge is corrected wrongly on both sides — it is a
single number for the whole disc. - No X-Trans support yet; Bayer sensors only.
Orion v0.4.0-alpha.4
Fourth alpha. Perspective correction, versions, a creative vignette, film grain,
highlight reconstruction, and a brush that no longer slows down as you paint.
Apple silicon only. Ad-hoc signed, not notarized — first launch needs
right-click → Open, or macOS will refuse it. README-FIRST.txt inside the disk
image says the same.
New
Perspective correction. Vertical and horizontal keystone plus an aspect
control, folded into the geometry node's existing matrix rather than added as a
second resampling pass — so a corrected photograph is sampled once, not twice.
The frame auto-scales to stay full, as the lens corrections do.
Versions. A photograph's whole edit under a name, in a sibling
PHOTO.orion-snapshots.json. Switch between them; nothing is destroyed.
Highlight reconstruction beyond the window fit. A blown highlight's colour is
Laplace-interpolated from its own boundary, then detail is carried across from
whichever channels did not clip — Rouf, Lau & Heidrich (PROCAMS 2012), as its
model rather than its solve.
Film grain, added to the finished picture rather than to the sensor data,
from a deterministic pinned plate. A creative vignette, as an exposure change
in scene-linear light shaped by the cos⁴ law, following the crop rather than the
frame. Balance in the grading wheels, a rigid shift of all three zone centres.
A real export panel — bit depth chooses the graph that renders the file,
output sharpening after the resize, and "strip location" that actually removes
the place.
A folder index with a thumbnail cache, so reopening a shoot is warm.
Controls explain themselves on hover. The helper paragraphs that sat under
the sliders are on an ⓘ at each section's nameplate now; the Detail panel is 554
points shorter for it.
Fixed and faster
- Painting no longer slows down as the stroke grows. A pointer event costs
what the new dabs cost, not what the whole stroke costs — 5.20 ms appending 49
dabs to 294, against 36.46 ms re-laying them. - A dehaze drag went 147 → 102 ms — nine nodes, six of them full-resolution
over 24 MP, were being redone for a value none of them read. - Masks stay where you put them under a perspective correction. Four separate
errors, found and fixed in order: a radial mask's extent, then a gradient's
length, then a gradient's level sets, then the map's curvature across a large
mask. The last two were exact fixes rather than closer ones — the kernel now
carries each pixel back to the picture you drew on instead of transporting the
mask forward. - A photograph that renders as one flat colour now says so in the footer
rather than looking like a photograph of a brown wall. The underlying bug is
still unreproduced; this is the instrument for catching it.
Known limits
- Ad-hoc signed, not notarized.
- A spot placed across a hard edge is corrected wrongly on both sides — it is a
single number for the whole disc. - No X-Trans support yet; Bayer sensors only.
Orion 0.4.0-alpha.3 — colour range masks, multi-selection, seven fixes
Third alpha. Two new features, seven fixed defects, and one limitation from the
last two releases' notes that turned out no longer to be true.
Apple silicon only. Ad-hoc signed, not notarized — first launch needs
right-click → Open, or macOS will refuse it. README-FIRST.txt inside the disk
image says the same.
New
Colour range masks. Pick a shade off the photograph and select what is near
it. The metric is Euclidean distance in Oklab chromaticity, and it deliberately
ignores how light or dark a colour is — so a shade in shadow and the same shade
in sun are one selection. Compose it with a brightness range mask to narrow
that. research/masking.md §4c has the argument for why neither CIE76 nor
CIEDE2000 was the right answer.
Multi-selection in the filmstrip. ⌘-click toggles, ⇧-click extends,
⌘-⇧-click adds a second range, ⌘A takes everything in view. Sync and batch
export act on what is selected.
Presets have their own tab. They were a hundred and twenty lines at the top
of Light, in front of the Exposure slider. Light now opens on White Balance.
Fixed
- A painted mask vanished during every slider drag. Brush strokes, raster
mattes and creative LUTs never reached the preview graph that renders while
the hand is moving, so a local exposure dragged through a brush mask rendered
with no coverage at all until the drag ended. - A subject matte followed the graph to the next photograph. Opening the
next frame of a folder from the same camera reused the compiled graph and kept
the previous photo's matte — full coverage, right place, wrong picture. - The colour-mixer eyedropper read the wrong pixel on a cropped photograph.
It undid the rotation and not the crop, so clicking the subject picked the
colour of whatever sat at that fraction of the uncropped frame. - Subject and Person analysed a red-tinted photograph when "Show mask" was
on. The coverage overlay was not being turned off around the render handed
to the segmentation model — which is on precisely when someone is working with
masks, and so precisely when they press Subject. - A luminance range mask never survived reopening the photo. Its three
settings were written to the sidecar and silently ignored on the way back in. - Sync and "Export all" ignored the filmstrip filter. Both acted on the whole
folder while the warning beside them said "every photo in view", so culling to
your picks and pressing Export all wrote every reject alongside them. - A crash-shaped hole at the C boundary: one accessor could let a C++ exception
reach Swift, which terminates the process rather than raising an error.
Corrected from the previous notes
v0.4.0-alpha.1 and .2 both listed 8-bit TIFF as a limitation. It is not
one and has not been for some time — TIFF exports are 16 bits per channel,
verified on this build. The 256-dab brush truncation listed there is also
fixed, as of v0.4.0-alpha.2's successor.
Still true
Apple silicon only. Sky masks are not implemented — the segmentation model
Orion uses cannot produce one. A subject matte is not written to the sidecar, so
reopening a photo leaves a Subject row empty until it is run again; the panel
says so rather than leaving it to be discovered.
Suites at this tag: orion-tests 483 checks, orion-viewport-tests 3374
checks, 21 reproduction scenarios totalling 91 checks, all passing. The
benchmark gates the M0 latency target and exits zero on all three sample frames.
Orion 0.4.0-alpha.2 — six bug fixes
Unofficial alpha. Apple silicon, macOS 14 or later.
v0.4.0-alpha.1, replace it. That build shipped with a
brush that painted in the wrong place, a dead eyedropper, and an undo that
discarded your work. All fixed here.
Install: drag to Applications, then open it once from the right-click menu
(right-click → Open → Open). macOS blocks a normal double-click because this
build is ad-hoc signed rather than notarized. If no Open button appears:
xattr -dr com.apple.quarantine /Applications/Orion.app
Fixed since alpha.1
- Brush strokes landed in the wrong place. Dab centres never went through the
crop and rotation transform the gradient masks use. A portrait file carries an
EXIF quarter turn, so a stroke was mirrored and ninety degrees off with the
rotate control untouched. - The brush was an oval. The nib was measured in normalized coordinates, so it
was 3:2 on a 3:2 photograph and Size stretched it instead of growing it. - The colour-mixer eyedropper did nothing. Pixel sampling read an 8-bit
texture as half float and returned NaN, and the tool correctly refuses a pixel
with no hue — so the pick failed silently. - Undo after Auto threw away your edits. Auto recorded no history entry, so
undo stepped past it to the edit before. - Auto gave a different answer each press. It derived its look from the
already-corrected frame, and its solver stopped after a fixed six passes when
frames far from the target need up to seventeen. - Panel labels were too wide.
Known issues
- Compare may show the wrong settings, and rotating while comparing misbehaves.
Reported, not yet reproduced — the automated harness cannot see the canvas
compositing where the bug likely lives. - Adjustments render at full resolution, so dehaze (~108 ms) and clarity
(~58 ms) are not interactive at 24 MP. Rendering drags at reduced resolution is
a planned story that is not built. - A brush stroke over 256 dabs is truncated.
- 16-bit export is not wired up; TIFF is 8-bit.
- Sony ARW is well tested; other Bayer cameras via LibRaw are not. No Fuji
X-Trans. No Intel build.
Edits are saved to XMP sidecars beside your photos. The raw file is never
modified.
Orion 0.4.0-alpha.1 — first unofficial build
Unofficial alpha. Apple silicon, macOS 14 or later.
Orion is a fast, subscription-free RAW editor for macOS. This is the first build
outside the source tree — it opens raw files, develops them on the GPU, and
exports. It is an alpha and it is versioned like one.
Install
Drag Orion to Applications, then open it once from the right-click menu:
right-click Orion.app → Open → Open. macOS blocks a normal double-click
because this build is signed ad-hoc rather than with a paid Apple Developer
certificate, and is not notarized. Same binary either way; the warning is about
who vouched for it. If no Open button appears:
xattr -dr com.apple.quarantine /Applications/Orion.app
What works
- Sony ARW decode, RCD demosaic, scene-linear Rec.2020 pipeline, AgX display transform
- Exposure, contrast, highlights/shadows, whites/blacks, white balance with an eyedropper, vibrance/saturation
- Tone curve, colour mixer across eight hue bands, three-way colour grading
- Clarity (local Laplacian), dehaze (dark channel prior), exposure fusion, one-click Auto
- Creative LUTs —
.cube, tetrahedral - Crop, rotate, straighten; lens corrections from lensfun's database
- Profiled wavelet denoise, capture sharpening
- Local adjustments — linear and radial gradients dragged on the canvas, brush strokes painted on it, and up to four components combined per mask with add, subtract and intersect
- Folder browse, filmstrip, star ratings and reject flags, before/after compare
- Export to JPEG, PNG and TIFF, with resize
- Edits go to XMP sidecars beside your photos. The raw file is never modified.
What does not
- Other Bayer cameras decode through LibRaw but are far less tested than ARW. Fuji X-Trans is not supported.
- No luminance or colour range masks, no spot removal, no presets, no copy/paste of settings across a selection, no batch export. Those are why this is not called v1.
- 16-bit export is not wired up; TIFF is 8-bit for now.
- A brush stroke longer than 256 dabs is truncated, and says so on stderr.
- Intel Macs are not built.
Performance
On an M-series Mac at preview resolution, an exposure drag recomputes three of
118 nodes in 9.1 ms at the 95th percentile. The heaviest single control is
dehaze at 108 ms, which is a one-off render rather than a drag.
Versioning
Minor tracks the milestone in flight — M4, local adjustments, is where the work
is now. v1.0.0 is reserved for the feature list in planning/FEATURES.md, not
for the first build that runs on someone else's machine.