• v0.7.0 f82c69bc6b

    DarkRoom 0.7.0 — Film simulation
    🐳 Android image / Build and push (push) Successful in 1s
    Build and test / android-image (push) Successful in 1s
    Build and test / Desktop (Linux) (push) Successful in 1h20m35s
    Build and test / Layer separation (push) Successful in 31s
    Traceability / Requirement traces (push) Failing after 1m0s
    Build and test / Android (aarch64) (push) Failing after 33m5s
    Stable

    dtourolle released this 2026-08-26 16:14:23 +00:00 | 929 commits to master since this release

    Film simulation, and the library that can keep up with it.

    Film simulation

    DarkRoom now renders a film stock from that stock's own measured
    characteristic curves rather than from someone's approximation of the look.
    The stock is chosen per photograph and remembered with it.

    • Five Ilford stocks — Delta 100, Delta 400, FP4 Plus, HP5 Plus and
      Pan F Plus — alongside the colour stocks. The profiles state plainly
      that they are constructed rather than measured, so nothing here claims
      an authority it does not have.
    • Grain counts silver instead of adding noise on top: density drives
      the grain, so it behaves the way the stock does rather than the way a
      noise generator does.
    • Black-and-white negatives are printed rather than shown as a scan,
      and development runs from the measurements rather than a contrast slider.
    • The whole stock renders on the GPU and takes over the render path, so
      choosing a film is not a reason to wait.

    Library

    The grid stopped re-answering the same questions every time the window
    moved. It pages along an index rather than re-sorting the library, loads
    the window around the whole view instead of its first cell, and fetches
    what is on screen before what is not. Shift-click now takes the whole run
    it names rather than the part that happened to be loaded, and shows which
    cell it is measuring from.

    Build and CI

    Most of this is invisible unless it was broken, and it was.

    • The segmentation model reaches CI again. Git LFS was being sent two
      Authorization headers and Gitea answered 400; the Android image had no
      git-lfs client at all, and then no file(1) for the API-level check.
    • The Android build produces an installable APK, assembled by the same
      script package.sh uses locally, and signs it with a real key when one
      is configured — see docs/android-signing.md.
    • The test build stopped filling the runner's disk: no debug info, no
      incremental state, 24 GB down to 3.3 GB.

    Files

    file what
    darkroom-0.7.0-arm64-v8a.apk Android, arm64-v8a, minSdk 28. Debug-signed — this is a build you can install, not a distribution signature.
    darkroom-desktop-0.7.0-x86_64-linux Linux desktop binary, x86-64. Needs libfontconfig1 and libxkbcommon present.
    SHA256SUMS checksums for both.
    Downloads