<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.shroudforge.net/index.php?action=history&amp;feed=atom&amp;title=Module%3AMainpage%2Fdoc</id>
	<title>Module:Mainpage/doc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.shroudforge.net/index.php?action=history&amp;feed=atom&amp;title=Module%3AMainpage%2Fdoc"/>
	<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:Mainpage/doc&amp;action=history"/>
	<updated>2026-11-05T04:13:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.shroudforge.net/index.php?title=Module:Mainpage/doc&amp;diff=98&amp;oldid=prev</id>
		<title>Bonsaibauer: 1 revision imported: Import Star Citizen Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:Mainpage/doc&amp;diff=98&amp;oldid=prev"/>
		<updated>2026-11-04T22:22:11Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported: Import Star Citizen Modules&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:22, 4 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en-GB&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki-mediawiki:diff:1.41:old-97:rev-98 --&gt;
&lt;/table&gt;</summary>
		<author><name>Bonsaibauer</name></author>
	</entry>
	<entry>
		<id>https://wiki.shroudforge.net/index.php?title=Module:Mainpage/doc&amp;diff=97&amp;oldid=prev</id>
		<title>starcitizen&gt;Alistar Bot: Sync from Git (adad5b3) (via update-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://wiki.shroudforge.net/index.php?title=Module:Mainpage/doc&amp;diff=97&amp;oldid=prev"/>
		<updated>2026-09-25T03:38:19Z</updated>

		<summary type="html">&lt;p&gt;Sync from Git (adad5b3) (via update-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{documentation|git=true}}&lt;br /&gt;
&lt;br /&gt;
Renders the main page: hero, highlights, featured article, on this day, the editing invitation, two community cards, and the directory.&lt;br /&gt;
&lt;br /&gt;
Editors use this through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Mainpage}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; see [[Template:Mainpage]] for what an editor can change and where.&lt;br /&gt;
&lt;br /&gt;
== For module editors ==&lt;br /&gt;
&lt;br /&gt;
=== Submodules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Submodule&lt;br /&gt;
! Renders&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Config&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Loads &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;settings.json&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; normalises it to plain Lua and resolves which build is live.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Nav&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Turns a settings link entry into wikitext; the hero chips and the directory both read it.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Hero&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The full-bleed hero band: patch status, wiki statline, lede, search trigger, chip strip.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Highlights&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The band under the hero: the event card (whichever design applies) and the current-patch card.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Event&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The event card built on a 1080×83 banner strip.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Event/Legacy&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The event card built on an ordinary photograph.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Featured&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The featured card: a whole-card link over the featured article&amp;#039;s picture.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/OnThisDay&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Today&amp;#039;s date page, transcluded as a two-panel tabber.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Editing&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The editing invitation; the recent-changes list beneath it is built entirely by the mainpage gadget.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Community&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The funding card and the Discord/follow card.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Directory&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The grouped text directory at the foot.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; composes these into the page and renders the foot row itself; that row is small enough to not need a submodule of its own. Buttons come from [[Module:ButtonLua]], the badge from [[Module:BadgeLua]], and the clock from [[Module:Countdown]]: each keeps its own look, and this module supplies only content and placement.&lt;br /&gt;
&lt;br /&gt;
=== Settings contract ===&lt;br /&gt;
&lt;br /&gt;
Every other submodule reads settings through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, never through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mw.loadJsonData&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; directly:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.section(name)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.list(name)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: one top-level object or array, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;/empty when the section is missing or blank, so a caller never has to nil-check first (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.lua:101-116&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.toIso(value)&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: a settings date to ISO 8601 UTC, or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nil&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; for anything it can&amp;#039;t read; it never raises (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.lua:134-163&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.livePatch()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: the build every consumer agrees is &amp;quot;live&amp;quot; (the first &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;patches&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; entry with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;channel: &amp;quot;LIVE&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, else the first with a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), resolved once so the hero&amp;#039;s status chip and the patch card can&amp;#039;t disagree (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.lua:177-193&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;load()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; wraps &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mw.loadJsonData&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;pcall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;; a moved or deleted settings page degrades to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; rather than raising (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.lua:80-90&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;toPlain&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config.lua:47-77&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) copies the loaded page&amp;#039;s read-only table (whose metatable breaks &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;next()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) into a plain one, dropping blank strings to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nil&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, compacting arrays, and discarding every &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;_&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;-prefixed key as editor guidance. Read a new settings field through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Config&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, never a second &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mw.loadJsonData&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; call.&lt;br /&gt;
&lt;br /&gt;
=== Styles ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Page&lt;br /&gt;
! Holds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/styles.css&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The hero, the bands, the grid, and the responsive stages.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/cards.css&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The individual cards, the directory, and the foot.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/ground.css&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| The graduation tapes and the dot lattice behind the page.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The page runs full bleed: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MediaWiki:Citizen.css&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; drops the body container&amp;#039;s gutter for this page, letting the bands paint edge to edge; that rule lives outside this module and this repository (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/styles.css:11-12&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Gadget ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MediaWiki:Gadget-mainpage.js&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; enhances the rendered page: it loads the hero artwork after page load, rolls the stat digits and search-label tail, drives the clock, manages the two scrolling cards&amp;#039; fade cues, and builds the activity list, reading its context from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;data-gadget-mainpage-*&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; attributes (so &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;grep gadget-mainpage-&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; finds every emitter). The page renders and reads correctly with the gadget absent, except the activity list: without the gadget it stays empty and the card offers its &amp;quot;See all changes&amp;quot; link instead.&lt;br /&gt;
&lt;br /&gt;
=== Previewing ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:Mainpage|hero}}              &amp;lt;!-- hero only --&amp;gt;&lt;br /&gt;
{{#invoke:Mainpage|hero|noscript=yes}} &amp;lt;!-- no-JS view --&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gotchas ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Module:Mainpage/settings.json&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is editor-owned content, not tracked in this repository (gitignored: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.gitignore:20&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;); &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;deploy-to-wiki&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; skips it even if a stale copy is sitting on disk, since deploying it would silently revert an editor&amp;#039;s changes.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;STYLESHEETS&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; lists [[Module:CardLua]]&amp;#039;s &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;styles.css&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; explicitly: six of the seven cards use plain &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.t-card&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; divs, so their surface, border, and radius would otherwise depend on the event card (the only CardLua consumer) rendering (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua:41-54&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Card spans (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-card--read&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;--aside&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;--tall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) are placement properties, not display ones: a class that sets &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;display&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; must never share an element with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;t-card&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, since CardLua&amp;#039;s own &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;display&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would collide (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua:18-21&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* The split event card&amp;#039;s clock is restyled from the page for one viewport range (640-899.98px, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/styles.css:541-603&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;), duplicating [[Module:Countdown]]&amp;#039;s stacked/flat declarations by hand, since a CSS class can&amp;#039;t be conditional on viewport width. The banner card avoids this by asking Countdown for &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;t-countdown--flat&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; at every width instead.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;band()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; takes varargs, not a table, since &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;ipairs&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; stops at the first &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nil&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and would let one declined card drop every card listed after it (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua:87-105&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* The foot row&amp;#039;s edit link and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/OnThisDay&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;s &amp;quot;Add an event&amp;quot; link both use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mw.uri.fullUrl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;callParserFunction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fullurl&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is a colon magic word (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;fullurl:&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;) that &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;callParserFunction&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; cannot resolve (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua:107-130&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;OnThisDay.lua:94-104&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Editing&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;s recent-changes list is built entirely by &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;MediaWiki:Gadget-mainpage.js&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;list=recentchanges&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;: without JS the container renders empty and the card falls back to its &amp;quot;See all changes&amp;quot; link (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Editing.lua:10-12&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
* The directory&amp;#039;s column count isn&amp;#039;t set in Lua: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-dir&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;repeat(auto-fit, minmax(125px, 1fr))&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, so the groups reflow on their own and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage/Directory&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; just emits them (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Directory.lua:10-13&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Extending ===&lt;br /&gt;
&lt;br /&gt;
Every band shares one layout contract: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-band&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; is the full-bleed ground, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-band__inner&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; the measured column inside it, and a band of cards adds &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-grid&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; on that inner element, all off one shared twelve-column grid; a band with its own column ratios breaks alignment for every other band (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.lua:11-17&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
A new card is a submodule with a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;render()&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; that returns &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nil&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or a string; wire its call into &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;Mainpage.render&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;#039;s band composition and, if it ships its own stylesheet, add it to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;STYLESHEETS&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; explicitly. It then picks one of the three span classes (&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-card--read&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; spans 8, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-card--aside&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 4, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;.home-card--tall&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; 8 across two rows); between 640 and 899.98px every span collapses to 6, and below 640 the page is one column in DOM order, so a new span value needs checking against both breakpoints.&lt;/div&gt;</summary>
		<author><name>starcitizen&gt;Alistar Bot</name></author>
	</entry>
</feed>