User:BilledMammal/Move+

Move+ is a script that assists with all activities related to moves. It began as an expanded version of TheTVExpert's rmCloser script.

Installation
To install the script, add: importScript('User:BilledMammal/MovePlus.js'); // Backlink: User:BilledMammal/MovePlus.js to Special:MyPage/common.js.

Requested move closures
Navigate to a talk page with the requested move that you want to close or relist. At the top of the requested move, click the "Close", "Relist", or "Notify WikiProjects" button, depending on the action you are doing. If you click "Close", then select the result of the discussion, add an optional closing comment, and click "submit".

If you select "Moved" it will present you with two check boxes:
 * 1) Close as uncontested
 * 2) Specify different title

Close as uncontested provides a default close summary and modified edit summary for moves that receive no participation. Specify different title provides a list of proposed moves, and allows the closer to specify targets different from the ones initially proposed.

If you click "Relist", add a relisting comment and confirm by clicking "Confirm relist". If you click "Notify WikiProjects", select a WikiProject from the list of WikiProjects with banners on the page, and click "Notify selected WikiProject".

General page moves and link retargeting
Navigate to any page and from the "More" drop-down list select "Move+". You will be presented with two options:
 * Move pages
 * Retarget page links

If you select "Move pages", fill in the moves, enter an explanation and click "Submit". The explanation will be used for the edit summary and for any technical requests submitted.

If you select "Retarget page links" fill in one or two pairs of links to retarget, enter an explanation that will be used for the edit summary and click "Submit". Edits will begin immediately, with the screen displaying the current progress.

Page moves
After submitting the close or the list of moves it will present you with a list of valid options for each move. These can include:
 * 1) Move directly
 * 2) Move via Round Robin
 * 3) Submit a technical request

If you submit a technical request it will automatically place the move in the correct section; "Uncontroversial technical requests" or "Administrator needed".

It will also present you with a list of valid sub-options for each move. These can include:
 * 1) Suppress redirect
 * 2) Move subpages
 * 3) Move talk page

You will also see some information about the target page, including any protections it has, and whether it has had more than one revision.

Round Robin
Move+ includes support for round robin moves, including the post-move cleanup. For this cleanup, it makes the following assumptions:
 * Redirects that target themselves should target the page they were moved from
 * Redirects that target pages other than themselves should continue to target that page
 * Unless the location is now occupied:
 * All pages that were moved should be targeted with a redirect from their previous location
 * All redirects that were moved should have a duplicate redirect created in their previous location

These assumptions can be changed; editors who disagree with them should open a discussion on the talk page.

Multi-action
Move+ allows for moves to be actioned with a single click, by selecting "Move all". If selecting it will implement every listed move, with the currently specified sub-options. These are rate limited to prevent rejection by the system; 8 moves per minute for most editors, 16 moves per minute for page movers, 40 moves per minute for admins.

Most users will have only one option for each move and this will be the action chosen. For some moves admins will have two; to overwrite a page with history, or to move via a round robin. If "Move all" is selected the system will move the pages via a round robin.

Link correction
Move+ includes support for correcting page links following round robin moves that don't result in redirects to new title. It will update links within the namespace the page was moved from, as well as category and template namespace. However, it will not update links within archives.

It is hard limited to twenty edits per minute, but will normally operate at a lower rate.

It currently cannot update links that are not within square brackets, such as ; these still need to be updated manually.

Warning: This functionality can result in edits to hundreds of pages. Ensure you have configured it correctly and monitor it as it progresses.

Bugs
Please report any bugs on this script's talk page.

Known issues

 * 17/05/2024 - For move closures the script will see the current page as being the current of the first move proposed, even when that isn't the case, such as when the discussion is held on a different page.
 * 19/05/2024 - Script handles page-move rate limit, but does not handle API rate limit or edit rate limit.
 * 28/05/2024 - Script now partially handles edit rate limit
 * 19/05/2024 - Edit summaries link to the static link of the edit before the close, not the edit with the close
 * 21/07/2024 - Script fails when asked to move to a title starting with a lower case letter

Todo

 * Provide additional information about what the closer will be overwriting
 * Add support for closing merge and split discussions
 * Allow users to provide article-by-article results in multi-move closes
 * When moving articles to titles other than proposed, include which title the article was moved to in the "old moves" template
 * Add logging of closed moves
 * Add support for querying closer
 * Add support for opening a move review
 * Add preferences
 * Add preference for watchlisting moved pages, temporarily or permanently
 * Add support for automatically moving dab pages to "Title (disambiguation)" when implicitly proposed and adding a hat note to the new primary
 * Add option for instead redirecting the dab page when it is a two-dab primary situation
 * Add support for chained moves
 * Add support for actioning technical requests
 * Add support for reverting closes
 * Improve link correction by checking for context, to attempt to identify links that already target the wrong article
 * Require a bot account when correcting more than 1000 links
 * Pause link correction when the editor receives a talk page message containing a specific template
 * Set a limit on the number of pages that can be moved by users without relevant advanced permissions, outside of RM closures, to 25
 * Allow users to notify arbitrary wikiprojects
 * Prevent Move+ appearing on immovable pages (Special)