🤠 Github enhanced assistant warehouse display size

🤠 Warehouse display size: On GitHub’s code search, warehouse search, issue page, user warehouse list and repository page, the size of the warehouse will be displayed next to the warehouse name, allowing users to quickly understand the scale of the warehouse and optimize their selection. Inactive development warning: If a repository has not been updated in the past six months, the system will add a prompt at the top of the repository to remind users that the repository is inactive and display the

Instalar este script¿?
Script recomendado por el autor

Puede que también te guste Greasyfork Utility Toolkit.

Instalar este script
// ==UserScript==
// @name              🤠 Github enhanced assistant warehouse display size
// @description       🤠 Warehouse display size: On GitHub’s code search, warehouse search, issue page, user warehouse list and repository page, the size of the warehouse will be displayed next to the warehouse name, allowing users to quickly understand the scale of the warehouse and optimize their selection. Inactive development warning: If a repository has not been updated in the past six months, the system will add a prompt at the top of the repository to remind users that the repository is inactive and display the time of the last update. This helps users determine the activity and maintenance status of the warehouse. Quick jump within the warehouse: When browsing the warehouse, the user can easily view the list of all warehouses of the user, providing an entrance to quickly jump to different warehouses. Users can quickly find and access other projects of interest, improving work efficiency. Usage scenarios: Developers: By displaying the warehouse size and active warnings, you can quickly filter out suitable libraries for development and avoid using projects that are no longer maintained. Project Manager: Through the quick jump function, it is easy to manage and coordinate multiple projects and improve work efficiency. Learners: When learning new technologies, they can more easily find relevant open source projects and quickly check the activity and scale of the projects. 🤠
// @name:zh-CN        🤠 Github 增强小助手 仓库显示大小
// @description:zh-CN 🤠 仓库显示大小:在 GitHub 的代码搜索、仓库搜索、议题页面、用户仓库列表和存储库页面上,仓库名称旁边会显示该仓库的大小,方便用户快速了解仓库的规模,优化选择。不活跃开发警告:如果某个仓库在过去六个月内没有更新,系统将在仓库的顶部添加提示,提醒用户该仓库不活跃,并显示最后一次更新的时间。这有助于用户判断仓库的活跃程度和维护状况。仓库内快捷跳转:在浏览仓库时,用户可以方便地查看该用户的所有仓库列表,提供一个快速跳转到不同仓库的入口。用户可以快速找到和访问感兴趣的其他项目,提高工作效率。使用场景:开发者:可以通过显示仓库大小和活跃警告,快速筛选出合适的库进行开发,避免使用不再维护的项目。项目管理者:通过快速跳转功能,便于管理和协调多个项目,提高工作效率。学习者:在学习新技术时,可以更方便地找到相关的开源项目,快速查看项目的活跃程度和规模。🤠
// @name:ar           🤠 حجم عرض المستودع المساعد المُحسّن على Github
// @description:ar    🤠 حجم عرض المستودع: في بحث الكود وبحث المستودع وصفحة الإصدار وقائمة مستودعات المستخدم وصفحة المستودع في GitHub، سيتم عرض حجم المستودع بجوار اسم المستودع، مما يسمح للمستخدمين بفهم حجم المستودع بسرعة وتحسين قدراتهم اختيار. تحذير التطوير غير النشط: إذا لم يتم تحديث المستودع خلال الأشهر الستة الماضية، فسيضيف النظام مطالبة في أعلى المستودع لتذكير المستخدمين بأن المستودع غير نشط ويعرض وقت آخر تحديث. وهذا يساعد المستخدمين على تحديد النشاط وحالة الصيانة للمستودع. القفز السريع داخل المستودع: عند تصفح المستودع، يمكن للمستخدم بسهولة عرض قائمة جميع المستودعات الخاصة بالمستخدم، مما يوفر مدخلاً للانتقال السريع إلى المستودعات المختلفة. يمكن للمستخدمين العثور بسرعة على المشاريع الأخرى ذات الأهمية والوصول إليها، مما يحسن كفاءة العمل. سيناريوهات الاستخدام: المطورون: من خلال عرض حجم المستودع والتحذيرات النشطة، يمكنك تصفية المكتبات المناسبة للتطوير بسرعة وتجنب استخدام المشاريع التي لم تعد تتم صيانتها. مدير المشروع: من خلال وظيفة القفز السريع، من السهل إدارة وتنسيق مشاريع متعددة وتحسين كفاءة العمل. المتعلمون: عند تعلم تقنيات جديدة، يمكنهم بسهولة العثور على المشاريع مفتوحة المصدر ذات الصلة والتحقق بسرعة من نشاط المشاريع وحجمها. 🤠
// @name:bg           🤠 Github подобрен размер на дисплея на складов асистент
// @description:bg    🤠 Размер на дисплея на склада: В търсенето на код на GitHub, търсенето в склада, страницата с проблеми, списъкът на потребителския склад и страницата с хранилището, размерът на склада ще се показва до името на склада, което позволява на потребителите бързо да разберат мащаба на склада и да оптимизират своя селекция. Предупреждение за неактивна разработка: Ако дадено хранилище не е актуализирано през последните шест месеца, системата ще добави подкана в горната част на хранилището, за да напомни на потребителите, че хранилището е неактивно и да покаже часа на последната актуализация. Това помага на потребителите да определят активността и статуса на поддръжка на склада. Бързо прескачане в склада: Когато преглеждате склада, потребителят може лесно да прегледа списъка с всички складове на потребителя, осигурявайки вход за бързо прескачане до различни складове. Потребителите могат бързо да намерят и получат достъп до други интересни проекти, подобрявайки ефективността на работата. Сценарии на използване: Разработчици: Чрез показване на размера на склада и активните предупреждения можете бързо да филтрирате подходящи библиотеки за разработка и да избегнете използването на проекти, които вече не се поддържат. Мениджър на проекти: Чрез функцията за бързо прескачане е лесно да се управляват и координират множество проекти и да се подобри ефективността на работата. Обучаеми: Когато изучават нови технологии, те могат по-лесно да намерят подходящи проекти с отворен код и бързо да проверят активността и мащаба на проектите. 🤠
// @name:cs           🤠 Velikost displeje vylepšeného asistenta ve skladu Github
// @description:cs    🤠 Velikost zobrazení skladu: Na GitHubu pro vyhledávání kódu, hledání skladu, stránku výdeje, seznam skladů uživatelů a stránku úložiště se velikost skladu zobrazí vedle názvu skladu, což uživatelům umožňuje rychle pochopit rozsah skladu a optimalizovat výběr. Upozornění na neaktivní vývoj: Pokud úložiště nebylo aktualizováno v posledních šesti měsících, systém přidá výzvu v horní části úložiště, která uživatelům připomene, že úložiště je neaktivní, a zobrazí čas poslední aktualizace. To pomáhá uživatelům určit aktivitu a stav údržby skladu. Rychlý skok ve skladu: Při procházení skladu může uživatel snadno zobrazit seznam všech skladů uživatele, což poskytuje vstup pro rychlý skok do různých skladů. Uživatelé mohou rychle najít další zajímavé projekty a získat k nim přístup, což zvyšuje efektivitu práce. Scénáře použití: Vývojáři: Zobrazením velikosti skladu a aktivních varování můžete rychle odfiltrovat vhodné knihovny pro vývoj a vyhnout se používání projektů, které již nejsou udržovány. Project Manager: Díky funkci rychlého skoku je snadné spravovat a koordinovat více projektů a zlepšit efektivitu práce. Studenti: Když se učí nové technologie, mohou snadněji najít relevantní open source projekty a rychle zkontrolovat aktivitu a rozsah projektů. 🤠
// @name:da           🤠 Github forbedret assistentlagerdisplaystørrelse
// @description:da    🤠 Lagervisningsstørrelse: På GitHubs kodesøgning, lagersøgning, problemside, brugerlagerliste og lagerside vil størrelsen af lageret blive vist ved siden af lagernavnet, hvilket giver brugerne mulighed for hurtigt at forstå lagerets skala og optimere deres lager. udvælgelse. Advarsel om inaktiv udvikling: Hvis et lager ikke er blevet opdateret inden for de seneste seks måneder, vil systemet tilføje en prompt øverst i lageret for at minde brugerne om, at lageret er inaktivt og vise tidspunktet for den sidste opdatering. Dette hjælper brugerne med at bestemme aktiviteten og vedligeholdelsesstatus for lageret. Hurtigt hop inden for lageret: Når brugeren gennemser lageret, kan brugeren nemt se listen over alle varehuse for brugeren, hvilket giver en adgang til hurtigt at hoppe til forskellige varehuse. Brugere kan hurtigt finde og få adgang til andre projekter af interesse, hvilket forbedrer arbejdseffektiviteten. Brugsscenarier: Udviklere: Ved at vise lagerstørrelsen og aktive advarsler kan du hurtigt filtrere egnede biblioteker fra til udvikling og undgå at bruge projekter, der ikke længere vedligeholdes. Projektleder: Gennem quick jump-funktionen er det nemt at administrere og koordinere flere projekter og forbedre arbejdseffektiviteten. Elever: Når de lærer nye teknologier, kan de nemmere finde relevante open source-projekter og hurtigt tjekke projekternes aktivitet og omfang. 🤠
// @name:de           🤠 Github hat die Anzeigegröße des Assistentenlagers verbessert
// @description:de    🤠 Lageranzeigegröße: Auf GitHubs Codesuche, Lagersuche, Problemseite, Benutzerlagerliste und Repository-Seite wird die Größe des Lagers neben dem Lagernamen angezeigt, sodass Benutzer die Größe des Lagers schnell verstehen und optimieren können Auswahl. Warnung bei inaktiver Entwicklung: Wenn ein Repository in den letzten sechs Monaten nicht aktualisiert wurde, fügt das System oben im Repository eine Eingabeaufforderung hinzu, um Benutzer daran zu erinnern, dass das Repository inaktiv ist, und zeigt den Zeitpunkt der letzten Aktualisierung an. Dadurch können Benutzer den Aktivitäts- und Wartungsstatus des Lagers ermitteln. Schneller Sprung innerhalb des Lagers: Beim Durchsuchen des Lagers kann der Benutzer problemlos die Liste aller Lager des Benutzers anzeigen und so schnell zu verschiedenen Lagern springen. Benutzer können andere interessante Projekte schnell finden und darauf zugreifen und so die Arbeitseffizienz verbessern. Nutzungsszenarien: Entwickler: Durch die Anzeige der Warehouse-Größe und aktiver Warnungen können Sie schnell geeignete Bibliotheken für die Entwicklung herausfiltern und die Verwendung nicht mehr gepflegter Projekte vermeiden. Projektmanager: Durch die Schnellsprungfunktion ist es einfach, mehrere Projekte zu verwalten und zu koordinieren und die Arbeitseffizienz zu verbessern. Lernende: Beim Erlernen neuer Technologien können sie relevante Open-Source-Projekte leichter finden und die Aktivität und den Umfang der Projekte schneller überprüfen. 🤠
// @name:el           🤠 Βελτιωμένο μέγεθος οθόνης αποθήκης βοηθού Github
// @description:el    🤠 Μέγεθος εμφάνισης αποθήκης: Στην αναζήτηση κώδικα, την αναζήτηση αποθήκης, τη σελίδα έκδοσης, τη λίστα αποθήκης χρηστών και τη σελίδα αποθήκης του GitHub, το μέγεθος της αποθήκης θα εμφανίζεται δίπλα στο όνομα της αποθήκης, επιτρέποντας στους χρήστες να κατανοήσουν γρήγορα την κλίμακα της αποθήκης και να βελτιστοποιήσουν επιλογή. Προειδοποίηση ανενεργής ανάπτυξης: Εάν ένα αποθετήριο δεν έχει ενημερωθεί τους τελευταίους έξι μήνες, το σύστημα θα προσθέσει ένα μήνυμα στο επάνω μέρος του χώρου αποθήκευσης για να υπενθυμίσει στους χρήστες ότι το αποθετήριο είναι ανενεργό και θα εμφανίσει την ώρα της τελευταίας ενημέρωσης. Αυτό βοηθά τους χρήστες να προσδιορίσουν τη δραστηριότητα και την κατάσταση συντήρησης της αποθήκης. Γρήγορο άλμα εντός της αποθήκης: Κατά την περιήγηση στην αποθήκη, ο χρήστης μπορεί εύκολα να δει τη λίστα με όλες τις αποθήκες του χρήστη, παρέχοντας μια είσοδο για γρήγορη μετάβαση σε διαφορετικές αποθήκες. Οι χρήστες μπορούν να βρίσκουν γρήγορα και να έχουν πρόσβαση σε άλλα έργα ενδιαφέροντος, βελτιώνοντας την αποδοτικότητα της εργασίας. Σενάρια χρήσης: Προγραμματιστές: Εμφανίζοντας το μέγεθος της αποθήκης και τις ενεργές προειδοποιήσεις, μπορείτε να φιλτράρετε γρήγορα κατάλληλες βιβλιοθήκες για ανάπτυξη και να αποφύγετε τη χρήση έργων που δεν διατηρούνται πλέον. Project Manager: Μέσω της λειτουργίας γρήγορου άλματος, είναι εύκολο να διαχειριστείτε και να συντονίσετε πολλαπλά έργα και να βελτιώσετε την αποδοτικότητα της εργασίας. Εκπαιδευόμενοι: Όταν μαθαίνουν νέες τεχνολογίες, μπορούν πιο εύκολα να βρουν σχετικά έργα ανοιχτού κώδικα και να ελέγξουν γρήγορα τη δραστηριότητα και την κλίμακα των έργων. 🤠
// @name:en           🤠 Github enhanced assistant warehouse display size
// @description:en    🤠 Warehouse display size: On GitHub’s code search, warehouse search, issue page, user warehouse list and repository page, the size of the warehouse will be displayed next to the warehouse name, allowing users to quickly understand the scale of the warehouse and optimize their selection. Inactive development warning: If a repository has not been updated in the past six months, the system will add a prompt at the top of the repository to remind users that the repository is inactive and display the time of the last update. This helps users determine the activity and maintenance status of the warehouse. Quick jump within the warehouse: When browsing the warehouse, the user can easily view the list of all warehouses of the user, providing an entrance to quickly jump to different warehouses. Users can quickly find and access other projects of interest, improving work efficiency. Usage scenarios: Developers: By displaying the warehouse size and active warnings, you can quickly filter out suitable libraries for development and avoid using projects that are no longer maintained. Project Manager: Through the quick jump function, it is easy to manage and coordinate multiple projects and improve work efficiency. Learners: When learning new technologies, they can more easily find relevant open source projects and quickly check the activity and scale of the projects. 🤠
// @name:eo           🤠 Github plibonigita asistanta magazena ekrangrandeco
// @description:eo    🤠 Grando de montrado de magazeno: En la serĉo de kodo de GitHub, serĉo de magazeno, temo-paĝo, uzanta stokisto kaj deponejo, la grandeco de la stokejo estos montrata apud la stoknomo, permesante al uzantoj rapide kompreni la skalon de la stokejo kaj optimumigi sian. elekto. Neaktiva evoluaverto: Se deponejo ne estis ĝisdatigita en la pasintaj ses monatoj, la sistemo aldonos avertiĝon ĉe la supro de la deponejo por memorigi uzantojn ke la deponejo estas neaktiva kaj montri la tempon de la lasta ĝisdatigo. Ĉi tio helpas uzantojn determini la aktivecon kaj bontenadon de la stokejo. Rapida salto ene de la magazeno: Foliumante la magazenon, la uzanto povas facile vidi la liston de ĉiuj magazenoj de la uzanto, disponigante enirejon por rapide salti al malsamaj magazenoj. Uzantoj povas rapide trovi kaj aliri aliajn interesajn projektojn, plibonigante laborefikecon. Uzaj scenaroj: Programistoj: Montrante la magazengrandecon kaj aktivajn avertojn, vi povas rapide filtri taŭgajn bibliotekojn por disvolviĝo kaj eviti uzi projektojn kiuj ne plu estas konservitaj. Projektestro: Per la funkcio de rapida salto, estas facile administri kaj kunordigi plurajn projektojn kaj plibonigi laborefikecon. Lernantoj: Kiam ili lernas novajn teknologiojn, ili povas pli facile trovi koncernajn malfermfontajn projektojn kaj rapide kontroli la agadon kaj skalon de la projektoj. 🤠
// @name:es           🤠 Tamaño de visualización del almacén del asistente mejorado de Github
// @description:es    🤠 Tamaño de visualización del almacén: en la búsqueda de código, búsqueda de almacén, página de problemas, lista de almacén de usuarios y página de repositorio de GitHub, el tamaño del almacén se mostrará junto al nombre del almacén, lo que permitirá a los usuarios comprender rápidamente la escala del almacén y optimizar su selección. Advertencia de desarrollo inactivo: si un repositorio no se ha actualizado en los últimos seis meses, el sistema agregará un mensaje en la parte superior del repositorio para recordar a los usuarios que el repositorio está inactivo y mostrará la hora de la última actualización. Esto ayuda a los usuarios a determinar la actividad y el estado de mantenimiento del almacén. Salto rápido dentro del almacén: al navegar por el almacén, el usuario puede ver fácilmente la lista de todos los almacenes del usuario, lo que proporciona una entrada para saltar rápidamente a diferentes almacenes. Los usuarios pueden encontrar y acceder rápidamente a otros proyectos de interés, mejorando la eficiencia del trabajo. Escenarios de uso: Desarrolladores: al mostrar el tamaño del almacén y las advertencias activas, puede filtrar rápidamente las bibliotecas adecuadas para el desarrollo y evitar el uso de proyectos que ya no se mantienen. Gerente de proyectos: a través de la función de salto rápido, es fácil administrar y coordinar múltiples proyectos y mejorar la eficiencia del trabajo. Estudiantes: cuando aprenden nuevas tecnologías, pueden encontrar más fácilmente proyectos relevantes de código abierto y verificar rápidamente la actividad y escala de los proyectos. 🤠
// @name:fi           🤠 Githubin parannettu avustajavaraston näytön koko
// @description:fi    🤠 Varaston näyttökoko: GitHubin koodihaussa, varastohaussa, ongelmasivulla, käyttäjän varastoluettelossa ja arkistosivulla varaston koko näkyy varaston nimen vieressä, jolloin käyttäjät voivat nopeasti ymmärtää varaston mittakaavan ja optimoida toimintansa. valinta. Ei-aktiivinen kehitysvaroitus: Jos tietovarastoa ei ole päivitetty viimeisen kuuden kuukauden aikana, järjestelmä lisää arkiston yläosaan kehotteen, joka muistuttaa käyttäjiä siitä, että tietovarasto ei ole aktiivinen, ja näyttää viimeisimmän päivityksen ajan. Tämä auttaa käyttäjiä määrittämään varaston toiminnan ja ylläpidon tilan. Nopea hyppy varaston sisällä: Selatessaan varastoa käyttäjä voi helposti tarkastella luetteloa käyttäjän kaikista varastoista, mikä tarjoaa sisäänkäynnin hyppäämään nopeasti eri varastoihin. Käyttäjät voivat nopeasti löytää ja käyttää muita kiinnostavia projekteja, mikä parantaa työn tehokkuutta. Käyttöskenaariot: Kehittäjät: Näyttämällä varaston koon ja aktiiviset varoitukset, voit nopeasti suodattaa sopivat kirjastot kehitystä varten ja välttää käyttämättä projekteja, joita ei enää ylläpidetä. Projektipäällikkö: Quick jump -toiminnon avulla on helppo hallita ja koordinoida useita projekteja ja parantaa työn tehokkuutta. Oppijat: Uusia teknologioita oppiessaan he voivat löytää helpommin relevantteja avoimen lähdekoodin projekteja ja tarkistaa nopeasti projektien toiminnan ja laajuuden. 🤠
// @name:fr           🤠 Taille d’affichage de l’entrepôt de l’assistant amélioré Github
// @description:fr    🤠 Taille d’affichage de l’entrepôt : sur la recherche de code, la recherche d’entrepôt, la page de problèmes, la liste d’entrepôts d’utilisateurs et la page de référentiel de GitHub, la taille de l’entrepôt sera affichée à côté du nom de l’entrepôt, permettant aux utilisateurs de comprendre rapidement l’échelle de l’entrepôt et d’optimiser leur sélection. Avertissement de développement inactif : si un référentiel n’a pas été mis à jour au cours des six derniers mois, le système ajoutera une invite en haut du référentiel pour rappeler aux utilisateurs que le référentiel est inactif et affichera l’heure de la dernière mise à jour. Cela aide les utilisateurs à déterminer l’activité et l’état de maintenance de l’entrepôt. Saut rapide dans l’entrepôt : lors de la navigation dans l’entrepôt, l’utilisateur peut facilement consulter la liste de tous les entrepôts de l’utilisateur, offrant ainsi une entrée pour accéder rapidement à différents entrepôts. Les utilisateurs peuvent trouver et accéder rapidement à d’autres projets d’intérêt, améliorant ainsi l’efficacité du travail. Scénarios d’utilisation : Développeurs : en affichant la taille de l’entrepôt et les avertissements actifs, vous pouvez rapidement filtrer les bibliothèques appropriées pour le développement et éviter d’utiliser des projets qui ne sont plus maintenus. Gestionnaire de projet : grâce à la fonction de saut rapide, il est facile de gérer et de coordonner plusieurs projets et d’améliorer l’efficacité du travail. Apprenants : lorsqu’ils apprennent de nouvelles technologies, ils peuvent plus facilement trouver des projets open source pertinents et vérifier rapidement l’activité et l’ampleur des projets. 🤠
// @name:he           🤠 גודל תצוגה של עוזר מחסן Github משופר
// @description:he    🤠 גודל תצוגת המחסן: בחיפוש הקוד של GitHub, חיפוש המחסן, דף הנושא, רשימת מחסני המשתמשים ודף המאגר, גודל המחסן יוצג לצד שם המחסן, מה שיאפשר למשתמשים להבין במהירות את קנה המידה של המחסן ולבצע אופטימיזציה שלהם בְּחִירָה. אזהרת פיתוח לא פעיל: אם מאגר לא עודכן בששת החודשים האחרונים, המערכת תוסיף הנחיה בחלק העליון של המאגר כדי להזכיר למשתמשים שהמאגר אינו פעיל ולהציג את שעת העדכון האחרון. זה עוזר למשתמשים לקבוע את מצב הפעילות והתחזוקה של המחסן. קפיצה מהירה בתוך המחסן: בעת גלישה במחסן, המשתמש יכול לראות בקלות את רשימת כל המחסנים של המשתמש, מה שמספק כניסה לקפיצה מהירה למחסנים שונים. משתמשים יכולים למצוא ולגשת במהירות לפרויקטים אחרים בעלי עניין, ולשפר את יעילות העבודה. תרחישי שימוש: מפתחים: על ידי הצגת גודל המחסן ואזהרות פעילות, ניתן לסנן במהירות ספריות מתאימות לפיתוח ולהימנע משימוש בפרויקטים שאינם מתוחזקים עוד. מנהל פרויקטים: באמצעות פונקציית הקפיצה המהירה, קל לנהל ולתאם מספר פרויקטים ולשפר את יעילות העבודה. לומדים: כאשר לומדים טכנולוגיות חדשות, הם יכולים למצוא בקלות רבה יותר פרויקטים רלוונטיים בקוד פתוח ולבדוק במהירות את הפעילות וההיקף של הפרויקטים. 🤠
// @name:hr           🤠 Github poboljšana veličina prikaza pomoćnog skladišta
// @description:hr    🤠 Veličina prikaza skladišta: Na GitHub-ovom pretraživanju koda, pretraživanju skladišta, stranici problema, korisničkom popisu skladišta i stranici spremišta, veličina skladišta bit će prikazana pored naziva skladišta, omogućujući korisnicima da brzo razumiju veličinu skladišta i optimiziraju svoje izbor. Upozorenje o neaktivnom razvoju: Ako repozitorij nije ažuriran u proteklih šest mjeseci, sustav će dodati upit na vrh repozitorija da podsjeti korisnike da je repozitorij neaktivan i prikazati vrijeme zadnjeg ažuriranja. Ovo pomaže korisnicima u određivanju aktivnosti i statusa održavanja skladišta. Brzi skok unutar skladišta: Prilikom pregledavanja skladišta, korisnik može jednostavno vidjeti popis svih skladišta korisnika, omogućavajući ulaz za brzo skakanje na različita skladišta. Korisnici mogu brzo pronaći i pristupiti drugim projektima od interesa, poboljšavajući radnu učinkovitost. Scenariji korištenja: Razvojni programeri: prikazivanjem veličine skladišta i aktivnih upozorenja, možete brzo filtrirati prikladne biblioteke za razvoj i izbjeći korištenje projekata koji se više ne održavaju. Voditelj projekta: Pomoću funkcije brzog skoka lako je upravljati i koordinirati više projekata i poboljšati radnu učinkovitost. Učenici: Kada uče nove tehnologije, mogu lakše pronaći relevantne projekte otvorenog koda i brzo provjeriti aktivnost i opseg projekata. 🤠
// @name:hu           🤠 Github továbbfejlesztett asszisztens raktári kijelző mérete
// @description:hu    🤠 Raktár megjelenítési mérete: A GitHub kódkeresőjén, raktárkeresőjén, kiadási oldalán, felhasználói raktárlistáján és lerakatoldalán a raktár mérete megjelenik a raktár neve mellett, lehetővé téve a felhasználók számára, hogy gyorsan megértsék a raktár méretét és optimalizálhassák a raktárukat. kiválasztás. Inaktív fejlesztési figyelmeztetés: Ha egy lerakat az elmúlt hat hónapban nem frissítették, a rendszer a lerakat tetejére figyelmezteti a felhasználókat, hogy a lerakat inaktív, és megjelenítse az utolsó frissítés időpontját. Ez segít a felhasználóknak meghatározni a raktár tevékenységi és karbantartási állapotát. Gyors ugrás a raktáron belül: A raktár böngészése során a felhasználó könnyedén megtekintheti a felhasználó összes raktárának listáját, amely bejáratot biztosít a különböző raktárak gyors ugrásához. A felhasználók gyorsan megtalálhatják és hozzáférhetnek más érdekes projektekhez, javítva ezzel a munka hatékonyságát. Használati forgatókönyvek: Fejlesztők: A raktár méretének és az aktív figyelmeztetéseknek a megjelenítésével gyorsan kiszűrheti a fejlesztésre alkalmas könyvtárakat, és elkerülheti a már nem karbantartott projektek használatát. Projektmenedzser: A gyorsugrás funkciónak köszönhetően könnyen kezelhető és koordinálható több projekt, valamint javítható a munka hatékonysága. Tanulók: Amikor új technológiákat tanulnak, könnyebben megtalálhatják a releváns nyílt forráskódú projekteket, és gyorsan ellenőrizhetik a projektek tevékenységét és mértékét. 🤠
// @name:id           🤠 Github meningkatkan ukuran tampilan asisten gudang
// @description:id    🤠 Ukuran tampilan gudang: Pada pencarian kode GitHub, pencarian gudang, halaman penerbitan, daftar gudang pengguna, dan halaman repositori, ukuran gudang akan ditampilkan di sebelah nama gudang, memungkinkan pengguna dengan cepat memahami skala gudang dan mengoptimalkannya pilihan. Peringatan pengembangan tidak aktif: Jika repositori belum diperbarui dalam enam bulan terakhir, sistem akan menambahkan perintah di bagian atas repositori untuk mengingatkan pengguna bahwa repositori tidak aktif dan menampilkan waktu pembaruan terakhir. Ini membantu pengguna menentukan aktivitas dan status pemeliharaan gudang. Lompatan cepat ke dalam gudang: Saat menelusuri gudang, pengguna dapat dengan mudah melihat daftar semua gudang pengguna, menyediakan pintu masuk untuk melompat ke gudang yang berbeda dengan cepat. Pengguna dapat dengan cepat menemukan dan mengakses proyek lain yang menarik, sehingga meningkatkan efisiensi kerja. Skenario penggunaan: Pengembang: Dengan menampilkan ukuran gudang dan peringatan aktif, Anda dapat dengan cepat menyaring perpustakaan yang sesuai untuk pengembangan dan menghindari penggunaan proyek yang tidak lagi dikelola. Manajer Proyek: Melalui fungsi lompat cepat, mudah untuk mengelola dan mengoordinasikan banyak proyek serta meningkatkan efisiensi kerja. Pelajar: Saat mempelajari teknologi baru, mereka dapat lebih mudah menemukan proyek sumber terbuka yang relevan dan dengan cepat memeriksa aktivitas dan skala proyek. 🤠
// @name:it           🤠 Github ha migliorato le dimensioni di visualizzazione del magazzino dell’assistente
// @description:it    🤠 Dimensioni di visualizzazione del magazzino: nella ricerca del codice di GitHub, nella ricerca del magazzino, nella pagina dei problemi, nell’elenco dei magazzini degli utenti e nella pagina del repository, la dimensione del magazzino verrà visualizzata accanto al nome del magazzino, consentendo agli utenti di comprendere rapidamente le dimensioni del magazzino e ottimizzare la propria selezione. Avviso di sviluppo inattivo: se un repository non è stato aggiornato negli ultimi sei mesi, il sistema aggiungerà un messaggio nella parte superiore del repository per ricordare agli utenti che il repository è inattivo e visualizzerà l’ora dell’ultimo aggiornamento. Ciò aiuta gli utenti a determinare lo stato di attività e di manutenzione del magazzino. Salto rapido all’interno del magazzino: Durante la navigazione nel magazzino, l’utente può facilmente visualizzare l’elenco di tutti i magazzini dell’utente, fornendo un ingresso per passare rapidamente a diversi magazzini. Gli utenti possono trovare e accedere rapidamente ad altri progetti di interesse, migliorando l’efficienza del lavoro. Scenari di utilizzo: Sviluppatori: visualizzando le dimensioni del magazzino e gli avvisi attivi, è possibile filtrare rapidamente le librerie adatte per lo sviluppo ed evitare di utilizzare progetti che non vengono più gestiti. Project Manager: attraverso la funzione di salto rapido, è facile gestire e coordinare più progetti e migliorare l’efficienza del lavoro. Studenti: quando apprendono nuove tecnologie, possono trovare più facilmente progetti open source rilevanti e verificare rapidamente l’attività e la portata dei progetti. 🤠
// @name:ja           🤠 Github の強化されたアシスタント ウェアハウスの表示サイズ
// @description:ja    🤠 ウェアハウスの表示サイズ: GitHub のコード検索、ウェアハウス検索、問題ページ、ユーザー ウェアハウス リスト、およびリポジトリ ページでは、ウェアハウスのサイズがウェアハウス名の横に表示されるため、ユーザーはウェアハウスの規模をすぐに理解し、ウェアハウスの最適化を行うことができます。選択。非アクティブな開発の警告: 過去 6 か月間リポジトリが更新されていない場合、システムはリポジトリの上部にプロンプトを追加して、リポジトリが非アクティブであることをユーザーに通知し、最終更新時刻を表示します。これは、ユーザーが倉庫のアクティビティとメンテナンスのステータスを判断するのに役立ちます。倉庫内でのクイック ジャンプ: 倉庫を閲覧するときに、ユーザーはユーザーのすべての倉庫のリストを簡単に表示でき、別の倉庫にすばやくジャンプするための入り口を提供します。ユーザーは興味のある他のプロジェクトをすぐに見つけてアクセスできるため、作業効率が向上します。使用シナリオ: 開発者: ウェアハウスのサイズとアクティブな警告を表示することで、開発に適したライブラリを迅速に除外し、維持されなくなったプロジェクトの使用を避けることができます。プロジェクトマネージャー: クイックジャンプ機能により、複数のプロジェクトの管理と調整が容易になり、作業効率が向上します。学習者: 新しいテクノロジーを学習するときに、関連するオープンソース プロジェクトをより簡単に見つけて、プロジェクトのアクティビティと規模をすばやく確認できるようになります。 🤠
// @name:ka           🤠 Github გაუმჯობესებული ასისტენტის საწყობის ჩვენების ზომა
// @description:ka    🤠 საწყობის ჩვენების ზომა: GitHub-ის კოდის ძიებაში, საწყობის ძიებაში, გამოშვების გვერდზე, მომხმარებელთა საწყობის სიაში და საცავის გვერდზე, საწყობის ზომა გამოჩნდება საწყობის სახელის გვერდით, რაც მომხმარებლებს საშუალებას მისცემს სწრაფად გაიგონ საწყობის მასშტაბები და ოპტიმიზაცია გაუკეთონ მათ. შერჩევა. არააქტიური განვითარების გაფრთხილება: თუ საცავი არ განახლებულა ბოლო ექვსი თვის განმავლობაში, სისტემა დაამატებს მოთხოვნას საცავის ზედა ნაწილში, რათა შეახსენოს მომხმარებლებს, რომ საცავი არააქტიურია და აჩვენებს ბოლო განახლების დროს. ეს ეხმარება მომხმარებლებს განსაზღვრონ საწყობის აქტივობა და ტექნიკური მდგომარეობა. სწრაფი გადახტომა საწყობში: საწყობის დათვალიერებისას მომხმარებელს შეუძლია ადვილად ნახოს მომხმარებლის ყველა საწყობის სია, რაც უზრუნველყოფს შესასვლელს სხვადასხვა საწყობში სწრაფად გადახტომისთვის. მომხმარებლებს შეუძლიათ სწრაფად იპოვონ და მიიღონ წვდომა სხვა საინტერესო პროექტებზე, რაც აუმჯობესებს მუშაობის ეფექტურობას. გამოყენების სცენარები: დეველოპერები: საწყობის ზომისა და აქტიური გაფრთხილებების ჩვენებით, შეგიძლიათ სწრაფად გაფილტროთ განვითარებისთვის შესაფერისი ბიბლიოთეკები და თავიდან აიცილოთ ისეთი პროექტების გამოყენება, რომლებიც აღარ არის შენახული. პროექტის მენეჯერი: სწრაფი ნახტომის ფუნქციის საშუალებით, ადვილია მრავალი პროექტის მართვა და კოორდინაცია და მუშაობის ეფექტურობის გაუმჯობესება. მოსწავლეები: ახალი ტექნოლოგიების შესწავლისას, მათ შეუძლიათ უფრო ადვილად იპოვონ შესაბამისი ღია კოდის პროექტები და სწრაფად შეამოწმონ პროექტების აქტივობა და მასშტაბები. 🤠
// @name:ko           🤠 Github 향상된 보조 창고 디스플레이 크기
// @description:ko    🤠 창고 표시 크기: GitHub의 코드 검색, 창고 검색, 이슈 페이지, 사용자 창고 목록 및 저장소 페이지에서 창고 이름 옆에 창고 크기가 표시되어 사용자가 창고 규모를 빠르게 이해하고 최적화할 수 있습니다. 선택. 비활성 개발 경고: 저장소가 지난 6개월 동안 업데이트되지 않은 경우 시스템은 저장소 상단에 프롬프트를 추가하여 사용자에게 저장소가 비활성 상태임을 알리고 마지막 업데이트 시간을 표시합니다. 이를 통해 사용자는 창고의 활동 및 유지 관리 상태를 확인할 수 있습니다. 창고 내 빠른 점프 : 창고 탐색 시 자신의 모든 창고 목록을 쉽게 확인할 수 있어, 다른 창고로 빠르게 이동할 수 있는 입구를 제공합니다. 사용자는 관심 있는 다른 프로젝트를 빠르게 찾고 액세스할 수 있어 작업 효율성이 향상됩니다. 사용 시나리오: 개발자: 웨어하우스 크기와 활성 경고를 표시함으로써 개발에 적합한 라이브러리를 빠르게 필터링하고 더 이상 유지 관리되지 않는 프로젝트의 사용을 피할 수 있습니다. 프로젝트 관리자: 퀵 점프 기능을 통해 여러 프로젝트를 쉽게 관리 및 조정하고 업무 효율성을 높일 수 있습니다. 학습자: 새로운 기술을 배울 때 관련 오픈소스 프로젝트를 더 쉽게 찾을 수 있고 프로젝트의 활동과 규모를 빠르게 확인할 수 있습니다. 🤠
// @name:nl           🤠 Github verbeterde weergavegrootte assistent-magazijn
// @description:nl    🤠 Weergavegrootte magazijn: op GitHub’s codezoekopdracht, magazijnzoekopdracht, probleempagina, gebruikersmagazijnlijst en repositorypagina wordt de grootte van het magazijn weergegeven naast de magazijnnaam, zodat gebruikers snel de schaal van het magazijn kunnen begrijpen en hun magazijn kunnen optimaliseren selectie. Waarschuwing voor inactieve ontwikkeling: Als een repository de afgelopen zes maanden niet is bijgewerkt, voegt het systeem een prompt toe bovenaan de repository om gebruikers eraan te herinneren dat de repository inactief is en wordt het tijdstip van de laatste update weergegeven. Dit helpt gebruikers bij het bepalen van de activiteit en onderhoudsstatus van het magazijn. Snelle sprong binnen het magazijn: Tijdens het bladeren door het magazijn kan de gebruiker eenvoudig de lijst met alle magazijnen van de gebruiker bekijken, waardoor hij toegang krijgt om snel naar verschillende magazijnen te springen. Gebruikers kunnen snel andere interessante projecten vinden en openen, waardoor de werkefficiëntie wordt verbeterd. Gebruiksscenario’s: Ontwikkelaars: door de magazijngrootte en actieve waarschuwingen weer te geven, kunt u snel geschikte bibliotheken voor ontwikkeling filteren en voorkomen dat u projecten gebruikt die niet langer worden onderhouden. Projectmanager: Via de Quick Jump-functie is het eenvoudig om meerdere projecten te beheren en te coördineren en de werkefficiëntie te verbeteren. Leerlingen: wanneer ze nieuwe technologieën leren, kunnen ze gemakkelijker relevante open source-projecten vinden en snel de activiteit en schaal van de projecten controleren. 🤠
// @name:nb           🤠 Github forbedret assistentlagervisningsstørrelse
// @description:nb    🤠 Lagervisningsstørrelse: På GitHubs kodesøk, lagersøk, problemside, brukerlagerliste og lagerside vil størrelsen på lageret vises ved siden av lagernavnet, slik at brukerne raskt kan forstå omfanget av lageret og optimere deres lager. utvalg. Advarsel om inaktiv utvikling: Hvis et depot ikke har blitt oppdatert i løpet av de siste seks månedene, vil systemet legge til en melding øverst i depotet for å minne brukere om at depotet er inaktivt og vise tidspunktet for siste oppdatering. Dette hjelper brukere med å bestemme aktiviteten og vedlikeholdsstatusen til lageret. Hurtighopp innenfor lageret: Når brukeren blar gjennom lageret, kan brukeren enkelt se listen over alle varehusene til brukeren, noe som gir en inngang for raskt å hoppe til forskjellige varehus. Brukere kan raskt finne og få tilgang til andre prosjekter av interesse, noe som forbedrer arbeidseffektiviteten. Bruksscenarier: Utviklere: Ved å vise lagerstørrelsen og aktive advarsler kan du raskt filtrere ut passende biblioteker for utvikling og unngå å bruke prosjekter som ikke lenger vedlikeholdes. Prosjektleder: Gjennom hurtighoppfunksjonen er det enkelt å administrere og koordinere flere prosjekter og forbedre arbeidseffektiviteten. Elever: Når de lærer nye teknologier, kan de lettere finne relevante åpen kildekode-prosjekter og raskt sjekke aktiviteten og omfanget av prosjektene. 🤠
// @name:pl           🤠 Zwiększony rozmiar wyświetlacza magazynu asystenta Githuba
// @description:pl    🤠 Rozmiar wyświetlanego magazynu: przy wyszukiwaniu kodu w GitHubie, wyszukiwaniu magazynu, stronie wydania, liście magazynu użytkownika i stronie repozytorium, rozmiar magazynu będzie wyświetlany obok nazwy magazynu, umożliwiając użytkownikom szybkie zrozumienie skali magazynu i optymalizację jego wybór. Ostrzeżenie o nieaktywnym rozwoju: Jeśli repozytorium nie było aktualizowane w ciągu ostatnich sześciu miesięcy, system doda monit na górze repozytorium, aby przypomnieć użytkownikom, że repozytorium jest nieaktywne i wyświetlić czas ostatniej aktualizacji. Pomaga to użytkownikom określić aktywność i stan utrzymania magazynu. Szybki skok w obrębie magazynu: Podczas przeglądania magazynu użytkownik może łatwo przeglądać listę wszystkich magazynów użytkownika, umożliwiając szybkie przeskakiwanie do różnych magazynów. Użytkownicy mogą szybko znaleźć i uzyskać dostęp do innych interesujących projektów, poprawiając efektywność pracy. Scenariusze użycia: Programiści: Wyświetlając wielkość magazynu i aktywne ostrzeżenia, możesz szybko odfiltrować odpowiednie biblioteki do rozwoju i uniknąć korzystania z projektów, które nie są już utrzymywane. Kierownik projektu: Dzięki funkcji szybkiego skoku można łatwo zarządzać i koordynować wiele projektów oraz poprawiać wydajność pracy. Uczniowie: Ucząc się nowych technologii, mogą łatwiej znaleźć odpowiednie projekty open source i szybko sprawdzić aktywność i skalę projektów. 🤠
// @name:pt-BR        🤠 Tamanho de exibição do armazém do assistente aprimorado do Github
// @description:pt-BR 🤠 Tamanho de exibição do armazém: na pesquisa de código do GitHub, pesquisa de armazém, página de problemas, lista de armazém do usuário e página de repositório, o tamanho do armazém será exibido ao lado do nome do armazém, permitindo aos usuários entender rapidamente a escala do armazém e otimizar seu seleção. Aviso de desenvolvimento inativo: se um repositório não tiver sido atualizado nos últimos seis meses, o sistema adicionará um prompt na parte superior do repositório para lembrar aos usuários que o repositório está inativo e exibirá a hora da última atualização. Isso ajuda os usuários a determinar a atividade e o status de manutenção do armazém. Salto rápido dentro do armazém: Ao navegar no armazém, o usuário pode visualizar facilmente a lista de todos os armazéns do usuário, proporcionando uma entrada para saltar rapidamente para diferentes armazéns. Os usuários podem encontrar e acessar rapidamente outros projetos de interesse, melhorando a eficiência do trabalho. Cenários de uso: Desenvolvedores: Ao exibir o tamanho do warehouse e os avisos ativos, você pode filtrar rapidamente bibliotecas adequadas para desenvolvimento e evitar o uso de projetos que não são mais mantidos. Gerente de Projetos: Através da função de salto rápido, é fácil gerenciar e coordenar vários projetos e melhorar a eficiência do trabalho. Alunos: Ao aprender novas tecnologias, eles podem encontrar mais facilmente projetos de código aberto relevantes e verificar rapidamente a atividade e a escala dos projetos. 🤠
// @name:ro           🤠 Dimensiunea de afișare a depozitului a asistentului îmbunătățit Github
// @description:ro    🤠 Dimensiunea afișajului depozitului: în căutarea codului GitHub, căutarea depozitului, pagina de probleme, lista de depozit de utilizatori și pagina de depozit, dimensiunea depozitului va fi afișată lângă numele depozitului, permițând utilizatorilor să înțeleagă rapid dimensiunea depozitului și să își optimizeze selecţie. Avertisment de dezvoltare inactivă: Dacă un depozit nu a fost actualizat în ultimele șase luni, sistemul va adăuga o solicitare în partea de sus a magaziei pentru a le reaminti utilizatorilor că depozitul este inactiv și va afișa ora ultimei actualizări. Acest lucru ajută utilizatorii să determine activitatea și starea de întreținere a depozitului. Salt rapid în depozit: Când navighează în depozit, utilizatorul poate vizualiza cu ușurință lista tuturor depozitelor utilizatorului, oferind o intrare pentru a sări rapid la diferite depozite. Utilizatorii pot găsi și accesa rapid alte proiecte de interes, îmbunătățind eficiența muncii. Scenarii de utilizare: Dezvoltatori: prin afișarea dimensiunii depozitului și a avertismentelor active, puteți filtra rapid bibliotecile adecvate pentru dezvoltare și puteți evita utilizarea proiectelor care nu mai sunt întreținute. Manager de proiect: Prin intermediul funcției de salt rapid, este ușor să gestionați și să coordonați mai multe proiecte și să îmbunătățiți eficiența muncii. Cursanți: atunci când învață noi tehnologii, aceștia pot găsi mai ușor proiecte open source relevante și pot verifica rapid activitatea și amploarea proiectelor. 🤠
// @name:ru           🤠 Расширенный размер отображения склада помощника Github
// @description:ru    🤠 Размер отображения склада: при поиске кода GitHub, поиске склада, странице задач, списке пользовательских складов и странице репозитория размер склада будет отображаться рядом с названием склада, что позволяет пользователям быстро понять масштаб склада и оптимизировать его. выбор. Предупреждение о неактивности разработки. Если репозиторий не обновлялся в течение последних шести месяцев, система добавит запрос в верхней части репозитория, чтобы напомнить пользователям, что репозиторий неактивен, и отобразит время последнего обновления. Это помогает пользователям определять активность и состояние обслуживания склада. Быстрый переход по складу: при просмотре склада пользователь может легко просмотреть список всех складов пользователя, предоставляя возможность быстрого перехода к различным складам. Пользователи могут быстро находить и получать доступ к другим интересующим проектам, повышая эффективность работы. Сценарии использования: Разработчики: отображая размер хранилища и активные предупреждения, вы можете быстро отфильтровать подходящие библиотеки для разработки и избежать использования проектов, которые больше не поддерживаются. Менеджер проекта: благодаря функции быстрого перехода можно легко управлять несколькими проектами и координировать их, а также повышать эффективность работы. Учащиеся: изучая новые технологии, им легче находить соответствующие проекты с открытым исходным кодом и быстро проверять активность и масштаб проектов. 🤠
// @name:sk           🤠 Veľkosť displeja vylepšeného asistenta v sklade Github
// @description:sk    🤠 Veľkosť zobrazenia skladu: Na GitHub na vyhľadávanie kódu, vyhľadávanie skladu, stránku výdaja, zoznam skladov používateľov a stránku úložiska sa veľkosť skladu zobrazí vedľa názvu skladu, čo používateľom umožňuje rýchlo pochopiť rozsah skladu a optimalizovať ich výber. Upozornenie na neaktívny vývoj: Ak úložisko nebolo aktualizované za posledných šesť mesiacov, systém do hornej časti úložiska pridá výzvu, ktorá používateľom pripomenie, že úložisko je neaktívne, a zobrazí čas poslednej aktualizácie. To pomáha používateľom určiť aktivitu a stav údržby skladu. Rýchly skok v rámci skladu: Pri prehliadaní skladu môže používateľ jednoducho zobraziť zoznam všetkých skladov používateľa, čo poskytuje vstup na rýchly prechod do rôznych skladov. Používatelia môžu rýchlo nájsť a pristupovať k iným zaujímavým projektom, čo zvyšuje efektivitu práce. Scenáre použitia: Vývojári: Zobrazovaním veľkosti skladu a aktívnych upozornení môžete rýchlo odfiltrovať vhodné knižnice pre vývoj a vyhnúť sa používaniu projektov, ktoré už nie sú udržiavané. Projektový manažér: Vďaka funkcii rýchleho skoku je ľahké spravovať a koordinovať viacero projektov a zlepšiť efektivitu práce. Študenti: Keď sa učia nové technológie, môžu ľahšie nájsť relevantné open source projekty a rýchlo skontrolovať aktivitu a rozsah projektov. 🤠
// @name:sr           🤠 Гитхуб побољшана величина приказа магацина помоћника
// @description:sr    🤠 Величина приказа складишта: На ГитХуб-овој претрази кода, претрази складишта, страници за издавање, корисничкој листи складишта и страници спремишта, величина складишта ће бити приказана поред назива складишта, омогућавајући корисницима да брзо схвате обим складишта и оптимизују своје селекција. Упозорење о неактивном развоју: Ако спремиште није ажурирано у последњих шест месеци, систем ће додати промпт на врх спремишта да подсети кориснике да је спремиште неактивно и прикаже време последњег ажурирања. Ово помаже корисницима да одреде активност и статус одржавања складишта. Брзи скок унутар складишта: Приликом претраживања складишта, корисник може лако да погледа листу свих складишта корисника, пружајући му приступ за брзи скок у различита складишта. Корисници могу брзо пронаћи и приступити другим пројектима од интереса, побољшавајући радну ефикасност. Сценарији коришћења: Програмери: Приказујући величину складишта и активна упозорења, можете брзо да филтрирате одговарајуће библиотеке за развој и избегавате коришћење пројеката који се више не одржавају. Менаџер пројекта: Кроз функцију брзог скока, лако је управљати и координирати више пројеката и побољшати радну ефикасност. Ученици: Када уче нове технологије, могу лакше да пронађу релевантне пројекте отвореног кода и брзо провере активност и обим пројеката. 🤠
// @name:sv           🤠 Github förbättrad assistentlagerdisplaystorlek
// @description:sv    🤠 Lagervisningsstorlek: På GitHubs kodsökning, lagersökning, ärendesida, användarlagerlista och lagersida kommer storleken på lagret att visas bredvid lagernamnet, vilket gör att användare snabbt kan förstå lagrets skala och optimera sina lager. urval. Inaktiv utvecklingsvarning: Om ett arkiv inte har uppdaterats under de senaste sex månaderna kommer systemet att lägga till en uppmaning överst i arkivet för att påminna användarna om att arkivet är inaktivt och visa tidpunkten för den senaste uppdateringen. Detta hjälper användare att fastställa aktiviteten och underhållsstatusen för lagret. Snabbhopp inom lagret: När du bläddrar i lagret kan användaren enkelt se listan över användarens alla lager, vilket ger en ingång för att snabbt hoppa till olika lager. Användare kan snabbt hitta och komma åt andra intressanta projekt, vilket förbättrar arbetseffektiviteten. Användningsscenarier: Utvecklare: Genom att visa lagrets storlek och aktiva varningar kan du snabbt filtrera bort lämpliga bibliotek för utveckling och undvika att använda projekt som inte längre underhålls. Projektledare: Genom snabbhoppsfunktionen är det enkelt att hantera och koordinera flera projekt och förbättra arbetseffektiviteten. Elever: När de lär sig ny teknik kan de lättare hitta relevanta projekt med öppen källkod och snabbt kontrollera aktiviteten och omfattningen av projekten. 🤠
// @name:th           🤠 ขนาดการแสดงผลคลังสินค้าผู้ช่วยที่ปรับปรุง Github
// @description:th    🤠 ขนาดการแสดงผลคลังสินค้า: ในการค้นหาโค้ดของ GitHub การค้นหาคลังสินค้า หน้าปัญหา รายชื่อคลังสินค้าของผู้ใช้ และหน้าพื้นที่เก็บข้อมูล ขนาดของคลังสินค้าจะแสดงถัดจากชื่อคลังสินค้า ทำให้ผู้ใช้สามารถเข้าใจขนาดของคลังสินค้าได้อย่างรวดเร็วและเพิ่มประสิทธิภาพของพวกเขา การเลือก คำเตือนการพัฒนาที่ไม่ใช้งาน: หากพื้นที่เก็บข้อมูลไม่ได้รับการอัพเดตในช่วงหกเดือนที่ผ่านมา ระบบจะเพิ่มข้อความเตือนที่ด้านบนของพื้นที่เก็บข้อมูลเพื่อเตือนผู้ใช้ว่าพื้นที่เก็บข้อมูลไม่ได้ใช้งานและแสดงเวลาของการอัปเดตครั้งล่าสุด ซึ่งจะช่วยให้ผู้ใช้ระบุกิจกรรมและสถานะการบำรุงรักษาของคลังสินค้า กระโดดภายในคลังสินค้าอย่างรวดเร็ว: เมื่อเรียกดูคลังสินค้า ผู้ใช้สามารถดูรายการคลังสินค้าทั้งหมดของผู้ใช้ได้อย่างง่ายดาย ทำให้มีทางเข้าเพื่อข้ามไปยังคลังสินค้าต่างๆ ได้อย่างรวดเร็ว ผู้ใช้สามารถค้นหาและเข้าถึงโครงการอื่น ๆ ที่น่าสนใจได้อย่างรวดเร็ว ซึ่งช่วยปรับปรุงประสิทธิภาพการทำงาน สถานการณ์การใช้งาน: นักพัฒนา: ด้วยการแสดงขนาดคลังสินค้าและคำเตือนที่ใช้งานอยู่ คุณสามารถกรองไลบรารีที่เหมาะสมสำหรับการพัฒนาได้อย่างรวดเร็ว และหลีกเลี่ยงการใช้โปรเจ็กต์ที่ไม่ได้รับการดูแลรักษาอีกต่อไป ผู้จัดการโครงการ: ด้วยฟังก์ชันการกระโดดอย่างรวดเร็ว ทำให้ง่ายต่อการจัดการและประสานงานหลายโครงการและปรับปรุงประสิทธิภาพการทำงาน ผู้เรียน: เมื่อเรียนรู้เทคโนโลยีใหม่ พวกเขาสามารถค้นหาโครงการโอเพ่นซอร์สที่เกี่ยวข้องได้ง่ายขึ้น และตรวจสอบกิจกรรมและขนาดของโครงการได้อย่างรวดเร็ว
// @name:tr           🤠 Github geliştirilmiş yardımcı depo ekran boyutu
// @description:tr    🤠 Depo görüntüleme boyutu: GitHub’un kod arama, depo arama, sorun sayfası, kullanıcı depo listesi ve depo sayfasında, deponun boyutu depo adının yanında görüntülenecek ve kullanıcıların deponun ölçeğini hızlı bir şekilde anlamalarına ve depolarını optimize etmelerine olanak tanıyacak. seçim. Etkin olmayan geliştirme uyarısı: Bir depo son altı ayda güncellenmediyse sistem, kullanıcılara havuzun etkin olmadığını hatırlatmak ve son güncellemenin zamanını görüntülemek için deponun üst kısmına bir bilgi istemi ekleyecektir. Bu, kullanıcıların deponun aktivite ve bakım durumunu belirlemesine yardımcı olur. Depo içinde hızlı geçiş: Kullanıcı, depoya göz atarken kullanıcının tüm depolarının listesini kolayca görüntüleyebilir, farklı depolara hızlı bir şekilde atlamak için bir giriş sağlar. Kullanıcılar ilgi duydukları diğer projeleri hızlı bir şekilde bulup bunlara erişebilir, böylece iş verimliliği artar. Kullanım senaryoları: Geliştiriciler: Depo boyutunu ve etkin uyarıları görüntüleyerek, geliştirme için uygun kitaplıkları hızla filtreleyebilir ve artık bakımı yapılmayan projeleri kullanmaktan kaçınabilirsiniz. Proje Yöneticisi: Hızlı atlama işlevi sayesinde birden fazla projeyi yönetmek ve koordine etmek ve iş verimliliğini artırmak kolaydır. Öğrenciler: Yeni teknolojileri öğrenirken ilgili açık kaynak projelerini daha kolay bulabilir ve projelerin etkinliğini ve ölçeğini hızlı bir şekilde kontrol edebilirler. 🤠
// @name:ug           🤠 Github ياردەمچى ئامبارنىڭ كۆرسىتىش كۆلىمىنى كۈچەيتتى
// @description:ug    🤠 ئامبارنىڭ كۆرسىتىش چوڭلۇقى: GitHub نىڭ كود ئىزدەش ، ئامبار ئىزدەش ، تارقىتىش بېتى ، ئىشلەتكۈچى ئامبار تىزىملىكى ۋە ئامبار بېتىدە ، ئامبارنىڭ چوڭلۇقى ئامبار نامىنىڭ يېنىدا كۆرسىتىلىدۇ ، ئابونتلار ئامبارنىڭ كۆلىمىنى تېزرەك چۈشىنىدۇ ۋە ئۇلارنى ئەلالاشتۇرىدۇ. تاللاش. ئاكتىپ بولمىغان تەرەققىيات ئاگاھلاندۇرۇشى: ئەگەر يېقىنقى ئالتە ئاي ئىچىدە ئامبار يېڭىلانمىغان بولسا ، بۇ سىستېما ئامبارنىڭ ئۈستىگە تېزلىكتە ئەسكەرتىپ ، ئابونتلارغا ئامبارنىڭ ئاكتىپ ئەمەسلىكىنى ئەسكەرتىپ ، ئەڭ ئاخىرقى يېڭىلاش ۋاقتىنى كۆرسىتىدۇ. بۇ ئىشلەتكۈچىلەرنىڭ ئامبارنىڭ پائالىيىتى ۋە ئاسراش ئەھۋالىنى ئېنىقلىشىغا ياردەم بېرىدۇ. ئامباردا تېز سەكرەش: ئامبارنى كۆرگەندە ، ئىشلەتكۈچى بارلىق ئامبارلارنىڭ تىزىملىكىنى ئاسانلا كۆرەلەيدۇ ، ئوخشىمىغان ئامبارلارغا تېز سەكرەش ئېغىزى بىلەن تەمىنلەيدۇ. ئىشلەتكۈچىلەر باشقا قىزىقىدىغان تۈرلەرنى تېزلا تاپالايدۇ ۋە زىيارەت قىلالايدۇ ، خىزمەت ئۈنۈمىنى ئۆستۈرىدۇ. ئىشلىتىش سىنارىيەسى: ئاچقۇچىلار: ئامبارنىڭ چوڭ-كىچىكلىكى ۋە ئاكتىپ ئاگاھلاندۇرۇشلارنى كۆرسىتىش ئارقىلىق ، ماس كېلىدىغان كۈتۈپخانىلارنى تېزلىكتە سۈزۈپ ، ئاسرىمايدىغان تۈرلەرنى ئىشلىتىشتىن ساقلىنالايسىز. تۈر دېرىكتورى: تېز سەكرەش ئىقتىدارى ئارقىلىق ، كۆپ تۈرنى باشقۇرۇش ۋە ماسلاشتۇرۇش ۋە خىزمەت ئۈنۈمىنى ئاشۇرۇش ئاسان. ئۆگەنگۈچىلەر: يېڭى تېخنىكىلارنى ئۆگەنگەندە ، مۇناسىۋەتلىك ئوچۇق كود تۈرلىرىنى تېخىمۇ ئاسان تاپالايدۇ ۋە تۈرلەرنىڭ پائالىيىتى ۋە كۆلىمىنى تېز تەكشۈرەلەيدۇ. 🤠
// @name:uk           🤠 Розширений розмір відображення складу помічника Github
// @description:uk    🤠 Розмір відображення складу: у пошуковому коді GitHub, пошуку в складі, на сторінці випуску, у списку сховищ користувачів і на сторінці сховища розмір сховища відображатиметься поруч із назвою сховища, що дозволить користувачам швидко зрозуміти масштаб сховища та оптимізувати свій вибір. Попередження про неактивну розробку: якщо репозиторій не оновлювався протягом останніх шести місяців, система додасть підказку у верхній частині сховища, щоб нагадати користувачам, що сховище неактивне, і відобразити час останнього оновлення. Це допомагає користувачам визначити активність і стан обслуговування складу. Швидкий перехід у межах складу: під час перегляду складу користувач може легко переглядати список усіх складів користувача, забезпечуючи вхід для швидкого переходу до різних складів. Користувачі можуть швидко знаходити та отримувати доступ до інших цікавих проектів, підвищуючи ефективність роботи. Сценарії використання: Розробники: відображаючи розмір сховища та активні попередження, ви можете швидко відфільтрувати відповідні бібліотеки для розробки та уникнути використання проектів, які більше не обслуговуються. Менеджер проекту: за допомогою функції швидкого переходу легко керувати кількома проектами та координувати їх, а також покращувати ефективність роботи. Учні: вивчаючи нові технології, їм легше знаходити відповідні проекти з відкритим кодом і швидко перевіряти активність і масштаб проектів. 🤠
// @name:vi           🤠 Kích thước hiển thị kho trợ lý nâng cao của Github
// @description:vi    🤠 Kích thước hiển thị kho: Trên mã tìm kiếm, tìm kiếm kho, trang vấn đề, danh sách kho của người dùng và trang kho, kích thước của kho sẽ được hiển thị bên cạnh tên kho, giúp người dùng nhanh chóng hiểu được quy mô của kho và tối ưu hóa quy mô kho của mình. lựa chọn. Cảnh báo phát triển không hoạt động: Nếu kho lưu trữ không được cập nhật trong sáu tháng qua, hệ thống sẽ thêm lời nhắc ở đầu kho lưu trữ để nhắc nhở người dùng rằng kho lưu trữ không hoạt động và hiển thị thời gian cập nhật lần cuối. Điều này giúp người dùng xác định được tình trạng hoạt động và bảo trì của kho. Nhảy nhanh trong kho: Khi duyệt kho, người dùng có thể dễ dàng xem danh sách tất cả các kho của người dùng, cung cấp lối vào để nhanh chóng chuyển đến các kho khác nhau. Người dùng có thể nhanh chóng tìm và truy cập các dự án khác mà họ quan tâm, nâng cao hiệu quả công việc. Tình huống sử dụng: Nhà phát triển: Bằng cách hiển thị quy mô kho và cảnh báo đang hoạt động, bạn có thể nhanh chóng lọc ra các thư viện phù hợp để phát triển và tránh sử dụng các dự án không còn được bảo trì. Quản lý dự án: Thông qua chức năng nhảy nhanh, bạn có thể dễ dàng quản lý và điều phối nhiều dự án, đồng thời nâng cao hiệu quả công việc. Người học: Khi học các công nghệ mới, họ có thể dễ dàng tìm thấy các dự án nguồn mở có liên quan hơn và nhanh chóng kiểm tra hoạt động cũng như quy mô của dự án. 🤠
// @name:zh-SG        🤠 Github 增强小助手 仓库显示大小
// @description:zh-SG 🤠 仓库显示大小:在 GitHub 的代码搜索、仓库搜索、议题页面、用户仓库列表和存储库页面上,仓库名称旁边会显示该仓库的大小,方便用户快速了解仓库的规模,优化选择。不活跃开发警告:如果某个仓库在过去六个月内没有更新,系统将在仓库的顶部添加提示,提醒用户该仓库不活跃,并显示最后一次更新的时间。这有助于用户判断仓库的活跃程度和维护状况。仓库内快捷跳转:在浏览仓库时,用户可以方便地查看该用户的所有仓库列表,提供一个快速跳转到不同仓库的入口。用户可以快速找到和访问感兴趣的其他项目,提高工作效率。使用场景:开发者:可以通过显示仓库大小和活跃警告,快速筛选出合适的库进行开发,避免使用不再维护的项目。项目管理者:通过快速跳转功能,便于管理和协调多个项目,提高工作效率。学习者:在学习新技术时,可以更方便地找到相关的开源项目,快速查看项目的活跃程度和规模。🤠
// @name:zh           🤠 Github 增强小助手 仓库显示大小
// @description:zh    🤠 仓库显示大小:在 GitHub 的代码搜索、仓库搜索、议题页面、用户仓库列表和存储库页面上,仓库名称旁边会显示该仓库的大小,方便用户快速了解仓库的规模,优化选择。不活跃开发警告:如果某个仓库在过去六个月内没有更新,系统将在仓库的顶部添加提示,提醒用户该仓库不活跃,并显示最后一次更新的时间。这有助于用户判断仓库的活跃程度和维护状况。仓库内快捷跳转:在浏览仓库时,用户可以方便地查看该用户的所有仓库列表,提供一个快速跳转到不同仓库的入口。用户可以快速找到和访问感兴趣的其他项目,提高工作效率。使用场景:开发者:可以通过显示仓库大小和活跃警告,快速筛选出合适的库进行开发,避免使用不再维护的项目。项目管理者:通过快速跳转功能,便于管理和协调多个项目,提高工作效率。学习者:在学习新技术时,可以更方便地找到相关的开源项目,快速查看项目的活跃程度和规模。🤠
// @name:zh-TW        🤠 Github 增強小助手 倉庫顯示大小
// @description:zh-TW 🤠 倉庫顯示大小:在 GitHub 的程式碼搜尋、倉庫搜尋、議題頁面、使用者倉庫清單和儲存庫頁面上,倉庫名稱旁會顯示該倉庫的大小,方便使用者快速了解倉庫的規模,最佳化選擇。不活躍開發警告:如果某個倉庫在過去六個月內沒有更新,系統會在倉庫的頂部添加提示,提醒用戶該倉庫不活躍,並顯示最後一次更新的時間。這有助於使用者判斷倉庫的活躍程度和維護狀況。倉庫內快速跳轉:在瀏覽倉庫時,使用者可以方便地查看該使用者的所有倉庫列表,提供一個快速跳到不同倉庫的入口。用戶可以快速找到和存取感興趣的其他項目,提高工作效率。使用情境:開發者:可以透過顯示倉庫大小和活躍警告,快速篩選出適當的庫進行開發,避免使用不再維護的項目。專案管理者:透過快速跳轉功能,方便管理和協調多個項目,提高工作效率。學習者:在學習新科技時,可以更方便地找到相關的開源項目,快速查看專案的活躍程度和規模。 🤠
// @name:zh-HK        🤠 Github 增強小助手 倉庫顯示大小
// @description:zh-HK 🤠 倉庫顯示大小:在 GitHub 的程式碼搜尋、倉庫搜尋、議題頁面、使用者倉庫清單和儲存庫頁面上,倉庫名稱旁會顯示該倉庫的大小,方便使用者快速了解倉庫的規模,最佳化選擇。不活躍開發警告:如果某個倉庫在過去六個月內沒有更新,系統會在倉庫的頂部添加提示,提醒用戶該倉庫不活躍,並顯示最後一次更新的時間。這有助於使用者判斷倉庫的活躍程度和維護狀況。倉庫內快速跳轉:在瀏覽倉庫時,使用者可以方便地查看該使用者的所有倉庫列表,提供一個快速跳到不同倉庫的入口。用戶可以快速找到和存取感興趣的其他項目,提高工作效率。使用情境:開發者:可以透過顯示倉庫大小和活躍警告,快速篩選出適當的庫進行開發,避免使用不再維護的項目。專案管理者:透過快速跳轉功能,方便管理和協調多個項目,提高工作效率。學習者:在學習新科技時,可以更方便地找到相關的開源項目,快速查看專案的活躍程度和規模。 🤠
// @name:fr-CA        🤠 Taille d’affichage de l’entrepôt de l’assistant amélioré Github
// @description:fr-CA 🤠 Taille d’affichage de l’entrepôt : sur la recherche de code, la recherche d’entrepôt, la page de problèmes, la liste d’entrepôts d’utilisateurs et la page de référentiel de GitHub, la taille de l’entrepôt sera affichée à côté du nom de l’entrepôt, permettant aux utilisateurs de comprendre rapidement l’échelle de l’entrepôt et d’optimiser leur sélection. Avertissement de développement inactif : si un référentiel n’a pas été mis à jour au cours des six derniers mois, le système ajoutera une invite en haut du référentiel pour rappeler aux utilisateurs que le référentiel est inactif et affichera l’heure de la dernière mise à jour. Cela aide les utilisateurs à déterminer l’activité et l’état de maintenance de l’entrepôt. Saut rapide dans l’entrepôt : lors de la navigation dans l’entrepôt, l’utilisateur peut facilement consulter la liste de tous les entrepôts de l’utilisateur, offrant ainsi une entrée pour accéder rapidement à différents entrepôts. Les utilisateurs peuvent trouver et accéder rapidement à d’autres projets d’intérêt, améliorant ainsi l’efficacité du travail. Scénarios d’utilisation : Développeurs : en affichant la taille de l’entrepôt et les avertissements actifs, vous pouvez rapidement filtrer les bibliothèques appropriées pour le développement et éviter d’utiliser des projets qui ne sont plus maintenus. Gestionnaire de projet : grâce à la fonction de saut rapide, il est facile de gérer et de coordonner plusieurs projets et d’améliorer l’efficacité du travail. Apprenants : lorsqu’ils apprennent de nouvelles technologies, ils peuvent plus facilement trouver des projets open source pertinents et vérifier rapidement l’activité et l’ampleur des projets. 🤠
// @namespace         https://github.com/ChinaGodMan/UserScripts
// @version           0.1.3.7
// @author            mshll & 人民的勤务员 <china.qinwuyuan@gmail.com>
// @match             https://github.com/*
// @grant             none
// @run-at            document-start
// @grant             GM_getValue
// @grant             GM_setValue
// @grant             GM_addStyle
// @grant             GM_registerMenuCommand
// @grant             none
// @require           https://update.greasyfork.org/scripts/511697/1460281/TOTP%20Generator.js
// @icon              data:image/png;base64,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
// @iconbak           https://github.githubassets.com/pinned-octocat.svg
// @license           MIT
// @source            https://github.com/qinwuyuan-cn/UserScripts
// @run-at            document-start
// @supportURL        https://github.com/ChinaGodMan/UserScripts/issues
// @homepageURL       https://github.com/ChinaGodMan/UserScripts
// ==/UserScript==
'use strict'
const userLang =
    (navigator.languages && navigator.languages[0]) ||
    navigator.language ||
    'en'
