From 6e5d57e4fcb1b8e9c12c46d3bb1fee2089ce321b Mon Sep 17 00:00:00 2001 From: Tim McCarthy Date: Fri, 4 Sep 2026 20:28:52 -0700 Subject: [PATCH] Batch testing changes and document explicit release workflow --- AGENTS.md | 12 +++++++++--- TODO.md | 2 ++ frontend/src/components/AboutModal.svelte | 22 +++++++++++++++------- frontend/src/lib/changelog.js | 11 +++++++---- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a8e072c..da93960 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,9 +42,15 @@ When you run into a repeatable problem during testing (e.g. port assignment coll The app shows its version number and a player-facing changelog in the ☰ menu → About. Both come from `frontend/src/lib/changelog.js` (rendered by `frontend/src/components/AboutModal.svelte`). -- Bump `VERSION` by one on **every** commit. -- When a commit changes something players can see, add an entry to the **top** of `CHANGELOG` (`{ version, date, changes: [...] }`) describing it in player-facing terms. Group everything shipping under one version into a single entry. -- The changelog is for players: skip refactors, tests, tooling, and other internal-only changes. A commit with no user-facing change bumps `VERSION` but adds no entry. +- Ordinary commits do **not** bump `VERSION` or the Nix package versions. +- Accumulate player-visible changes in one entry at the **top** of `CHANGELOG` with `version: null` and `changes: [...]`. The About dialog labels it **In testing**. Append to or consolidate this batch across commits; do not create a separate entry per commit or assign a release date yet. +- The changelog is for players: skip refactors, tests, tooling, and other internal-only changes. Internal-only commits need no changelog entry. +- Release labeling is a separate process, performed only when explicitly requested. At release time: + 1. Consolidate the In testing batch into meaningful player-facing groups using `groups: [{ title, changes: [...] }]`, replacing its flat `changes` list. Remove duplicates and describe the final behavior. + 2. Bump `VERSION` by one and give the batch that numeric `version` plus the release `date` (`YYYY-MM-DD`). + 3. Bump **both** package `version` values in `flake.nix` (`pirats-frontend` and `pirats`) to the same new Nix release version. Preserve the Nix version scheme; do not equate its semantic version with the app's integer V number. + 4. Commit the release metadata together. The next player-visible development change starts a fresh In testing entry. +- Preserve already numbered history unless the user explicitly requests reorganizing past releases. ## Work order diff --git a/TODO.md b/TODO.md index 1dca6eb..2903859 100644 --- a/TODO.md +++ b/TODO.md @@ -8,6 +8,8 @@ ## Polish +- [x] Accumulate In testing changelog batches and reserve app/Nix version bumps for grouped releases. + - [x] Apply the refreshed light and dark themes to the full rulebook and TL;DR rules. - [x] Refresh both themes with legible texture and nautical flair, and give the Event Log / My Notes the regular panel surface. diff --git a/frontend/src/components/AboutModal.svelte b/frontend/src/components/AboutModal.svelte index a9ee0d8..635674e 100644 --- a/frontend/src/components/AboutModal.svelte +++ b/frontend/src/components/AboutModal.svelte @@ -20,14 +20,17 @@ {#each CHANGELOG as entry (entry.version)}
  • - v{entry.version} - {entry.date} + {entry.version === null ? 'In testing' : `v${entry.version}`} + {#if entry.date}{entry.date}{/if}
    - + {#each entry.groups ?? [{ title: null, changes: entry.changes }] as group} + {#if group.title}
    {group.title}
    {/if} + + {/each}
  • {/each} @@ -72,6 +75,11 @@ .changelog-date { font-size: 0.85rem; } + .changelog-group { + margin: 0.75rem 0 0.3rem; + font-size: 1rem; + color: var(--text); + } .changelog-changes { margin: 0; padding-left: 1.2rem; diff --git a/frontend/src/lib/changelog.js b/frontend/src/lib/changelog.js index 7f3ba12..a8c905e 100644 --- a/frontend/src/lib/changelog.js +++ b/frontend/src/lib/changelog.js @@ -2,14 +2,17 @@ // (rendered by AboutModal.svelte). // // Maintenance (see AGENTS.md "Versioning & changelog"): -// - Bump VERSION by one on every commit. -// - Add a CHANGELOG entry only when a commit changes something players can -// see. Skip refactors, tests, and tooling. Keep wording player-facing. +// - Accumulate player-facing development changes in one version: null entry. +// - Only an explicitly requested release bumps VERSION and both flake.nix versions. +// - At release, consolidate the batch into titled groups and add its version/date. export const VERSION = 50; -// Newest first. Each entry: { version, date: 'YYYY-MM-DD', changes: [string, ...] }. +// Newest first. In testing: { version: null, changes: [string, ...] }. +// Release: { version, date: 'YYYY-MM-DD', groups: [{ title, changes: [...] }] }. +// Historical flat changes arrays are also supported. export const CHANGELOG = [ + { version: null, changes: ['Upcoming changes now appear together under In testing in About, ahead of numbered releases.'] }, { version: 50, date: '2026-09-04', changes: ['The full rulebook and TL;DR rules now match the refreshed light and dark themes, with chart backgrounds and textured solid panels.'] }, { version: 49, date: '2026-09-04', changes: ['Freshened both themes with nautical chart lines, woven panel textures, and richer sea-and-brass colors while keeping text clear.', 'The Event Log and My Notes now use the regular solid panel surface.'] }, { version: 48, date: '2026-09-04', changes: ['Keep your own notes alongside the Event Log. Notes save automatically between sessions, including when you close the panel, and stay intact when the game rewinds or you create a new Pi-Rat.'] },