Commit Graph

248 Commits

Author SHA1 Message Date
Timothy DeHerrera
71d5ac1e37 refactor: switch to flat .html output (suckless style)
- src/content.rs: output_path() now returns slug.html instead of
  slug/index.html for regular content.

- src/templates.rs: All hrefs use explicit .html extension.
  Nav links point to index.html, blog.index.html, about.html.
  Blog post links use ./slug.html format.

- src/main.rs: Adjust depth values (root=0, blog posts=1).

No more directory-per-page overhead. file:// navigation works
without directory listings. True suckless structure.
2026-01-24 21:36:58 -07:00
Timothy DeHerrera
b9be21156d feat: implement relative paths for IPFS/decentralization
- src/templates.rs: Add depth parameter to all template functions.
  Add relative_prefix() helper that generates "./", "../", "../..", etc.
  All hrefs now use relative paths instead of absolute.
  Unit test for relative_prefix() added.

- src/main.rs: Pass depth to templates based on output location.
  Root=0, blog index/pages=1, blog posts=2.

Navigation works correctly when viewed via file:// protocol.
Site is now IPFS-compatible.
2026-01-24 21:22:03 -07:00
Timothy DeHerrera
7fa60d9b07 feat: add CSS minification via lightningcss
- Cargo.toml: Add lightningcss 1.0.0-alpha.70 dep
- src/css.rs: New module with minify_css() function.
  Uses StyleSheet::parse() + minify() + to_css() pipeline.
  3 unit tests: whitespace removal, comment removal, selector merge.
- src/main.rs: Integrate minification into copy_static_assets().
  CSS files minified before writing; size delta logged.

Result: style.css 5670→4165 bytes (~27% smaller)
2026-01-24 21:07:56 -07:00
Timothy DeHerrera
c145bf86b9 feat: integrate syntax highlighting into render pipeline
- src/render.rs: Rewrite with event-based pulldown-cmark parsing.
  Intercepts CodeBlock events and applies tree-sitter highlighting.
  4 new tests covering highlighted and unhighlighted code blocks.

- src/highlight.rs: Fix HtmlRenderer callback to return attributes
  only (not full span tags). Static HTML_ATTRS array for zero-alloc.

- static/style.css: Add 20 hl-* CSS classes with CSS variables.
  Light and dark mode via prefers-color-scheme.

Supported languages: rust, bash, json. Phase 2 complete.
2026-01-24 20:47:31 -07:00
Timothy DeHerrera
ba5e97dfb7 feat: add tree-sitter syntax highlighting module
- Cargo.toml: Add tree-sitter-highlight + grammar crates
  (rust, bash, json). TOML dropped due to API incompatibility.
- src/highlight.rs: Language enum, highlight_code() function,
  4 unit tests covering parsing and HTML generation.
- Uses static HTML_ATTRS array for zero-allocation rendering.
2026-01-24 20:38:02 -07:00
Timothy DeHerrera
5317da94c4 feat: add minimal base CSS with dark mode support
- static/style.css: CSS variable-based theming with:
  - Typography (system fonts, monospace for code)
  - Layout (centered content, nav/main/footer structure)
  - Dark mode via prefers-color-scheme
  - Component styles (posts, cards, tags, hero)

- src/main.rs: Add copy_static_assets() to copy static/
  directory to public/ during build

Phase 1 complete. Ready for syntax highlighting.
2026-01-24 20:27:22 -07:00
Timothy DeHerrera
d4003686a0 chore: add miniserve for testing 2026-01-24 19:36:10 -07:00
Timothy DeHerrera
06b7e0df64 feat: implement cohesive site structure
Add content type handling and multi-page generation:

- content.rs: Add ContentKind enum (Post, Page, Section, Project)
  and extend Frontmatter with weight/link_to fields
- templates.rs: Add render_page, render_homepage,
  render_blog_index, render_projects_index templates
- main.rs: Process all content types with dedicated handlers

Output structure:
- /index.html (homepage from _index.md)
- /blog/index.html (post listing, sorted by date)
- /blog/<slug>/index.html (individual posts)
- /about/index.html, /collab/index.html (standalone pages)
- /projects/index.html (project cards with external links)
2026-01-24 19:19:53 -07:00
Timothy DeHerrera
0cee5325d3 chore: migrate non-blog content to YAML frontmatter
Convert all content files to use YAML (---) instead of TOML (+++)
for consistent parsing:

- content/_index.md (homepage)
- content/about.md, content/collab.md
- content/blog/_index.md
- content/projects/_index.md + 14 project cards

Enables unified gray_matter YAML parser across all content.
2026-01-24 19:15:16 -07:00
Timothy DeHerrera
e07a9e87e6 feat: implement core markdown rendering pipeline
Add minimal e2e pipeline to transform content → HTML:

- src/error.rs: Custom error types with thiserror
- src/content.rs: YAML frontmatter parsing via gray_matter
- src/render.rs: Markdown → HTML via pulldown-cmark
- src/templates.rs: Maud templates for base layout and posts
- src/main.rs: Pipeline orchestrator

