Skip to content

Design Decisions

Eric Dean edited this page Sep 30, 2026 · 1 revision

Design decisions

An architecture decision record (ADR) is a short document about one important choice. It records the problem, the options, what was chosen, and what follows from it. Anything hard to reverse gets an ADR before the code.

The full list, and the steps to add one, are in the ADR index.

Decisions so far

ADR Decision Status
0001 Build the app with Tauri 2, a Rust core, and a TypeScript, React, and Vite interface Accepted (camera check in ADR 0004 pending)
0002 License OpenNote under Apache 2.0 Accepted
0003 Pin TypeScript to 6.0.x until typescript-eslint supports TypeScript 7 Accepted
0004 Keep WebView2 for ink, draw live strokes on a desynchronized canvas, and try delegated ink trails and a native ink layer in Phase 5 Accepted (camera check and budget review pending)
0005 Build each text container as its own Tiptap editor on one zoomable world, with contained blocks and ink in cached tiles Accepted (review of the typing budget pending)
0006 Export PDFs with WebView2 PrintToPdf from a hidden WebView, with print CSS and layout rules that keep screen and paper in step Accepted
0007 Record the microphone and system audio with cpal on WASAPI, align both to the performance counter, and store Opus in 1-second Ogg pages Accepted

ADR 0000 is the template. Decisions after 0007 are proposed on the phase branches, and this page lists them once they merge to main.

Statuses

Status Meaning
Proposed Written and open for discussion, but not yet binding
Accepted Agreed, and the code should follow it
Superseded Replaced by a later ADR, which the status line links to

Accepted records aren't rewritten when plans change. A new ADR replaces the old one, and the old status changes to "Superseded by ADR NNNN". Numbers are never reused.

Add a decision

  1. Copy the template to a new file with the next free number.
  2. Fill in each section. One or two pages is enough.
  3. Set the status to Proposed, and open a pull request with the ADR and no code.
  4. Before it merges, set the status to Accepted, and add it to the index.

See Development process and Phase 1 spike results, which covers ADRs 0004 to 0007.

Clone this wiki locally