const translations = {
    en: {
        save: 'Save',
        cancel: 'Cancel',
        modaltitle: 'Set GitHub Token',
        description: 'Enter your GitHub personal access token with "repo" scope.',
        githubtokeninput: 'Enter your GitHub personal access token',
        newtoken: 'Click here to create a new token',
        warncheckbox: '  Inactive Development Warning',
        menu: 'Set GitHub Token',
        renderWarning: 'WARNING: repo has not received an update in 1+ year(s)',
        renderCaution: 'Caution: repo has not received an update in 6+ months',
        confirm: 'You have not entered a Token, confirm to clear the GitHub Token?',
        timediff: 'Last commit was: {years} years, {months} months, {days} days ago ',
        view: 'View[',
        allRepos: ']All repositories',
        newTab: 'Open in a new tab when quickly viewing repositories',
        repoSize: 'Repository size:',
        repoDes: 'Repository description:',
        repoLang: 'Primary language:',
        repoCreated: 'Initial creation time:',
        repoUpdated: 'Last updated:',
        repoPushed: 'Last pushed:',
        repoForks: 'Forks:',
        repoStars: 'Stars:',
        ossinsight: 'OSS Insight analysis page for the repository',
        activeforks: 'Active forks list for the repository',
        activeforks_: 'Active forks',
        publicRepos: 'Public repositories: ',
        privateRepos: 'Private repositories: ',
        forkRepos: 'Forked repositories: ',
        deleteRepo_i: 'You are trying to delete the repository:',
        deleteRepo: 'ChinaGodMan reminds you:\nDeleting a repository is an extremely dangerous operation.\nOnce you delete a repository, it cannot be recovered.\nPlease think twice! Data is priceless, cherish it.',
        deleteRepo_ask: 'Are you sure you want to delete the repository? (Confirmed',
        deleteRepo_pass: 'Deletion successful!',
        deleteRepo_failed: 'Deletion failed!\nIt is recommended to check whether the GitHub token has permission to delete the repository!',
        deleteRepo_failed_status: 'Status code:',
        deleteRepo_btn: 'Delete repository',
        secret: '[Optional:] Enter your two-factor key for automatic input during GitHub\'s two-step verification.'

    },
    'zh-CN,zh,zh-SG': {
        save: '保存',
        cancel: '取消',
        modaltitle: '设置 GitHub 令牌',
        description: '请输入您的 GitHub 个人访问令牌,需具备 "repo" 权限。',
        githubtokeninput: '请输入您的 GitHub 个人访问令牌',
        newtoken: '点击此处创建新的令牌',
        warncheckbox: ' 非活跃开发警告',
        menu: '设置 GitHub 令牌',
        renderWarning: '警告:该仓库在 1 年以上未更新',
        renderCaution: '注意:该仓库在 6 个月以上未更新',
        confirm: '你没有输入Token,确认清空GitHub Token?',
        timediff: '最后一次提交距现在:{years}年{months}个月{days}天 ',
        view: '查看',
        allRepos: '所有仓库',
        newTab: '快速查看仓库时新窗口打开',
        repoSize: '仓库大小:',
        repoDes: '仓库简介:',
        repoLang: '主要语言:',
        repoCreated: '初始创建时间:',
        repoUpdated: '最后一次更新:',
        repoPushed: '最后一次推送:',
        repoForks: '复刻:',
        repoStars: '星标:',
        ossinsight: '仓库对应的 OSS Insight 分析页面',
        activeforks: '仓库对应的活跃复刻列表',
        activeforks_: '活跃的复刻',
        publicRepos: '公共仓库: ',
        privateRepos: '私有仓库: ',
        forkRepos: '分叉仓库: ',
        deleteRepo_i: '你正在尝试删除仓库:',
        deleteRepo: '人民的勤务员提醒你:\n删除仓库是一个极其危险的操作\n 你一旦删除仓库,将再也无法恢复。\n请三思而后行!  数据无价,且行且珍惜',
        deleteRepo_ask: '你确定要删除仓库吗? (已确认',
        deleteRepo_pass: ' 删除成功!',
        deleteRepo_failed: '删除失败!\n建议检查GitHub token 是否具有删除仓库的权限!',
        deleteRepo_failed_status: '状态码:',
        deleteRepo_btn: '删除仓库',
        secret: '[可选项目:]输入你的双因素密钥用于在GitHub触发二次验证时自动输入'
    },
    'zh-TW,zh-HK,zh-MO': {
        save: '保存',
        cancel: '取消',
        modaltitle: '設定 GitHub 令牌',
        description: '請輸入您的 GitHub 個人訪問令牌,需具備 "repo" 權限。',
        githubtokeninput: '請輸入您的 GitHub 個人訪問令牌',
        newtoken: '點擊此處創建新的令牌',
        warncheckbox: ' 非活躍開發警告',
        menu: '設定 GitHub 令牌',
        renderWarning: '警告:該倉庫在 1 年以上未更新',
        renderCaution: '注意:該倉庫在 6 個月以上未更新',
        confirm: '你沒有輸入Token,確認清空GitHub Token?',
        timediff: '最後一次提交距現在:{years}年{months}個月{days}天 '
    },
    vi: {
        save: 'Lưu',
        cancel: 'Hủy',
        modaltitle: 'Đặt Token GitHub',
        description: 'Nhập token truy cập cá nhân GitHub của bạn với phạm vi "repo".',
        githubtokeninput: 'Nhập token truy cập cá nhân GitHub của bạn',
        newtoken: 'Nhấn vào đây để tạo token mới',
        warncheckbox: ' Cảnh báo phát triển không hoạt động',
        menu: 'Đặt Token GitHub',
        renderWarning: 'CẢNH BÁO: kho lưu trữ đã không nhận được cập nhật trong hơn 1 năm',
        renderCaution: 'Cảnh báo: kho lưu trữ đã không nhận được cập nhật trong hơn 6 tháng',
        confirm: 'Bạn chưa nhập Token, xác nhận xóa GitHub Token?',
        timediff: 'Lần commit cuối cách đây: {years} năm, {months} tháng, {days} ngày '
    },
    ja: {
        save: '保存',
        cancel: 'キャンセル',
        modaltitle: 'GitHubトークンの設定',
        description: '「repo」スコープを持つGitHub個人アクセストークンを入力してください。',
        githubtokeninput: 'GitHub個人アクセストークンを入力してください',
        newtoken: '新しいトークンを作成するにはここをクリックしてください',
        warncheckbox: ' 非アクティブ開発警告',
        menu: 'GitHubトークンの設定',
        renderWarning: '警告:リポジトリは1年以上更新されていません',
        renderCaution: '注意:リポジトリは6ヶ月以上更新されていません',
        confirm: 'トークンが入力されていません。GitHubトークンをクリアしてもよろしいですか?',
        timediff: '最終コミットから現在まで:{years}年{months}ヶ月{days}日 '
    },
    ko: {
        save: '저장',
        cancel: '취소',
        modaltitle: 'GitHub 토큰 설정',
        description: '“repo” 범위를 가진 GitHub 개인 액세스 토큰을 입력하세요.',
        githubtokeninput: 'GitHub 개인 액세스 토큰을 입력하세요',
        newtoken: '여기를 클릭하여 새 토큰을 만드세요',
        warncheckbox: ' 비활성 개발 경고',
        menu: 'GitHub 토큰 설정',
        renderWarning: '경고: 이 저장소는 1년 이상 업데이트되지 않았습니다',
        renderCaution: '주의: 이 저장소는 6개월 이상 업데이트되지 않았습니다',
        confirm: '토큰을 입력하지 않았습니다. GitHub 토큰을 지우시겠습니까?',
        timediff: '마지막 커밋 이후 경과: {years}년 {months}개월 {days}일 '
    }
}
const getTranslations = (lang) => {
    for (const key in translations) {
        if (key === lang || key.split(',').includes(lang)) {
            return translations[key]
        }
    }
    return translations['en']
}
const translate = new Proxy(
    function (key) {
        const lang = userLang
        const strings = getTranslations(lang)
        return strings[key] || translations['en'][key]
    },
    {
        get(target, prop) {
            const lang = userLang
            const strings = getTranslations(lang)
            return strings[prop] || translations['en'][prop]
        }
    }
)
//! Generate a new public access token from https://github.com/settings/tokens and insert it here
//*Note: to be able to see the size of your private repos, you need to select the `repo` scope when generating the token
let TOKEN = GM_getValue('githubToken', '')
let WARNING = GM_getValue('warn', true)
let openInNewTab = GM_getValue('openInNewTab', false)
let DELAY = GM_getValue('DELAY', '24h')
let USETIP = GM_getValue('USETIP', false)//为真时使用GitHub自带的TIP提示而不是用网页title
let SECRET = GM_getValue('SECRET', '')
GM_addStyle(`
    .modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);display:flex;justify-content:center;align-items:center;z-index:1000;}
    .modal-content{background:white;padding:20px;border-radius:8px;width:400px;box-shadow:0 4px 15px rgba(0,0,0,0.2);position:relative;}
    .modal-title{margin:0 0 10px 0;font-size:20px;}
    .modal-description{margin-bottom:20px;font-size:14px;color:#666;}
    .modal-description a{color:#007bff;text-decoration:underline;}
    .github-token-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px;margin-bottom:20px;font-size:14px;}
    #save-token{background-color:#28a745;color:white;border:none;padding:10px 20px;cursor:pointer;border-radius:4px;margin-right:10px;}
    #cancel-token{background-color:#dc3545;color:white;border:none;padding:10px 20px;cursor:pointer;border-radius:4px;}
`)
function createModal() {
    const modalHTML = `
        <div class="modal-overlay">
            <div class="modal-content">
                <h3 class="modal-title">${translate.modaltitle}</h3>
                <p class="modal-description">
                    ${translate.description}
                    <a href="https://github.com/settings/tokens/new?description=GitHub%20Repo%20Size%20UserScript&scopes=repo" target="_blank" rel="noopener noreferrer">
                        ${translate.newtoken}
                    </a>
                </p>
                <input type="text" id="github-token-input" placeholder="${translate.githubtokeninput}">
                <li role="presentation" aria-hidden="true" data-view-component="true" class="ActionList-sectionDivider"></li>
                <p class="modal-description">
                    ${translate.secret}
                    <a href="https://github.com/settings/security?type=app#two-factor-summary" target="_blank" rel="noopener noreferrer">
                        ${translate.newtoken}
                    </a>
                </p>
                <input type="text" id="two-factor-secret" class="github-token-input" placeholder="${translate.secret}">
                <label><input type="checkbox" id="warn">${translate.warncheckbox}</label><br>
                <label><input type="checkbox" id="openInNewTab">    ${translate.newTab}</label>
                <br>
                <li role="presentation" aria-hidden="true" data-view-component="true" class="ActionList-sectionDivider"></li>
                <button id="save-token">${translate.save}</button>
                <button id="cancel-token" class="cancel">${translate.cancel}</button>
            </div>
        </div>
    `
    const modalContainer = document.createElement('div')
    modalContainer.innerHTML = modalHTML
    document.body.appendChild(modalContainer)
    const elements = {
        input: modalContainer.querySelector('#github-token-input'),
        secretInput: modalContainer.querySelector('#two-factor-secret'),
        warn: modalContainer.querySelector('#warn'),
        newTab: modalContainer.querySelector('#openInNewTab'),
        saveButton: modalContainer.querySelector('#save-token'),
        cancelButton: modalContainer.querySelector('#cancel-token')
    }
    elements.warn.checked = GM_getValue('warn', true)
    elements.newTab.checked = GM_getValue('openInNewTab', false)
    elements.input.value = GM_getValue('githubToken', '')
    elements.secretInput.value = GM_getValue('SECRET', '')
    elements.saveButton.addEventListener('click', () => {
        const token = elements.input.value.trim()
        GM_setValue('warn', elements.warn.checked)
        WARNING = elements.warn.checked
        GM_setValue('openInNewTab', elements.newTab.checked)
        openInNewTab = elements.newTab.checked
        GM_setValue('SECRET', elements.secretInput.value.trim())

        if (token) {
            GM_setValue('githubToken', token)
            modalContainer.remove()
            TOKEN = token
        } else {
            const userConfirmed = confirm(translate('confirm')) //提示是否删除
            if (userConfirmed) {
                GM_setValue('githubToken', token)
                modalContainer.remove()
                TOKEN = token
            }
        }
    })

    elements.cancelButton.addEventListener('click', () => modalContainer.remove())
}

