diff options
| author | Christian Cleberg <[email protected]> | 2026-08-11 20:34:02 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-08-11 20:34:02 -0500 |
| commit | ab149c1ae4fe38048fc2d32edac6061e7f3b4638 (patch) | |
| tree | 984019a98b20789890566c595b52d5ddc8b21064 /content | |
| parent | 5be4598b09a2685d73665b403bf80aad50b15834 (diff) | |
| download | cleberg.net-ab149c1ae4fe38048fc2d32edac6061e7f3b4638.tar.gz cleberg.net-ab149c1ae4fe38048fc2d32edac6061e7f3b4638.tar.bz2 cleberg.net-ab149c1ae4fe38048fc2d32edac6061e7f3b4638.zip | |
Finish the move off weblorgmigrate-to-orgo
Remove what the migration left behind, then cut build.py down to the work
orgo does not do: 443 lines to 168.
- Delete publish.el and theme/templates/, superseded by content/orgo.toml
and content/templates/. theme/static/ stays; orgo publishes it as assets.
- Drop the tag builder, the org-source copy, and the helpers that only fed
them. orgo generates /tags/ and a page per tag from a collection.
- Rewrite the README and the migration-era comments that explained the
config by pointing at what weblorg used to do.
- Serve styles.css as authored. Minifying 1KB of CSS saved 52 bytes over
the wire once compressed, which did not pay for a build step and a
toolchain dependency.
- Stop wiping the output directory. The .orgo-cache.json inside it is what
makes a build incremental, and orgo already prunes outputs whose source
is gone and re-emits any that are missing. Production keeps .build/ and
development gets .build-dev/, because production rewrites image URLs in
the output and a shared directory would let one environment reuse pages
rendered for the other.
An incremental build is byte-identical to a clean one, and the site output
is unchanged apart from the /uses/ stack row.
Diffstat (limited to 'content')
| -rw-r--r-- | content/orgo.toml | 16 | ||||
| -rw-r--r-- | content/templates/base.html | 12 | ||||
| -rw-r--r-- | content/templates/blog.html | 4 | ||||
| -rw-r--r-- | content/templates/feed.xml | 9 | ||||
| -rw-r--r-- | content/templates/garden.html | 2 | ||||
| -rw-r--r-- | content/templates/home.html | 5 | ||||
| -rw-r--r-- | content/templates/tags.html | 9 | ||||
| -rw-r--r-- | content/uses/index.org | 2 |
8 files changed, 24 insertions, 35 deletions
diff --git a/content/orgo.toml b/content/orgo.toml index 307df57..c78b365 100644 --- a/content/orgo.toml +++ b/content/orgo.toml @@ -5,9 +5,6 @@ # # orgo serve content -o /tmp/preview # write and preview # orgo build content -o _site --strict # build for real, failing on broken links -# -# This sits alongside the existing weblorg setup (publish.el, theme/) and changes nothing -# about it. Delete this file and content/templates/ to remove orgo entirely. [site] title = "cleberg.net" @@ -21,8 +18,7 @@ base_url = "https://cleberg.net" [nav] # Explicit, because the pages that belong in the nav are not all top-level: /blog/ and # /garden/ are generated below, and salary/ is a section index one level down. index.org -# is deliberately absent — the layout writes the Home link itself, exactly as weblorg's -# base.html does. +# is deliberately absent — the layout writes the Home link itself. # # Generated pages are named by their output path, authored ones by their source. Listing # them together is what puts Salary last: a collection with `nav = true` that is not @@ -32,15 +28,13 @@ mode = "explicit" pages = ["blog/index.html", "garden/index.html", "salary/index.org"] [build] -# theme/static/ is weblorg's static root, published at /. orgo reads it from here +# theme/static/ is the site's static root, published at /. orgo reads it from here # rather than needing its files copied next to the writing — one copy, not two. assets = ["../theme/static"] [templates] dir = "templates" -# Blog posts render through post.html — the shared layout plus a reply footer — the way -# weblorg routes them through theme/templates/post.html. Everything else uses base.html. # Blog posts render through post.html, which adds the reply snippet. Nothing else does: # the live site also invites replies on garden notes and /now/, and that is a choice # rather than something a directory should decide. Any page opts in for itself with @@ -63,13 +57,11 @@ toc = true section_numbers = true # --- Generated pages ------------------------------------------------------------- -# These have no source .org file. weblorg produces the equivalents today through its -# blog-index, garden-index and tags routes. +# These have no source .org file. # The home page. Generated rather than authored, because it is a hand-written # introduction *plus* the most recent posts — and the post list is not something to -# maintain by hand. The prose lives in templates/home.html, which is where weblorg keeps -# it today too. +# maintain by hand. The prose lives in templates/home.html. # # content/index.org was deleted to make room: it held only #+title and #+description, # both of which are now [site] settings above. Restore it any time with diff --git a/content/templates/base.html b/content/templates/base.html index e35098c..237c398 100644 --- a/content/templates/base.html +++ b/content/templates/base.html @@ -1,9 +1,9 @@ -{# Page layout for orgo, mirroring theme/templates/base.html. +{# Page layout for the site. Styling comes from theme/static/styles.css, published by `[build] assets` in - orgo.toml — the same directory weblorg serves at /, read in place rather than - copied. weblorg links the minified styles.min.css instead; that file is gitignored - build output and the rules are the same, so this links the tracked one. + orgo.toml and read in place rather than copied. It is served as authored: at ~1KB, + minifying it saved 52 bytes over the wire once compressed, which did not pay for a + build step and a toolchain dependency. Available here: page (.title .url .source .date .date_iso .tags .excerpt .toc .keywords), site, nav, root, stylesheet. See the orgo guide on Templates. #} @@ -45,8 +45,8 @@ <link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ root }}feed.xml"> <link rel="stylesheet" href="{{ root }}styles.css" type="text/css"> <link rel="icon" href="data:,"> -{#- rel="me" identity links. weblorg's base.html writes the last one as <a>, which a - browser hoists out of <head>; <link> is the spelling that stays where it is put. #} +{#- rel="me" identity links, spelled as <link> rather than <a>: a browser hoists a + stray <a> out of <head>, while <link> stays where it is put. #} <link href="https://github.com/ccleberg" rel="me"> <link href="https://gitlab.com/ccleberg" rel="me"> <link href="mailto:[email protected]" rel="me"> diff --git a/content/templates/blog.html b/content/templates/blog.html index 17f8870..ecb5c5d 100644 --- a/content/templates/blog.html +++ b/content/templates/blog.html @@ -1,5 +1,5 @@ -{# The blog index at /blog/, mirroring theme/templates/blog.html. - Separate from list.html because the live page carries its own prose. #} +{# The blog index at /blog/. + Separate from list.html because the page carries its own prose. #} {% extends "base.html" %} {#- Group the list under year headings, as the live site does. Set to false for one flat diff --git a/content/templates/feed.xml b/content/templates/feed.xml index fa761b8..7596b02 100644 --- a/content/templates/feed.xml +++ b/content/templates/feed.xml @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> -{#- The RSS feed at /feed.xml, mirroring theme/templates/feed.xml. A feed is read away - from the site that served it, so every URL here is absolute — which is what - `| absolute` needs [site] base_url for. +{#- The RSS feed at /feed.xml. A feed is read away from the site that served it, so + every URL here is absolute — which is what `| absolute` needs [site] base_url for. - <description> carries each post's full rendered HTML, as weblorg's feed does — the - collection sets `include_content` to ask for it. #} + <description> carries each post's full rendered HTML — the collection sets + `include_content` to ask for it. #} <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" diff --git a/content/templates/garden.html b/content/templates/garden.html index dc669a2..113128a 100644 --- a/content/templates/garden.html +++ b/content/templates/garden.html @@ -1,4 +1,4 @@ -{# The garden index at /garden/, mirroring theme/templates/garden.html. +{# The garden index at /garden/. Notes are listed by title and description rather than by date. #} {% extends "base.html" %} {% block main %} diff --git a/content/templates/home.html b/content/templates/home.html index 6d280ee..6a2cf33 100644 --- a/content/templates/home.html +++ b/content/templates/home.html @@ -1,9 +1,8 @@ {# The home page: authored prose plus the most recent posts. A generated page, so it has no source .org file — `pages` holds the blog collection's - entries, newest first, and the prose lives here. This mirrors what weblorg's - theme/templates/index.html does today, including its bare <title>: the home page is - "cleberg.net" and not "cleberg.net - cleberg.net". #} + entries, newest first, and the prose lives here. The <title> is bare on purpose: the + home page is "cleberg.net" and not "cleberg.net - cleberg.net". #} {% extends "base.html" %} {% block subtitle %}{% endblock %} {% block main %} diff --git a/content/templates/tags.html b/content/templates/tags.html index 5240b27..9b3a1e2 100644 --- a/content/templates/tags.html +++ b/content/templates/tags.html @@ -1,11 +1,10 @@ {# The tag index at /tags/. Receives `groups` — every tag with its count — rather than `pages`, because it lists tags and not posts. - This deliberately differs in shape from the live weblorg page, which is one page with - every post inlined under an `#anchor` per tag. Here each tag is its own page, so a tag - has a URL worth linking to and the index stays short. The `id` on each entry keeps the - old `/tags/#audit` links landing in the right place — they scroll to the tag and its - link, rather than 404ing or dumping the reader at the top of a long page. #} + Each tag is its own page, so a tag has a URL worth linking to and the index stays + short. The `id` on each entry keeps older `/tags/#audit` links landing in the right + place — they scroll to the tag and its link, rather than dumping the reader at the + top of the index. #} {% extends "base.html" %} {% block main %} <h1>{{ page.title }}</h1> diff --git a/content/uses/index.org b/content/uses/index.org index d7f5db9..051a6eb 100644 --- a/content/uses/index.org +++ b/content/uses/index.org @@ -24,7 +24,7 @@ threat model justification. | Operating System | [[https://ubuntu.com][Ubuntu]] + [[https://www.apple.com/os/macos/][macOS]] | Ubuntu: telemetry off, LTS, stable. macOS: workstation only. | | Web Server | [[https://nginx.org][Nginx]] + [[https://community.torproject.org/onion-services/setup/][Tor]] | Static file serving. Tor layer for censored-network access. | | SSL | [[https://certbot.eff.org][Certbot]] | Free automated TLS. No commercial CA dependency. Ensures Cloudflare can't view unencrypted traffic. | -| Static Site Generator | [[https://github.com/emacs-love/weblorg][Weblorg]] + [[https://git.sr.ht/~ccleberg/cleberg.net/tree/main/item/build.py][build.py]] | Org-mode source compiles to plaintext HTML via native Lisp. | +| Static Site Generator | [[https://github.com/krazywarez/orgo][orgo]] + [[https://git.sr.ht/~ccleberg/cleberg.net/tree/main/item/build.py][build.py]] | Org-mode source compiles to plaintext HTML. Single binary, no runtime. | | Terminal | [[https://iterm2.com/][iTerm2]] | Functional. Inherited from macOS. | | Shell | [[https://www.zsh.org/][Zsh]] | Portable, POSIX-adjacent, available on every target OS. | | Editor | [[https://github.com/doomemacs/doomemacs][Doom Emacs]] | Editor and markup are the same tool. No proprietary format. | |
