Put the developer docs under docs/dev and index the folder for users first
docs/ had 26 developer documents flat beside the manual, and the two audiences are very differently sized: most readers want the manual and the gesture reference, a few want the register, the designs and the measurements. The manual and gestures.md stay at the top; everything for someone changing the code moves to docs/dev/, and the two documents that name their own successors — the v0.1 milestone and the UI-refinement plan — go to docs/dev/archive/ rather than being deleted, since both are still cited. docs/README.md is the index, users first. Every reference follows: code comments, Cargo manifests, the workflows, the pre-commit hook, the bench and traceability tools (which locate the repo root by docs/dev/requirements.md now), packaging, the Docker READMEs, CLAUDE.md, CONTRIBUTING.md and the README. The matrix links one level deeper and is regenerated. Links out of the moved documents into the tree gain a level; a link checker over every Markdown file finds none broken.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# Documentation
|
||||
|
||||
Two audiences, two folders. Most people want the first table and never the
|
||||
second.
|
||||
|
||||
## Using DarkRoom
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| [The manual](manual/README.md) | Every feature, pictured from the application itself — opening a library, rating and filing, developing, local masks, repair, film, panoramas, export |
|
||||
| [How it is driven](gestures.md) | Every gesture and shortcut, by screen. Generated from the code, so it cannot describe one the application does not have |
|
||||
|
||||
The [top-level README](../README.md) says what DarkRoom is, how to get it on
|
||||
each platform, and what is still missing.
|
||||
|
||||
## Changing DarkRoom
|
||||
|
||||
Everything under [`dev/`](dev/) is for someone working on the code. Start with
|
||||
[CONTRIBUTING.md](../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](dev/requirements.md) | What the software must do — the numbered register, the decisions (D-numbers) and the spikes (S-numbers) |
|
||||
| [architecture.md](dev/architecture.md) | How it is built — crates, the GPU pipeline, the data model, sync |
|
||||
| [traceability.md](dev/traceability.md) | Generated: which requirement is claimed by which file. Never edited by hand |
|
||||
| [outstanding.md](dev/outstanding.md) | What is specified and not built, and whether that is a decision or a gap |
|
||||
| [technical-debt.md](dev/technical-debt.md) | Compromises taken deliberately, each with the condition that retires it |
|
||||
| [code-health.md](dev/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](dev/catalog.md) | The index, the library view, incremental scan, the job queue |
|
||||
| [storage.md](dev/storage.md) | Storage backends: the seam a folder, a sync client and a Nextcloud account share |
|
||||
| [faces.md](dev/faces.md) | Face detection, identity, clustering and the eye-state models |
|
||||
| [segmentation.md](dev/segmentation.md) | How the application finds the regions a local mask snaps to |
|
||||
| [mask-editing.md](dev/mask-editing.md) | Painting, erasing and combining masks |
|
||||
| [spot-removal.md](dev/spot-removal.md) | Clone and heal as parameters in the edit graph |
|
||||
| [panorama.md](dev/panorama.md) | Alignment, projection, the chunked composite and the border fill |
|
||||
| [inference.md](dev/inference.md) | The neural runtime and model chosen per device, with the measurements |
|
||||
| [display-and-extension.md](dev/display-and-extension.md) | The display contract, and why the fused pipeline is already most of a plugin format |
|
||||
| [view-composition.md](dev/view-composition.md) | A controller for the display layer |
|
||||
| [ui-navigation.md](dev/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](dev/benchmarks.md) | The per-commit suite: what it covers, what it does not, how to read a failure |
|
||||
| [bench-baseline.json](dev/bench-baseline.json) | The committed numbers the suite checks against |
|
||||
| [frame-budget.md](dev/frame-budget.md) | What a frame costs on each device, and the decision those figures settled |
|
||||
|
||||
**Platforms and distribution.**
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| [distribution.md](dev/distribution.md) | Which channels v1 targets and what each one constrains |
|
||||
| [windows.md](dev/windows.md) | The Windows installer, cross-built from the Linux CI |
|
||||
| [android-signing.md](dev/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](dev/archive/milestone-v0.1.md) | The first milestone, delivered 2026-08-30 and superseded |
|
||||
| [ui-refinement.md](dev/archive/ui-refinement.md) | How the interface should look; succeeded by [ui-navigation.md](dev/ui-navigation.md) |
|
||||
|
||||
## Conventions
|
||||
|
||||
Two files here are generated and must not be edited by hand:
|
||||
`gestures.md` and `dev/traceability.md`. Both come from
|
||||
`cargo run -p traceability` and the pre-commit hook keeps them in step with
|
||||
the tree. The manual's pictures are recorded by
|
||||
[`tools/manual`](../tools/manual/README.md) 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.
|
||||
Reference in New Issue
Block a user