The full design is recorded as decision records under
docs/adr/
and narrative documents under
docs/design/.
A design document describes how one part of ntropy works today. A decision
record holds one choice behind that, dated, in the order the choices were
made.
Design documents
- CLI reference (v1)
- Configuration
- Encryption
- The HTML engine
- Language server
- Query and search
- Rendering
- Shell integration
- Site export
- Site frontend
- The typst engine
- Vault layout and views
Decision records
- 0001. Record architecture decisions
- 0002. Stateless filesystem scanning over a derived index
- 0003. Flat single-vault storage layout
- 0004. Note identity and filename strategy
- 0005. Permissive frontmatter schema with recognized fields
- 0006. Hierarchical tags by slash convention
- 0007. Vault directory layout
- 0008. Materialized symlink views
- 0009. Generic group-by-field view definitions
- 0010. Render derived dates in system local timezone
- 0011. Embed ripgrep libraries for full-text search
- 0012. Query DSL with hand-rolled parser
- 0013. Library/binary split with thiserror and anyhow
- 0014. Interactive-by-default CLI with auto output mode
- 0015. Editor integration and new-note flow
- 0016. Configuration format, location and vault resolution
- 0017. Note templates with placeholder substitution
- 0018. CLI command surface
- 0019. Scan robustness and resource tolerance
- 0020. Unix-only v1 with soft performance target
- 0021. Testing strategy with insta across all layers
- 0022. Distribute via crates.io for v1 under MPL-2.0
- 0023. Slug, tag and disambiguator normalization rules
- 0024. v1 dependency selection
- 0025. Plain output format, ordering and edit ambiguity
- 0026. Project-local vault pointer file
- 0027. In-house fuzzy picker over nucleo and crossterm
- 0028. Note-to-note links as standard Markdown links
- 0029. Language server over lsp-server with a session scan cache
- 0030. Replace the ripgrep stack with the regex crate for full-text search
- 0031. Merge edit into search
- 0032. Auto-managed .gitignore for view directories
- 0033. Aligned plain-table output
- 0034. Context-aware frontmatter substitution
- 0035. Generic --print flag replaces --no-edit
- 0036. Interactivity keyed to the controlling terminal
- 0037. Render command surface
- 0038. Pluggable rendering engine with pandoc and typst
- 0039. Vault seed content as embedded files
- 0040. Custom typst engine with own Markdown emitter
- 0041. Opt-in vault encryption with age
- 0042. Empty note creation for machine authors
- 0043. Write command for note content
- 0044. Cross-document links between rendered notes
- 0045. Vault render themes
- 0046. Static site export with a
sitecommand and anhtmlrender format - 0047. Themes directory split by type
- 0048. Site themes as stylesheets and assets
- 0049. Shared Markdown walk with Typst and HTML emitters
- 0050. Page templates with minijinja
- 0051. Browser-side code in TypeScript with a committed build
- 0052. Client-side search as a TypeScript reimplementation of the query DSL
- 0053. Syntax highlighting with Shiki in the browser
- 0054. Site navigation and URL scheme
- 0055. Theme directory layout with fonts, icons, and embedded assets
- 0056. Sidebar order, labels, landing notes, and a nav table
- 0057. The html artifact as a page with a files directory
- 0058. Theme templates overriding the built-in ones by name