aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Render the table of contents, and group /blog/ by yearChristian Cleberg16 hours2-1/+42
| | | | | | | | | | | | | | | | | | | Two of the differences the page-by-page diff against the live site turned up. The TOC was the larger one: live has one on 171 pages and the org-ssg build had none. `[html] toc = true` only *exposes* `page.toc` — rendering it is the layout's job, and base.html never did. It now emits the same `div#table-of-contents` Emacs does, from a recursive macro over the tree. The anchors already matched, so every link lands where the live one does. Pages that say `#+OPTIONS: toc:nil` get an empty tree and render nothing, which is why /uses/, /now/ and /salary/ have no TOC here either — the same three as live. /blog/ now breaks its list under year headings, as the live index does, using `page.year` and minijinja's groupby. `group_by_year` at the top of blog.html turns it off for one flat list. After both, /blog/ matches the live page's content exactly, and 171 of 171 TOCs are accounted for.
* Use a straight apostrophe on the home pageChristian Cleberg16 hours1-1/+1
| | | | | | Transcribing theme/templates/index.html into home.html turned "I've" into "I’ve", so the org-ssg build rendered a curly apostrophe where the live page has an ASCII one — the only character that differed between them.
* Route blog posts through post.htmlChristian Cleberg16 hours3-6/+19
| | | | | | | | | | | The reply-by-email and Bubbles lines were emitted from base.html behind a test on the page's URL, because org-ssg had no way for a page to pick a layout. It does now, so they live in a post.html that extends the shared one — the same split weblorg has between theme/templates/base.html and post.html — selected by a [[pages]] rule for blog/. All 169 posts carry the footer; /blog/ itself does not, being a generated listing rather than a post.
* Bring the org-ssg templates to parity with the live siteChristian Cleberg16 hours10-42/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The org-ssg build rendered the right content in the wrong chrome. Closing every difference found by comparing it against theme/templates/ and the live pages: - base.html: Home link written by the layout rather than the site title, a <title> of "Page - cleberg.net" (bare "cleberg.net" on the home page, via a subtitle block), author/description/og meta, the RSS alternate link, four rel="me" identity links, favicon, skip link, <main id="main-content">, aria-label on the nav, and the real footer. - home.html: the h1 is "Christian Cleberg" (the collection's title), and the email line has its GPG link back. - blog.html and garden.html: the two listings carry their own prose on the live site — the search/RSS hint, and the garden's growth stages — so they are no longer sharing the generic list.html. Tag pages still use it. - tags.html: "Browse posts by topic." - Blog posts get the reply-by-email and Bubbles lines. org-ssg has no per-page template selection, so the layout keys off the page's URL prefix. - Tags leaves the nav, which the live site does not have. feed.xml is new: the footer links /feed.xml and nothing was generating it. It is a collection whose template happens to be XML. Its <description> carries each post's excerpt rather than the full rendered body, which weblorg's feed does include — a collection template gets each entry's metadata, not its HTML. base_url is now set, since canonical links and a feed cannot be relative. Page links stay relative, so a preview build still works from any directory. gpg.txt, robots.txt and salary.csv are copied in from theme/static/: weblorg publishes that directory to the site root, and org-ssg publishes from content/, so /gpg.txt was a 404. styles.min.css is deliberately not copied — it is gitignored build output, and the tracked styles.css holds the same rules.
* Order the org-ssg nav to match the live siteChristian Cleberg16 hours1-3/+7
| | | | | | | | Salary rendered before Blog and Garden because the two section indexes are generated by collections, and an explicit nav could only name source files — generated pages were appended after everything listed. org-ssg now accepts a generated page's output path in `nav.pages`, so listing all three puts them in the order the live site uses. /tags/ stays unlisted and lands last.
* Add an org-ssg build alongside the weblorg oneChristian Cleberg16 hours7-2/+237
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* publish new post: pbChristian Cleberg2 days1-0/+13
|
* fix malformed image URL and harden img rewriteChristian Cleberg9 days2-4/+9
| | | | | | | | 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.
* remove bubbles.town vote widget, keep comment linkChristian Cleberg9 days3-5/+4
| | | | | | | Drop the third-party vote.js script and its mount div so posts no longer auto-fetch from bubbles.town (174 pages), completing onion self-containment. The opt-in 'comment on Bubbles' link stays. Remove the now-orphaned .bubbles-vote CSS rule.
* document /img/ symlink deployment prerequisiteChristian Cleberg9 days1-0/+22
|
* serve blog images from root-relative /img/ pathChristian Cleberg9 days1-0/+21
| | | | | | | | | 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).
* serve stylesheet from root-relative pathChristian Cleberg9 days2-5/+1
| | | | | | | 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.
* update git endpointsChristian Cleberg10 days2-4/+4
|
* add more images to 10gbps postChristian Cleberg11 days1-4/+10
|
* give bubbles button a defined heightChristian Cleberg12 days1-0/+1
|
* move linked images locallyChristian Cleberg12 days1-2/+2
|
* add iheartrss linkChristian Cleberg13 days1-1/+3
|
* publish new post: 10gbpsChristian Cleberg13 days1-0/+249
|
* fix python ruff formattingChristian Cleberg13 days3-12/+14
|
* update /tips pageChristian Cleberg13 days1-8/+2
|
* publish two new postsChristian Cleberg2026-07-252-0/+111
|
* publish new post: re-your-rss-reader-is-robbing-youChristian Cleberg2026-07-161-0/+29
|
* fix collapsed whitespace inside blockquotesChristian Cleberg2026-07-161-1/+2
|
* publish new post: re-torvalds-on-aiChristian Cleberg2026-07-161-0/+88
|
* add photography linkChristian Cleberg2026-07-061-1/+1
|
* add photography linkChristian Cleberg2026-07-061-0/+1
|
* fix: update bubbles link in posts to point to my specific bubbles pageChristian Cleberg2026-07-061-1/+1
|
* fix: remove carousel effects from latest postChristian Cleberg2026-07-061-93/+45
|
* remove css support for a photo carouselChristian Cleberg2026-07-061-6/+0
|
* publish new post: the-night-feelingChristian Cleberg2026-07-061-0/+193
|
* add css support for a photo carouselChristian Cleberg2026-07-061-0/+6
|
* embed bubbles voting widget on blog postsChristian Cleberg2026-07-061-4/+4
|
* enable automtic notifications from bubblesChristian Cleberg2026-07-061-1/+3
|
* update /now pageChristian Cleberg2026-07-041-18/+37
|
* update lemmy profile linkChristian Cleberg2026-07-031-1/+1
|
* remove RSS stylingChristian Cleberg2026-07-032-115/+0
|
* promote privacy page to buddingChristian Cleberg2026-07-011-1/+1
|
* add garden page: privacyChristian Cleberg2026-07-011-0/+116
|
* fix broken tag in garden pageChristian Cleberg2026-07-011-1/+1
|
* fix RAM typo in internet postChristian Cleberg2026-07-011-1/+1
|
* fix quotation tag in latest postChristian Cleberg2026-07-011-1/+1
|
* publish new post: internetChristian Cleberg2026-06-291-2/+1
|
* spell check latest postChristian Cleberg2026-06-291-13/+13
|
* publish new post: internetChristian Cleberg2026-06-291-0/+427
|
* update script example in latest postChristian Cleberg2026-06-291-1/+1
|
* update script example in latest postChristian Cleberg2026-06-291-0/+6
|
* publish new post: homelab-maintenanceChristian Cleberg2026-06-261-0/+99
|
* update junited postChristian Cleberg2026-06-261-1/+2
|
* add more to junited postChristian Cleberg2026-06-251-0/+9
|
* update social linksChristian Cleberg2026-06-252-1/+3
|