From f1b8d6d4a89c5d33615556af65aadeb71e7800cb Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Tue, 11 Aug 2026 02:20:00 -0500 Subject: Add an org-ssg build alongside the weblorg one MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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/styles.css | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 content/styles.css (limited to 'content/styles.css') diff --git a/content/styles.css b/content/styles.css new file mode 100644 index 0000000..19e4711 --- /dev/null +++ b/content/styles.css @@ -0,0 +1,23 @@ +body { max-width: 800px; margin: 0 auto; padding: 1rem; } +a, a:visited { color: #0000ff; } +nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } +nav ul li { padding-right: 0.5rem;} +img { max-width: 100%; } +.post-list { padding: 0; padding-inline-start: 0; } +.post-list-item { display: flex; list-style: none; align-items: baseline; } +.post-list-item time { padding-right: 0.5rem; white-space: nowrap; } +.post-list-item a { flex-grow: 1; white-space: normal; } +.post-list-year { list-style: none; margin-top: 1rem; margin-bottom: 0.5rem; font-weight: bold; } +.skip-link { display: none; } +footer { margin: 2rem 0;} +pre, blockquote { margin: 1rem 0; padding: 0.5rem; background-color: #eee; } +pre { overflow: auto; white-space: pre; } +blockquote p { margin: 0; margin-bottom: 1rem; } +blockquote p:last-child { margin-bottom: 0; } +code { color: #942192; } +@media (prefers-color-scheme: dark) { + body { background-color: #181a1b; color: #cccccc; } + a, a:visited { color: #68A9F8; } + code { color: #ff68e1; } + pre, blockquote { background-color: black; } +} -- cgit v1.2.3