Skip to content

chore(main): release 1.0.0 - #30

Draft
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main
Draft

chore(main): release 1.0.0#30
github-actions[bot] wants to merge 1 commit into
mainfrom
release-please--branches--main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

1.0.0 (2026-08-18)

⚠ BREAKING CHANGES

  • WikvenVersionPage is now WikvenAboutPage, and its default page name is "About" rather than "Version".
  • group the composite actions under actions/ (#359)
  • require MediaWiki 1.46, dropping 1.45 support (#236)
  • WikvenLogos (mirror $wgLogos), logos in docs/, SVG uploads (#40)
  • the "WikvenLogo: " config key is replaced by a
  • config: configuration lives in .wikven.yaml with a new schema; .wikven.json is no longer read.

refactor

  • group the composite actions under actions/ (#359) (01f0f3d)

Features

  • action: default to a pinned image version and cache it between runs (#188) (f7fcb40)
  • add a "View source" tab linking to the repo source (0178405)
  • add a "View source" tab linking to the repo source (#119) (24e4d16)
  • add a wikven build command to the binary (9ed60b7)
  • add a configurable header logo and the Wikven brand mark (a67ba00)
  • add a configurable header logo and the Wikven brand mark (994ed33)
  • add a footer skin switcher (8105249)
  • add a footer skin switcher (#114) (1867ea6)
  • add a mark command to number translation units (#216) (0fcde73)
  • add a serve subcommand for local preview (#155) (8d97799)
  • add a wikven build command to the binary (#49) (31a5e05)
  • add translate scaffold to generate translation skeletons (#223) (48ce2ab)
  • bake ULS webfonts into the static export (opt-in) (#286) (074a103)
  • base the image on mediawiki:1.46-fpm-alpine (#332) (f3fdcee)
  • bundle the native search closure so SifterSearch search works offline (50aeb25), closes #97
  • bundle the native search closure so SifterSearch search works offline (#98) (cf6b910), closes #97
  • config: adopt MediaWiki's YAML settings format (ae7e652)
  • config: read .wikven.json as a fallback to .wikven.yaml (048c0ea)
  • config: read .wikven.json as a fallback to .wikven.yaml (ae8ada1)
  • derive page files from content model, dropping the .css.wikitext suffix (3dbb0d5)
  • derive page files from content model, dropping the .css.wikitext suffix (#62) (ef645c4)
  • derive the footer project link label from the repo host (5110a9f)
  • derive the footer project link label from the repo host (#118) (e14c059)
  • distribute a standalone binary (3af94e9)
  • distribute a standalone binary (#45) (0a71ced)
  • docs: give the note template a teal icon (#341) (05a7ea2)
  • docs: put a copy button on the code blocks (#377) (3beee91)
  • enable bundled extensions safely, skipping ones not in the image (707b921)
  • enable bundled extensions safely, skipping ones not in the image (26b41f6)
  • export site styles and teal-brand the docs (e3cfa0a)
  • export site styles and teal-brand the docs (#46) (18ba51a)
  • fold the version page into an About page (#426) (af61267)
  • gate translation checks on broken source pages, not on stale translations (#385) (aacfbfc)
  • generate a Special:Version-style page linked from the footer (dd1530f)
  • generate a Special:Version-style page linked from the footer (#117) (d2dfa8a)
  • give Minerva a main menu the export can serve (#366) (fc59117)
  • hide the edit and history tabs when their URLs are not configured (#17) (b207bef), closes #11
  • i18n: translate the footer, skin switcher and version page strings (#123) (9849b36)
  • images: export File: pages and support description sidecars (662108d)
  • index each language separately, and assert it stays that way (#447) (b4b01cc)
  • keep non-main skin pages out of search indexes (1758279)
  • keep non-main skin pages out of search indexes (#113) (0d8d94e)
  • keep Vector's appearance menu, which works statically (#387) (ce30fea)
  • load .wikven.yaml through MediaWiki's settings system and validate it (a0b52b0), closes #69
  • load .wikven.yaml through MediaWiki's settings system and validate it (#77) (0952b3b)
  • load MediaWiki defaults from a default.yaml config layer (6463fc2)
  • load MediaWiki defaults from a default.yaml config layer (#41) (ca200b5)
  • localize direct-path skin assets and the placeholder logo (59c9cfc)
  • localize ResourceLoader icon images in the static export (6c60985)
  • localize translated-page chrome and route Special:Translate links to the edit host (#229) (3afa7c4)
  • logo: drop the bread body, keep the folds, round the oven mouth (7307e61)
  • logo: drop the bread, round the oven mouth, move to assets/ (#37) (f642e41)
  • make page titles translatable, and translate them into Korean (#256) (acdd975)
  • make skin JavaScript work in the static export (746401e)
  • make the Translating page translatable (#248) (6122151)
  • move logos into docs/ and allow SVG uploads (64a14e1)
  • offer the Citizen skin (search hidden) (aeadce0)
  • offer the Citizen skin (search hidden) (#115) (b83717b)
  • persist Vector "move to sidebar" pin state on the static export (4405cf9)
  • persist Vector "move to sidebar" pin state on the static export (df1ded4)
  • pin and verify fetched extensions/skins (abda807), closes #66
  • pin and verify fetched extensions/skins (#74) (8ccd5e7)
  • point non-main skin pages' canonical at the main copy (bb4a179)
  • point non-main skin pages' canonical at the main copy (#116) (5bf1d6a)
  • put the skin switcher in the toolbox and drop the footer select (#351) (2f2551e)
  • remove the non-functional search box from the static output (cd90325)
  • render each enabled skin into its own output directory (08533c1)
  • render each enabled skin into its own output directory (#111) (b0adc94)
  • replace WikvenLogo with WikvenLogos mirroring $wgLogos (0bde57a)
  • require MediaWiki 1.46, dropping 1.45 support (#236) (993e62c)
  • resolve Special:MyLanguage/ links in the static export (#225) (f4904ea)
  • run site JavaScript and gadgets (bcdfaaf)
  • run site JavaScript and gadgets (#39) (9529a7d)
  • select the build skin via WIKVEN_BUILD_SKIN (f35babf)
  • select the build skin via WIKVEN_BUILD_SKIN (#110) (126a021)
  • serve logos from a shared upload instead of inlining them per page (2d61810)
  • serve logos from a shared upload instead of inlining them per page (#56) (ad4017a)
  • serve the search results at Search and exclude it from indexing (514335a)
  • serve the search results at Search and exclude it from indexing (#104) (85d35e2)
  • set the real last-modified date on the footer (#18) (46b5ffa), closes #12
  • ship a built-in favicon (9db7b84)
  • ship a composite action and dogfood it in the docs deploy (#150) (19392b7)
  • ship SifterSearch as a built-in, on-by-default search extension (#195) (7b19be8)
  • store hotlinked Commons images locally for a self-contained export (4daf8fc)
  • store hotlinked Commons images locally for a self-contained export (79d74ae)
  • support Citizen in wikven instead of per-site workarounds (#369) (bced0dd)
  • support local images (a73aba1)
  • support local images (#38) (9322e90)
  • support third-party extensions and skins (fc95348)
  • support third-party extensions and skins (#43) (552fede)
  • switch docs skin to Vector and hide read-only chrome (198e96f)
  • switch the docs site to the MinervaNeue skin (6c42b21)
  • translate page content into other languages (#214) (28ff2b2)
  • upgrade to MediaWiki 1.45 (dea7ffc)
  • upgrade to MediaWiki 1.45 (#52) (a8d4907)
  • use the core viewsource message for the View source tab (8e36fef)
  • use the core viewsource message for the View source tab (#120) (24230c0)
  • WikvenLogos (mirror $wgLogos), logos in docs/, SVG uploads (#40) (d65227b)

Bugfixes

  • abort the build when a page fails to import (#146) (cf0a007)
  • action: use a locally-built image instead of always pulling (#194) (8046aa4)
  • address mediawiki-codesniffer findings (410a642)
  • build the image when a Translate dev dependency has an advisory (#277) (00838b9)
  • build the search index once, at the end (#283) (09a5324)
  • bump bundled SifterSearch to v0.6.0 (stop the double search box) (#200) (cd38aa7)
  • clear the output directory before each build (7f02f8b), closes #64
  • clear the output directory before each build (#72) (b4cf416)
  • clear the title cache once the translation units exist (#466) (562ea9e)
  • create directories with wfMkdirParents (#289) (5157174)
  • date each page at the commit that changed it, not at the bake (#424) (4cd31f4), closes #406
  • declare the build's directory settings in extension.json (#262) (65432b5)
  • decode JS-bundle URL escapes with json_decode in AssetLocalizer (#297) (ccbf702)
  • docs: keep sidebar links in the reader's language (#382) (f2b27f4)
  • docs: keep the logo in the reader's language (#391) (749f507)
  • docs: translate the Minerva section of Skins into Korean (#415) (2ac133a)
  • don't treat a documented <translate> example as a translation source (#239) (cdcc388)
  • drain translation jobs by hand again, reverting #311 (#326) (4170fd7)
  • drop dead footer/search affordances from the static export (#160) (c08a5d2)
  • drop the .git the bundled extension clones leave in the image (#330) (d19dbf4)
  • drop the category footer's dead Special:Categories link (#173) (2df6bf8)
  • dump ResourceLoader modules without load.php's HTTP response (#259) (3a39aac)
  • end a source translation unit where its <translate> block ends (#379) (50aebd8)
  • export subpage titles as real subdirectories (#213) (1db8e0d)
  • fail on un-localized images and hand output back to the host user (#161) (1bb8c86)
  • fetch the bundled extensions as tarballs, not clones (#331) (9f60efa)
  • freeze page_touched so wiki-page modules hash the same every bake (#271) (853c06f)
  • give Citizen's "View source" tab an icon (#440) (f0b4e02)
  • give Citizen's search shortcuts the search the export has (#397) (27eeebf)
  • give the per-skin build its own environment and working directory (#298) (cfb0243)
  • give the skin list its own section instead of renaming the toolbox (#363) (aa13b7b)
  • grant the release binary job the provenance permissions it needs (#177) (be9f283)
  • hide dead skin chrome left by the static export in Timeless and Citizen (#196) (1b4c9e1)
  • hide edit/history/source links on generated pages (#130) (fb6df1e)
  • hide the category footer on the static export (602f30f)
  • hide the category footer on the static export (#121) (939c435)
  • hide the empty tools box each skin draws around the toolbox (#346) (5afb909)
  • index a translated page once, not once per title it has (#458) (e934e00)
  • keep $wgCacheEpoch out of module versions (#270) (7795bf9)
  • keep a search inside the skin copy the reader is in (#434) (32e7f6d)
  • keep a skin pass out of the other skins' pages (#430) (e84cd11)
  • link images to their Commons page instead of a dead local File page (f17d96d)
  • link images to their Commons page instead of a dead local File page (580f7d4)
  • link the search toggle to the results page, not to Special:Search (#421) (3b3b2d5)
  • list directories with FilesystemIterator, not glob (#294) (f8188fa)
  • make edit/history links correct for all valid titles (950c0b2), closes #67
  • make storeImages downloads status-aware and stream to disk (#307) (b75afc3)
  • make the exported HTML the same in every bake (#282) (caf6661)
  • make the first listed skin the default skin (192f140)
  • make the first listed skin the default skin (#109) (19e3fae)
  • make the main page configurable and fail if it was not imported (d39fa5a), closes #65
  • make the main page configurable and fail if it was not imported (#71) (4399b8f)
  • make verbatimRanges() comment-aware (#312) (59117f7)
  • match <translate> with its attributes, as Translate does (#292) (243bbb0)
  • move Vector's skin list into the appearance menu (#423) (68917e0), closes #405
  • name the project namespace Wikven instead of clashing with MediaWiki (5dadb34)
  • name the project namespace Wikven instead of clashing with MediaWiki (#105) (4695978)
  • never read a translation file as a base page (#390) (6adb270)
  • obtain GadgetRepo from the service, not the removed singleton() (288c733)
  • point prevnext navigation at the reader's-language pages (#245) (a3c8411)
  • probe openssl's own compiled-in CA bundle location first (#309) (c82d5b1)
  • propagate the child's exit code from wikven build and serve (#302) (5c75797)
  • read a source page the way Translate segments it (#388) (ff95548)
  • read units the way Translate does (#358) (4642fc8)
  • read Vector feature classes through classList (#301) (9dfebd1)
  • rebase the printfooter link on a page exported into a subdirectory (#422) (5e5b905)
  • render every translated page after all pages are marked (#243) (0d987d3)
  • reparent the local URLs a page carries in its JavaScript config (#445) (beba746)
  • replace fetchExtensions' curl subprocess with core's HTTP client (#308) (9be62ec)
  • replace hand-rolled balanced-div matcher with RemexHtml (#314) (3173c2d)
  • repo: declare GitHub Pages so it is not removed (3d41e30)
  • repo: re-gate ruleset bypass actors for the stateless CI plan (ee52078)
  • report a vetoed File:/MediaWiki: import as a failure (#291) (8140261)
  • repo: stop the OpenTofu ruleset from re-planning on every CI run (df894d9)
  • repo: stop the OpenTofu ruleset from re-planning on every CI run (#36) (75ec3cc)
  • require real tag context before rewriting a relative reference (#313) (0f04ab6)
  • require UniversalLanguageSelector explicitly and disable its webfonts (#218) (1b3e1b7)
  • resolve $wgWikvenLogos through Title/RepoGroup, not by hand (#315) (6f4de14)
  • resolve phan findings and target MediaWiki 1.45 (be87a48)
  • resolve translate mark/stamp file paths against the source directory (#220) (0aa95ea)
  • retry and cache the build's Wikimedia Commons lookups (#257) (2ac2cce)
  • run the job queue in a fixed order (#281) (6aa694e)
  • set the maintenance user without StubGlobalUser (8128dc5), closes #93
  • settle the search bundle's language order between bakes (#451) (e7fc96c)
  • show the search box when SifterSearch provides static search (d27083b)
  • show the search box when SifterSearch provides static search (#99) (a9cd689)
  • small build-script and config papercuts (171c80d), closes #70
  • small build-script and config papercuts (#76) (1302e23)
  • split translation units only on adjacent newlines, as Translate does (#295) (0feeebf)
  • stop suppressing real categories; drop Version NOINDEX (844064b)
  • stop suppressing real categories; drop Version NOINDEX (#122) (a3686bf)
  • stop the RLPAGEMODULES rewrite from editing article prose (#296) (9ef6b8a)
  • stop ULS reaching for input methods the export cannot serve (#402) (af60e0e)
  • strip the clocks ImageMagick writes into exported thumbnails (#276) (a1bb8d0)
  • switch skins correctly from a translated page (#258) (6f85fe6)
  • take the DISPLAYTITLE spellings from the magic word registry (#293) (7c88a7a)
  • tf: skip the vulnerability-alerts import when the resource is absent (#265) (b5d3ba3)
  • turn the parser cache off so a bake reads its own finished state (#335) (91036c3)
  • use CSSMin's data: URI encoder in AssetLocalizer (#310) (6fe63d5)
  • validate .wikven.yaml value shapes and flag warnings clearly (#163) (021f819)

Performance

  • freeze page_touched once, in the orchestrator (#431) (a2d878b)
  • render the skins beside each other (#437) (33bbbfb)
  • stop rendering the history pages the export throws away (#432) (39fe30c)

This PR was generated with Release Please. See documentation.

@lens0021
lens0021 marked this pull request as draft June 13, 2026 12:36
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 28 times, most recently from 1a07774 to f96da8b Compare June 20, 2026 09:01
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 11 times, most recently from 1fb6cfb to 27d2020 Compare June 22, 2026 11:47
lens0021 added a commit that referenced this pull request Jun 27, 2026
)

## Problem

The release PR (#30) lists most features **twice** in the changelog,
e.g.:

```
* add a "View source" tab ... ([0178405])
* add a "View source" tab ... ([#119]) ([24e4d16])
```

### Root cause

`.tf/repository.tf` allows **merge-commit merging only** and sets
`merge_commit_title = "PR_TITLE"`. So merging PR #119 leaves two
conventional commits on `main`:

| commit | parents | subject |
|---|---|---|
| `0178405` (branch) | 1 | `feat: add a "View source" tab` |
| `24e4d16` (merge) | 2 | `feat: add a "View source" tab (#119)` |

Because it is a merge (not a squash), the branch commit survives, and
the merge commit's title is itself a conventional commit. release-please
counts both → duplicate entries. Commits that landed without a merge
commit (single parent) appear once, which is why only some entries are
doubled.

## Fix

Switch the repo to **squash-only** merging:

```hcl
allow_merge_commit          = false
allow_squash_merge          = true
squash_merge_commit_title   = "PR_TITLE"
squash_merge_commit_message = "PR_BODY"
```

One commit per PR (`feat: x (#NN)`), no leftover branch commit, so each
feature is counted once and keeps its `(#NN)` PR link. This is
release-please's intended workflow.

`merge_commit_*` lines are kept (GitHub retains them even while merge
commits are disabled) to avoid plan drift.

## Note on the existing #30

This stops *future* duplicates. The 1.0.0 changelog already has the
doubled history baked in; that PR is cleaned up separately.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 5 times, most recently from 20fb301 to 25780bd Compare June 27, 2026 10:21
@github-actions
github-actions Bot force-pushed the release-please--branches--main branch 9 times, most recently from 2362b38 to 4bf96e4 Compare June 28, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment