aboutsummaryrefslogtreecommitdiff
path: root/layouts/single.html
Commit message (Collapse)AuthorAge
* End every template file with a newlineNicholas Johnson22 hours
| | | | | | | | | | | | | | | | | | | | | Fifteen templates ended without a final newline, so they were not text files by the POSIX definition: tools that read whole lines, including sed, wc -l, read and shells' command substitution, drop or mangle the last line, and diffs of them carry a "\ No newline at end of file" marker that hides which side changed. Add the newline. The gemtext output may not change, so the four templates whose last action is emitted verbatim into a capsule page trim it away again with "-}}". The templates that end by closing a define block need no marker, since the newline then falls outside the block and is never executed, as section.gmi and single.gmi already showed. The capsule builds byte-identical gemtext and the feeds are unchanged. Web pages gain the trailing newline their templates now have, which ends the generated HTML with an EOL too. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Drop whitespace trimming from HTML and XML templatesNicholas Johnson22 hours
| | | | | | | | | | | | | | | | | | | | | | | | | Whitespace has no effect on the HTML and Atom output, so the trim markers on nearly every action in those templates bought nothing and made them harder to read and to edit: a maintainer had to carry the markers along with the change. The markers are load-bearing in the gemtext templates alone, where output whitespace is the formatting. Remove them from the HTML and Atom templates. The audio partial keeps its markers, since the gemtext single template uses it too. The two markup render hooks keep theirs as well, because their output is spliced inline into prose, where the newlines an untrimmed hook emits render as a space before the punctuation that follows a link. The Atom templates compute their author and entry variables before emitting anything, so untrimmed they put blank lines ahead of the XML declaration and left every feed malformed. Emit the declaration first instead; whitespace is allowed after it but not before it. The example site builds byte-identical gemtext and content-identical feeds, and its HTML differs only by a space after a "p" start tag that the whitespace processing model drops. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Choose the best audio version of an entryNicholas Johnson26 hours
| | | | | | | | | | | | | | | | | | | | | | | | | Both templates took element 0 of the entry's audio resources, so an entry carrying more than one encoding used whichever filename sorted first, with no way to express a preference. An entry with a careful encoding and an mp3 beside it would commonly have offered the mp3. Order the resources by how they sound instead. Public listening tests put Opus ahead of the field at the bitrates spoken word uses, with Vorbis and AAC close behind it and MP3 last; the lossless formats come after the lossy ones rather than before, since a browser that can play FLAC would otherwise fetch several times the bytes for no audible gain. Formats the theme does not rank keep Hugo's own order at the end. The capsule links the first of them, since a Gemini client cannot choose between sources and a reader wants one file to fetch. The website offers them all as the alternative sources that the audio element exists to choose between, best first, so a browser plays the best encoding it understands. Hugo reports .opus, .oga and .ogg alike as audio/ogg, so the ordering keys off the file extension rather than the media type. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Fix entry heading anchors on page bundlesNicholas Johnson26 hours
| | | | | | | | | | | | | | The heading id came from .File.TranslationBaseName, which is "index" for every leaf bundle. Since audio versions require an entry to be a bundle, every entry with audio got the same meaningless anchor, and pages built by a content adapter would have taken the name of the directory holding the adapter. Derive the id from the page's own URL instead. Single file entries keep the anchors they already had, and bundles, adapter built pages and custom slugs now each get their own. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* Add audio support for entries on websiteNicholas Johnson2026-09-06
|
* Move pageinfo below heading for websiteNicholas Johnson2026-09-06
|
* Replace ".Name" with ".Title" for entry headingsNicholas Johnson2026-09-06
| | | | | I'm not sure if this change makes a difference, but .Title seems to be the canonical option in this context.
* Make footer stick to bottom of pageNicholas Johnson2025-07-27
|
* Migrate fully to Hugo's new template systemNicholas Johnson2025-07-26
This was the only way I could get term pages to consistently render correctly.