Skip to content

Architecture decision records ​

An ADR records one structural decision: the context, what was decided, and what it costs. ADRs are immutable once accepted: to change a decision, write a new ADR that supersedes the old one and update the old one's status.

#DecisionStatus
0001Strict Electron process isolation, one preload bridgeAccepted
0002Local storage in a SQLite file through node:sqliteAccepted
0003Database location in a pointer file, never moved automaticallyAccepted
0004PDF pages rasterized in the main process with pdf.js + @napi-rs/canvasAccepted
0005Book metadata looked up on demand in public APIs, from the main processAccepted
0006Bédéthèque album pages read from a pasted linkAccepted
0007Cover thumbnails in a disk cache, outside the databaseAccepted
0008Interface translations with i18next, locales split by areaAccepted
0009IPC arguments validated in the main processAccepted
0010Schema migrations versioned with PRAGMA user_versionAccepted
0011A mandatory handle() wrapper for IPC, and opaque tokens instead of pathsAccepted
0012Comic files decoded in a utility process, not in the main processAccepted
0013One renderer data store, kept current by a data:changed pushAccepted
0014Achievements evaluated in the renderer, only unlocks persistedAccepted
0015Library organization: the app moves files into one subfolder per comicAccepted
0016Library structure: a tree of up to three metadata levelsAccepted
0017Library file names: a template of metadata fieldsAccepted
0018Decoder calls bounded by a timeout, archives tied to their windowAccepted
0019Several users on one library, without passwordsAccepted
0020Library paths relative to the library foldersAccepted
0021Metadata lookup dialog: explicit search, more page sources, saved to the .nfoAccepted
0022Watched folders per user, and settings split in two groupsAccepted
0023Cleaning the books by rewriting the CBZ archivesAccepted
0024Database backups in a .tankobon folder, restored at start-upAccepted
0025Converting the CBR of the organized library to CBZAccepted
0026Bédéthèque: finding the album from the series nameAccepted
0027Cheaper library reloads: deltas and projections before SQL searchProposed
0028A second decoder process for background work, the reader keeps its ownProposed

These first four ADRs were written after the fact, from the code and its comments, then checked by the maintainer.

Writing a new ADR ​

Copy the template to NNNN-short-title.md (next number), fill it in, add it to the table above, and ship it in the same pull request as the change it describes.