-
DarkRoom 0.12.0 — Faces with a quality
StableBenchmarks / CPU and I/O (per commit) (push) Successful in 2m52sBenchmarks / Frame budget (on demand) (push) SkippedBuild and test / Desktop (Linux) (push) Successful in 44m13sBuild and test / Layer separation (push) Successful in 56s🐳 Android image / Build and push (push) Successful in 17m16sBuild and test / android-image (push) Successful in 17m17sTraceability / Requirement traces (push) Successful in 1m6sBuild and test / Android (aarch64) (push) Successful in 23m37sreleased this
2026-09-12 02:01:24 +00:00 | 536 commits to master since this releaseFaces that know how good they are, and masks you can see.
Faces
- Every face carries a quality. The embedder's raw output has a length,
and the length is the model's own reading of how recognisable the crop
was — a blur, an occlusion or a hard profile comes out short. It is kept
now, stored as the raw vector, and shown on the People screen as
"Quality 17.3". - A poor face is never a reference. Faces below the floor are still
placed with the person they match, but nothing is ever compared against
them, two of them are never paired, and they count as nobody's evidence.
One bad crop can no longer bridge two people into one group. - Faces already indexed are measured, not re-detected. The next "Index
faces" pass fetches each original once, embeds the faces it already found
from their stored landmarks, and writes the quality over them — ids,
boxes, confirmations and suggestions untouched. A synced device adopts the
measured vectors rather than redoing the work. - Choose the detector. Fast / Balanced / Thorough on the settings page,
per device: the measured trade is 14% more (small, real) faces for 12%
more time at Balanced, and a further 12% for 3.1× the time at Thorough.
Switching is a new model id and a re-index, never a silent change under
existing faces, and an image holds the faces of whichever pipeline looked
at it last.
Masks
- An eye and a colour on every mask. Each layer in the stack shows its
mask in its own colour, several at once, so where the sky's edge meets the
building's is something you can look at rather than guess. - A mask shows itself as soon as it is made, from the resting position,
so choosing a category answers what it selected. - A mask that is nothing but a brush. Paint sits beside Linear and
Radial; pressing it arms the brush and shows the mask. - The brush works again — and so do selecting a subject by clicking it,
placing a repair and sampling a neutral, all of which sat behind the
pan/zoom area and were never offered a press.
Build
- The Android build is signed with a real key from this release on. Any
device holding an earlier, debug-signed build has to uninstall once; every
build after this one installs over it with data intact. - CI is green on every job for the tagged commit.
Assets
darkroom-0.12.0-arm64-v8a.apkis the release-signed Android build (API 28+,
arm64).darkroom-desktop-0.12.0-x86_64-linuxis the desktop binary.
SHA256SUMScovers both.Downloads
- Every face carries a quality. The embedder's raw output has a length,