Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* global SS, mw, $ */
/*  MODULE NAVIGATION:
    [Main loader: [[User:Sam_Sailor/common.js]]]
    [Modules: [[User:Sam_Sailor/common.js/tier1.js|Always]] | [[User:Sam_Sailor/common.js/tier2.js|C/C/H/W]] |
    [[User:Sam_Sailor/common.js/tier3.js|Work]] | [[User:Sam_Sailor/common.js/tier4.js|Exists]] |
    [[User:Sam_Sailor/common.js/tier4_0.js|NS 0]] | [[User:Sam_Sailor/common.js/tier4_0_118.js|NS 0/118]] |
    [[User:Sam_Sailor/common.js/tier4_118.js|NS 118]] | [[User:Sam_Sailor/common.js/tier4_118_2.js|NS 118/2]] |
    [[User:Sam_Sailor/common.js/tier4_2_3.js|NS 2/3]] | [[User:Sam_Sailor/common.js/tier4_4.js|NS 4]] |
    [[User:Sam_Sailor/common.js/tier4_4_odd.js|NS 4/ODD]] | [[User:Sam_Sailor/common.js/tier4_6_7.js|NS 6/7]] |
    [[User:Sam_Sailor/common.js/tier4_10_11.js|NS 10/11]] | [[User:Sam_Sailor/common.js/tier4_14_15.js|NS 14/15]] |
    [[User:Sam_Sailor/common.js/tier5.js|Special]]]
*/

    /**
     * ===============================================================
     * TIER 1: Unconditional, load everywhere
     * ===============================================================
     */

