Changelog for 2.7.0 #223

Merged
Grandiras merged 1 commit from release/v2.7.0 into main 2026-09-22 23:09:46 +00:00
Owner

Changelog for 2.7.0: minor, because it adds features (a home page, member-owned boards, board admins, soft delete) and its migrations are additive.

The unreleased block is rewritten for the people who read it, using 2.4.0 as the model. Each of the seven points leads with its point in bold and says the rest plainly, in the app's own words, in both languages, with no em-dashes. Then it's promoted with promote-changelog.py, dated 2026-09-23, leaving an empty block for the next cycle.

Bold in the dialog: ChangelogModal renders a bullet's **lead** as <strong>. Changelog.Spans cuts a line at its ** pairs, and both runs are rendered as text, never HTML. Bold is the only markup. ChangelogTests gets a test for the split and one refusing unpaired markers. docs/ui.md says how to write the next entries.

Phase A (release runbook):

  • 38 commits since v2.6.0.
  • No compose, env-template or appsettings.json changes.
  • check-env-keys.sh: both env files complete.
  • Dev runs current main and production runs :latest, both confirmed by digest.
  • Production's configured super-admin (ADMIN_DID) is the only member holding the old admin role today, so the switch to config-defined super-admins (#192) takes nobody's access away.

Unit tests 560/560. The dialog was checked in both languages.

The tag goes on this PR's merge commit, after the updater fix (the other open PR) is merged and deployed with deploy.sh.

🤖 Generated with Claude Code

Changelog for **2.7.0**: minor, because it adds features (a home page, member-owned boards, board admins, soft delete) and its migrations are additive. The unreleased block is **rewritten** for the people who read it, using 2.4.0 as the model. Each of the seven points leads with its point in bold and says the rest plainly, in the app's own words, in both languages, with no em-dashes. Then it's promoted with `promote-changelog.py`, dated 2026-09-23, leaving an empty block for the next cycle. **Bold in the dialog:** `ChangelogModal` renders a bullet's `**lead**` as `<strong>`. `Changelog.Spans` cuts a line at its `**` pairs, and both runs are rendered as text, never HTML. Bold is the only markup. `ChangelogTests` gets a test for the split and one refusing unpaired markers. `docs/ui.md` says how to write the next entries. **Phase A (release runbook):** - 38 commits since v2.6.0. - No compose, env-template or `appsettings.json` changes. - `check-env-keys.sh`: both env files complete. - Dev runs current `main` and production runs `:latest`, both confirmed by digest. - Production's configured super-admin (`ADMIN_DID`) is the only member holding the old admin role today, so the switch to config-defined super-admins (#192) takes nobody's access away. Unit tests 560/560. The dialog was checked in both languages. The tag goes on this PR's merge commit, after the updater fix (the other open PR) is merged and deployed with `deploy.sh`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Changelog for 2.7.0
All checks were successful
CI / build (pull_request) Successful in 52s
9006c8b497
The unreleased block rewritten for the people who read it: seven points,
each leading with its point in bold and saying the rest plainly, in both
languages, and promoted to 2.7.0. The dialog renders a bullet's **lead** as
bold (Changelog.Spans, text only), and ChangelogTests refuses unpaired
markers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

⏳ Held on the OpenCode Go window — the 5-hour window is at 100% (the bot holds at 95%).
This continues automatically after the window resets (2026-09-23T01:12:57.059Z) — nothing to re-trigger.

⏳ **Held on the OpenCode Go window** — the 5-hour window is at 100% (the bot holds at 95%). This continues automatically after the window resets (2026-09-23T01:12:57.059Z) — nothing to re-trigger. <!-- opencode-run:paused -->
Author
Owner
@claude-reviewer
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/572); the reply will link the full session transcript. <!-- claude-run:pr_review --> 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-223/run-572.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

✅ Verdict: approve — no blocking issues found.

Solid, well-tested change. Traced Changelog.Spans by hand against both new test cases (**Lead.** The rest, with **more**. and plain-only) and it produces the expected bold/plain runs, including the edge case of two ** markers with an empty run between them (adjacent bold spans render correctly, not merged incorrectly). The unbalanced-marker guard correctly counts non-overlapping ** occurrences and flags odd counts. ChangelogModal.razor's nested @foreach/if-else inside <li> is valid Razor and keeps output as encoded text via @text/@strong, so there's no HTML-injection surface even though bold is now structurally interpreted from copy strings. All seven new 2.7.0 bullets are present and balanced in both locales, Unreleased is correctly emptied for the next cycle, and docs/ui.md gets a paragraph describing the new convention, consistent with the CLAUDE.md requirement to update docs the same PR that changes behavior they describe. Didn't find any correctness or security issues worth blocking on.


⏱ 0m 36s · 3 turns · tokens: 20.4k in / 3.5k out (+108.7k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. Solid, well-tested change. Traced `Changelog.Spans` by hand against both new test cases (`**Lead.** The rest, with **more**.` and plain-only) and it produces the expected bold/plain runs, including the edge case of two `**` markers with an empty run between them (adjacent bold spans render correctly, not merged incorrectly). The unbalanced-marker guard correctly counts non-overlapping `**` occurrences and flags odd counts. `ChangelogModal.razor`'s nested `@foreach`/`if-else` inside `<li>` is valid Razor and keeps output as encoded text via `@text`/`@strong`, so there's no HTML-injection surface even though bold is now structurally interpreted from copy strings. All seven new 2.7.0 bullets are present and balanced in both locales, `Unreleased` is correctly emptied for the next cycle, and `docs/ui.md` gets a paragraph describing the new convention, consistent with the CLAUDE.md requirement to update docs the same PR that changes behavior they describe. Didn't find any correctness or security issues worth blocking on. --- ⏱ 0m 36s · 3 turns · tokens: 20.4k in / 3.5k out (+108.7k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-223/run-572.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:9006c8b497cd4e659618c845b72a0e3b1d224c1f -->
Grandiras deleted branch release/v2.7.0 2026-09-22 23:09:47 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/Ponente!223
No description provided.