GM_registerMenuCommand(translate('menu'), function () {
    createModal()
})
const getPageType = () => {
    const { pathname, search } = window.location
    const params = new URLSearchParams(search)
    const [, username, repo] = pathname.split('/')
    const q = params.get('q')?.toLocaleLowerCase()
    const type = params.get('type')?.toLocaleLowerCase()
    if (window.location.pathname.split('/').pop() === 'repositories') return 'list-view-container'
    if (window.location.href.includes('?tab=repositories')) return 'user-repositories'
    if (window.location.href.includes('?tab=stars')) return 'user-starred-repos'
    if (username && repo) return 'repo'
    if (q && type === 'code') return 'code_search'
    if (q) return 'search'
}
const addSizeToRepos = () => {

    const pageType = getPageType()
    // Get the repo selector based on the page type
    let repoSelector
    switch (pageType) {
        case 'repo': //仓库详情界面
            repoSelector = '#repository-container-header strong a'
            break
        case 'list-view-container': //ORG下的仓库列表
            repoSelector =
                'div[data-testid="list-view-item-title-container"] h4 a'
            break
        case 'user-repositories': //用户资料页面的仓库TAB
            repoSelector = '#user-repositories-list h3 a'
            break
        case 'user-starred-repos': //用户资料页面的已星标仓库
            repoSelector = '#user-starred-repos h3 a'
            break
        case 'search': //搜索
            repoSelector = 'div[data-testid="results-list"] .search-title a'
            break
        case 'code_search': //代码搜索
            repoSelector = 'div[data-testid="results-list"] .search-title a'
            break
        default:
            return
    }
    function extractPath(input) {
        const thirdSlashIndex = input.indexOf(
            '/',
            input.indexOf('/', input.indexOf('/') + 1) + 1
        )
        if (thirdSlashIndex !== -1) {
            return input.substring(0, thirdSlashIndex)
        }
        return input
    }
    if (pageType === 'user-repositories') {
        const repoItems = document.querySelectorAll('li[itemprop="owns"]')
        repoItems.forEach(item => {
            const repoName = item.querySelector('a[itemprop="name codeRepository"]').textContent.trim()
            const ownerName = window.location.pathname.split('/')[1]
            const deleteButton = document.createElement('button')
            deleteButton.textContent = 'Delete'
            deleteButton.classList.add('delete-repo-btn')
            deleteButton.onclick = function () {
            }
            insertDelBtn(ownerName, repoName, false, 'dialog-show-repo-delete-user-repositories', item)
        })
    }
    // Get all the repo links
    let filterHref
    document.querySelectorAll(repoSelector).forEach(async (elem) => {
        // Get json data from github api to extract the size
        const tkn = TOKEN
        var href = elem.getAttribute('href')
        href = extractPath(href)
        if (filterHref == href) {
            return
        } else {
            filterHref = href
        }
        if (pageType === 'repo') {
            const parts = href.split('/')
            const owner = parts[1]
            const name = parts[2]
            insertActiveForks(owner, name, !isMobileDevice())
            insertOssInsightButton(owner, name, !isMobileDevice())
            if (isLoggedInUser_f()) insertDelBtn(owner, name, !isMobileDevice())
        }
        console.log(href)
        const headers = tkn ? { authorization: `token ${tkn}` } : {}
        const jsn = await (
            await fetch(`https://api.github.com/repos${href}`, {
                headers: headers
            })
        ).json()
        // If JSON failed to load, skip
        if (jsn.message) return
        if (pageType === 'repo' && WARNING) {
            checkCommitDate(jsn.pushed_at)
        }

        if (pageType === 'repo') {
            const reposApi = isLoggedInUser(jsn.owner.avatar_url)
                ? (TOKEN ? 'https://api.github.com/user/repos' : jsn.owner.repos_url)
                : jsn.owner.repos_url
            function fetchReposWithCache(ownerKey, reposApi, headers) {
                const localData = localStorage.getItem(ownerKey)
                const currentTime = new Date().getTime()
                if (localData) {
                    const parsedData = JSON.parse(localData)
                    const localTimeStamp = new Date(parsedData.timeStamp).getTime()
                    if (currentTime - localTimeStamp < timeToSeconds(DELAY) * 1000) {
                        console.log('本地缓存数据未过期,直接使用本地数据')
                        insertReposList(parsedData.reposArray, USETIP)
                        return
                    }
                }
                getUserAllRepos(reposApi, headers)
                    .then(data => {
                        const reposArray = data.map(repo => ({
                            name: repo.name,
                            private: repo.private,
                            html_url: repo.html_url,
                            fork: repo.fork,
                            description: repo.description,
                            stargazers_count: repo.stargazers_count,
                            owner: repo.owner.login,
                            forks_count: repo.forks_count,
                            open_issues_count: repo.open_issues_count,
                            language: repo.language,
                            size: repo.size,
                            created_at: systemTime(repo.created_at),
                            updated_at: systemTime(repo.updated_at),
                            pushed_at: systemTime(repo.pushed_at)
                        }))
                        const timeStamp = new Date().toISOString()
                        const dataToStore = {
                            reposArray: reposArray,
                            timeStamp: timeStamp
                        }
                        localStorage.setItem(ownerKey, JSON.stringify(dataToStore))
                        insertReposList(reposArray, USETIP)
                    })
                    .catch(error => console.error('Error fetching data:', error))
            }
            if (!document.querySelector('#view-user-repos')) {

                fetchReposWithCache(jsn.owner.login, reposApi, headers)
            }

        }

        // Get parent element to append the size to
        let parent = elem.parentElement
        if (pageType === 'repo') parent = elem.parentElement.parentElement
        // Create the size container
        let sizeContainer = parent.querySelector('#mshll-repo-size')
        if (sizeContainer === null) {
            sizeContainer = document.createElement('span')
            sizeContainer.id = 'mshll-repo-size'
            sizeContainer.className = 'tooltipped tooltipped-s'
            sizeContainer.classList.add(
                'Label',
                'Label--info',
                'v-align-middle',
                'ml-1'
            )
            sizeContainer.setAttribute('aria-label', 'Repository size')
            sizeContainer.innerText = '-'
            // Create the size icon
            let sizeSVG = document.createElementNS(
                'http://www.w3.org/2000/svg',
                'svg'
            )
            sizeSVG.setAttribute('aria-hidden', 'true')
            sizeSVG.setAttribute('viewBox', '-4 -4 22 22')
            sizeSVG.setAttribute('width', '16')
            sizeSVG.setAttribute('height', '16')
            sizeSVG.setAttribute('fill', 'currentColor')
            sizeSVG.setAttribute('data-view-component', 'true')
            sizeSVG.classList.add('octicon', 'octicon-file-directory', 'mr-1')
            let sizeSVGPath = document.createElementNS(
                'http://www.w3.org/2000/svg',
                'path'
            )
            sizeSVGPath.setAttribute('fill-rule', 'evenodd')
            sizeSVGPath.setAttribute(
                'd',
                'M1 3.5c0-.626.292-1.165.7-1.59.406-.422.956-.767 1.579-1.041C4.525.32 6.195 0 8 0c1.805 0 3.475.32 4.722.869.622.274 1.172.62 1.578 1.04.408.426.7.965.7 1.591v9c0 .626-.292 1.165-.7 1.59-.406.422-.956.767-1.579 1.041C11.476 15.68 9.806 16 8 16c-1.805 0-3.475-.32-4.721-.869-.623-.274-1.173-.62-1.579-1.04-.408-.426-.7-.965-.7-1.591Zm1.5 0c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 5.205 6.353 5.5 8 5.5c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55 0-.133-.058-.318-.282-.551-.227-.237-.591-.483-1.101-.707C11.102 1.795 9.647 1.5 8 1.5c-1.646 0-3.101.295-4.118.742-.508.224-.873.471-1.1.708-.224.232-.282.417-.282.55Zm0 4.5c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 9.705 6.353 10 8 10c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55V5.724c-.241.15-.503.286-.778.407C11.475 6.68 9.805 7 8 7c-1.805 0-3.475-.32-4.721-.869a6.15 6.15 0 0 1-.779-.407Zm0 2.225V12.5c0 .133.058.318.282.55.227.237.592.484 1.1.708 1.016.447 2.471.742 4.118.742 1.647 0 3.102-.295 4.117-.742.51-.224.874-.47 1.101-.707.224-.233.282-.418.282-.551v-2.275c-.241.15-.503.285-.778.406-1.247.549-2.917.869-4.722.869-1.805 0-3.475-.32-4.721-.869a6.327 6.327 0 0 1-.779-.406Z'
            )
            sizeSVG.appendChild(sizeSVGPath)
            const size = jsn.size * 1024
            const humanReadableSize = getHumanReadableSize(jsn.size)
            // Insert the size into the size container
            sizeContainer.innerHTML = `${humanReadableSize}`
            sizeContainer.prepend(sizeSVG)
            // Insert the size container into the DOM
            if (pageType === 'code_search') {
                parent.style.direction = 'ltr'
            }
            if (!size) {
                sizeContainer.style.color = 'red'
                sizeContainer.style.border = '1px solid red'
            }
            parent.appendChild(sizeContainer)
        }

    })
}
window.addSizeToRepos = addSizeToRepos
// Add the size to the repos on the page
window.onload = function () {
    //addSizeToRepos()
}
const selectors = [
    '#repository-container-header strong a', // 仓库详情界面
    'div[data-testid="list-view-item-title-container"] h4 a', // ORG下的仓库列表
    '#user-repositories-list h3 a', // 用户资料页面的仓库TAB
    '#user-starred-repos h3 a', // 用户资料页面的已星标仓库
    'div[data-testid="results-list"] .search-title a' // 搜索
    // 'div[data-testid="results-list"] .search-title a' // 代码搜索
]
document.addEventListener('DOMContentLoaded', () => {
    main()
    if (SECRET) {
        waitForElement('#app_totp', false)//
            .then(() => {
                generateTOTP(SECRET).then(totp => {
                    const totpInput = document.querySelector('#app_totp')
                    const submitButton = totpInput.parentElement.querySelector('button[type=\'submit\']')
                    totpInput.value = totp
                    submitButton.click()
                })
            })
            .catch((error) => {
                console.error('totp发生了错误,找不到元素')
            })
    }
})
/* document.addEventListener('turbo:load', () => {
    addSizeToRepos()
}) */  //!SECTION-网络不顺畅时,加载太慢
observeUrlChanges(main)
function main(delay = 0) {
    Promise.race(selectors.map((selector) => waitForElement(selector))).then(() => {
        setTimeout(() => {
            addSizeToRepos()
        }, delay)
    }).catch((error) => {
        console.error(error.message)
    })
}
function observeUrlChanges(callback, delay = 10) {
    let lastUrl = location.href
    const observer = new MutationObserver(() => {
        const url = location.href
        if (url !== lastUrl) {
            lastUrl = url
            setTimeout(() => {
                callback()
            }, delay)
        }
    })
    observer.observe(document, { subtree: true, childList: true })
    return observer
}
function waitForElement(selector, dis = true) {
    return new Promise((resolve, reject) => {
        const observer = new MutationObserver(() => {
            if (document.querySelector(selector)) {
                resolve()
                observer.disconnect()
            }
        })
        if (dis) {
            const timeout = setTimeout(() => {
                observer.disconnect()
                reject(new Error('超时:未找到指定元素'))
            }, 10000)
        }
        observer.observe(document.body, { childList: true, subtree: true })
    })
}

