Files
thor/TODOS.md
T

3.5 KiB

  • README.md
    • "Zero is beautiful"
  • Content-hash fingerprinting for CSS and JS cache busting
  • Clean up the default layouts
  • Performance
    • See if we can disable bounds checks in write_indented and elsewhere.
    • Instead of loading the site fresh each time in watch mode, create a reload_site proc, that just updates changed resources.
    • Only publish referenced assets.
    • Split load_page into frontmatter-parse + body-process phases so draft pages can skip the markdown pipeline entirely
  • mustache data keys for opengraph, etc.
  • Author should be a struct adhering to https://schema.org/author
  • Block attributes on code fences ({ #ex-1 }) — hello-world.md
  • include-code shortcode ({{< include-code ... >}}) — i-ported-fd-to-odin
  • follow symlinks in scan_content?
  • 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.
  • We need to be able to do Year_Section in a non-magical, unpriviledged way.
  • 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.
  • 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 .sos 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.
  • <pre><code> blocks need to set background to theme background, regardless of prefers-dark. (or use a different theme)
  • -watch flag
    • 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
  • Rename {{#is_post}} to {{#is_article}} in templates and data model — currently hardcoded to posts section, should use is_article (any page with a section) instead.
  • Mount content in VFS
  • 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.
  • Import/export packages. Hugo, jekyll, WordPress, etc.
  • Review every file in thor
    • Review assets.odin
    • Review content.odin
    • Review defaults.odin
    • Review feed.odin
    • Review frontmatter.odin
    • Review main.odin
    • Review minify.odin
    • Review markdown/
      • Review alerts.odin
      • Review emoji.odin
      • Review footnotes.odin
      • Review footnotes_test.odin
      • Review highlight.odin
      • Review markdown.odin
      • Review sectionate.odin
    • Review render.odin
    • Review site.odin
    • Review treesitter/treesitter.odin
    • Review vfs.odin