- README.md - [ ] "Zero is beautiful" - [ ] Content-hash fingerprinting for CSS and JS cache busting - [ ] Performance - [ ] See if we can disable bounds checks in `write_indented` and elsewhere. - [ ] mustache data keys for opengraph, etc. - [ ] Block attributes on code fences (`{ #ex-1 }`) — hello-world.md - [ ] include-code shortcode (`{{< include-code ... >}}`) — i-ported-fd-to-odin - [ ] ensure sidenote numbers render in display order and not in declaration order. - [ ] OpenGraph meta tags — verify all fields match production site - [ ] Add Opt-in deflist support. - [ ] set opengraph tags / description automatically if unset. (Like hugo does) - [ ] Table of contents support. - [ ] Nav items should be active when the current page is selected. - [ ] Theme selector for syntax highlighting. - use http://github.com/helix-editor/helix/tree/master/runtime/themes) as a guide - [ ] grammars - [ ] Search in multiple places - [ ] Download missing grammars. - [ ] Durable highlight paths: read `GRAPHS_PATH`/`QUERIES_PATH` from env vars set by the flake instead of hardcoded nix store hashes, so they survive `nix flake update` and let the grammar/query version-mismatch detector fire automatically. - [ ] CI - [ ] Syntax highlighting in production: CI (`nix build` on ubuntu-latest) has no grammar `.so`s and a machine-specific `QUERIES_PATH` nix store hash, so the deployed site renders unhighlighted. Provide grammars + queries as nix build inputs and pass paths to thor at runtime (env vars/flags). - [ ] Unit tests for highlighting helpers: `capture_name_to_css`, `escape_html`, `unescape_html`, `extract_query_token`, `helix_version_from_path`. - [ ] `
` blocks need to set background to theme background,
  regardless of prefers-dark. (or use a different theme)
- [ ] `-watch` flag
  - [x] basic poll loop
  - [ ] filesystem poll loop
  - [ ] event based
- [ ] Free cmark HTML output (`body_html`) — cmark allocates via C malloc, not the arena, so it leaks per iteration in watch mode
- [ ] commands
  - [ ] `build` alias of default
  - [ ] `init` set up new project
- [ ] Use spall to find ways to reduce run time.
- [ ] warn/error when unknown key used in mustache.
- [ ] Review every file in thor
  - [ ] Review alerts.odin
  - [ ] Review content.odin
  - [ ] Review emoji.odin
  - [ ] Review feed.odin
  - [ ] Review footnotes.odin
  - [ ] Review frontmatter.odin
  - [ ] Review highlight.odin
  - [ ] Review main.odin
  - [ ] Review minifiy.odin
  - [ ] Review render.odin
  - [ ] Review sectionate.odin
  - [x] Review site.odin
  - [ ] Review tree_sitter.odin