-
DarkRoom 0.14.0
Benchmarks / Frame budget (on demand) (push) SkippedBenchmarks / CPU and I/O (per commit) (push) Successful in 8m25sBuild and test / Desktop (Linux) (push) Failing after 26m11sBuild and test / Layer separation (push) Successful in 33s🐳 Android image / Build and push (push) Successful in 10m41sBuild and test / android-image (push) Successful in 10m42s🐳 Windows image / Build and push (push) Successful in 4m17sBuild and test / windows-image (push) Successful in 4m17sTraceability / Requirement traces (push) Successful in 59sBuild and test / Android (aarch64) (push) Successful in 40m53sBuild and test / Windows (x86_64, cross) (push) Successful in 46m51sreleased this
2026-09-21 09:33:31 +00:00 | 337 commits to master since this releaseThe interface crate restructured so that a feature owns a function rather than a region of one, with no change in what the application does; and, from the sync work landed alongside, a fresh device inherits its peers' names, dates and collections before deriving anything of its own.
The UI crate, restructured. develop.rs, library.rs, collections_ui.rs and library_ui.rs — 9,300, 7,700, 4,600 and 8,400 lines — are module directories now, split by area of behaviour with tests beside the code they test. Every screen's wire() is a list of named functions, one per section; lib.rs::run() went from 2,724 lines to 247 of construction and startup, with the develop screen's callbacks in develop_ui.rs like every other screen's. No function in the crate's wiring exceeds 300 lines.
One value says which view is showing. The six mutually exclusive booleans on the root component are View and Page enums, so two views at once is unrepresentable and the five-term conjunctions that chose what to draw are single comparisons. Escape on the Identity screen does what it visibly did before, which was nothing.
Screen state off the root. The collections sidebar and the library grid have their own Slint globals, the pattern the develop screen already used: 155 properties and callbacks leave AppWindow, and the Rust that drives each screen reaches its own state instead of the window's.
Verified as a pure move. A multiset audit of code lines over every moved region lost nothing; the workspace gate is clean on every merge; the manual recorded from this build and from 0.13.6 from the same library snapshot matches picture for picture; the Android app cross-checks clean.
Sync order for a fresh device. The server's face shards, catalog and dates are taken when the scan completes, not after the sweep, so names and collections appear first; faces are adopted a hundred images per commit and the shards hold one generation per image; a peer's run marker survives adoption so adopted faces are not re-exported as ours.
The Windows installer ships the border filler, and the packaging step counts what it staged.
Documentation for two audiences. docs/ holds the manual and the gesture reference; everything for someone changing the code is under docs/dev, with an index that lists the manual first and archives the two superseded plans rather than deleting them. The inference requirements are registered.
Housekeeping. fill.rs and the traceability tool's one long line are formatted; the matrix is regenerated.
The APK, the desktop binary and SHA256SUMS are built by CI from this tag's commit.
Downloads