Repository navigation
feat(global-settings): short update notice that says what an update adds (v2.8.0) - #808
Conversation
…uest (v2.8.0) The UPDATE REQUIRED notice named the versions but not what changed, so deciding whether to go through the unlock/relock cycle now meant opening the repository. global-settings/CHANGELOG.md holds one sentence per version. It is not installed. When an update is pending, check-settings-version.sh fetches it from the same source as VERSION and shows a "What this update adds" block under the version lines: one sentence for every version after the installed one, newest first, at most five, with the rest counted. A version without an entry is listed as such, and an unreachable CHANGELOG.md is reported without affecting the update. The notice tells the user they can ask for more details. Claude is told to relay the block as is and, only when asked, look up the commit that set VERSION to each listed version, read its message, changed files and pull request, and link that pull request (or the commit). The notice carries the gh api and git log commands for the repository the version came from. Backfilled entries for 2.5.0 to 2.7.2. The README's bump rule now requires a CHANGELOG.md entry with every VERSION bump; the tests fail without one. Tests: 16 new checks in test-check-settings-version.sh (git-fetch and GitHub paths, pending-range selection, cap, missing entry, missing file). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ngelog The UPDATE REQUIRED notice comes back in every new session until the update is done, and Claude rendered it in full each time: the unlock commands, the phrase, both relock options with their trade-off. It now shows a short form at session start: header, installed and latest version, what the update adds, a one-line reminder that unlocking takes sudo chattr -i plus chmod u+w and relocking sudo chattr +i, and that the user can ask how to update or for the details of the changes. Asking how to update brings the full steps 1 to 4 with every command in its own block. After the update Claude always shows the relock step with both options, whether or not the full form was shown. The relock rules are unchanged and now shared between the update and repair notices; the FILES OUT OF SYNC notice keeps its full form. CHANGELOG.md now covers every released version, 1.0.0 to 2.8.0. 1.0.0 to 1.3.0 come from the archived claude-code-config repository; branch-only numbers (1.5.0, 1.5.2, 1.5.3, 2.4.3) were never released and have no entry. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…-summary change SC2028 on the gh api lookup line (printf instead of echo, same output) and SC2319 on a $? that followed a [[ ]] condition in the tests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…released numbers Each heading now carries the date the version reached main (`## X.Y.Z — YYYY-MM-DD`); for 1.0.0 to 1.3.0 that is the main of claude-code-config. 1.2.1, 1.5.1 and 2.0.0 reached main together with the next version, and their entries say so. 1.5.0, 1.5.2, 1.5.3 and 2.4.3 get a `###` entry with a note on where their changes went. The update notice reads only `##` headings, so it does not list them. The README bump rule names the dated heading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every `## X.Y.Z` heading in CHANGELOG.md must carry a date (`— YYYY-MM-DD`, month 01-12, day 01-31), and the dates may not rise going down the file. A fixed bad file proves the check catches a missing date, an impossible month and a date out of order. The README bump rule says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
||
| The update notice is now short at session start and says in one sentence what each pending version adds. Ask Claude how to update for the full steps, or for the details of the changes with links to the pull requests. | ||
|
|
||
| ## 2.7.3 — 2026-10-02 |
There was a problem hiding this comment.
🟡 Concern — The 2.7.3 entry makes #808 depend on #813 merging first
This changelog carries a ## 2.7.3 entry for #813, which is still open (main is at 2.7.2; VERSION here goes to 2.8.0, and this PR does not touch block-write-commands.sh). If #808 merges first, a 2.7.2 install updating to 2.8.0 gets this sentence in its update notice for a hard-deny change it does not receive, and #813 would then set VERSION back to 2.7.3, below the installed 2.8.0. The PR body says the entry belongs to #813 but not that #813 has to merge first. Fix: state the merge order in the body (merge #813, then update this branch). If #808 has to go first, move this entry to #813 and have #813 bump to 2.8.1.
Verification: git show origin/main:global-settings/VERSION → 2.7.2; gh pr view 813 -R ConductionNL/.github --json state,files → OPEN, bumps VERSION to 2.7.3 and changes block-write-commands.sh; this PR's file list has no block-write-commands.sh.
WilcoLouwerse
left a comment
There was a problem hiding this comment.
Verdict: APPROVE (Standard) — self-review posted as COMMENT (GitHub blocks self-APPROVE)
The notice code is sound: a failed CHANGELOG fetch cannot hang or fail session start, the version order is numeric and the dated headings parse. One concern on the merge order with #813.
🟡 Concerns (1)
- The 2.7.3 entry makes #808 depend on #813 merging first —
global-settings/CHANGELOG.md:13. Merged first, 2.8.0 would announce #813's hard-deny change without containing it, and #813 would then setVERSIONbelow 2.8.0.
Reviewed at: 17ecdf7 — the head moved three times during this review (c930f8a, b5924df, 17ecdf7).
Tests: bash global-settings/tests/test-check-settings-version.sh → 114 passed, 0 failed on 17ecdf7 (run in this review).
CI: Shared-workflow guard and Install from published location are green on 17ecdf7; the required Package invariants check was still running when this verdict was posted. Its run on c930f8a was cancelled by concurrency in favour of the newer push, not by a failure.
…update-summary # Conflicts: # global-settings/VERSION
Summary
The UPDATE REQUIRED notice comes back in every new session until the update is done, and Claude rendered it in full each time. It also named the versions but not what changed in them.
sudo chattr -ipluschmod u+wand relocking takessudo chattr +i, and that the user can ask how to update or for the details of the changes. There are no command blocks.global-settings/CHANGELOG.md(not installed) has one sentence per version. The notice shows the sentence for each version after the installed one, newest first, at most five, and counts the rest. A version without an entry is listed as such. IfCHANGELOG.mdcan't be fetched, the block says so and the update still works.VERSIONto each listed version, reads its message, changed files and pull request, and links that PR (or the commit if no PR merged it). The notice includes thegh apiandgit logcommands for this.main(## X.Y.Z — YYYY-MM-DD). 1.0.0 to 1.3.0 come from the archivedclaude-code-configrepository. 1.2.1, 1.5.1 and 2.0.0 reachedmaintogether with the next version, and their entries say so. Numbersmainnever carried (1.5.0, 1.5.2, 1.5.3, 2.4.3) get a###entry with a note on where their changes went; the notice reads only##headings, so it does not list them. The 2.7.3 entry belongs to fix(global-settings): a hard deny beats every prompt; git aliases that push need the phrase (v2.7.3) #813, which is still open; it is dated 2026-10-02 like 2.8.0.VERSIONbump needs a datedCHANGELOG.mdentry. The tests fail on a missing entry, on a heading without a date, and on dates out of order.VERSION→ 2.8.0.The notice is printed by the installed hook. The short form and the changes block therefore first appear when someone on v2.8.0 or later updates to a newer version, not on the update to 2.8.0 itself.
Example (session start)
Test plan
test-check-settings-version.sh: 114 passed, 0 failed (new: dated headings newest first with a bad-file control, short form, full form on request, relock after the update, repair keeps the full form, pending range, order, cap, missing entry, missing file, lookup commands)test-block-write-commands.sh: 7630 / 7630;test-block-polling.sh: 29 / 29 (both files unchanged)origin/mainhook give 16 failuresshellcheck.yml, CI only; not installed locally): the first run flagged SC2028 and SC2319, fixed in 02fafed🤖 Generated with Claude Code