-
DarkRoom 0.13.2 — The People screen answers at once
StableBenchmarks / CPU and I/O (per commit) (push) Failing after 6m36sBenchmarks / Frame budget (on demand) (push) SkippedBuild and test / Desktop (Linux) (push) Failing after 46sBuild and test / Layer separation (push) Successful in 34sTraceability / Requirement traces (push) Failing after 40s🐳 Android image / Build and push (push) Successful in 2sBuild and test / android-image (push) Successful in 2s🐳 Windows image / Build and push (push) Successful in 2sBuild and test / windows-image (push) Successful in 2sBuild and test / Android (aarch64) (push) Failing after 2m26sBuild and test / Windows (x86_64, cross) (push) Failing after 3m7sreleased this
2026-09-20 09:07:45 +00:00 | 409 commits to master since this releasefile, a folder can be a library from its top level, and there is a manual.
- Confirming a face costs a frame, not half a second. Every click on
the face grid redrew the screen, and the redraw recomputed the coverage
line — several scans of the whole catalog to answer a question a
confirm cannot change — then re-read and re-decoded every crop of the
selected person. On a 24,000-image library with 19,000 faces a click was
~530 ms of catalog work; it is ~15 ms. "Confirm all" and a split write
their group in one transaction instead of one per face, and the rail is
filtered in the query rather than after reading 17,000 empty groups.
The coverage figure, when it is recomputed (opening the screen, ending a
sweep), is served from new partial indexes — schema V19, applied on
first open. CLAUDE.md records the patterns. - Deleting an image is one round trip. Each move to the trash asked
the server to create the trash folder's whole ancestor chain first;
the connection now remembers what it has confirmed exists. - A folder is a library from its top level. Confirming "/" in the
picker used to leave "Open library" disabled; a folder is now shown as
a LIBRARY, the subfolder question is optional, and the header names the
folder. - Thumbnail shards sync from a snapshot, never the live file. A shard
written moments earlier could upload as an empty file with its schema
still in the WAL, and every other device failed with "no such table"
on every pass. - A merged panorama is dated and sorted with its frames. The linear
DNG the merge writes puts its IFDs after the pixels; the scan reads the
tail as well as the head, and the composite takes the mean of its
frames' capture times rather than the first. - The border filler is fine-tuned on projection-shaped voids. ~2 dB
better in edges and corners than the stock model because it stops
inventing objects; still experimental (docs/panorama.md has the
measurements and what is left). - Smaller: the month headings in the grid are named on the row a month
opens; a mask's tint shows only while masking; a category mask no
longer widens the develop column past the window; a merge worker that
dies out of GPU memory is reported instead of leaving the page on
"Stop"; the keyword sheet takes focus; the empty trash says it is
empty; the export settings no longer promise to ask for a folder. - A manual. docs/manual/README.md pictures every feature from the
application itself; tools/manual/ regenerates the pictures.
darkroom-0.13.2-arm64-v8a.apkis the release-signed Android build (API
28+, arm64).darkroom-desktop-0.13.2-x86_64-linuxis the desktop binary.
SHA256SUMScovers both.Downloads
- Confirming a face costs a frame, not half a second. Every click on