<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cleberg.net.git/content/templates/list.html, branch main</title>
<subtitle>My personal web garden &amp; blog.
</subtitle>
<id>http://git.krz.sh/cmc/cleberg.net.git/atom?h=main</id>
<link rel='self' href='http://git.krz.sh/cmc/cleberg.net.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/'/>
<updated>2026-08-12T01:35:15+00:00</updated>
<entry>
<title>Add an org-ssg build alongside the weblorg one</title>
<updated>2026-08-12T01:35:15+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-11T07:20:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=f1b8d6d4a89c5d33615556af65aadeb71e7800cb'/>
<id>urn:sha1:f1b8d6d4a89c5d33615556af65aadeb71e7800cb</id>
<content type='text'>
Builds the same site with org-ssg instead of weblorg, reproducing all 182 URLs the
current .build output has, plus 13 per-tag pages it does not.

    org-ssg serve content -o /tmp/preview      # write, with live reload
    org-ssg build content -o _site --strict    # build, failing on broken links

content/ is the source because it is the URL root: content/blog/post.org publishes at
/blog/post.html. Pointing at the repository root instead would prefix every URL with
/content/ and copy build.py, publish.el and LICENSE into the site as assets.

Added:

- content/org-ssg.toml — site metadata, an explicit nav, and four generated pages:
  the home page, the blog index, the garden index, and tag pages with an index. URLs
  come from #+SLUG:, which is why 2018-11-28-aes-encryption.org still publishes at
  /blog/aes-encryption.html.
- content/templates/ — base, home, list and tags. Plain layouts using the .post-list
  classes styles.css already defines, not a port of theme/templates/, which are
  templatel and a different language.
- content/styles.css — a verbatim copy of theme/static/styles.css, because org-ssg
  publishes assets from inside its source directory. `diff` between the two should stay
  empty; consolidate them if this migration goes further.

Removed content/index.org. It held only #+title and #+description, both now [site]
settings, and a generated home page cannot share a URL with an authored one — org-ssg
fails that build rather than picking a winner. Restore with
`git checkout content/index.org`, but then the home collection needs a different output.

Nothing in the weblorg setup changed. publish.el, theme/ and build.py still work as
before, so both builds coexist until one is chosen.

Known difference: the nav renders Home, Salary, Blog, Garden, Tags — explicit source
pages come before generated ones, where the live site orders Salary last.
</content>
</entry>
</feed>
