Greasy Fork is available in English.
Add a contextual link to issues you've contributed to on GitHub
// ==UserScript==// @name GitHub My Issues// @description Add a contextual link to issues you've contributed to on GitHub// @author chocolateboy// @copyright chocolateboy// @version 2.0.1// @namespace https://github.com/chocolateboy/userscripts// @license GPL// @include https://github.com/// @include https://github.com/*// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/cash.min.js// @grant GM_addStyle// @run-at document-start// ==/UserScript==// NOTE This file is generated from src/github-my-issues.user.ts and should not be edited directly."use strict";(() => {// src/github-my-issues.user.ts// @license GPLvar ID = "my-issues-tab";var ISSUES_LINK = "a#issues-tab";var MY_ISSUES = "My Issues";var MY_ISSUES_LINK = `li a#${ID}`;var REPO = "octolytics-dimension-repository_nwo";var SELF = "user-login";var USER = "octolytics-dimension-user_login";var meta = (name, key = "name") => {const quotedName = JSON.stringify(name);return $(`meta[${key}=${quotedName}]`).attr("content");};var run = () => {$(MY_ISSUES_LINK).closest("li").remove();const $issuesLink = $(`li ${ISSUES_LINK}`);const $issues = $issuesLink.closest("li");if ($issues.length !== 1) {return;}const [self, user, repo] = [meta(SELF), meta(USER), meta(REPO)];if (!(self && user && repo)) {return;}const myIssues = `involves:${self}`;const subqueries = [myIssues, "sort:updated-desc"];if (user === self) {subqueries.unshift("is:open", "archived:false");}const query = subqueries.join("+");const path = `/${repo}/issues`;const href = `${path}?q=${escape(query)}`;const $myIssues = $issues.clone();const $link = $myIssues.find(`:scope ${ISSUES_LINK}`).removeClass("selected").removeClass("deselected").attr({id: ID,role: "tab",href,"aria-current": null,"data-hotkey": "g I","data-selected-links": null});$link.find(':scope [data-content="Issues"]').text(MY_ISSUES);$link.find(':scope [id="issues-repo-tab-count"]').remove();let q = null;if (location.pathname === path) {const params = new URLSearchParams(location.search);q = params.get("q");}if (q && q.trim().split(/\s+/).includes(myIssues)) {$link.attr("aria-selected", "true");$issuesLink.addClass("deselected");} else {$link.attr("aria-selected", "false");$issuesLink.removeClass("deselected");}$issues.after($myIssues);};GM_addStyle(`.deselected::after {background: transparent !important;}`);$(document).on("turbo:load", run);})();