<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dennisfink.me/models, branch main</title>
<subtitle>Source files of my personal blog.</subtitle>
<id>https://git.dennisfink.me/dennisfink.me/atom/models?h=main</id>
<link rel='self' href='https://git.dennisfink.me/dennisfink.me/atom/models?h=main'/>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/'/>
<updated>2026-08-17T18:00:16Z</updated>
<entry>
<title>Add post changelogs</title>
<updated>2026-08-17T18:00:16Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-17T17:36:16Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/commit/?id=2b2d89ffd233e331a6985fe762ac339befc972a3'/>
<id>urn:sha1:2b2d89ffd233e331a6985fe762ac339befc972a3</id>
<content type='text'>
This replaces the manual `updated_date` field with a changelog flow
field so post updates can be recorded as dated entries.

The blog template now derives the "Last updated" metadata from the
latest changelog entry and renders the full changelog in the article
footer, with dedicated styling for compact change notes.
</content>
</entry>
<entry>
<title>Add aspect-ratio-aware image galleries</title>
<updated>2026-08-08T17:32:47Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-08-08T17:32:47Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/commit/?id=1af817249d115ff7013d3ab1a30ea145e30924c7'/>
<id>urn:sha1:1af817249d115ff7013d3ab1a30ea145e30924c7</id>
<content type='text'>
This adds a project-local gallery plugin that builds deterministic rectangular
image layouts from attachment aspect ratios, with both in-process and disk-backed
layout caching.

It also adds gallery flow blocks, templates, and CSS so posts can include
responsive galleries with lazy-loaded images, configurable gaps, target ratios,
and the existing breakout/centering utilities.
</content>
</entry>
<entry>
<title>Add GPX trail maps to blog posts</title>
<updated>2026-07-22T22:18:21Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-07-22T22:18:21Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/commit/?id=1fe1d13c600b7dfe421b3b99b833b7d5d1232724'/>
<id>urn:sha1:1fe1d13c600b7dfe421b3b99b833b7d5d1232724</id>
<content type='text'>
This adds a trail flow block so posts can include attached GPX files as
interactive maps with route display, elevation charts, activity
summaries, and start/finish markers.

The trail assets are loaded only when needed, keeping the shared
templates clean while vendoring the Leaflet dependencies required for
offline, self-hosted map rendering.
</content>
</entry>
<entry>
<title>Add page descriptions for metadata previews</title>
<updated>2026-06-19T16:35:56Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-06-19T16:35:56Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/commit/?id=cc6003d997e041127ac081e14a3213c4b898860d'/>
<id>urn:sha1:cc6003d997e041127ac081e14a3213c4b898860d</id>
<content type='text'>
This adds a description field to blog posts and uses it for the HTML
meta description and Open Graph description, with the blog tagline
remaining as the fallback.

Archive, category, and tag pages now define their own descriptions so
previews are more specific instead of all sharing the same generic site
tagline.
</content>
</entry>
<entry>
<title>Build the first usable version of the blog</title>
<updated>2026-06-18T15:57:51Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-06-18T15:57:51Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/dennisfink.me/commit/?id=a4e35942fee745e64db5d0099ba2582e0fb4417e'/>
<id>urn:sha1:a4e35942fee745e64db5d0099ba2582e0fb4417e</id>
<content type='text'>
This adds the Lektor project structure, models, templates, styling,
feeds, categories, tags, archives, custom Markdown heading handling, and
the initial content needed to make the blog usable.
</content>
</entry>
</feed>
