Rewrites every British spelling found in the codebase to American: neighbour, colour, catalogue, behaviour, honour, flavour, grey, judgement, acknowledgement, licence, defence, organise/optimise/initialise/recognise/ analyse, artefact, cancelled/cancelling, labelled/labelling, modelled/ modelling, and centre/centred/centring all become their American forms — consistently in prose (docs, ADRs, comments) and in identifiers, including the FFI-shared CatalogueSync/Cancelled enum variants and catalogue_* fields that cross the Rust/Kotlin boundary. Left untouched: external API names that only look like a spelling variant (kotlinx.coroutines.CancellationException/NonCancellable, Compose Material3's labelLarge) and the EFF diceware wordlist used for key derivation. Adds a Code Style rule to AGENTS.md/CLAUDE.md requiring American spelling in user-facing copy and documentation going forward, with that same carve-out. Verified: cargo build --workspace, all 1410 Rust tests, Kotlin compile, fmt-rust/fmt-kotlin, lint-kotlin-fast (detekt), and the lint-gui-layout/ lint-sql-params/lint-p2p-admission custom checks all pass clean. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017fHWzCF6oNiCV4ue1bBf1t
Design explorations
Tools you run to make a visual decision, and which produce something to look at rather than something the app ships.
This is deliberately not docs/ and not scripts/:
docs/is material you read — prose, ADRs, the odd diagram or Typst source. The outcome of an exploration in here belongs there, as an ADR.scripts/is build, CI, and vendoring — things run by the justfile, by CI, or to prepare inputs the app depends on. Nothing indesign/is on any build path, and the app must never depend on anything here.
The distinction that matters: deleting anything under design/ should not
affect a single build. What it would cost is the ability to re-derive a design
decision cheaply the next time taste or requirements change — which for a
personal tool with one user is a thing that keeps happening.
What lives here
| Directory | Produces | Decision it backs |
|---|---|---|
typeface-specimen/ |
A self-contained HTML page comparing candidate typefaces on real app content, with measured metrics | ADR 0024 |
availability-marker/ |
A self-contained HTML page comparing candidate DocumentAvailability markers at the app's real badge sizes, on the real palette, in each surface that has to draw one |
ADR 0033 |
visual-design-review/ |
A critique of the shipped GUI against real captures, the reasoning record behind its redesign, and palette-specimen/ — three candidate directions rendered on the app's own screens |
ADR 0032 |
Conventions
Each exploration is a self-contained directory with its own README.md saying
how to run it and how to add a candidate. Scratch output — downloads, generated
pages — goes in a gitignored .work/ inside that directory, never committed;
the generator is the artifact, not its output.
Prefer a nix shell over anything requiring installation, so an exploration still runs on a machine that has nothing set up. Record measured numbers in the ADR rather than only in the tool, so the reasoning survives the tool bitrotting.