<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stoulram.me/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATimeless.js</id>
	<title>MediaWiki:Timeless.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stoulram.me/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATimeless.js"/>
	<link rel="alternate" type="text/html" href="https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;action=history"/>
	<updated>2026-11-10T04:30:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;diff=972&amp;oldid=prev</id>
		<title>Stoulram: remove dark mode for now</title>
		<link rel="alternate" type="text/html" href="https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;diff=972&amp;oldid=prev"/>
		<updated>2026-09-15T21:40:57Z</updated>

		<summary type="html">&lt;p&gt;remove dark mode for now&lt;/p&gt;
&lt;a href=&quot;https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;amp;diff=972&amp;amp;oldid=969&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Stoulram</name></author>
	</entry>
	<entry>
		<id>https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;diff=969&amp;oldid=prev</id>
		<title>Stoulram: Trying dark mode</title>
		<link rel="alternate" type="text/html" href="https://stoulram.me/index.php?title=MediaWiki:Timeless.js&amp;diff=969&amp;oldid=prev"/>
		<updated>2026-09-15T21:37:57Z</updated>

		<summary type="html">&lt;p&gt;Trying dark mode&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* All JavaScript here will be loaded for users of the Timeless skin */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Timeless Light/Dark Mode Toggle&lt;br /&gt;
 *&lt;br /&gt;
 * Requires the corresponding CSS in MediaWiki:Timeless.css&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
(function () {&lt;br /&gt;
    &amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    var STORAGE_KEY = &amp;#039;timeless-theme&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Get the user&amp;#039;s preferred theme.&lt;br /&gt;
     * Stored preference takes priority; otherwise use system preference.&lt;br /&gt;
     */&lt;br /&gt;
    function getPreferredTheme() {&lt;br /&gt;
        var stored = localStorage.getItem(STORAGE_KEY);&lt;br /&gt;
&lt;br /&gt;
        if (stored === &amp;#039;dark&amp;#039; || stored === &amp;#039;light&amp;#039;) {&lt;br /&gt;
            return stored;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        return window.matchMedia &amp;amp;&amp;amp;&lt;br /&gt;
            window.matchMedia(&amp;#039;(prefers-color-scheme: dark)&amp;#039;).matches&lt;br /&gt;
            ? &amp;#039;dark&amp;#039;&lt;br /&gt;
            : &amp;#039;light&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Apply the selected theme.&lt;br /&gt;
     */&lt;br /&gt;
    function applyTheme(theme) {&lt;br /&gt;
        document.documentElement.classList.toggle(&amp;#039;dark-mode&amp;#039;, theme === &amp;#039;dark&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        updateButton(theme);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Update the toggle button text and tooltip.&lt;br /&gt;
     */&lt;br /&gt;
    function updateButton(theme) {&lt;br /&gt;
        var button = document.getElementById(&amp;#039;timeless-theme-toggle&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        if (!button) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (theme === &amp;#039;dark&amp;#039;) {&lt;br /&gt;
            button.textContent = &amp;#039;☀️ Light mode&amp;#039;;&lt;br /&gt;
            button.setAttribute(&amp;#039;title&amp;#039;, &amp;#039;Switch to light mode&amp;#039;);&lt;br /&gt;
            button.setAttribute(&amp;#039;aria-label&amp;#039;, &amp;#039;Switch to light mode&amp;#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
            button.textContent = &amp;#039;🌙 Dark mode&amp;#039;;&lt;br /&gt;
            button.setAttribute(&amp;#039;title&amp;#039;, &amp;#039;Switch to dark mode&amp;#039;);&lt;br /&gt;
            button.setAttribute(&amp;#039;aria-label&amp;#039;, &amp;#039;Switch to dark mode&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Create the toggle button.&lt;br /&gt;
     */&lt;br /&gt;
    function createButton() {&lt;br /&gt;
        if (document.getElementById(&amp;#039;timeless-theme-toggle&amp;#039;)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var button = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        button.id = &amp;#039;timeless-theme-toggle&amp;#039;;&lt;br /&gt;
        button.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
        button.className = &amp;#039;timeless-theme-toggle&amp;#039;;&lt;br /&gt;
        button.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
            var currentTheme =&lt;br /&gt;
                document.documentElement.classList.contains(&amp;#039;dark-mode&amp;#039;)&lt;br /&gt;
                    ? &amp;#039;dark&amp;#039;&lt;br /&gt;
                    : &amp;#039;light&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            var newTheme = currentTheme === &amp;#039;dark&amp;#039; ? &amp;#039;light&amp;#039; : &amp;#039;dark&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            localStorage.setItem(STORAGE_KEY, newTheme);&lt;br /&gt;
            applyTheme(newTheme);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * Timeless has a personal tools/navigation area.&lt;br /&gt;
         * Try several possible locations so this works across Timeless versions.&lt;br /&gt;
         */&lt;br /&gt;
        var locations = [&lt;br /&gt;
            &amp;#039;#p-personal&amp;#039;,&lt;br /&gt;
            &amp;#039;#personal&amp;#039;,&lt;br /&gt;
            &amp;#039;.personal-tools&amp;#039;,&lt;br /&gt;
            &amp;#039;#mw-panel&amp;#039;&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        var target = null;&lt;br /&gt;
&lt;br /&gt;
        for (var i = 0; i &amp;lt; locations.length; i++) {&lt;br /&gt;
            target = document.querySelector(locations[i]);&lt;br /&gt;
&lt;br /&gt;
            if (target) {&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (!target) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * If we found a navigation container, put the button in a list item&lt;br /&gt;
         * when possible. Otherwise append it directly.&lt;br /&gt;
         */&lt;br /&gt;
        var list = target.querySelector(&amp;#039;ul&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        if (list) {&lt;br /&gt;
            var listItem = document.createElement(&amp;#039;li&amp;#039;);&lt;br /&gt;
            listItem.id = &amp;#039;timeless-theme-toggle-container&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
            listItem.appendChild(button);&lt;br /&gt;
            list.appendChild(listItem);&lt;br /&gt;
        } else {&lt;br /&gt;
            target.appendChild(button);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        updateButton(getPreferredTheme());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Apply the theme as early as possible.&lt;br /&gt;
     */&lt;br /&gt;
    applyTheme(getPreferredTheme());&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Wait for MediaWiki/Timeless to finish constructing the interface.&lt;br /&gt;
     */&lt;br /&gt;
    mw.loader.using([&amp;#039;mediawiki.util&amp;#039;], function () {&lt;br /&gt;
        $(createButton);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * If the visitor has not manually selected a theme, automatically&lt;br /&gt;
     * follow changes to their operating-system color scheme.&lt;br /&gt;
     */&lt;br /&gt;
    if (window.matchMedia) {&lt;br /&gt;
        var mediaQuery = window.matchMedia(&amp;#039;(prefers-color-scheme: dark)&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        var systemThemeChanged = function (event) {&lt;br /&gt;
            if (!localStorage.getItem(STORAGE_KEY)) {&lt;br /&gt;
                applyTheme(event.matches ? &amp;#039;dark&amp;#039; : &amp;#039;light&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        if (mediaQuery.addEventListener) {&lt;br /&gt;
            mediaQuery.addEventListener(&amp;#039;change&amp;#039;, systemThemeChanged);&lt;br /&gt;
        } else if (mediaQuery.addListener) {&lt;br /&gt;
            mediaQuery.addListener(systemThemeChanged);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Stoulram</name></author>
	</entry>
</feed>