<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cleberg.net.git/build.py, branch migrate-to-orgo</title>
<subtitle>My personal web garden &amp; blog.
</subtitle>
<id>http://git.krz.sh/cmc/cleberg.net.git/atom?h=migrate-to-orgo</id>
<link rel='self' href='http://git.krz.sh/cmc/cleberg.net.git/atom?h=migrate-to-orgo'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/'/>
<updated>2026-08-12T01:34:02+00:00</updated>
<entry>
<title>Finish the move off weblorg</title>
<updated>2026-08-12T01:34:02+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-12T01:34:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=ab149c1ae4fe38048fc2d32edac6061e7f3b4638'/>
<id>urn:sha1:ab149c1ae4fe38048fc2d32edac6061e7f3b4638</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Keep the build cache out of the deploy</title>
<updated>2026-08-12T00:26:42+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-12T00:26:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=5be4598b09a2685d73665b403bf80aad50b15834'/>
<id>urn:sha1:5be4598b09a2685d73665b403bf80aad50b15834</id>
<content type='text'>
.orgo-cache.json lives in the output directory because it describes that
directory, and the first orgo deploy put it on the server. Excluding it from
rsync stops that, and stops --delete removing it locally between builds.

The copy the first deploy left behind is gone from the server.
</content>
</entry>
<entry>
<title>Build with orgo</title>
<updated>2026-08-12T00:16:03+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-12T00:16:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=d10ca60103b924b6d182e09123af6ba4a5fffc77'/>
<id>urn:sha1:d10ca60103b924b6d182e09123af6ba4a5fffc77</id>
<content type='text'>
The generator changes; the steps around it that orgo does not do stay. Four of
them go, because it does:

- the blog index groups itself by year (a template, using page.year)
- the tags page is a collection
- the recent-posts list on the home page comes from the blog collection
- the sitemap is written once site.base_url is set

What remains is minifying CSS, copying the org sources for readers who want
them, and rewriting img.cleberg.net to /img/ so the onion serves images from its
own origin. That last one is why this script still exists.

Verified against the live site before deploying: 195 pages, 186 identical in
content, and every URL in the live sitemap still produced. The nine that differ
are the ones we chose — the reply footer is opt-in now, /tags/ has a page per
tag, and footnotes carry aria labels.

publish.el and theme/templates/ are left alone. They are weblorg's, and there is
no reason to delete a fallback on the same day the replacement goes live.
</content>
</entry>
<entry>
<title>fix malformed image URL and harden img rewrite</title>
<updated>2026-08-03T20:41:22+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-03T20:41:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=6e2c9856b98faa2fc79ae12883ddf5acd1098f8e'/>
<id>urn:sha1:6e2c9856b98faa2fc79ae12883ddf5acd1098f8e</id>
<content type='text'>
Correct a https:/// typo in the tumblr post org source that produced a
404ing cross-origin image URL. Because the extra slash meant the string
no longer matched, rewrite_img_urls() skipped it and shipped the broken
URL. Make the rewrite pattern tolerate stray slashes so a source typo
can't silently pass through un-rewritten again.
</content>
</entry>
<entry>
<title>serve blog images from root-relative /img/ path</title>
<updated>2026-08-03T20:16:23+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-03T20:16:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=a19b44866fc5917eb5001f856e29d12f773e36fa'/>
<id>urn:sha1:a19b44866fc5917eb5001f856e29d12f773e36fa</id>
<content type='text'>
Rewrite absolute img.cleberg.net URLs to /img/ in production builds so the
onion serves images from its own origin instead of fetching them off-onion.
Dev builds keep the absolute URLs so local previews still load images.

Requires the server to serve /var/www/img/ at /img/ on the cleberg.net
vhost (ln -s /var/www/img /var/www/cleberg.net/img).
</content>
</entry>
<entry>
<title>serve stylesheet from root-relative path</title>
<updated>2026-08-03T20:05:53+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-03T20:05:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=681a290e9ec232296cafee94ac76aa269a11b5bd'/>
<id>urn:sha1:681a290e9ec232296cafee94ac76aa269a11b5bd</id>
<content type='text'>
Emit /styles.min.css instead of the prod-absolute
https://cleberg.net/styles.min.css so the onion renders standalone
without fetching its stylesheet off-onion. Drop the now-dead build.py
replace that rewrote the same string.
</content>
</entry>
<entry>
<title>fix python ruff formatting</title>
<updated>2026-07-30T22:34:13+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-07-30T22:34:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=2bf00f831142d10b767b456de863d0d6e6a5243c'/>
<id>urn:sha1:2bf00f831142d10b767b456de863d0d6e6a5243c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ruff formatting</title>
<updated>2026-06-01T17:35:00+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-06-01T17:35:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=230d51c18f97c98b749638a6a8a02923be20895a'/>
<id>urn:sha1:230d51c18f97c98b749638a6a8a02923be20895a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: refactor tags page rendering and auto-include new blog tags</title>
<updated>2026-04-12T15:45:16+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-04-12T15:45:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=36e16946cfe11b907e0144ada68228d3c4bf7b97'/>
<id>urn:sha1:36e16946cfe11b907e0144ada68228d3c4bf7b97</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: ruff format</title>
<updated>2026-03-23T16:58:56+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-03-23T16:58:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/cmc/cleberg.net.git/commit/?id=b1b03a576619e91a82550d25c896771a406fe254'/>
<id>urn:sha1:b1b03a576619e91a82550d25c896771a406fe254</id>
<content type='text'>
</content>
</entry>
</feed>
