What's Changed
- Files: opening a RAW decodes on a worker thread, and a turning arc over the
preview names the file while it runs, so the window keeps responding instead of
freezing for the length of the decode. Everything after the decode (adopting the
document, the sidecar, the chain walk, the preview rebuild) still happens on the
interface thread. A second open while one decode is in flight is refused with a
status line rather than queued, because the decoder has no cancellation - Files: opening an image that has a saved chain while another image is open no
longer replaces the chain silently: the host asks whether to open the image with
the parameters saved for it, or to keep the parameters of the image that is open
now and apply them to the new one - New bundled plugin: Denoise (profiled). It models the sensor noise as
V(X) = a * X + b, stabilizes that variance with the generalized Anscombe
transform, and shrinks the result with edge-aware a-trous wavelets, which is
what darktable's denoise (profiled) does in its wavelets mode - The host reads the camera and the ISO setting out of a RAW file and fills the
noise model of that plugin from the camera's profile, the way darktable does,
interpolating between the two neighbouring ISO settings when the database has
no shot for the exact one. The profile database is a copy of darktable's
data/noiseprofiles.json, which stays under darktable's GPL-3.0 license
(third_party/noiseprofiles) - The host now reports the proxy render scale of a preview or a draft pass to the
plugins, so a denoiser follows the resolution it is handed: the preview shows
the smoothing the export will write - Linux: the AppImage carries update information, so AppImageUpdate and
appimageupdatetoolupdate it in place instead of asking you to download the
whole file again - Linux: a build from a
release/vX.X.Xbranch follows the pre-release list and a
stable build follows the newest stable release, so neither is ever offered a
build older than itself - Linux: the release publishes the
.zsyncfile that those tools read. The file
sits beside the AppImage and records the SHA-1 of that AppImage, so an update is
verified against the build it replaces - Linux: an AppImage downloaded before this release carries no update
information, so download this build once to start receiving in-place updates - Packaging: the appimagetool that builds the AppImage is pinned to release 1.9.1
and checked against its published SHA-256 - Packaging: the self-test is its own executable, so it needs no window and can run
on a machine without OpenGL. The macOS bundle and the AppImage carry it beside
the host, andOfxRawHost --selfteststill runs it; the single-file Windows
build keeps it inside the executable - Packaging: the release publishes the AppImage the build produced and the
in-tree self-test as the gate, without running the AppImage again in a smoke
test. That smoke test stopped after the Transform cases on every release since
the sidecar prompt test landed, and the step then failed on a silent check, so
the release never published - README: the Linux section names the update command and its trust model, and the
Windows example passes the version label that the build reads - Build: the source is split into module layers (
core,codecs,engine,
model,persist,services,ui,ofx,platform, andapp), and the
allowed edges between them are checked at configure time, frombuild.sh, and
in the release workflow. The check found one edge that had been live: the
filmstrip loaded thumbnails from a layer that may use neither the codecs nor the
persistence, so it moved toservices.model/now holds only header-only
state - Build: the self-test and the test suites carry the headers they use instead of
depending on a shared header that pulled in everything
Downloads
- macOS (Apple Silicon):
OfxRawHost-macOS-arm64.dmg - macOS (Intel):
OfxRawHost-macOS-x86_64.dmg - Windows (x64):
OfxRawHost-Windows-x64.exe - Linux (x86_64):
OfxRawHost-Linux-x86_64.AppImage
Full Changelog: v0.4.3...v0.4.4