3.14.0 Latest
⚠️ Breaking change: HTML classes for preferences and page actions have changed in this release. If your wiki caches HTML output, it is recommended to purge the cache after updating.
Highlights
- 🔌 Extensible preferences system
The preferences panel has been rewritten in Vue 3 and now supports programmatic registration. Extensions and gadgets can add their own preferences via
mw.hookor PHP config providers. - 🌙 Image dimming in dark mode A new toggle in the Appearance section lets users reduce the brightness of images when using dark mode.
- 🔘 Header and page action button cleanup Header and page action buttons have been migrated to Codex button classes, and CSS-drawn icons have been replaced with inline SVGs.
Changelog
Features
- CdxButton: ✨ use focus-visible instead of focus for more subtle appearance (by @alistair3149)
f16983b - core: ✨ migrate header and page-action buttons to Codex button classes (by @alistair3149)
80c4451 - icons: ✨ replace CSS-drawn icons with inline SVG animations (by @alistair3149)
2813dc8 - preferences: ✨ add extensible config utilities (by @alistair3149)
997bec2 - preferences: ✨ add image dimming preference for dark mode (by @alistair3149)
7fe7437 - preferences: ✨ add mw.hook register API for programmatic registration (by @alistair3149)
bf96e85 - preferences: ✨ add PHP config provider for on-wiki overrides (by @alistair3149)
2d4a31c - preferences: ✨ convert preferences panel from vanilla JS to Vue 3 (by @alistair3149)
f1203b1 - toc: ✨ add CitizenComponentTableOfContents PHP component (by @alistair3149)
a19c53a - VisualEditor: ✨ style edit categories button (VE 1.45) (by @wlft) (#1285)
220d7e2
Bug Fixes
- ApiWebappManifest: 🐛 prevent logoSize variable leak between loop iterations (by @alistair3149)
2766f6d - CdxButton: 🐛 correct focus styles (by @alistair3149)
f2df13a - CitizenComponentUserInfo: 🐛 use DOM manipulation for username replacement (by @alistair3149)
f9c2634 - core: 🐛 defer OutputPage modifications to rendering phase (by @alistair3149)
98eb1e7, closes #1272 - performance: 🐛 cache GPU detection result for no-GPU users (by @alistair3149)
6a71c67 - preferences: 🐛 persist custom preference values across page loads (by @alistair3149)
aed32e3 - scrollObserver: 🐛 store throttled scroll handler to fix event listener leak (by @alistair3149)
ea8aeea - SkinCitizen: 🐛 guard setSkinTheme() against invalid config values (by @alistair3149)
ecac37a - speculationRules: 🐛 convert to factory pattern and fix namespace exclusion (by @alistair3149)
4d5f6a9 - TemplateData: 🐛 hide edit button sqaure brackets (by @wlft)
5b90d20 - tests: 🐛 remove deprecated ReflectionMethod::setAccessible() calls (by @alistair3149)
77ff958 - tests: 🐛 standardize test file namespaces to match directory paths (by @alistair3149)
4291772 - toc: 🐛 guard against missing number-section-count key (by @alistair3149)
3e95e52
Performance Improvements
- SkinHooks: ⚡️ cache inline script minification across requests (by @alistair3149)
3de603b
Miscellaneous Chores
- 🔧 clean up export-ignore and gitignore (by @alistair3149)
7c59637 - 🔧 migrate from husky to lefthook (by @alistair3149)
98137de - 🔧 remove unused phan dependency and config (by @alistair3149)
82afe5d - CitizenComponentPageFooter: 🔧 remove stale FIXME comment (by @alistair3149)
abac982

