Files
DarkRoom/docs
dtourolle 06422a07db Offer three denoise networks and a method to choose between them
AI Denoise's Apply switch becomes Method: Bilinear, Fast, Medium, Best,
default Best, so an untouched raw writes nothing and develops through the
mixture. `apply` is still read and never written: 0 is Bilinear, 1 keeps
a network already chosen.

- Best is the mixture of a flat and an edge expert with a learned gate;
  Medium and Fast are students distilled from it. 2.48 s, 0.79 s and
  0.57 s for a 20 MP frame on TensorRT fp16.
- Each network carries its own tile border (256 for the mixture, 192 for
  the students) through `dr_denoise::Shipped` and `TileNet::halo`.
- The file is hashed once at open and each network keys its own cached
  result; Bilinear keeps the result in memory for the way back.
- Each has an .a16w16 sibling for the Hexagon: 0.00 dB on the 6D gate,
  at most 0.11 dB with the noise scaled x0.5 to x4.
- APK BUNDLED 19 -> 23; the PKGBUILD installs all three.
2026-10-04 08:02:25 -04:00
..

Documentation

Two audiences, two folders. Most people want the first table and never the second.

Using DarkRoom

The manual Every feature, pictured from the application itself — opening a library, rating, labelling and filing, duplicate originals, developing, local masks, repair, film, presets, panoramas, export and albums. The application carries it and opens it from Help and from Settings
How it is driven Every gesture and shortcut, by screen. Generated from the code, so it cannot describe one the application does not have. The same list is the in-app help sheet: Help or F1 in the grid, ? or F1 in develop

The top-level README says what DarkRoom is, how to get it on each platform, and what is still missing.

Changing DarkRoom

Everything under dev/ is for someone working on the code. Start with CONTRIBUTING.md, which says how to land a first change without reading the rest.

The register and the record. What must be built, how it is built, and how far along it is.

requirements.md What the software must do — the numbered register, the decisions (D-numbers) and the spikes (S-numbers)
architecture.md How it is built — crates, the GPU pipeline, the data model, sync
traceability.md Generated: which requirement is claimed by which file. Never edited by hand
outstanding.md What is specified and not built, and whether that is a decision or a gap
technical-debt.md Compromises taken deliberately, each with the condition that retires it
code-health.md What a contribution costs, per seam, measured

Designs, one per subsystem. Each is the specification the code was built to, kept current as the code moved.

catalog.md The index, the library view, incremental scan, the job queue
storage.md Storage backends: the seam a folder, a sync client and a Nextcloud account share
faces.md Face detection, identity, clustering and the eye-state models
segmentation.md How the application finds the regions a local mask snaps to
mask-editing.md Painting, erasing and combining masks
spot-removal.md Clone and heal as parameters in the edit graph
panorama.md Alignment, projection, the chunked composite and the border fill
inference.md The neural runtime and model chosen per device, with the measurements
display-and-extension.md The display contract, and why the fused pipeline is already most of a plugin format
view-composition.md A controller for the display layer
ui-navigation.md Finding things in the interface once there are many

Measurements. Numbers committed so a regression is a diff rather than a recollection.

benchmarks.md The per-commit suite: what it covers, what it does not, how to read a failure
bench-baseline.json The committed numbers the suite checks against
frame-budget.md What a frame costs on each device, and the decision those figures settled

Platforms and distribution.

distribution.md Which channels v1 targets and what each one constrains
windows.md The Windows installer, cross-built from the Linux CI
android-signing.md Which key signs the APK, and keeping it

Archive. Kept as the record of what was asked for, not as plans.

milestone-v0.1.md The first milestone, delivered 2026-08-30 and superseded
ui-refinement.md How the interface should look; succeeded by ui-navigation.md

Conventions

Three files here are generated and must not be edited by hand: gestures.md, dev/traceability.md and manual/index.html, the page the packages install, rendered from manual/README.md. All three come from cargo run -p traceability, the pre-commit hook keeps them in step with the tree, and CI fails when one is not what the tree generates. The manual's pictures are recorded by tools/manual and live in LFS.

A design document links to the requirements it satisfies and to the code that satisfies them. When the code moves, the link moves with it; a document that has stopped being true goes to dev/archive/ with a note saying what replaced it, rather than being deleted.