• DarkRoom 0.12.0 — Faces with a quality
    Benchmarks / CPU and I/O (per commit) (push) Successful in 2m52s
    Benchmarks / Frame budget (on demand) (push) Skipped
    Build and test / Desktop (Linux) (push) Successful in 44m13s
    Build and test / Layer separation (push) Successful in 56s
    🐳 Android image / Build and push (push) Successful in 17m16s
    Build and test / android-image (push) Successful in 17m17s
    Traceability / Requirement traces (push) Successful in 1m6s
    Build and test / Android (aarch64) (push) Successful in 23m37s
    Stable

    dtourolle released this 2026-09-12 02:01:24 +00:00 | 536 commits to master since this release

    Faces 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.apk is the release-signed Android build (API 28+,
    arm64). darkroom-desktop-0.12.0-x86_64-linux is the desktop binary.
    SHA256SUMS covers both.

    Downloads