Skip to content

docs: say what a release brought, in the words of somebody who would use it - #676

Merged
lens0021 merged 4 commits into
mainfrom
claude/whats-new
Sep 6, 2026
Merged

lens0021 merged 4 commits into
mainfrom
claude/whats-new

Conversation

@lens0021

@lens0021 lens0021 commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

CHANGELOG.md and the releases page list every change, generated from the commits, for people tracking the repository. Nothing says what a release means to somebody who uses wikven — and the generated list cannot: it is grouped by commit type, it omits everything .release-please-config.json hides (refactor, test, docs, ci), and it is written in the register of the diff.

Release notes/1.1.0 is that page for the release waiting in #618. Three things a reader of this site would notice get sections — a site that can say where it is, a build that stops on a page it rendered wrong, a licenses page that names the server — and the rest is a list at the bottom.

The draft hatnote

A release page is written before its release exists, so it says so until the release catches up. Template:draft compares the version in the page's own title with {{WIKVENVERSION}}, the version of the Wikven that built the page, and shows the notice only while the first is newer.

Nothing is edited when the release happens. The bake that publishes it is built by it, so the comparison stops being true and the notice stops rendering.

Both halves are wikitext, not Lua. #explode reads a version out of the title and out of {{WIKVENVERSION}}, Template:draft/number turns each into one number so that 1.10.0 sorts after 1.9.0 rather than before it, and one #ifexpr compares them. That needs PFEnableStringFunctions, which ParserFunctions keeps off by default and docs/.wikven.yaml now turns on for this site — the reason it is off is a wiki that takes edits from anyone, and this one is a directory of files rendered once at build time.

A version neither can read is 0, which is what leaves the template a single comparison with no guard around it:

case named built hatnote
the page is about an unreleased version 1001000 1000000 shown
the release lands 1001000 1001000 gone, by itself
a later release 1001000 1002000 still gone
the page is not a release page 0 1000000 none
the build will not say which version it is 1001000 0 shown — a draft shown as published is the failure worth avoiding

Checked

The comparison is simulated against ParserFunctions' own runExplode() and #expr's number reading, over twelve cases: the release landing and the one after it, 1.10.0 against 1.9.0 in both directions, 1.1 and 1.1.0 as one version written two ways, an empty and a non-version {{WIKVENVERSION}}, and two pages that are not release pages. All twelve answer as intended.

Not baked here, so the rendering itself is unproven — the preview job is what will show it, and I will read it when it does.

yamllint passes on the edited .wikven.yaml. Neither page carries <translate> or <languages />, so translate check has nothing to say about them and the language-bars assertion is unaffected.

Two names

The page is titled Release notes and displays What's new. An apostrophe in a title reaches the canonical link percent-encoded, and the head-links bake check looks the file up without decoding it, so What's new/1.1.0 would have failed a check on its punctuation. The words readers see are the ones worth having; the string machines see only has to be safe.

Left for you

  • Nothing links either page yet, and neither is in the sidebar, so Module:Sequence.lua writes no navigation row for them. Worth linking from the front page when 1.1.0 ships.
  • The prose is a first draft of a judgement call — which changes are worth a reader's attention and which are a line at the bottom. That is yours to move.

🤖 Generated with Claude Code

https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn


Generated by Claude Code

…use it

CHANGELOG.md and the releases page list every change, generated from the
commits, for people tracking the repository. Nothing said what a release
means to somebody who uses wikven, and the generated list cannot: it is
grouped by commit type, it omits everything the changelog config hides, and
it is written in the register of the diff.

Release notes/1.1.0 is that page for the release now waiting in #618. Not a
rewrite of the changelog -- the three things a reader of this site would
notice (a site that can say where it is, a build that stops on a page it
rendered wrong, a licenses page that names the server) get sections, and the
rest is a list at the bottom.

## The draft hatnote

A release page is written before its release exists, so it says so until the
release catches up. Template:draft compares the version in the page's own
title with {{WIKVENVERSION}}, the version of the Wikven that built the page,
and shows the notice only while the first is newer.

Nothing is edited when the release happens. The bake that publishes it is
built by it, so the comparison stops being true and the notice stops
rendering.