function displayMessage(el) {
    document
        .querySelector('#js-repo-pjax-container')
        .insertAdjacentElement('beforebegin', el)
}
function renderWarning(timediff) {
    const banner = document.createElement('div')
    banner.id = 'zh-banner-warning'
    banner.setAttribute(
        'style',
        `
    background-color: red;
    height: 100px;
    margin-bottom: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    font-size: 36px;
    position: relative;
  `
    )
    banner.textContent = translate.renderWarning
    const smallTag = document.createElement('div')
    smallTag.setAttribute(
        'style',
        `
    position: absolute;
    bottom: 0;
    right: 0;
    padding: 5px 10px;
    font-size: 14px;
    border-top-left-radius: 5px;
  `
    )
    smallTag.textContent = timediff
    banner.appendChild(smallTag)
    displayMessage(banner)
}
function renderCaution(timediff) {
    const banner = document.createElement('div')
    banner.id = 'zh-banner-warning'
    banner.setAttribute(
        'style',
        `
    background-color: yellow;
    height: 50px;
    margin-bottom: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 24px;
    position: relative;
  `
    )
    banner.textContent = translate.renderCaution
    const smallTag = document.createElement('div')
    smallTag.setAttribute(
        'style',
        `
    position: absolute;
    bottom: 0;
    right: 0;
    padding: 5px 10px;
    font-size: 14px;
    border-top-left-radius: 5px;
  `
    )
    smallTag.textContent = timediff
    banner.appendChild(smallTag)
    displayMessage(banner)
}
function checkCommitDate(datetimeString) {
    if (document.querySelector('#zh-banner-warning')) return
    const date = new Date(datetimeString)
    const now = new Date()
    const yearsDiff = now.getFullYear() - date.getFullYear()
    const monthsDiff = now.getMonth() - date.getMonth()
    const daysDiff = now.getDate() - date.getDate()
    let adjustedMonths = monthsDiff
    let adjustedDays = daysDiff
    if (adjustedDays < 0) {
        adjustedMonths--
        const lastMonth = new Date(now.getFullYear(), now.getMonth(), 0)
        adjustedDays += lastMonth.getDate()
    }
    let finalYears = yearsDiff
    if (adjustedMonths < 0) {
        finalYears--
        adjustedMonths += 12
    }
    let result = translate.timediff
    if (finalYears === 0) {
        result = result.replace(/\{years\}.*?(?=\{months\})/, '')
    }
    result = result.replace('{years}', finalYears > 0 ? finalYears : '')
    result = result.replace('{months}', adjustedMonths)
    result = result.replace('{days}', adjustedDays)
    const daysSinceLastCommit = (Date.now() - date.getTime()) / 1000 / 60 / 60 / 24
    if (daysSinceLastCommit > 365) {
        renderWarning(result)
    } else if (daysSinceLastCommit > 182.5) {
        renderCaution(result)
    } else {
        /* noop */
    }
}
function insertReposList(links, tip = false) {
    const gitHubStyle = `
#view-user-repos {
  order: 10;
}
#view-user-repos .dropdown-menu {
  min-width: 170px;
  width: auto;
}
#view-user-repos .dropdown-menu .dropdown-item .d-inline-flex {
  vertical-align:sub;
}`
    if (!document.head.querySelector('style[data-id="view-user-repos-css"]')) {
        const globalStyle = document.createElement('style')
        globalStyle.dataset.id = 'view-user-repos-css'
        globalStyle.innerHTML = gitHubStyle
        document.head.appendChild(globalStyle)
    }
    const selectors = [
        '.jxTzTd', // Repo main page
        '.faNtbn .d-flex.gap-2', // Repo files page
        '.gwHaUx .d-flex.gap-2' // Commits page
    ]
    //document.querySelector(selectors.join(', '))
    const existingButton = document.querySelector('.jxTzTd')
    if (existingButton) {
        const sortedLinks = links.sort((a, b) => {//!SECTION 排序
            // 首先比较 fork 下沉到数组的低端.
            if (b.fork > 0 && a.fork <= 0) {
                return -1 // a 在前
            } else if (a.fork > 0 && b.fork <= 0) {
                return 1 // b 在前
            } else {
                // 如果 fork 相同,比较 private
                if (b.private === a.private) {
                    // 如果 private 相同,进一步判断 private 为 false 的情况
                    if (!a.private && !b.private) {
                        return b.stargazers_count - a.stargazers_count // stargazers_count 大的在前
                    }
                    return 0 // private 相同且不是 false 的情况下不排序
                }
                return (b.private ? -1 : 1) // private 为 true 的在前
            }
        })
        function getIconPath(link) {
            var fillColor = null
            if (link.private) fillColor = 'green'
            if (!link.private && !link.fork) fillColor = 'red'
            var svg = `<path fill="${fillColor}" fill-rule="evenodd" d="M1 3.5c0-.626.292-1.165.7-1.59.406-.422.956-.767 1.579-1.041C4.525.32 6.195 0 8 0c1.805 0 3.475.32 4.722.869.622.274 1.172.62 1.578 1.04.408.426.7.965.7 1.591v9c0 .626-.292 1.165-.7 1.59-.406.422-.956.767-1.579 1.041C11.476 15.68 9.806 16 8 16c-1.805 0-3.475-.32-4.721-.869-.623-.274-1.173-.62-1.579-1.04-.408-.426-.7-.965-.7-1.591Zm1.5 0c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 5.205 6.353 5.5 8 5.5c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55 0-.133-.058-.318-.282-.551-.227-.237-.591-.483-1.101-.707C11.102 1.795 9.647 1.5 8 1.5c-1.646 0-3.101.295-4.118.742-.508.224-.873.471-1.1.708-.224.232-.282.417-.282.55Zm0 4.5c0 .133.058.318.282.551.227.237.591.483 1.101.707C4.898 9.705 6.353 10 8 10c1.646 0 3.101-.295 4.118-.742.508-.224.873-.471 1.1-.708.224-.232.282-.417.282-.55V5.724c-.241.15-.503.286-.778.407C11.475 6.68 9.805 7 8 7c-1.805 0-3.475-.32-4.721-.869a6.15 6.15 0 0 1-.779-.407Zm0 2.225V12.5c0 .133.058.318.282.55.227.237.592.484 1.1.708 1.016.447 2.471.742 4.118.742 1.647 0 3.102-.295 4.117-.742.51-.224.874-.47 1.101-.707.224-.233.282-.418.282-.551v-2.275c-.241.15-.503.285-.778.406-1.247.549-2.917.869-4.722.869-1.805 0-3.475-.32-4.721-.869a6.327 6.327 0 0 1-.779-.406Z"></path>`
            if (fillColor) return svg
            if (link.fork) return '<path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>'
        }
        let privateClassAdded = false
        let forkClassAdded = false
        const stats = {
            privateTrue: 0,
            privateFalse: 0,
            forkTrue: 0,
            forkFalse: 0
        }
        const listItems = sortedLinks.map(link => {
            stats.privateTrue += (link.private && !link.fork) ? 1 : 0
            stats.privateFalse += (link.private ? 0 : 1) && !link.fork ? 1 : 0
            stats.forkTrue += link.fork ? 1 : 0
            stats.forkFalse += link.fork ? 0 : 1
            let liClass = ''
            if (link.private && !privateClassAdded) {
                liClass += 'border-top'
                privateClassAdded = true
            }
            if (link.fork && !forkClassAdded) {
                liClass += 'border-top'
                forkClassAdded = true
            }
            const starsAndForks = [
                link.stargazers_count > 0 ? `${translate.repoStars}${link.stargazers_count}` : '',
                link.forks_count > 0 ? `${translate.repoForks}${link.forks_count}` : ''
            ].filter(Boolean).join(' ')
            const repoInfo = [
                (link.description ? `${translate.repoDes}${link.description}` : ''),
                starsAndForks,
                `${translate.repoSize}${getHumanReadableSize(link.size)}`,
                link.language ? `${translate.repoLang}${link.language}` : '',
                `${translate.repoCreated}${link.created_at}`,
                `${translate.repoUpdated}${link.updated_at}`,
                `${translate.repoPushed}${link.pushed_at}`
            ].filter(Boolean).join('\n')
            return `
        <li class="${liClass}${(tip) ? ' tooltipped tooltipped-s' : ''}"  aria-label="${repoInfo}">
            <a href="${link.html_url}" class="dropdown-item" ${(openInNewTab) ? 'target="_blank"' : ''} rel="noopener noreferrer" ${(tip) ? '"' : ` title="${repoInfo}"`}>
                <span class="d-inline-flex mr-2">
                    <svg width="16" height="16" viewBox="0 0 16 16">
                        ${getIconPath(link)}
                    </svg>
                </span>
                ${link.name}
            </a>
        </li>
    `
        }).join('')
        const ariaLabel = [
            ` ${translate.view}[${links[0].owner}]${translate.allRepos} `,
            `${translate.allRepos} : ${sortedLinks.length}`,
            stats.privateTrue > 0 ? `${translate.privateRepos} ${stats.privateTrue}` : '',
            stats.privateFalse > 0 ? `${translate.publicRepos}  ${stats.privateFalse}` : '',
            stats.forkTrue > 0 ? `${translate.forkRepos} ${stats.forkTrue}` : ''
            //stats.forkFalse > 0 ? `非分叉仓库: ${stats.forkFalse}` : ''
        ].filter(Boolean).join('\n')
        const detailsHTML = `
<details id="view-user-repos" class="details-overlay details-reset position-relative d-flex">
    <summary role="button" type="button" class="btn text-center">
        <span class="d-none d-xl-flex flex-items-center tooltipped tooltipped-s" aria-label="${ariaLabel}">
            ${translate.view}<mark>[${links[0].owner}]</mark>${translate.allRepos}
            <span class="dropdown-caret ml-2"></span>
        </span>
        <span class="d-inline-block d-xl-none">
            ${links[0].owner} 
            <span class="dropdown-caret d-none d-sm-inline-block d-md-none d-lg-inline-block"></span>
        </span>
    </summary>
    <div>
        <ul class="dropdown-menu dropdown-menu-sw">
            ${listItems}
        </ul>
    </div>
</details>`

        existingButton.insertAdjacentHTML('beforebegin', detailsHTML)
    } else {
    }
}
function isLoggedInUser(avatar_url) {//从返回的json判断
    const imgElement = document.querySelector('.AppHeader-user button span span img')
    if (imgElement) {
        const imgSrc = imgElement.src
        return imgSrc === avatar_url
    } else {
        return false
    }
}
function isLoggedInUser_f() {//NOTE - 比较仓库头像和登录头像中的ID
    const imgElement = document.querySelector('.AppHeader-user button span span img')
    const repoImgElement = document.querySelector('#repo-title-component > img')
    if (imgElement && repoImgElement) {
        const imgSrc = imgElement.src
        const repoImgSrc = repoImgElement.src

        const userIdPattern = /\/u\/(\d+)/
        const imgUserIdMatch = imgSrc.match(userIdPattern)
        const repoUserIdMatch = repoImgSrc.match(userIdPattern)
        if (imgUserIdMatch && repoUserIdMatch) {
            const imgUserId = imgUserIdMatch[1]
            const repoUserId = repoUserIdMatch[1]
            return imgUserId === repoUserId
        }
    }
    return false
}
async function getUserRepos(href, header = {}) {
    try {
        const response = await fetch(`${href}`, {
            headers: header
        })
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`)
        }
        return await response.json()
    } catch (error) {
        console.error('Fetch error:', error)
        throw error
    }
}
async function getUserAllRepos(href, header = {}, getAll = false, maxPage = 0) {
    try {
        let allRepos = []
        let page = 1
        let perPage = 100
        do {
            const url = getAll ? `${href}?per_page=${perPage}&page=${page}` : href//NOTE - false时,就获取前30个就行了 ,够用了 仓库没那么多,列表太长也不好。
            const response = await fetch(url, { headers: header })
            if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)
            const repos = await response.json()
            if (repos.length === 0) break
            allRepos = allRepos.concat(repos)
            page++
            // 如果设定了最大页数并且已经达到了最大页数,结束战斗
            if (maxPage !== 0 && page > maxPage) break
        } while (getAll)
        return allRepos
    } catch (error) {
        console.error('Fetch error:', error)
        throw error
    }
}
function insertOssInsightButton(owner, repo, usePageHeadActions) {
    if (document.getElementById('github-ossinsight')) return
    const svgStr = `<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg width="16px" height="15px" viewBox="0 0 128 80" xmlns="http://www.w3.org/2000/svg" version="1.1"><defs><linearGradient id="linearGradient3764" x1="1" x2="47" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-1,1,0,-1.5e-6,47.999998)"><stop stop-color="#8358b4" offset="0"/><stop stop-color="#8d65ba" offset="1"/></linearGradient></defs><path style="fill:#2a7fff;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 124.3786,58.780229 c -1.27749,-1.795307 -2.68782,-3.48499 -4.11179,-5.150822 C 112.62916,44.68703 103.86053,36.715539 94.250452,30.927693 88.115128,27.228104 81.543761,24.247314 74.74074,22.809725 71.279616,22.090933 67.893432,21.719607 64.319891,21.705982 c -3.461128,0 -6.918848,0.384951 -10.37997,1.103743 -6.813243,1.437589 -13.360765,4.418379 -19.496087,8.117968 -9.606671,5.787846 -18.388938,13.762746 -26.0538323,22.701714 -1.4103405,1.662427 -2.7934283,3.352111 -4.0709103,5.150822 -1.7441892,2.394851 -1.7441892,5.21552 0,7.61037 3.9005794,5.467639 8.5574296,10.322066 13.2687846,14.784739 10.192606,9.569192 21.863688,17.578152 34.73049,20.811052 3.978932,0.99813 7.971493,1.47846 11.977677,1.47846 4.057286,0 8.022589,-0.48033 12.001521,-1.47846 12.866803,-3.2329 24.551506,-11.24526 34.757746,-20.811052 4.73861,-4.445654 9.38182,-9.313696 13.29263,-14.784739 1.71694,-2.39485 1.71694,-5.215519 0,-7.61037 m 0,0"/><path style="fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 95.010128,62.585414 c 0,16.927497 -13.728682,30.659556 -30.65958,30.659556 -16.927494,0 -30.659579,-13.728655 -30.659579,-30.659556 0,-16.927494 13.728682,-30.659582 30.659579,-30.659582 16.927497,0 30.65958,13.728679 30.65958,30.659582 m 0,0"/><path style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 81.383648,62.585414 c 0,9.395467 -7.624015,17.019479 -17.0331,17.019479 -9.409084,0 -17.033099,-7.624012 -17.033099,-17.019479 0,-9.409081 7.624015,-17.033104 17.033099,-17.033104 9.409085,0 17.0331,7.624023 17.0331,17.033104 m 0,0"/><path style="fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 65.581158,61.555935 a 5.1774597,4.889823 0 1 1 -10.35492,0 5.1774597,4.889823 0 1 1 10.35492,0 z" transform="translate(12.066285,-6.7626366)"/></svg>
`
    const targetUrl = `https://ossinsight.io/analyze/${owner}/${repo}`
    const title = `${repo}  ${translate.ossinsight}`
    const el = usePageHeadActions
        ? document.querySelector('.pagehead-actions')
        : document.querySelector('#responsive-meta-container .d-flex.gap-2.mt-n3.mb-3.flex-wrap')
    if (!el) {
        console.log('github-ossinsight: 没有找到目标元素, 无法添加按钮')
        return
    }
    const buttonHtml = `<a id="github-ossinsight" href="${targetUrl}" target="_blank" rel="noopener noreferrer" aria-label="${title}" class="btn btn-sm tooltipped tooltipped-s">${svgStr}</a>`
    if (usePageHeadActions) {
        el.insertAdjacentHTML('afterbegin', `<li>${buttonHtml}</li>`)
    } else {
        el.insertAdjacentHTML('afterbegin', buttonHtml)
    }
}
function insertActiveForks(owner, repo, usePageHeadActions) {
    if (document.getElementById('github-active-forks')) return
    const svgStr = '<svg class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path></svg>'
    const targetUrl = `https://ossinsight.io/analyze/${owner}/${repo}`
    const title = `${repo}  ${translate.activeforks}`
    const el = usePageHeadActions
        ? document.querySelector('.pagehead-actions')
        : document.querySelector('#responsive-meta-container .d-flex.gap-2.mt-n3.mb-3.flex-wrap')
    if (!el) {
        console.log('github-Active Forks: 没有找到目标元素, 无法添加按钮')
        return
    }
    const buttonHtml = `<details class="details-reset details-overlay f5 position-relative "><summary id="active-forks-button-repo" class="btn btn-sm tooltipped tooltipped-s" aria-label="${title}"><a id="github-active-forks" href="https://techgaun.github.io/active-forks/index.html#${owner}/${repo}" target="_blank" > ${svgStr}  ${usePageHeadActions ? translate.activeforks_ : ''}</a></details>`
    if (usePageHeadActions) {
        el.insertAdjacentHTML('afterbegin', `<li>${buttonHtml}</li>`)
    } else {
        el.insertAdjacentHTML('afterbegin', buttonHtml)
    }
}

