Skip to content

Architecture decisions

Every decision that is expensive to reverse, and the reasoning behind it. These are published rather than kept internal: a plugin author asking why the API is shaped a particular way should be able to read the answer.

Records are append-only. A reversed decision is superseded by a new record rather than edited, because the history of a decision we later changed is more useful than a tidy directory.

DecisionStatus
0001 — Record architecture decisionsAccepted
0002 — Application shell: Tauri v2 over Electron and pure-Rust GUIAccepted
0003 — Frontend framework: Svelte 5 + TypeScriptAccepted
0004 — Editor core: CodeMirror 6 with a single-buffer visual modeAccepted
0005 — Extensibility tiers: core, core plugins, community pluginsAccepted
0006 — Plugin runtime and capability-based securityAccepted
0007 — LaTeX compilation: Tectonic by default, system TeX as a peerAccepted
0008 — Zotero integration strategyAccepted
0009 — Obsidian integration strategyAccepted
0010 — Theming via CSS custom properties and user theme filesAccepted
0011 — Localisation from the first commitAccepted
0012 — Semantic versioning and changelog automationAccepted
0013 — Update distribution for app and plugins, and dev-mode behaviourAccepted
0014 — Target platforms and the native ARM64 policyAccepted
0015 — Performance budgets enforced in CIAccepted
0016 — Self-documenting project and the docs siteAccepted
0017 — Repository layout and monorepo toolingAccepted
0018 — Licensing: AGPL-3.0 application, MIT plugin APIAccepted
0019 — TLS trust: bundled roots or the operating system storeAccepted
0020 — Edit a multi-file document as one, behind a modeAccepted
0021 — Plugins are their own repositories, released and updated on their ownAccepted
0022 — MCP: calling out is a capability, exposing tools is a declarationAccepted
0023 — The preview knows LaTeX; packages are pluginsAccepted
0024 — The page is a fixed box; content is pushed through itAccepted
0025 — A generated list is a tab, not pagesAccepted
0026 — A task list is a core tab; a credential is a capabilityAccepted
0027 — Completion while typingAccepted
0028 — The file list edits the projectAccepted
0029 — A format brings its own previewAccepted

Application AGPL-3.0-or-later · @yaz/api MIT · docs CC BY-SA 4.0