Feature Plan: Public Changelog Delivery
Summary
- Owner: Freddi
- Status: Delivery
- Target Release: 2025.10.14-d
- Backlog Entry: Projects/Uebliche/agendas.md -> Backlog -> Public changelog surfaces
Goals
- Surface player-facing release notes consistently across in-game UI, Discord, and the website.
- Keep public and internal changelog data synchronized without manual copy-paste.
- Provide tooling for staff to broadcast the latest version quickly.
Scope
- Bundle public changelog entries with the server image and expose them through an environment-configured directory.
- Offer in-game access through
/changelogwith listing and detail views. - Document publishing workflows and mirroring steps between repo docs and the Obsidian vault.
- Exclude automated website deployment (future enhancement).
Implementation Outline
- Store structured public notes in
docs/gameserver/changelogs/public/<version>.mdand mirror them into the vault. - Configure
PUBLIC_CHANGELOG_DIR(default:docs/gameserver/changelogs/public) so the server can read Markdown directly. - Docker builds copy the Markdown folder into the image and set
PUBLIC_CHANGELOG_DIR=/app/changelogs/public. ChangelogServiceparses Markdown sections (frontmatter, What's New, Heads-Up) at startup and caches them for/changelog./changelogcommand renders highlights and heads-up sections to players; extend Discord/broadcast scripts to reuse the same data (future work).
Dependencies
- Public changelog docs in repo and Obsidian.
- Minestom command framework for
/changelog. - Environment variable
PUBLIC_CHANGELOG_DIR(Dockerfile sets it automatically). - Release management process that increments versions sequentially.
Risks & Mitigations
- Out-of-sync data: add review checklist so Markdown, Docker copy, and vault stay aligned.
- Large entries: keep highlights concise; consider pagination when entries grow.
- Localization: currently English-only; plan translations if community demands it.
Validation Plan
- Manual test:
/changelogdefault,/changelog list,/changelog <version>. - Verify Docker image copies the Markdown bundle and exposes it via
PUBLIC_CHANGELOG_DIR. - Cross-check announcements in Discord against rendered in-game content.
Notes & Decisions
- Record policy updates (e.g., wording guidelines) under the agenda Decisions section.
- Mirror this plan to
/Projects/Uebliche/docs/gameserver/features/changelog/plan.md.
References
services/gameserver/src/main/java/net/uebliche/features/changelog/ChangelogService.javaservices/gameserver/src/main/java/net/uebliche/features/changelog/commands/ChangelogCommand.javaDockerfile.serverdocs/gameserver/changelogs/public/