Timothy DeHerrera
675050fd56
fix: correct depth calculation for relative paths
...
- src/templates.rs: Add path_depth() helper that counts directory
segments minus filename, not raw slash count.
"/blog/slug.html" → depth=1 (one directory level)
"/index.html" → depth=0 (root level)
This fixes relative path generation after adding canonical URLs.
file:// navigation now works correctly alongside absolute
canonical URLs.
2026-01-24 21:52:12 -07:00
Timothy DeHerrera
d166e86435
feat: add TOML site config for metadata
...
- Cargo.toml: Add toml and serde dependencies
- site.toml: New config with title, author, base_url
- src/config.rs: SiteConfig struct with load() function
- src/error.rs: Add Error::Config for parse errors
- src/main.rs: Load site.toml, thread config and page paths
through generators
- src/templates.rs: Use config.title in nav/titles,
config.author in footer, config.base_url for canonical URLs.
All three config fields verified in generated HTML output.
2026-01-24 21:47:47 -07:00
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
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
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
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
9b591fc700
feat: switch to minimal zola-based apollo theme
2024-12-26 16:03:29 -07:00
Timothy DeHerrera
5f12356f8f
refine: a bit of a joke and a lament, at once
2024-12-26 00:25:26 -07:00
Timothy DeHerrera
13360059a0
refinement: drive the point home
2024-12-26 00:10:47 -07:00
Timothy DeHerrera
4dc499012e
refine: really tighten the closing segment
2024-12-26 00:04:36 -07:00
Timothy DeHerrera
502d01bb0b
fix: small clarification
2024-12-25 23:48:50 -07:00
Timothy DeHerrera
bbbd8bd591
fix: typos and minor clarifications
2024-12-25 23:44:10 -07:00
Timothy DeHerrera
cda546fc1b
fix: split paragraphs for clarity
2024-12-25 23:38:45 -07:00
Timothy DeHerrera
53f5fca033
refine: clarify the point about seeking truth
2024-12-25 23:37:49 -07:00
Timothy DeHerrera
e39c0ec20a
fix: bring back some passages from the 1st draft
2024-12-25 23:31:09 -07:00
Timothy DeHerrera
284611e48f
fix: clarify potentially confusing wording
2024-12-25 23:04:37 -07:00
Timothy DeHerrera
b063476439
fix: tags render poorly when there are too many
2024-12-25 22:48:10 -07:00
Timothy DeHerrera
99ea2c52f5
fix: slight clarification
2024-12-25 22:47:03 -07:00
Timothy DeHerrera
54a7a4b466
post: In Defense of the Disagreeable
2024-12-25 22:45:26 -07:00
Timothy DeHerrera
a8a5091cba
fix: add caveat about my own work
2024-12-07 18:55:41 -07:00
Timothy DeHerrera
099ef5bebc
fix: add link to tvix site
2024-12-07 18:50:01 -07:00
Timothy DeHerrera
89eb93a932
fix: grammar correction
2024-12-07 18:45:09 -07:00
Timothy DeHerrera
09e03060af
fix: remove editing notes
2024-12-07 18:43:27 -07:00
Timothy DeHerrera
e2abca0d67
fix: reword
2024-12-07 18:41:28 -07:00
Timothy DeHerrera
1f69ebecdb
fix: minor adjustments to nix-to-eos.md
2024-12-07 18:35:45 -07:00
Timothy DeHerrera
d33f76fb51
release: From Nix to Eos
2024-12-07 18:25:59 -07:00
Timothy DeHerrera
4f8a1c9356
wip: nix to eos
...
add next segment
2024-12-04 03:48:14 -07:00
Timothy DeHerrera
b7dff1f1be
draft: Nix to Eos
...
from dusk til dawn...
yeah I said it 😅
2024-12-04 03:45:24 -07:00
Timothy DeHerrera
ec52c319b2
post(add): 12 Years as a Digital Hermit
2024-10-25 20:16:42 -06:00
Timothy DeHerrera
9c97f44261
fix: remove page views
...
View counts are not reliable since they are not tracked in a db, so
just remove them.
2024-07-08 12:09:39 -06:00
Timothy DeHerrera
43784f784d
fix: minor edits to most recent post
2024-07-06 15:29:59 -06:00
Timothy DeHerrera
e4620874f9
chore: update to latest astro ink version
2024-07-06 14:41:28 -06:00
Timothy DeHerrera
97aa45c32e
posts: release the kraken
2024-07-06 11:29:51 -06:00
Timothy DeHerrera
7c25380187
posts(std): show some actual code samples
2022-12-15 21:27:28 -07:00
Timothy DeHerrera
923fb1590c
media: use the media section for videos
2022-12-09 19:28:58 -07:00
Timothy DeHerrera
b87ce1758f
posts: add video links to standard post
2022-12-09 17:55:43 -07:00
Timothy DeHerrera
a882f3fe9b
posts: add post for std-action
2022-12-09 17:55:43 -07:00
Timothy DeHerrera
bff8ac2473
footer: add link to source repository
2022-12-09 14:22:01 -07:00
Timothy DeHerrera
afc4488a44
posts: take Standard out of draft
2022-12-09 14:22:01 -07:00
Timothy DeHerrera
a3a6f8ee3d
fixes: fix dark scheme & port from legacy blog
...
My old blog only ever had 1 post, but its a good place to start.
2022-12-09 12:11:14 -07:00
Timothy DeHerrera
3d0a796a8d
fix: dark mode text
2022-11-01 17:27:11 -06:00
Timothy DeHerrera
3d237e7099
personalize
2022-11-01 17:23:22 -06:00
Timothy DeHerrera
14079f0511
Initial commit
2022-11-01 15:18:00 -06:00