Azure DevOps PR Title Cleaner

Simplify Azure DevOps PR tab titles to "PR: <title>"

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Azure DevOps PR Title Cleaner
// @namespace    https://greasyfork.org/users/1548493-aleksa-jankovic
// @version      1.0.0
// @description  Simplify Azure DevOps PR tab titles to "PR: <title>"
// @author       AleksaJankovic
// @license      MIT
// @match        https://*.visualstudio.com/*/_git/*/pullrequest/*
// @match        https://dev.azure.com/*/*/_git/*/pullrequest/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const PR_TITLE_REGEX = /^Pull request\s+\d+\s*:\s*(.+)$/i;

  function rewriteTitle() {
    const current = document.title;
    const match = current.match(PR_TITLE_REGEX);

    if (match && match[1]) {
      const newTitle = `PR: ${match[1].trim()}`;
      if (document.title !== newTitle) {
        document.title = newTitle;
      }
    }
  }

  // Initial attempt
  rewriteTitle();

  // Azure DevOps updates title dynamically, so observe changes
  const observer = new MutationObserver(rewriteTitle);
  observer.observe(document.querySelector('title'), {
    childList: true,
  });
})();