From e997be8c722a60557ead39006093bd8cb21fb11f Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Fri, 28 Aug 2026 22:24:58 +0200 Subject: [PATCH] Say which version this is: 0.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A hundred commits since 0.7.0, and the face subsystem in them is not a set of fixes — it is the difference between a feature that was shipped and one that works. Clustering finished at all for the first time: the old agglomeration rescanned every live pair and recomputed average link from scratch after every merge, and on a real library it did not return. A sparse above-threshold graph, connected components and Lance-Williams sums put 1,813 faces at 0.28s, and the merge threshold moved to 0.80 because the old 0.90 was measured — not guessed — to leave a third of the library ungrouped. Faces are no longer indexed at any size or any sharpness. Both floors were measured over the real library with `face_index --quality`: 32 source pixels across the aligned crop, and a contrast-invariant sharpness that catches the large-but-blurred face whose confident, wrong embedding used to weld two people together. The crop is cut once and kept, so the People screen is no longer a derivative of a thumbnail cache entitled to evict anything at any moment. The screen itself became usable: the faces wrap into a grid instead of running off the edge, the header fits a phone, a group can be set aside, and a person's photographs are a button away — as a union or an intersection of several people. And face sync now reaches the other device. Re-indexed images re-export, shards written before the crop and index-time columns are repaired rather than failing every insert, people and the user's judgements about them cross the wire at all, and the pass says what it is doing while it does it. The Android versionCode follows without being restated — package.sh packs MAJOR*10000 + MINOR*100 + PATCH, so 0.8.0 is 800, above the 700 already on devices and therefore an upgrade rather than a refusal. `pkgrel` returns to 1, since this is a new version rather than a rebuild of the last one. Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 38 +++++++++++++++++++------------------- Cargo.toml | 2 +- packaging/PKGBUILD | 4 ++-- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 72b0378..7a0b389 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1221,7 +1221,7 @@ checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] name = "darkroom-android" -version = "0.7.0" +version = "0.8.0" dependencies = [ "android_logger", "dr-sync-nextcloud", @@ -1232,7 +1232,7 @@ dependencies = [ [[package]] name = "darkroom-desktop" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "dr-ui", @@ -1404,7 +1404,7 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "dr-catalog" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-face", "dr-plat", @@ -1419,7 +1419,7 @@ dependencies = [ [[package]] name = "dr-decode" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-types", "env_logger", @@ -1433,7 +1433,7 @@ dependencies = [ [[package]] name = "dr-export" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-decode", "dr-gpu", @@ -1451,7 +1451,7 @@ dependencies = [ [[package]] name = "dr-face" -version = "0.7.0" +version = "0.8.0" dependencies = [ "env_logger", "log", @@ -1464,7 +1464,7 @@ dependencies = [ [[package]] name = "dr-film" -version = "0.7.0" +version = "0.8.0" dependencies = [ "log", "serde", @@ -1473,7 +1473,7 @@ dependencies = [ [[package]] name = "dr-gpu" -version = "0.7.0" +version = "0.8.0" dependencies = [ "bytemuck", "dr-decode", @@ -1490,7 +1490,7 @@ dependencies = [ [[package]] name = "dr-ingest" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-plat", "dr-types", @@ -1502,7 +1502,7 @@ dependencies = [ [[package]] name = "dr-lens" -version = "0.7.0" +version = "0.8.0" dependencies = [ "lensfun", "log", @@ -1510,7 +1510,7 @@ dependencies = [ [[package]] name = "dr-pipeline" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-types", "log", @@ -1519,7 +1519,7 @@ dependencies = [ [[package]] name = "dr-plat" -version = "0.7.0" +version = "0.8.0" dependencies = [ "android-native-keyring-store", "dr-types", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "dr-segment" -version = "0.7.0" +version = "0.8.0" dependencies = [ "env_logger", "log", @@ -1548,7 +1548,7 @@ dependencies = [ [[package]] name = "dr-sync" -version = "0.7.0" +version = "0.8.0" dependencies = [ "async-trait", "dr-types", @@ -1559,7 +1559,7 @@ dependencies = [ [[package]] name = "dr-sync-nextcloud" -version = "0.7.0" +version = "0.8.0" dependencies = [ "async-trait", "dr-decode", @@ -1580,7 +1580,7 @@ dependencies = [ [[package]] name = "dr-thumbs" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dr-types", "jpeg-encoder", @@ -1592,7 +1592,7 @@ dependencies = [ [[package]] name = "dr-types" -version = "0.7.0" +version = "0.8.0" dependencies = [ "serde", "serde_json", @@ -1601,7 +1601,7 @@ dependencies = [ [[package]] name = "dr-ui" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "dr-catalog", @@ -6927,7 +6927,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "traceability" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "serde", diff --git a/Cargo.toml b/Cargo.toml index 154d616..0dcfab7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ members = [ ] [workspace.package] -version = "0.7.0" +version = "0.8.0" edition = "2021" rust-version = "1.92" license = "GPL-3.0-or-later" diff --git a/packaging/PKGBUILD b/packaging/PKGBUILD index 5dd61e1..5895482 100644 --- a/packaging/PKGBUILD +++ b/packaging/PKGBUILD @@ -4,10 +4,10 @@ # makes `makepkg -si` in this directory install what you are actually working # on. Swap `source` for a tagged tarball when there is something to release. pkgname=darkroom -pkgver=0.7.0 +pkgver=0.8.0 # 2: the package gained the face models (docs/faces.md §2.2a). Same version, # different contents, so makepkg must not reuse the 0.7.0-1 archive. -pkgrel=2 +pkgrel=1 pkgdesc="Non-destructive RAW photo library and editor" arch=('x86_64') url="https://gitea.tourolle.paris/dtourolle/DarkRoom"