All 15 blog posts successfully rendered to public/blog/*/index.html.
Added thiserror and walkdir dependencies.
Added public/ and DepMap fragment to .gitignore and AGENTS.md.
2026-01-24 19:01:30 -07:00
Timothy DeHerrera
8df37127a1 chore(fmt): add treefmt and run it 2026-01-24 18:49:51 -07:00
Timothy DeHerrera
f4201e95ba feat: add nix flake with fenix rust toolchain
Configure hermetic development environment:

- fenix toolchain from rust-toolchain.toml
- clangStdenv for Tree-sitter C grammar compilation
- Multi-platform devShells (x86_64/aarch64, linux/darwin)
- Generated flake.lock with pinned inputs
2026-01-24 18:48:14 -07:00
Timothy DeHerrera
0be71ca374 feat: initialize rust project scaffold
Add minimal Rust project structure for bespoke site compiler:

- rust-toolchain.toml: stable channel with rustfmt, clippy, rust-src
- Cargo.toml: nrd-sh v0.1.0 with pulldown-cmark, gray_matter, maud
- src/main.rs: stub entrypoint

Verified with cargo check.
2026-01-24 18:41:59 -07:00
Timothy DeHerrera
3545b18875 docs: add AGENTS.md for rust architecture
Configure agent context for new bespoke static site compiler:

- Document interceptor pipeline architecture
- Enable rust.md predicate fragment
- Define build commands (nix develop, cargo build)
- Reference deprecated/ for legacy Zola code
2026-01-24 18:33:37 -07:00
Timothy DeHerrera
8b1e0d1f29 chore: move zola infrastructure to deprecated/
Relocate legacy static site generator configuration to clear
namespace for new Rust-based compiler:

- config.toml, netlify.toml
- sass/, templates/ directories
- themes/apollo submodule (updated .gitmodules path)

Content directory preserved at root for compatibility.
2026-01-24 18:30:58 -07:00
Timothy DeHerrera
ac644135af chore: add predicate submodule 2026-01-24 18:17:00 -07:00
Timothy DeHerrera
011d6affee refine: suggest family as Sacred 2025-12-26 20:56:35 -07:00
Timothy DeHerrera
d6eac340cc fix: introduce as axiosophy 2025-12-26 20:34:15 -07:00
Timothy DeHerrera
04656e06f1 edit: compromise is a bitch 2025-10-08 07:33:58 -06:00
Timothy DeHerrera
50f5b4857c fix(axiosophy): crucial distinction 2025-09-07 15:58:37 -06:00
Timothy DeHerrera
572a1456d5 edit(axiosophy): use physics analogy to reenforce 2025-09-07 15:44:26 -06:00
Timothy DeHerrera
c4328dde7b edit(axiosophy): minor refinements to tables 2025-09-07 15:41:10 -06:00
Timothy DeHerrera
1e7ef69569 fix(axiosophy): typo 2025-09-07 15:34:15 -06:00
Timothy DeHerrera
9d856d24d0 edit: strenthen Axiosophy's conclusions 2025-09-07 15:32:53 -06:00
Timothy DeHerrera
acbfb7c3a7 edit: note the prevelance of moral relativism 2025-09-07 15:17:31 -06:00
Timothy DeHerrera
391a4397eb edit: make the awkward concise 2025-09-07 15:16:53 -06:00
Timothy DeHerrera
9bf76d1e74 edit: more concise subtitle 2025-09-07 15:15:29 -06:00
Timothy DeHerrera
810f08591f fix: correct anchors 2025-09-07 15:14:12 -06:00
Timothy DeHerrera
1277929aca edit(axiosophy): cohere the logic more tightly
also add supporting edits to code of rebellion.
2025-09-07 15:09:16 -06:00
Timothy DeHerrera
44539c9f0c post(tyranny): upcoming post 2025-09-06 22:52:13 -06:00
Timothy DeHerrera
ceb156c019 fix: references render correctly 2025-08-31 12:42:42 -06:00
Timothy DeHerrera
23de151a8a chore: remove previous draft & republish 2025-08-31 12:35:58 -06:00
Timothy DeHerrera
059201f414 release: Axiosophism: An Axiomatic Morality 2025-08-31 12:34:54 -06:00
Timothy DeHerrera
cb4d6cc8a9 post(draft): Axiosophism: An Axiomatic Morality 2025-08-30 23:50:28 -06:00
timd
b52f9f13c8 post: No-Fault Tyranny (#1)
sha256: 2067091505b5e7229720c42fbe9e9338d398ab5577bc151f56b9494f8037490b
2025-08-19 11:55:34 -06:00
Timothy DeHerrera
a4194913fa draft(Corruption): unedited but somewhat complete 2025-07-13 15:11:38 -06:00
Timothy DeHerrera
38a31a1eec draft: hide for now 2025-07-07 09:47:32 -06:00
Timothy DeHerrera
a2d181c5be draft: The Corruption of Our Time 2025-07-06 01:18:47 -06:00
Timothy DeHerrera
69172301ce fix 2025-06-29 23:39:34 -06:00
Timothy DeHerrera
46a5b3887d fix 2025-06-29 23:36:58 -06:00
Timothy DeHerrera
23b5ca477b fix: typo 2025-06-29 23:15:23 -06:00
Timothy DeHerrera
fb8694e85d fix: typo 2025-06-29 23:14:52 -06:00
Timothy DeHerrera
1a7c827eed fix: remove double sentence 2025-06-29 23:09:10 -06:00
Timothy DeHerrera
e99b77b268 fix: typos 2025-06-29 23:08:17 -06:00
Timothy DeHerrera
69457f6b21 fix: typo 2025-06-29 22:51:23 -06:00
Timothy DeHerrera
93bd51ba0e fix: typo 2025-06-29 22:50:11 -06:00
Timothy DeHerrera
a7aa68f36c fix: typo 2025-06-29 22:46:04 -06:00
Timothy DeHerrera
732609fc08 draft: letter to my children 2025-06-29 22:28:32 -06:00
Timothy DeHerrera
561d07a353 edit: small correction 2025-06-25 22:13:16 -06:00
Timothy DeHerrera
54a493367b edit: further clarification 2025-06-25 22:07:24 -06:00