Both halves are wikitext. #explode reads a version out of the title and out
of {{WIKVENVERSION}}, Template:draft/number turns each into one number so
that "1.10.0" is after "1.9.0" rather than before it, and one #ifexpr
compares them. That needs PFEnableStringFunctions, which ParserFunctions
keeps off by default and docs/.wikven.yaml now turns on for this site: the
reason it is off is a wiki that takes edits from anyone, and this one is a
directory of files rendered once.

A version neither of them can read is 0, which is what leaves the template a
single comparison with no guard around it: a page that is not a release page
is 0 and no build is older than it, so no hatnote; a {{WIKVENVERSION}} that
is missing is 0 and every release is newer, so the hatnote shows -- a draft
shown as published being the failure worth avoiding.

## Checked

The comparison is simulated against ParserFunctions' own runExplode() and
#expr's number reading, over twelve cases: the release landing and the one
after it, 1.10.0 against 1.9.0 in both directions, "1.1" and "1.1.0" as one
version, an empty and a non-version {{WIKVENVERSION}}, and two pages that
are not release pages. All twelve answer as intended.

Not baked, so the rendering is unproven here; the preview job is what will
show it.

## Two names

The page is titled "Release notes" and shows "What's new". An apostrophe in
a title reaches the canonical link percent-encoded, and the head-links bake
check looks the file up without decoding it, so "What's new/1.1.0" would
have failed a check on its punctuation. The words readers see are the ones
worth having; the string machines see only has to be safe.

Nothing links either page yet, and neither is in the sidebar, so no
navigation row is written for them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
Three digits a part, which is what the multipliers were already doing and
what the comment did not say plainly: it said "room for a thousand patches
and a thousand minors", which reads as the count rather than as the ceiling.
It now says three digits, that 999 is the last minor or patch that still
compares, and that the major has the rest of the number and no such ceiling.

The check that reads this template now reads its multipliers out of it
rather than restating them, because restating them is how I got them wrong:
editing the two numbers in two places left the check measuring a formula the
template did not have. Two cases added at the boundary -- 1.999.999 against
1.999.998, and 2.0.0 against 1.999.999 -- so the ceiling is asserted rather
than described.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
mediawiki.org says this with a template of its own, Template:DoNotTranslate:
"Please do not mark this page for translation yet. It is still being
drafted." The reason is the same here -- a draft that is still moving costs
a translator their work twice -- and so is the timing, which is why it is a
sentence in Template:draft rather than a template beside it: it is true of a
page for exactly as long as the rest of that notice is, and this site has no
other page that would ask it. Split it out when a second one does.

The other half is written down too: once the release is out and the notice
is gone, the page is an ordinary page of this site and can be wrapped in
<translate> and marked like any one of them. Nothing here does that.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
`translate check` refused Template:draft: "Unmatched opening tag". The
<noinclude> documentation said the page could be "wrapped in <translate>",
written as the tag rather than as the name of one, so Translate read an
opening tag with nothing closing it and gave up on the page. A source page
it cannot parse is a gating finding, which is what caught this.

The same mistake was in the same block three more times, and those were
quieter: {{WIKVENVERSION}} and {{#ifexpr:}} written into prose are calls,
not names. The first expands to a version and the second evaluates an empty
expression to nothing, so the sentence renders with a hole in it rather than
with the thing it is about. Nobody would have seen it -- Template: is not a
content namespace and the page is never exported -- which is the reason to
fix it rather than a reason not to.

All four are inside <nowiki> now, the way docs/Lua modules.wikitext and
Template:prevnext/doc write the same kind of thing. Asked with
StalenessComputer::strayTranslateTags(), which masks armoured nowiki the way
Translate does: no bare tag left in any of the four new pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ghEx26MRm9V5CnCLrdUQn
@github-actions
github-actions Bot temporarily deployed to preview September 6, 2026 12:51 Destroyed
@lens0021
lens0021 merged commit 1988634 into main Sep 6, 2026
24 checks passed
@lens0021
lens0021 deleted the claude/whats-new branch September 6, 2026 13:14

This branch was successfully deployed

No deployments
preview — d7a57625 Deployed Sep 6, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants