Skip to content

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 /changelog with 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

  1. Store structured public notes in docs/gameserver/changelogs/public/<version>.md and mirror them into the vault.
  2. Configure PUBLIC_CHANGELOG_DIR (default: docs/gameserver/changelogs/public) so the server can read Markdown directly.
  3. Docker builds copy the Markdown folder into the image and set PUBLIC_CHANGELOG_DIR=/app/changelogs/public.
  4. ChangelogService parses Markdown sections (frontmatter, What's New, Heads-Up) at startup and caches them for /changelog.
  5. /changelog command 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: /changelog default, /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.java
  • services/gameserver/src/main/java/net/uebliche/features/changelog/commands/ChangelogCommand.java
  • Dockerfile.server
  • docs/gameserver/changelogs/public/