docs: take the page order from MediaWiki:Sidebar - #487
Merged
Conversation
The order of the documentation was written down twice: as MediaWiki:Sidebar,
and again as the arguments of the {{prevnext}} at the foot of each of
twenty-one pages. Nothing checked that the two agreed, and twice they did
not -- a page reached the sidebar with no call naming it, and the last page
of the chain had no row at all, because a lone argument read as the next
step and there was no way to spell "nothing after this".
Module:Sequence reads the sidebar, so {{prevnext}} takes no arguments. The
direction is forced: MediaWiki:Sidebar is read line by line by the skin
rather than parsed as wikitext, so it can call nothing; but it is an
ordinary page, so anything can read it.
What the sidebar contributes is order alone. Labels stay in
Template:prevnext/label, which reads each target's own translated title, so
none of this reaches the translations -- a prevnext sits outside the
translate tags and no ko file changed.
The two decisions #455 left open: the sequence keeps crossing from the docs
group into the references group, because a reader at the end of the first
group is better sent on than stopped; and index heads it without being a
sidebar entry, so the module prepends it rather than the sidebar gaining a
duplicate of what every skin's logo already points at.
#455 also made this conditional on Scribunto running in the image, which
was not known when it was filed. It does: the base image installs
LuaSandbox 4.1.2 and this site has rendered a Lua module since #473. No
Dockerfile change.
smoke asserts what went wrong before: every page the sidebar names has a
navigation row, index has no previous link, and Licenses has no next.
…e class
The main page is where a reader arrives rather than a step they walk, and it
already names its own way on in its opening lines -- Why wikitext,
Installation and Getting Started are all linked there. So it leaves the
sequence entirely: the module no longer prepends it and index.wikitext no
longer calls prevnext. Why wikitext heads the sequence, which is what the
sidebar says.
That also drops a name the module had hardcoded, which was a small second
copy of something written down elsewhere -- the thing this branch exists to
remove.
The smoke check that caught this was itself wrong, and its own failure is
what showed it:
##[error]index heads the sequence and should have no previous link
index had no previous link. TemplateStyles inlines prevnext/styles.css into
every page carrying a row, so `.wikven-prevnext-prev` appears in the page's
own stylesheet whether or not the div was rendered. Matched on
class="wikven-prevnext-prev" now, which is the div.
… title
The row rendered empty on every page:
##[error]Searching/ko's prevnext does not show Translating's Korean title (번역)
<div class="wikven-prevnext"></div>
rootText only strips a subpage where the namespace has subpages turned on,
and this one does not -- nothing sets $wgNamespacesWithSubpages, so
"Searching/ko" is one whole title and matched nothing in a list of source
page names.
Matched as a prefix of the sidebar's own names instead, so it works either
way and does not depend on a setting this repository never made. No sidebar
entry is another entry plus a slash, which is what makes the prefix safe.
The module now fails loudly when the sidebar yields no entries, rather than
returning nothing. An empty row is the invisible failure -- the wrapper div
is still there and the page still looks finished -- and it is the failure
this module exists to end.
Two of the three checks added with it were the same kind of quiet: they
matched the wrapper class, which prevnext always emits, so an empty row
passed. They match the link div now. Only the Korean-label check, which was
already there, caught this.
Also renames the module to Module:Sequence.lua, so its file says what it is
to an editor. Special:MyLanguage/Lua modules documents that naming without
recommending it, and this is the site that gets to try it.
lens0021
marked this pull request as ready for review
August 20, 2026 16:05
This was referenced Aug 20, 2026
lens0021
added a commit
that referenced
this pull request
Aug 21, 2026
`MediaWiki:Sidebar` is the reading order as well as the menu — `Module:Sequence` reads it to build the prev/next row on every page (#487) — so its order is the order the documentation is read in, and it had never been chosen as one. It was the order the pages happened to be written in. ## The order **Docs** — Installation, Getting Started, Pages, Images, Skins, Searching, Extensions, Lua modules, JavaScript, Translating, Editing sidebar, Deploying, Troubleshooting **References** — Limitations, Why wikitext, Configuration, Standalone binary, Commands, Writing an extension, Development, Licenses Docs is one walk: get the tool, build something, author it, shape the site, extend it, translate it, publish it, fix it. ## What moved, and why **Why wikitext led the whole thing.** It argues wikitext against Markdown, which is a question a reader has before installing anything rather than a step they walk — and the front page now makes that argument itself, citing `Why wikitext` and `Limitations` together as its two read-more links. Both are appendices to the landing page, so both are in References, and they stay a pair. **Searching moves up beside Skins.** It needs a skin to mount its typeahead, and both `Extensions` and `Skins` pointed forward to it from above; those two references now point backwards. **Editing sidebar moves below Skins and Translating.** Two of its three sections presume translation — the labels are messages, so the Korean wording is a `/ko` file — and its logo and Minerva claims presume `Skins`. At fifth place it asked a reader who had just built a Hello World to write a Korean message file for a site with no translations, and to link pages they did not have. **Deploying ends the walk, Troubleshooting follows it**, where a walk stops and lookup begins. **References opens with the two short pages the landing page hangs off it.** They are also the ramp: `Troubleshooting` into `Configuration` is 78 lines into 225, and the three reference pages after it run to 557 without a break. `Configuration` leads those three, being the page the rest of the documentation links most — 17 of the other 20 pages link it. **Standalone binary keeps its place before Commands.** `Commands`' examples are a bare `wikven build`, and it is `Standalone binary` that puts `wikven` on the `PATH`. **Writing an extension now precedes Development.** `Development` sends readers to it in its opening lines, and is itself linked from nowhere else in the documentation. ## The CI change Two smoke assertions named pages that only the old order made true: that `Why wikitext` has no previous link, because it was first, and that `Searching`'s next is `Translating`. The ends-of-sequence assertion goes altogether. That the first page has no previous link and the last no next one is a detail of what `Template:prevnext` renders, and reading it back out of the built HTML is more of the docs' own furniture than a smoke check should be inspecting. What it was added for (#455) is the row being missing entirely, and the check above it already covers that — for every page the sidebar names, rather than for two of them. The translated-label check stays, and now reads which page follows `Searching` from `MediaWiki:Sidebar`, the same place `Module:Sequence` reads it. It is about the label — that a link on a translated page carries the target's own translated title rather than a copy restated in the caller — so the pair it happens to use should follow the order rather than fix it. ## Checked The sidebar diff is a pure reorder — the sorted entry sets before and after are identical, so nothing was added, dropped or duplicated. All 21 targets keep their `Special:MyLanguage/` prefix, without which `Module:Sequence` drops them from the chain silently and `Licenses` is eaten by the core `licenses` message. Every label message and target page exists; no entry is another entry plus a slash, so `positionOf`'s prefix match is still unambiguous. The file carries no translate units and there is no per-language sidebar, so nothing goes stale. ## Not done here Three content defects the review turned up, all of them equally true on `main` and none fixed by reordering: - `Troubleshooting`'s "Two configuration files, one of them ignored" says the first in precedence order wins, without naming the order or linking `Configuration` — and tells the reader to delete the others. - `Writing an extension` puts `WikvenRepositories` at the top level, a sibling of `config:`; `Configuration` nests it under `config:`, and a top-level key is exactly what `Troubleshooting` says warns and is ignored. The same page writes `.wikven.yml` where every other page writes `.wikven.yaml`. - `Editing sidebar` has no inbound prose link from any page — the sidebar is its only route in, which its move to eleventh makes slightly more so. --------- Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #455.
The duplication
The order of the documentation was written down twice: as
MediaWiki:Sidebar, and again as the arguments of the{{prevnext}}at the foot of each of twenty-one pages. Nothing checked that the two agreed, and twice they did not — a page reached the sidebar with no call naming it, and the last page of the chain had no row at all, because a lone argument read as the next step and no positional form could spell "nothing after this".They agree today, as it happens: twenty sidebar entries, and the chain covers all twenty in the sidebar's order with
indexat the head. That is the state to keep, not a state to rely on — both past divergences were repaired by hand, and the shape that produced them was untouched.The change
Module:Sequencereads the sidebar, so{{prevnext}}takes no arguments. Adding a page is now two edits instead of three, and the third was the invisible one.The direction is forced, as #455 worked out:
MediaWiki:Sidebaris read line by line by the skin rather than parsed as wikitext, so it can call nothing; but it is an ordinary page, so anything can read it.What the sidebar contributes is order alone. Labels stay in
Template:prevnext/label, which reads each target's own translated title — so none of this reaches the translations. A prevnext sits outside the<translate>tags, and noko.wikitextchanged in this branch.The two decisions #455 left open
index. It heads the sequence without being a sidebar entry, so the module prepends it. The alternative — a sidebar entry for it — would duplicate what every skin's logo already points at, which is why the sidebar's own comment says it has none.The condition #455 set
It runs. The base image does
pecl install LuaSandbox-4.1.2, and this site has renderedModule:Examplesince #473. No Dockerfile change, which is what tips this over the alternative — #455's cheaper option was a check that asserts the two copies agree, and a check that watches a duplication is worth less than not having the duplication, once the module is free.What holds it
smokegets what the old shape got wrong, stated as three assertions: every page the sidebar names has a navigation row,indexhas no previous link, andLicenseshas no next. The existing check thatSearching/ko's row carries Translating's Korean title still stands and now also proves the module renders at all.Draft because the module cannot be run here — no Docker on this machine, so the first real execution is CI's bake.
Generated by Claude Code