Skip to content

Changelog System

Page path: admin/changelog-system.md
Original writing date: 2026-07-08
Original published date: 2026-07-08
Most recent editing date: 2026-07-08
Title changed: No
Previous title: None

What changed

dev: added auto changelogs

Compared with the previous version

new file mode 100644
@@ -0,0 +1,85 @@
+---
+title: Changelog System
+created: 2026-07-08
+published: 2026-07-08
+title_changed: false
+previous_titles: []
+---
+
+# Changelog System
+
+The public changelog is generated from Markdown files in `docs/` and local Git history. It gives visitors a readable summary of documentation updates without exposing private Forgejo links, commit hashes, branches, or raw Git history.
+
+## Supported frontmatter
+
+Each documentation page can include metadata at the top of the file:
+
+```yaml
+---
+title: Server Setup
+created: 2026-06-10
+published: 2026-06-14
+title_changed: false
+previous_titles: []
+---
+```
+
+Supported fields:
+
+| Field | Meaning | Fallback |
+| --- | --- | --- |
+| `title` | Public page name shown in the changelog. | First `# Heading`, then filename. |
+| `created` | Original writing date. | First Git commit date for the file. |
+| `published` | Original posting or published date. | First Git commit date for the file. |
+| `title_changed` | Whether the current title replaced an older title. | `false` |
+| `previous_titles` | Earlier page titles. | Empty list. |
+
+## Marking a title change
+
+When a page title changes, update the page frontmatter:
+
+```yaml
+title: New Page Title
+title_changed: true
+previous_titles:
+  - Old Page Title
+```
+
+Use `previous_titles` for titles that visitors might remember from older versions of the site.
+
+## What changed text
+
+The changelog uses the latest Git commit message that touched each page as the short "what changed" description.
+
+Write documentation commit messages for readers, not just for developers. For example:
+
+```text
+Clarify server setup steps
+
+Explains the Nginx reload step and fixes the published path.
+```
+
+The generator removes public URLs and commit-like hashes from the changelog output so private Forgejo details are not exposed.
+
+## Regenerating manually
+
+Run this from the repo root:
+
+```bash
+python3 scripts/generate_changelog.py
+mkdocs build --clean
+```
+
+The generated page is written to `docs/changelog.md`. Do not edit that file by hand because the next generator run will replace it.
+
+## Deployment
+
+The server deploy workflow should run the generator after pulling the latest commit and before building MkDocs:
+
+```bash
+git pull origin main
+python3 scripts/generate_changelog.py
+mkdocs build --clean
+```
+
+The public Nginx site only serves the built MkDocs output. Forgejo can remain private on Tailscale because the generated changelog contains only public page metadata and summarized commit messages.

Back to changelog