function insertDelBtn(owner, repo, usePageHeadActions, cusClass = 'dialog-show-repo-delete-home', element) {
    const svgStr = '<div style="display: flex; justify-content: center; align-items: center;"><svg class="octicon octicon-trash color-fg-danger" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path></svg>'
    const targetUrl = `https://ossinsight.io/analyze/${owner}/${repo}`
    const title = `[${repo}]\n  ${translate.deleteRepo}`
    var el = null
    if (element) {
        el = element
    } else {
        el = usePageHeadActions
            ? document.querySelector('.pagehead-actions')
            : document.querySelector('#responsive-meta-container .d-flex.gap-2.mt-n3.mb-3.flex-wrap')
    }
    if (!el) {
        console.log('github-Active Forks: 没有找到目标元素, 无法添加按钮')
        return
    }
    if (el.querySelector(`#${cusClass}`)) return
    const buttonHtml = `<button id="${cusClass}" data-show-dialog-id="repo-delete-menu-dialog" type="button"
  data-view-component="true"
  class="js-repo-delete-button Button--danger Button--medium Button float-none float-sm-right ">
  <span class="Button-content">
    <span class="Button-label tooltipped tooltipped-s"  aria-label="${title}">${svgStr}${usePageHeadActions ? translate.deleteRepo_btn : ''}</span>
  </span>
</button>`
    if (usePageHeadActions) {
        el.insertAdjacentHTML('beforeend', `<li>${buttonHtml}</li>`)
    } else {
        el.insertAdjacentHTML('beforeend', buttonHtml)
    }
    el.querySelector(`#${cusClass}`).addEventListener('click', function () {
        showDeleteConfirmations(owner, repo)
    })
}
function showDeleteConfirmations(owner, repo, count = 3) {
    const blacklist = ['ChinaGodMan/disk', 'ChinaGodMan/LocalDev', 'ChinaGodMan/Ebackup', 'ChinaGodMan/portable-device', 'ChinaGodMan/UserScripts']
    const repoIdentifier = `${owner}/${repo}`
    if (blacklist.includes(repoIdentifier)) {
        alert(`[${repoIdentifier}] 在黑名单中`)
        return
    }
    for (let i = 0; i < count; i++) {
        let confirmed = confirm(`${owner}:\n${translate.deleteRepo_i}[${repo}]\n${translate.deleteRepo}\n${translate.deleteRepo_ask}  ${i + 1}/${count})`)
        if (!confirmed) return
    }
    deleteRepository(owner, repo)
}
function deleteRepository(owner, repo) {
    fetch(`https://api.github.com/repos/${owner}/${repo}`, {
        method: 'DELETE',
        headers: {
            'Authorization': `token ${TOKEN}`,
            'Accept': 'application/vnd.github.v3+json'
        }
    })
        .then(response => {
            if (response.status === 204) {
                alert(`"${repo}" ${translate.deleteRepo_pass}`)
                location.reload()
            } else {
                alert(`"[${repo}]"\n${translate.deleteRepo_failed} ${translate.deleteRepo_failed_status}${response.status}`)
            }
        })
        .catch(error => {
            alert(`An error occurred: ${error}`)
        })
}
//LINK - 帮助小子程序
function getHumanReadableSize(sizeInKB) {
    const sizes = ['B', 'KB', 'MB', 'GB', 'TB']
    const size = sizeInKB * 1024
    let i = parseInt(Math.floor(Math.log(size) / Math.log(1024)))
    const humanReadableSize = (size / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i]
    return humanReadableSize
}
function systemTime(isoString) {
    const date = new Date(isoString)
    return date.toLocaleString()
}
function timeToSeconds(timeStr) {
    let hours = 0, minutes = 0, seconds = 0
    const hoursMatch = timeStr.match(/(\d+)h/)
    const minutesMatch = timeStr.match(/(\d+)m/)
    const secondsMatch = timeStr.match(/(\d+)s/)
    if (hoursMatch) {
        hours = parseInt(hoursMatch[1], 10)
    }
    if (minutesMatch) {
        minutes = parseInt(minutesMatch[1], 10)
    }
    if (secondsMatch) {
        seconds = parseInt(secondsMatch[1], 10)
    }
    let totalSeconds = (hours * 3600) + (minutes * 60) + seconds
    return totalSeconds
}
function isMobileDevice() {
    return /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
}