window.SCRIPT_CONFIG.push(
    // Custom navigation links for Copyright Patrol, JWB, NPP, etc.
    {
        condition: SS.always,
        dependencies: ['mediawiki.util', 'jquery'],
        inlineCode: [
            "$(function() {",
            "    mw.util.addPortletLink('p-navigation', '//tools.wmflabs.org/copypatrol/en', 'CP', 'n-copypatrol', 'Copyright patrol');",
            "    mw.util.addPortletLink('p-navigation', mw.util.getUrl('Wikipedia:AutoWikiBrowser/Script'), 'JWB', 'n-jwb', 'JWB');",
            "    mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:NewPages', {dir: 'prev', hidepatrolled: 1, hideredirs: 0}), 'NPP', 'n-npp', 'NPP');",
            "    mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomInCategory/All_Wikipedia_articles_needing_copy_edit'), 'Random copy edit', 't-random-copyedit', 'View a random article needing copy editing');",
            "    var rd = mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomInCategory/All_disambiguation_pages'), 'Random disambig', 'n-random-disambig', 'Load a random disambiguation page');",
            "    if (rd) rd.querySelector('a').classList.add('mw-disambig');",
            "    mw.util.addPortletLink('p-navigation', mw.util.getUrl('Special:RandomRedirect'), 'Random redirect', 'n-randomredirect', 'Load a random redirect');",
            "});"
        ]
    },
    // [[User:Daniel_Quinlan/Scripts/Blame.js]]
    {
        page: 'User:Daniel_Quinlan/Scripts/Blame.js',
        condition: SS.always,
        dependencies: ['mediawiki.api', 'mediawiki.storage', 'mediawiki.user', 'mediawiki.util', 'mediawiki.DateFormatter', 'oojs-ui-core']
    },
    // [[User:Novem Linguae/Scripts/CopyTitle.js]] not needed, functionality included in [[m:User:Sam_Sailor/EasyLinks.js]] loaded in global.js

    // [[User:GeneralNotability/cumarkips.js]]
    {
        page: 'User:GeneralNotability/cumarkips.js',
        condition: SS.always,
        dependencies: ['mediawiki.util']
    },
    // [[User:Amorymeltzer/crathighlighter.js]]
    {
        page: 'User:Amorymeltzer/crathighlighter.js',
        condition: SS.OFF,
        dependencies: ['mediawiki.util', 'mediawiki.Title', 'jquery']
    },
    // [[User:Jeeputer/defconIndicator.js]]
    {
        page: 'User:Jeeputer/defconIndicator.js',
        condition: SS.OFF,
        dependencies: ['mediawiki.util']
    },
    // [[User:Polygnotus/Scripts/ExternalLinkMonitor.js]]
    {
        page: 'User:Polygnotus/Scripts/ExternalLinkMonitor.js',
        condition: SS.OFF,
        dependencies: ['mediawiki.util', 'mediawiki.api']
    },
    // [[User:DannyS712/hide.js]]
    {
        page: 'User:DannyS712/hide.js',
        condition: SS.always
    },
    // [[User:GeneralNotability/ip-ext-info.js]]
    {
        page: 'User:GeneralNotability/ip-ext-info.js',
        condition: SS.always,
        dependencies: ['mediawiki.util']
    },
    // [[User:Anomie/linkclassifier.js]]
    {
        page: 'User:Anomie/linkclassifier.js',
        // Loads everywhere EXCEPT Special:UnusedCategories to avoid conflicts with the category script's internal loader.
        condition: () => !SS.onSpecial('UnusedCategories')(),
        inlineCode: [
            "// Custom category for 'redirects with possibilities'",
            "mw.hook('LinkClassifier').add(function(lc) {",
            "    lc.cats['redirect-with-possibilities'] = ['Category:Redirects with possibilities'].sort();",
            "});",
            "// Ensure the styles are loaded",
            "importStylesheet('User:Anomie/linkclassifier.css');"
        ],
        dependencies: ['mediawiki.util', 'mediawiki.user']
    },
    // [[User:Frostly/mark-rocked.js]]
    {
        page: 'User:Frostly/mark-rocked.js',
        condition: SS.always,
        dependencies: ['mediawiki.util', 'mediawiki.api']
    },
    // [[User:Mdaniels5757/markAdmins.js]] appends status letters (e.g., (A), (B)) to usernames of admins and other officials.
    // 2026-03 note: This script loads a significant data file (~850k). Using [[User:Amorymeltzer/crathighlighter.js]] instead.

    /// [[User:Enterprisey/offset-history-link.js]]
    {
        page: 'User:Enterprisey/offset-history-link.js',
        condition: SS.always,
        dependencies: ['mediawiki.api', 'mediawiki.util']
    },
    // [[User:Ahecht/Scripts/pageswap.js]]
    {
        page: 'User:Ahecht/Scripts/pageswap.js',
        condition: SS.always,
        dependencies: ['mediawiki.api', 'mediawiki.util', 'jquery']
    },
    // [[User:Jeeputer/PCBIndicator.js]]
    {
        page: 'User:Jeeputer/PCBIndicator.js',
        condition: SS.OFF,
        dependencies: ['mediawiki.util']
    },
    // [[User:BrandonXLF/PortletLinks.js]]
    {
        page: 'User:BrandonXLF/PortletLinks.js',
        condition: SS.OFF,
        dependencies: ['mediawiki.util', 'mediawiki.api', 'mediawiki.user']
    },
    // Inspired by [[User:Enterprisey/reload-with-safe-mode.js]] at [[Special:PermanentLink/929765444]]
    // Reloads the current page in "Safe Mode" (safemode=1) to bypass all user scripts and gadgets.
    {
        condition: SS.always,
        inlineCode: [
            "mw.util.addPortletLink(",
            "    'p-tb', ",
            "    mw.util.getUrl(SS.pageName, { safemode: '1' }), ",
            "    'View in safe mode', ",
            "    't-safe-mode', ",
            "    'Reload this page without any user scripts or gadgets'",
            ");"
        ]
    },
    // [[User:Polygnotus/Scripts/RfCMonitor.js]] monitors added and removed [[Wikipedia:Requests for comment]]s.
    {
        page: 'User:Polygnotus/Scripts/RfCMonitor.js',
        condition: SS.always,
        dependencies: ['mediawiki.util', 'mediawiki.api', 'jquery']
    },
    // [[User:Novem_Linguae/Scripts/ShowAdminMessages.js]] shows messages targeted at extended confirmed users, admins, checkusers, template editors, etc., and highlights them yellow.
    // Essentially a CSS stylesheet wrapped in a JavaScript call to mw.util.addCSS; added in [[User:Sam Sailor/common.css]].

    // [[User:Evad37/ToDoLister.js]] adds a "to-do" list manager to the toolbar to track and manage tasks on a personal user subpage.
    {
        page: 'User:Evad37/ToDoLister.js',
        // Load everywhere to allow adding any page (including Special pages) to the list and to manage the list on its subpage.
        condition: SS.OFF,
        inlineCode: [
            "window.todo_portlet = 'p-cactions';",
            "window.todo_subpage = 'UPtodo';",
            "window.todo_addfirst = 'yes';",
            "window.todo_viewnew = 'no';",
            "window.todo_viewlabel = '→todo';",
            "window.todo_addlabel = '+todo';"
        ],
        dependencies: ['mediawiki.util', 'mediawiki.api', 'ext.gadget.libExtraUtil']
    },
    // [[User:DannyS712/Userspace.js]] adds a "Search own userspace" link to the sidebar.
    {
        page: 'User:DannyS712/Userspace.js',
        condition: SS.always,
        dependencies: ['mediawiki.util']
    },
    // [[User:Ponor/wAwB.js]], new 2026, builds on the idea of JWB and extends its functionality in several ways.
    {
        page: 'User:Ponor/wAwB.js',
        condition: SS.always,
        dependencies: ['mediawiki.util', 'jquery']
    },
);