Created
June 24, 2025 16:40
-
-
Save jimpriest/b75a9a5ddbd8cdacef93c6aa3cc8c176 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name GitHub Clear Default Merge Method Button | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Remove default merge method selection so user must pick each time on GitHub PR merge UI | |
// @author You | |
// @match https://github.com/*/*/pull/* | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
function clearSelectedMergeMethod() { | |
// Find the merge method buttons container | |
// Inspect your PR merge UI and update selector if needed | |
// Usually buttons are under div with class like 'merge-methods' or similar | |
const methodButtons = document.querySelectorAll('form.js-merge-pr button.js-merge-method'); | |
if (!methodButtons.length) return; | |
methodButtons.forEach(button => { | |
// Remove active or selected classes from all buttons | |
button.classList.remove('selected', 'btn-primary', 'btn-selected'); | |
// Remove aria-pressed or similar if present | |
button.setAttribute('aria-pressed', 'false'); | |
}); | |
// Optionally disable the main Merge button so it can only be clicked after selection | |
const mergeButton = document.querySelector('form.js-merge-pr button[type="submit"]'); | |
if (mergeButton) { | |
mergeButton.disabled = true; | |
} | |
console.log('Cleared selected merge method buttons on GitHub PR'); | |
} | |
// Use MutationObserver to detect when merge buttons appear (they are dynamically added) | |
const observer = new MutationObserver(mutations => { | |
for (const mutation of mutations) { | |
if (mutation.addedNodes.length) { | |
clearSelectedMergeMethod(); | |
} | |
} | |
}); | |
observer.observe(document.body, { childList: true, subtree: true }); | |
// Also clear selection on initial page load | |
clearSelectedMergeMethod(); | |
// Re-enable the Merge button when user clicks any merge method button | |
document.body.addEventListener('click', e => { | |
if (e.target.matches('form.js-merge-pr button.js-merge-method')) { | |
const mergeButton = document.querySelector('form.js-merge-pr button[type="submit"]'); | |
if (mergeButton) { | |
mergeButton.disabled = false; | |
} | |
} | |
}); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment