From 33f0fb83e3d1490f605f70d9daf4816b5cd48821 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 02:29:58 -0700 Subject: [PATCH 01/26] Added `private`, deleted `cashapp` funding me thod --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 350db5824..68a48aa9f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "@adamlui/userscripts", + "private": true, "description": "Greasemonkey userscripts", "author": { "name": "Adam Lui", @@ -13,10 +14,6 @@ }, "license": "MIT", "funding": [ - { - "type": "cashapp", - "url": "https://cash.app/$AdamLui" - }, { "type": "github", "url": "http://github.com/sponsors/adamlui" From 398cff5d40315ff414c7ed127a2a9497e1e537ba Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 02:35:07 -0700 Subject: [PATCH 02/26] Deleted `cashapp` funding method --- package-lock.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e06623f28..c897c7553 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,10 +6,6 @@ "": { "name": "@adamlui/userscripts", "funding": [ - { - "type": "cashapp", - "url": "https://cash.app/$AdamLui" - }, { "type": "github", "url": "http://github.com/sponsors/adamlui" From a0adae5807aa22145b2b99055af447ca87e45e5e Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 02:35:42 -0700 Subject: [PATCH 03/26] Pinned Actions to commit hashes, condensed steps --- .github/workflows/lint-on-push-pr.yml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/lint-on-push-pr.yml b/.github/workflows/lint-on-push-pr.yml index 21ce1aa9e..1ce50827e 100644 --- a/.github/workflows/lint-on-push-pr.yml +++ b/.github/workflows/lint-on-push-pr.yml @@ -6,19 +6,9 @@ jobs: runs-on: ubuntu-24.04 permissions: contents: read - steps: - - - name: Checkout repository code - uses: actions/checkout@v7.0.0 - - - name: Set up Node.js - uses: actions/setup-node@v6.4.0 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 - - - name: Install dependencies - run: npm ci - - - name: Run ESLint - run: npm run lint + - run: npm ci && npm run lint From 957e38ce0b6f111119f6c1a471b027d396a2aa5b Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 02:39:41 -0700 Subject: [PATCH 04/26] Pinned Actions to commit hashes --- .github/workflows/sync-amazongpt-changes-to-repos.yml | 6 +++--- .../sync-autoclear-chatgpt-history-changes-to-repos.yml | 6 +++--- .github/workflows/sync-bravegpt-changes-to-repos.yml | 6 +++--- .github/workflows/sync-bump-script-changes-to-ai-web.yml | 4 ++-- .github/workflows/sync-changes-to-gitlab.yml | 2 +- .../sync-chatgpt-auto-continue-changes-to-repos.yml | 6 +++--- .../sync-chatgpt-auto-refresh-changes-to-repos.yml | 6 +++--- .../workflows/sync-chatgpt-auto-talk-changes-to-repos.yml | 6 +++--- .../workflows/sync-chatgpt-infinity-changes-to-repos.yml | 6 +++--- .../workflows/sync-chatgpt-widescreen-changes-to-repos.yml | 6 +++--- .github/workflows/sync-duckduckgpt-changes-to-repos.yml | 6 +++--- .../workflows/sync-github-star-history-changes-to-repos.yml | 4 ++-- .../workflows/sync-github-widescreen-changes-to-repos.yml | 4 ++-- .github/workflows/sync-googlegpt-changes-to-repos.yml | 6 +++--- .github/workflows/sync-youtube-classic-changes-to-repos.yml | 4 ++-- .../update-chatgpt-usercount-jsd-shields-weekly.yml | 2 +- .../workflows/update-root-usercount-jsd-shields-weekly.yml | 2 +- .github/workflows/validate-links-on-push-pr.yml | 4 ++-- 18 files changed, 43 insertions(+), 43 deletions(-) diff --git a/.github/workflows/sync-amazongpt-changes-to-repos.yml b/.github/workflows/sync-amazongpt-changes-to-repos.yml index 039695b6d..8dec86a39 100644 --- a/.github/workflows/sync-amazongpt-changes-to-repos.yml +++ b/.github/workflows/sync-amazongpt-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout KudoAI/amazongpt - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: KudoAI/amazongpt path: KudoAI/amazongpt - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-autoclear-chatgpt-history-changes-to-repos.yml b/.github/workflows/sync-autoclear-chatgpt-history-changes-to-repos.yml index 184a9a63a..97f81eec1 100644 --- a/.github/workflows/sync-autoclear-chatgpt-history-changes-to-repos.yml +++ b/.github/workflows/sync-autoclear-chatgpt-history-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/autoclear-chatgpt-history - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/autoclear-chatgpt-history path: adamlui/autoclear-chatgpt-history - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-bravegpt-changes-to-repos.yml b/.github/workflows/sync-bravegpt-changes-to-repos.yml index 9cdd64783..ca5d25d9d 100644 --- a/.github/workflows/sync-bravegpt-changes-to-repos.yml +++ b/.github/workflows/sync-bravegpt-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout KudoAI/bravegpt - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: KudoAI/bravegpt path: KudoAI/bravegpt - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-bump-script-changes-to-ai-web.yml b/.github/workflows/sync-bump-script-changes-to-ai-web.yml index e0dd34730..191cc0cbb 100644 --- a/.github/workflows/sync-bump-script-changes-to-ai-web.yml +++ b/.github/workflows/sync-bump-script-changes-to-ai-web.yml @@ -17,12 +17,12 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-changes-to-gitlab.yml b/.github/workflows/sync-changes-to-gitlab.yml index b14aba082..84ebc2c2c 100644 --- a/.github/workflows/sync-changes-to-gitlab.yml +++ b/.github/workflows/sync-changes-to-gitlab.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 diff --git a/.github/workflows/sync-chatgpt-auto-continue-changes-to-repos.yml b/.github/workflows/sync-chatgpt-auto-continue-changes-to-repos.yml index 4c8945302..0a6b701c0 100644 --- a/.github/workflows/sync-chatgpt-auto-continue-changes-to-repos.yml +++ b/.github/workflows/sync-chatgpt-auto-continue-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/chatgpt-auto-continue - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/chatgpt-auto-continue path: adamlui/chatgpt-auto-continue - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-chatgpt-auto-refresh-changes-to-repos.yml b/.github/workflows/sync-chatgpt-auto-refresh-changes-to-repos.yml index ab56ad7d9..4dec1011d 100644 --- a/.github/workflows/sync-chatgpt-auto-refresh-changes-to-repos.yml +++ b/.github/workflows/sync-chatgpt-auto-refresh-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/chatgpt-auto-refresh - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/chatgpt-auto-refresh path: adamlui/chatgpt-auto-refresh - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-chatgpt-auto-talk-changes-to-repos.yml b/.github/workflows/sync-chatgpt-auto-talk-changes-to-repos.yml index 346b37910..3f5c23928 100644 --- a/.github/workflows/sync-chatgpt-auto-talk-changes-to-repos.yml +++ b/.github/workflows/sync-chatgpt-auto-talk-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/chatgpt-auto-talk - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/chatgpt-auto-talk path: adamlui/chatgpt-auto-talk - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-chatgpt-infinity-changes-to-repos.yml b/.github/workflows/sync-chatgpt-infinity-changes-to-repos.yml index ca5fd7575..d5c3238ec 100644 --- a/.github/workflows/sync-chatgpt-infinity-changes-to-repos.yml +++ b/.github/workflows/sync-chatgpt-infinity-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/chatgpt-infinity - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/chatgpt-infinity path: adamlui/chatgpt-infinity - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-chatgpt-widescreen-changes-to-repos.yml b/.github/workflows/sync-chatgpt-widescreen-changes-to-repos.yml index e02224fd4..17950941d 100644 --- a/.github/workflows/sync-chatgpt-widescreen-changes-to-repos.yml +++ b/.github/workflows/sync-chatgpt-widescreen-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/chatgpt-widescreen - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/chatgpt-widescreen path: adamlui/chatgpt-widescreen - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-duckduckgpt-changes-to-repos.yml b/.github/workflows/sync-duckduckgpt-changes-to-repos.yml index c9ca81c7c..7be765eb7 100644 --- a/.github/workflows/sync-duckduckgpt-changes-to-repos.yml +++ b/.github/workflows/sync-duckduckgpt-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout KudoAI/duckduckgpt - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: KudoAI/duckduckgpt path: KudoAI/duckduckgpt - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-github-star-history-changes-to-repos.yml b/.github/workflows/sync-github-star-history-changes-to-repos.yml index 8e4b0cdb2..4ee88c31c 100644 --- a/.github/workflows/sync-github-star-history-changes-to-repos.yml +++ b/.github/workflows/sync-github-star-history-changes-to-repos.yml @@ -17,12 +17,12 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/github-star-history - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/github-star-history diff --git a/.github/workflows/sync-github-widescreen-changes-to-repos.yml b/.github/workflows/sync-github-widescreen-changes-to-repos.yml index f2e75f522..531322b05 100644 --- a/.github/workflows/sync-github-widescreen-changes-to-repos.yml +++ b/.github/workflows/sync-github-widescreen-changes-to-repos.yml @@ -17,12 +17,12 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/github-widescreen - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/github-widescreen diff --git a/.github/workflows/sync-googlegpt-changes-to-repos.yml b/.github/workflows/sync-googlegpt-changes-to-repos.yml index ac681fe62..8a66c6a64 100644 --- a/.github/workflows/sync-googlegpt-changes-to-repos.yml +++ b/.github/workflows/sync-googlegpt-changes-to-repos.yml @@ -17,19 +17,19 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout KudoAI/googlegpt - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: KudoAI/googlegpt path: KudoAI/googlegpt - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/ai-web-extensions diff --git a/.github/workflows/sync-youtube-classic-changes-to-repos.yml b/.github/workflows/sync-youtube-classic-changes-to-repos.yml index 12626fd43..f008a3a57 100644 --- a/.github/workflows/sync-youtube-classic-changes-to-repos.yml +++ b/.github/workflows/sync-youtube-classic-changes-to-repos.yml @@ -17,12 +17,12 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: adamlui/userscripts - name: Checkout adamlui/youtube-classic - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} repository: adamlui/youtube-classic diff --git a/.github/workflows/update-chatgpt-usercount-jsd-shields-weekly.yml b/.github/workflows/update-chatgpt-usercount-jsd-shields-weekly.yml index a6a068543..7902b52c5 100644 --- a/.github/workflows/update-chatgpt-usercount-jsd-shields-weekly.yml +++ b/.github/workflows/update-chatgpt-usercount-jsd-shields-weekly.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} path: adamlui/userscripts diff --git a/.github/workflows/update-root-usercount-jsd-shields-weekly.yml b/.github/workflows/update-root-usercount-jsd-shields-weekly.yml index ad58db979..014e6d60f 100644 --- a/.github/workflows/update-root-usercount-jsd-shields-weekly.yml +++ b/.github/workflows/update-root-usercount-jsd-shields-weekly.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout adamlui/userscripts - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.REPO_SYNC_PAT }} path: adamlui/userscripts diff --git a/.github/workflows/validate-links-on-push-pr.yml b/.github/workflows/validate-links-on-push-pr.yml index e8e6ed396..b8fcc25ad 100644 --- a/.github/workflows/validate-links-on-push-pr.yml +++ b/.github/workflows/validate-links-on-push-pr.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout repository - uses: actions/checkout@v7.0.0 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Restore lychee cache id: restore-cache @@ -22,7 +22,7 @@ jobs: restore-keys: cache-lychee- - name: Validate links - uses: lycheeverse/lychee-action@v2.8.0 + uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0 with: # Check all files, ignore ok/redir/blocked/rate-limited/anti-botted, exclude commonly down domains args: >- From 6a0fd1c0463863e23bb04c663cde5d8cd3b40f6f Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:11:49 -0700 Subject: [PATCH 05/26] Updated dom.js `@require` URL src repo --- block-quora-poe/block-quora-poe.user.js | 4 ++-- github/github-star-history/github-star-history.user.js | 4 ++-- github/github-widescreen/github-widescreen.user.js | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/block-quora-poe/block-quora-poe.user.js b/block-quora-poe/block-quora-poe.user.js index 1d2481cec..4b082fc8e 100644 --- a/block-quora-poe/block-quora-poe.user.js +++ b/block-quora-poe/block-quora-poe.user.js @@ -13,13 +13,13 @@ // @description:zh-TW 阻止 AI + Quora 的推廣/贊助答案 // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.5.19 +// @version 2026.6.27 // @license MIT // @icon https://cdn.jsdelivr.net/gh/adamlui/userscripts@f3e6bf0/assets/images/icons/sites/quora/icon64.png // @match *://*.quora.com/* // @exclude *://*.quora.com/answer/* // @exclude *://*.quora.com/profile/* -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@7595cd7/assets/js/lib/dom.js/dist/dom.min.js#sha256-xovdxRnmYD/eCgBiGCu5+Vd3+WWIvLUKVtU/MnRueeU= +// @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@4a657b1/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= // @resource rpwCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@4a657b1/assets/styles/rising-particles/dist/white.min.css#sha256-6xBXczm7yM1MZ/v0o1KVFfJGehHk47KJjq8oTktH4KE= // @grant GM_addStyle diff --git a/github/github-star-history/github-star-history.user.js b/github/github-star-history/github-star-history.user.js index 05b85632a..db5ab624b 100644 --- a/github/github-star-history/github-star-history.user.js +++ b/github/github-star-history/github-star-history.user.js @@ -13,7 +13,7 @@ // @description:zh-TW 將明星曆史圖表添加到 GitHub 存儲庫的側邊欄 // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.4.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2248%22%20height=%2248%22%20viewBox=%220%200%2048%2048%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M24%201.9a21.6%2021.6%200%200%200-6.8%2042.2c1%20.2%201.8-.9%201.8-1.8v-2.9c-6%201.3-7.9-2.9-7.9-2.9a6.5%206.5%200%200%200-2.2-3.2c-2-1.4.1-1.3.1-1.3a4.3%204.3%200%200%201%203.3%202c1.7%202.9%205.5%202.6%206.7%202.1a5.4%205.4%200%200%201%20.5-2.9C12.7%2032%209%2028%209%2022.6a10.7%2010.7%200%200%201%202.9-7.6%206.2%206.2%200%200%201%20.3-6.4%208.9%208.9%200%200%201%206.4%202.9%2015.1%2015.1%200%200%201%205.4-.8%2017.1%2017.1%200%200%201%205.4.7%209%209%200%200%201%206.4-2.8%206.5%206.5%200%200%201%20.4%206.4%2010.7%2010.7%200%200%201%202.8%207.6c0%205.4-3.7%209.4-10.5%2010.6a5.4%205.4%200%200%201%20.5%202.9v6.2a1.8%201.8%200%200%200%201.9%201.8A21.7%2021.7%200%200%200%2024%201.9Z%22/%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2264%22%20height=%2264%22%20viewBox=%220%200%2048%2048%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M24%201.9a21.6%2021.6%200%200%200-6.8%2042.2c1%20.2%201.8-.9%201.8-1.8v-2.9c-6%201.3-7.9-2.9-7.9-2.9a6.5%206.5%200%200%200-2.2-3.2c-2-1.4.1-1.3.1-1.3a4.3%204.3%200%200%201%203.3%202c1.7%202.9%205.5%202.6%206.7%202.1a5.4%205.4%200%200%201%20.5-2.9C12.7%2032%209%2028%209%2022.6a10.7%2010.7%200%200%201%202.9-7.6%206.2%206.2%200%200%201%20.3-6.4%208.9%208.9%200%200%201%206.4%202.9%2015.1%2015.1%200%200%201%205.4-.8%2017.1%2017.1%200%200%201%205.4.7%209%209%200%200%201%206.4-2.8%206.5%206.5%200%200%201%20.4%206.4%2010.7%2010.7%200%200%201%202.8%207.6c0%205.4-3.7%209.4-10.5%2010.6a5.4%205.4%200%200%201%20.5%202.9v6.2a1.8%201.8%200%200%200%201.9%201.8A21.7%2021.7%200%200%200%2024%201.9Z%22/%3E%3C/svg%3E @@ -25,7 +25,7 @@ // @connect api.star-history.com // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@7595cd7/assets/js/lib/dom.js/dist/dom.min.js#sha256-xovdxRnmYD/eCgBiGCu5+Vd3+WWIvLUKVtU/MnRueeU= +// @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= // @resource rpwCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/white.min.css#sha256-6xBXczm7yM1MZ/v0o1KVFfJGehHk47KJjq8oTktH4KE= // @grant GM_getResourceText diff --git a/github/github-widescreen/github-widescreen.user.js b/github/github-widescreen/github-widescreen.user.js index 952da3c85..f5736936f 100644 --- a/github/github-widescreen/github-widescreen.user.js +++ b/github/github-widescreen/github-widescreen.user.js @@ -13,13 +13,13 @@ // @description:zh-TW 自動隱藏 GitHub 上引人注目的側面板 // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.1.28 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2248%22%20height=%2248%22%20viewBox=%220%200%2048%2048%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M24%201.9a21.6%2021.6%200%200%200-6.8%2042.2c1%20.2%201.8-.9%201.8-1.8v-2.9c-6%201.3-7.9-2.9-7.9-2.9a6.5%206.5%200%200%200-2.2-3.2c-2-1.4.1-1.3.1-1.3a4.3%204.3%200%200%201%203.3%202c1.7%202.9%205.5%202.6%206.7%202.1a5.4%205.4%200%200%201%20.5-2.9C12.7%2032%209%2028%209%2022.6a10.7%2010.7%200%200%201%202.9-7.6%206.2%206.2%200%200%201%20.3-6.4%208.9%208.9%200%200%201%206.4%202.9%2015.1%2015.1%200%200%201%205.4-.8%2017.1%2017.1%200%200%201%205.4.7%209%209%200%200%201%206.4-2.8%206.5%206.5%200%200%201%20.4%206.4%2010.7%2010.7%200%200%201%202.8%207.6c0%205.4-3.7%209.4-10.5%2010.6a5.4%205.4%200%200%201%20.5%202.9v6.2a1.8%201.8%200%200%200%201.9%201.8A21.7%2021.7%200%200%200%2024%201.9Z%22/%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2264%22%20height=%2264%22%20viewBox=%220%200%2048%2048%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M24%201.9a21.6%2021.6%200%200%200-6.8%2042.2c1%20.2%201.8-.9%201.8-1.8v-2.9c-6%201.3-7.9-2.9-7.9-2.9a6.5%206.5%200%200%200-2.2-3.2c-2-1.4.1-1.3.1-1.3a4.3%204.3%200%200%201%203.3%202c1.7%202.9%205.5%202.6%206.7%202.1a5.4%205.4%200%200%201%20.5-2.9C12.7%2032%209%2028%209%2022.6a10.7%2010.7%200%200%201%202.9-7.6%206.2%206.2%200%200%201%20.3-6.4%208.9%208.9%200%200%201%206.4%202.9%2015.1%2015.1%200%200%201%205.4-.8%2017.1%2017.1%200%200%201%205.4.7%209%209%200%200%201%206.4-2.8%206.5%206.5%200%200%201%20.4%206.4%2010.7%2010.7%200%200%201%202.8%207.6c0%205.4-3.7%209.4-10.5%2010.6a5.4%205.4%200%200%201%20.5%202.9v6.2a1.8%201.8%200%200%200%201.9%201.8A21.7%2021.7%200%200%200%2024%201.9Z%22/%3E%3C/svg%3E // @match *://github.com/* // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@7595cd7/assets/js/lib/dom.js/dist/dom.min.js#sha256-xovdxRnmYD/eCgBiGCu5+Vd3+WWIvLUKVtU/MnRueeU= +// @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= // @resource rpwCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/white.min.css#sha256-6xBXczm7yM1MZ/v0o1KVFfJGehHk47KJjq8oTktH4KE= // @grant GM_getResourceText From be88929acf236cad94ce011ee1043706bed9141f Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:13:15 -0700 Subject: [PATCH 06/26] Synced w/ adamlui/ai-web-extensions/utils/bump/userscript-requires.js --- package.json | 2 +- utils/bump/resources.js | 135 --------------------- utils/bump/userscript-requires.js | 188 ++++++++++++++++++++++++++++++ 3 files changed, 189 insertions(+), 136 deletions(-) delete mode 100644 utils/bump/resources.js create mode 100644 utils/bump/userscript-requires.js diff --git a/package.json b/package.json index 68a48aa9f..2f0a54855 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "bump:chatbots": "node utils/bump/chatbots --cache", "bump:chatbots-nc": "node utils/bump/chatbots --cache --no-commit", "bump:chatbots-np": "node utils/bump/chatbots --cache --no-push", - "bump:res": "node utils/bump/resources --cache" + "bump:res": "node utils/bump/userscript-requires --cache" }, "devDependencies": { "@adamlui/minify.js": "^2.5.3", diff --git a/utils/bump/resources.js b/utils/bump/resources.js deleted file mode 100644 index 573f49da8..000000000 --- a/utils/bump/resources.js +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env node - -// Bumps @require'd JS in userscripts - -// NOTE: Doesn't git commit to allow script editing from breaking changes -// NOTE: Pass --cache to use cachePaths.userJSpaths for faster init - -(async () => { - 'use strict' - - // Parse ARGS - const args = process.argv.slice(2), - config = { cacheMode: args.some(arg => arg.startsWith('--cache')) } - - // Import LIBS - const fs = require('fs'), // to read/write files - path = require('path') // to manipulate paths - - // Init CACHE paths - const cachePaths = { root: '.cache' } - cachePaths.bumpUtils = path.join(__dirname, `${cachePaths.root}/bump.min.mjs`) - cachePaths.userJSpaths = path.join(__dirname, `${cachePaths.root}/userscript-paths.json`) - - // Import BUMP UTILS - fs.mkdirSync(path.dirname(cachePaths.bumpUtils), { recursive: true }) - fs.writeFileSync(cachePaths.bumpUtils, (await (await fetch( - 'https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f63b650/utils/bump/lib/bump.min.mjs')).text())) - const bump = await import(`file://${cachePaths.bumpUtils}`) ; fs.unlinkSync(cachePaths.bumpUtils) - - // Init REGEX - const regEx = { - hash: { commit: /(@|\?v=)([^/#]+)/, sri: /[^#]+$/ }, - resName: /[^/]+\/(?:dist)?\/?[^/]+\.js(?=[?#]|$)/, - jsURL: /^\/\/ @require\s+(https:\/\/cdn\.jsdelivr\.net\/gh\/.+)$/ - } - - // Collect userscripts - bump.log.working(`\n${ config.cacheMode ? 'Collecting' : 'Searching for' } userscripts...\n`) - let userJSfiles - if (config.cacheMode) { - try { // create missing cache file - fs.mkdirSync(path.dirname(cachePaths.userJSpaths), { recursive: true }) - const fd = fs.openSync(cachePaths.userJSpaths, - fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_RDWR) - bump.log.info(`Cache file missing. Generating ${cachePaths.userJSpaths}...\n`) - userJSfiles = await bump.findFileBySuffix({ suffix: '.user.js' }) ; console.log('') - fs.writeFileSync(fd, JSON.stringify(userJSfiles, undefined, 2), 'utf-8') - bump.log.success(`\nCache file created @ ${cachePaths.userJSpaths}`) - } catch (err) { // use existing cache file - userJSfiles = JSON.parse(fs.readFileSync(cachePaths.userJSpaths, 'utf-8')) - console.log(userJSfiles) ; console.log('') - } - } else { // use bump.findFileBySuffix() - userJSfiles = await bump.findFileBySuffix({ suffix: '.user.js' }) ; console.log('') } - - // Collect resources - bump.log.working('\nCollecting resources...\n') - const urlMap = {} ; let resCnt = 0 - userJSfiles.forEach(userJSfilePath => { - const userJScontent = fs.readFileSync(userJSfilePath, 'utf-8'), - resURLs = [...userJScontent.matchAll(new RegExp(regEx.jsURL.source, 'gm'))].map(match => match[1]) - if (resURLs?.length) { urlMap[userJSfilePath] = resURLs ; resCnt += resURLs.length } - }) - bump.log.success(`${resCnt} potentially bumpable resource(s) found.`) - - // Fetch latest commit hashes - bump.log.working('\nFetching latest commit hashes...\n') - const latestCommitHashes = { - aiweb: await bump.getLatestCommitHash({ repo: 'adamlui/ai-web-extensions' }), - userscripts: await bump.getLatestCommitHash({ repo: 'adamlui/userscripts' }) - } - - // Process each userscript - let urlsUpdatedCnt = 0 ; let filesUpdatedCnt = 0 - for (const userJSfilePath of Object.keys(urlMap)) { - const repoName = userJSfilePath.split('\\').pop().replace('.user.js', '') - bump.log.working(`\nProcessing ${repoName}...\n`) - - // Fetch latest commit hash for repo/chromium/extension - if (urlMap[userJSfilePath].some(url => url.includes(repoName))) { - console.log('Fetching latest commit hash for Chromium extension...') - latestCommitHashes.chromium = await bump.getLatestCommitHash( - { repo: `adamlui/${repoName}`, path: 'chromium/extension' }) - } - - // Process each resource - let fileUpdated = false - for (const resURL of urlMap[userJSfilePath]) { - if (!await bump.isValidResource({ resURL, verbose: false })) continue // to next resource - const resName = regEx.resName.exec(resURL)?.[0] || 'resource' // dir/filename for logs - - // Compare/update commit hash - let resLatestCommitHash = latestCommitHashes[ - resURL.includes('/ai-web-extensions@') ? 'aiweb' - : resURL.includes('/userscripts@') ? 'userscripts' - : 'chromium' - ] - if (resLatestCommitHash.startsWith( // compare hashes - regEx.hash.commit.exec(resURL)?.[2] || '')) { // commit hash didn't change... - console.log(`${resName} already up-to-date!`) ; bump.log.endedWithLineBreak = false - continue // ...so skip resource - } - resLatestCommitHash = resLatestCommitHash.substring(0, 7) // abbr it - let updatedURL = resURL.replace(regEx.hash.commit, `$1${resLatestCommitHash}`) // update hash - if (!await bump.isValidResource({ resURL: updatedURL, verbose: false })) continue // to next resource - - // Generate/compare/update SRI hash - console.log(`${ !bump.log.endedWithLineBreak ? '\n' : '' }Generating SRI (SHA-256) hash for ${resName}...`) - const newSRIhash = await bump.generateSRIhash({ resURL: updatedURL }) - if (regEx.hash.sri.exec(resURL)?.[0] == newSRIhash) { // SRI hash didn't change - console.log(`${resName} already up-to-date!`) ; bump.log.endedWithLineBreak = false - continue // ...so skip resource - } - updatedURL = updatedURL.replace(regEx.hash.sri, newSRIhash) // update hash - if (!await bump.isValidResource({ resURL: updatedURL, verbose: false })) continue // to next resource - - // Write updated URL to userscript - console.log(`Writing updated URL for ${resName}...`) - const userJScontent = fs.readFileSync(userJSfilePath, 'utf-8') - fs.writeFileSync(userJSfilePath, userJScontent.replace(resURL, updatedURL), 'utf-8') - bump.log.success(`${resName} bumped!\n`) ; urlsUpdatedCnt++ ; fileUpdated = true - } - if (fileUpdated) { - console.log(`${ !bump.log.endedWithLineBreak ? '\n' : '' }Bumping userscript version...`) - bump.bumpVersion({ format: 'dateVer', filePath: userJSfilePath }) ; filesUpdatedCnt++ - } - } - - // Log final summary - bump.log[urlsUpdatedCnt ? 'success' : 'info']( - `\n${ urlsUpdatedCnt ? 'Success! ' : '' }${ - urlsUpdatedCnt} resource(s) bumped across ${filesUpdatedCnt} file(s).` - ) - -})() diff --git a/utils/bump/userscript-requires.js b/utils/bump/userscript-requires.js new file mode 100644 index 000000000..67efe39bd --- /dev/null +++ b/utils/bump/userscript-requires.js @@ -0,0 +1,188 @@ +#!/usr/bin/env node + +// Bumps @require'd jsDelivr URLs in userscript + +// NOTE: Doesn't git commit to allow script editing from breaking changes +// NOTE: Pass --cache to use script.cache.paths.userscripts for faster init +// NOTE: Pass --suffix to override file suffix (default: .user.js) + +'use strict' + +async function run() { + + const fs = require('fs'), + path = require('path') + + const args = process.argv.slice(2) + + const script = { + cache: { paths: { root: '.cache' }, refs: {} }, + modes: { cache: args.some(arg => arg.startsWith('--cache')) }, + regex: { + hash: { commit: { full: /^[a-f\d]{40}$/i, inline: /(@|\?v=)([^/#]+)/ }, sri: /[^#]+$/ }, + resName: /[^/]+\/(?:dist)?\/?[^/]+\.js(?=[?#]|$)/, + urls: { + chatgptjs: /(https:\/\/cdn\.jsdelivr\.net\/npm\/@kudoai\/chatgpt\.js@)([\d.]+)(\/dist\/chatgpt\.min\.js)(#sha256-\S+)?/g, + jsdelivr: /^\/\/ @require\s+(https:\/\/cdn\.jsdelivr\.net\/gh\/.+)$/ + }, + verTag: /^v\d+\.\d+\.\d+$/ + }, + urls: { + apis: { + npm: { chatgptjs: 'https://registry.npmjs.org/@kudoai/chatgpt.js' }, + github: { repos: 'https://api.github.com/repos' } + }, + bumpmjs: 'https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions/utils/bump/lib/bump.min.mjs' + }, + userscriptName: args.find(arg => arg.startsWith('--suffix='))?.split('=')[1] || '.user.js' + } + script.cache.paths.bumpmjs = path.join(process.cwd(), `${script.cache.paths.root}/bump.min.mjs`) + script.cache.paths.userscripts = path.join(process.cwd(), `${script.cache.paths.root}/userscripts.json`) + const { cache: { paths: cachePaths }, regex: re } = script + + // Import bump.mjs + fs.mkdirSync(path.dirname(cachePaths.bumpmjs), { recursive: true }) + fs.writeFileSync(cachePaths.bumpmjs, (await (await fetch(script.urls.bumpmjs)).text())) + const bump = await import(`file://${cachePaths.bumpmjs}`) + fs.unlinkSync(cachePaths.bumpmjs) + + bump.log.working(`\n${ script.modes.cache ? 'Collecting' : 'Searching for' } userscripts...\n`) + let userscripts + if (script.modes.cache) { + try { // create missing cache file + fs.mkdirSync(path.dirname(cachePaths.userscripts), { recursive: true }) + const fd = fs.openSync(cachePaths.userscripts, + fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_RDWR) + bump.log.info(`Cache file missing. Generating ${cachePaths.userscripts}...\n`) + userscripts = await bump.findFileBySuffix({ suffix: script.userscriptName }) + console.log('') + fs.writeFileSync(fd, JSON.stringify(userscripts, undefined, 2), 'utf-8') + bump.log.success(`\nCache file created @ ${cachePaths.userscripts}`) + } catch (err) { + userscripts = JSON.parse(fs.readFileSync(cachePaths.userscripts, 'utf-8')) + console.log(userscripts) + console.log('') + } + } else { + userscripts = await bump.findFileBySuffix({ suffix: script.userscriptName }) + console.log('') + } + + bump.log.working('\nCollecting resources...\n') + const urlMap = {} ; let resCnt = 0 + userscripts.forEach(userscript => { + const scriptContent = fs.readFileSync(userscript, 'utf-8'), + resURLs = [...scriptContent.matchAll(new RegExp(re.urls.jsdelivr.source, 'gm'))].map(match => match[1]) + if (resURLs?.length) { urlMap[userscript] = resURLs ; resCnt += resURLs.length } + }) + bump.log.success(`${resCnt} potentially bumpable resource(s) found.`) + + // Process each userscript + let urlsUpdatedCnt = 0, filesUpdatedCnt = 0 + for (const scriptPath of Object.keys(urlMap)) { + const repoName = path.basename(scriptPath).replace(/\.[^.]+$/, '') + bump.log.working(`\nProcessing ${repoName}...\n`) + + // Process each resource + let fileUpdated = false + for (const resURL of urlMap[scriptPath]) { + if (!await bump.isValidResource({ resURL, verbose: false })) continue + const resName = re.resName.exec(resURL)?.[0] || 'resource' // dir/filename for logs + + // Compare/update ref + const repoMatch = resURL.match(/gh\/([^@]+)@/) + if (!repoMatch) { + console.log(`Could not parse repo from ${resName}, skipping.`) ; bump.log.endedWithLineBreak = false + continue + } + const targetRepo = repoMatch[1], + currentCommit = re.hash.commit.inline.exec(resURL)?.[2] || '' + let resLatestRef + if (re.verTag.test(currentCommit)) { // get latest release tag + const apiURL = `${script.urls.apis.github.repos}/${targetRepo}/releases/latest` + resLatestRef = script.cache.refs[targetRepo] ??= (await (await fetch(apiURL, { + headers: { 'User-Agent': 'bump-script' }})).json()).tag_name + } else if (targetRepo.endsWith(repoName) && resURL.includes('firefox/extension/')) { + if (!script.cache.refs.ff) { + console.log('Fetching latest commit hash for firefox/extension...') + script.cache.refs.ff = await bump.getLatestCommitHash({ + repo: targetRepo, path: 'firefox/extension' }) + } + resLatestRef = script.cache.refs.ff + } else if (targetRepo.endsWith(repoName) && resURL.includes('chromium/extension/')) { + if (!script.cache.refs.chromium) { + console.log('Fetching latest commit hash for chromium/extension...') + script.cache.refs.chromium = await bump.getLatestCommitHash({ + repo: targetRepo, path: 'chromium/extension' }) + } + resLatestRef = script.cache.refs.chromium + } else // get latest commit hash + resLatestRef = script.cache.refs[targetRepo] ??= await bump.getLatestCommitHash({ repo: targetRepo }) + if (resLatestRef.startsWith(currentCommit)) { + console.log(`${resName} already up-to-date!`) ; bump.log.endedWithLineBreak = false + continue + } else if (re.hash.commit.full.test(resLatestRef)) + resLatestRef = resLatestRef.substring(0, 7) // truncate it + let updatedURL = resURL.replace(re.hash.commit.inline, `$1${resLatestRef}`) + if (!await bump.isValidResource({ resURL: updatedURL, verbose: false })) continue + + // Generate/compare/update SRI hash + console.log(`${ !bump.log.endedWithLineBreak ? '\n' : '' }Generating SRI (SHA-256) hash for ${resName}...`) + const newSRIhash = await bump.generateSRIhash({ resURL: updatedURL }) + if (re.hash.sri.exec(resURL)?.[0] == newSRIhash && !re.verTag.test(currentCommit)) { + console.log(`${resName} already up-to-date!`) ; bump.log.endedWithLineBreak = false + continue + } + updatedURL = updatedURL.replace(re.hash.sri, newSRIhash) + if (!await bump.isValidResource({ resURL: updatedURL, verbose: false })) continue + + console.log(`Writing updated URL for ${resName}...`) + const scriptContent = fs.readFileSync(scriptPath, 'utf-8') + fs.writeFileSync(scriptPath, scriptContent.replace(resURL, updatedURL), 'utf-8') + bump.log.success(`${resName} bumped!\n`) + urlsUpdatedCnt++ ; fileUpdated = true + } + if (fileUpdated) { + console.log(`${ !bump.log.endedWithLineBreak ? '\n' : '' }Bumping userscript version...`) + bump.bumpVersion({ format: 'dateVer', filePath: scriptPath }) + filesUpdatedCnt++ + } + } + + bump.log.working('\nProcessing @kudoai/chatgpt.js @require URLs...\n') + const latestCJSver = (await (await fetch(`${script.urls.apis.npm.chatgptjs}/latest`)).json()).version + bump.log.info(`Latest @kudoai/chatgpt.js version: ${latestCJSver}\n`) + for (const userJSfilePath of userscripts) { + let fileChanged = false + const content = fs.readFileSync(userJSfilePath, 'utf-8') + for (const match of [...content.matchAll(re.urls.chatgptjs)]) { + const oldFullURL = match[0], oldVer = match[2] + if (oldVer == latestCJSver) { + console.log(`${path.basename(userJSfilePath)} already at v${latestCJSver}`) + continue + } + const baseNewURL = `${match[1]}${latestCJSver}${match[3]}` + bump.log.working(`\nGenerating SRI for v${latestCJSver}...\n`) + const sriHash = await bump.generateSRIhash({ resURL: baseNewURL, verbose: false }), + newFullURL = `${baseNewURL}#${sriHash}`, + freshContent = fs.readFileSync(userJSfilePath, 'utf-8') + fs.writeFileSync(userJSfilePath, freshContent.replace(oldFullURL, newFullURL), 'utf-8') + bump.log.success(`Updated @require in ${path.basename(userJSfilePath)}`) + fileChanged = true ; urlsUpdatedCnt++ + } + if (fileChanged) { + bump.log.working('Bumping userscript version...\n') + bump.bumpVersion({ format: 'dateVer', filePath: userJSfilePath }) + filesUpdatedCnt++ + } + } + + bump.log[urlsUpdatedCnt ? 'success' : 'info']( + `\n${ urlsUpdatedCnt ? 'Success! ' : '' }${ + urlsUpdatedCnt } resource(s) bumped across ${filesUpdatedCnt} file(s).` + ) +} + +if (require.main == module) run() + +module.exports = { run } From 5527bdf054a62ed0a89b317b4a3f97be24be9b11 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:14:14 -0700 Subject: [PATCH 07/26] Bumped JS libs --- chatgpt/amazongpt/amazongpt.user.js | 6 +++--- .../autoclear-chatgpt-history.user.js | 4 ++-- chatgpt/bravegpt/bravegpt.user.js | 6 +++--- chatgpt/chatgpt-auto-continue/chatgpt-auto-continue.user.js | 4 ++-- chatgpt/chatgpt-auto-refresh/chatgpt-auto-refresh.user.js | 4 ++-- chatgpt/chatgpt-auto-talk/chatgpt-auto-talk.user.js | 4 ++-- chatgpt/chatgpt-infinity/chatgpt-infinity.user.js | 4 ++-- chatgpt/chatgpt-widescreen/chatgpt-widescreen.user.js | 4 ++-- chatgpt/duckduckgpt/duckduckgpt.user.js | 4 ++-- chatgpt/googlegpt/googlegpt.user.js | 6 +++--- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/chatgpt/amazongpt/amazongpt.user.js b/chatgpt/amazongpt/amazongpt.user.js index 9e9f52663..f321628a7 100644 --- a/chatgpt/amazongpt/amazongpt.user.js +++ b/chatgpt/amazongpt/amazongpt.user.js @@ -3,7 +3,7 @@ // @description Add AI chat & product/category summaries to Amazon shopping, powered by the latest LLMs like GPT-4o! // @author KudoAI // @namespace https://kudoai.com -// @version 2026.6.17.1 +// @version 2026.6.27 // @license MIT // @icon https://cdn.jsdelivr.net/gh/KudoAI/amazongpt@8e8ed1c/assets/images/icons/app/black-gold-teal/icon48.png // @icon64 https://cdn.jsdelivr.net/gh/KudoAI/amazongpt@8e8ed1c/assets/images/icons/app/black-gold-teal/icon64.png @@ -73,7 +73,7 @@ // @connect chats.kudoai.com // @connect fanyi.sogou.com // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha256-dppVXeVTurw1ozOPNE3XqhYmDJPOosfbKQcHyQSE58w= // @require https://cdn.jsdelivr.net/npm/json5@2.2.3/dist/index.min.js#sha256-S7ltnVPzgKyAGBlBG4wQhorJqYTehj5WQCrADCKJufE= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@130fe5e/assets/js/chatbot/components/buttons.js#sha256-1EdgOW0kQxjTTzgMz/4JScPw5i04gPsKVBXPA0xQWDg= @@ -81,7 +81,7 @@ // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@5045b1d/assets/js/chatbot/components/menus.js#sha256-13HZm6QRq/dxVbeR2RmeiYmovD8XP/FTwiercFv4nm8= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/replyBubble.js#sha256-hfm7kB1xZMyMT3pmMzmq6IdM6FWEjl9DSGtzUL1RZlI= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/tooltip.js#sha256-VaSjsJ9RE8pe5fXrRFdy1lBT73KGDAC2DUb4UWpy3T8= -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f93a944/assets/js/chatbot/lib/api.js#sha256-PiRrvXkn06TU0GjMXy+ChXlR7ZwFXUDEw3eExyNA0M4= +// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@0bab5a8/assets/js/chatbot/lib/api.js#sha256-lZDUcdki4/4DcKN3++xh67epyfVHUCTzMqukQn4Ff3I= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/feedback.js#sha256-VB/w0tQj4AeZ+XYgFXendWx9uUroimUgCjl4LHQchx4= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@beedf43/assets/js/chatbot/lib/log.js#sha256-++SE7OgyoPZhNJ+cLiqSraFJCs59qVUhRm0vr1dCznY= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/prompts.js#sha256-zQqAHklFJcr4O5DgBoI9fSRm4SDko8ra3vPjYCm2Z4Q= diff --git a/chatgpt/autoclear-chatgpt-history/autoclear-chatgpt-history.user.js b/chatgpt/autoclear-chatgpt-history/autoclear-chatgpt-history.user.js index 2d6ce1384..468224593 100644 --- a/chatgpt/autoclear-chatgpt-history/autoclear-chatgpt-history.user.js +++ b/chatgpt/autoclear-chatgpt-history/autoclear-chatgpt-history.user.js @@ -225,7 +225,7 @@ // @description:zu Ziba itshala lokucabanga okuzoshintshwa ngokuzenzakalelayo uma ukubuka chatgpt.com // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E @@ -241,7 +241,7 @@ // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= diff --git a/chatgpt/bravegpt/bravegpt.user.js b/chatgpt/bravegpt/bravegpt.user.js index 01196a077..c23d469ba 100644 --- a/chatgpt/bravegpt/bravegpt.user.js +++ b/chatgpt/bravegpt/bravegpt.user.js @@ -148,7 +148,7 @@ // @description:zu Yengeza izimpendulo ze-AI ku-Brave Search (inikwa amandla yi-GPT-4o!) // @author KudoAI // @namespace https://kudoai.com -// @version 2026.6.17.1 +// @version 2026.6.27 // @license MIT // @icon https://cdn.jsdelivr.net/gh/KudoAI/bravegpt@2f21b5f/assets/images/icons/app/icon48.png // @icon64 https://cdn.jsdelivr.net/gh/KudoAI/bravegpt@2f21b5f/assets/images/icons/app/icon64.png @@ -193,7 +193,7 @@ // @connect chatgpt.com // @connect fanyi.sogou.com // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha256-dppVXeVTurw1ozOPNE3XqhYmDJPOosfbKQcHyQSE58w= // @require https://cdn.jsdelivr.net/npm/json5@2.2.3/dist/index.min.js#sha256-S7ltnVPzgKyAGBlBG4wQhorJqYTehj5WQCrADCKJufE= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@130fe5e/assets/js/chatbot/components/buttons.js#sha256-1EdgOW0kQxjTTzgMz/4JScPw5i04gPsKVBXPA0xQWDg= @@ -201,7 +201,7 @@ // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@5045b1d/assets/js/chatbot/components/menus.js#sha256-13HZm6QRq/dxVbeR2RmeiYmovD8XP/FTwiercFv4nm8= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/replyBubble.js#sha256-hfm7kB1xZMyMT3pmMzmq6IdM6FWEjl9DSGtzUL1RZlI= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/tooltip.js#sha256-VaSjsJ9RE8pe5fXrRFdy1lBT73KGDAC2DUb4UWpy3T8= -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f93a944/assets/js/chatbot/lib/api.js#sha256-PiRrvXkn06TU0GjMXy+ChXlR7ZwFXUDEw3eExyNA0M4= +// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@0bab5a8/assets/js/chatbot/lib/api.js#sha256-lZDUcdki4/4DcKN3++xh67epyfVHUCTzMqukQn4Ff3I= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/feedback.js#sha256-VB/w0tQj4AeZ+XYgFXendWx9uUroimUgCjl4LHQchx4= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@beedf43/assets/js/chatbot/lib/log.js#sha256-++SE7OgyoPZhNJ+cLiqSraFJCs59qVUhRm0vr1dCznY= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/prompts.js#sha256-zQqAHklFJcr4O5DgBoI9fSRm4SDko8ra3vPjYCm2Z4Q= diff --git a/chatgpt/chatgpt-auto-continue/chatgpt-auto-continue.user.js b/chatgpt/chatgpt-auto-continue/chatgpt-auto-continue.user.js index d9d639838..0e6b28dbe 100644 --- a/chatgpt/chatgpt-auto-continue/chatgpt-auto-continue.user.js +++ b/chatgpt/chatgpt-auto-continue/chatgpt-auto-continue.user.js @@ -219,14 +219,14 @@ // @description:zu ⚡ Terus menghasilkan imibuzo eminingi ye-ChatGPT ngokwesizulu // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-auto-continue@008112f/chromium/extension/components/modals.js#sha256-/W73xt+SWplKQhUdEn6NOcBnrGZGlJWSSOT8Rm0K69Y= diff --git a/chatgpt/chatgpt-auto-refresh/chatgpt-auto-refresh.user.js b/chatgpt/chatgpt-auto-refresh/chatgpt-auto-refresh.user.js index 6fe20f704..ffbb58f35 100644 --- a/chatgpt/chatgpt-auto-refresh/chatgpt-auto-refresh.user.js +++ b/chatgpt/chatgpt-auto-refresh/chatgpt-auto-refresh.user.js @@ -220,7 +220,7 @@ // @description:zu *NGOKUPHEPHA* susa ukusetha kabusha ingxoxo yemizuzu eyi-10 + amaphutha enethiwekhi ahlala njalo + Ukuhlolwa kwe-Cloudflare ku-ChatGPT. // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E @@ -237,7 +237,7 @@ // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= diff --git a/chatgpt/chatgpt-auto-talk/chatgpt-auto-talk.user.js b/chatgpt/chatgpt-auto-talk/chatgpt-auto-talk.user.js index b8440495a..9dcb5c575 100644 --- a/chatgpt/chatgpt-auto-talk/chatgpt-auto-talk.user.js +++ b/chatgpt/chatgpt-auto-talk/chatgpt-auto-talk.user.js @@ -225,14 +225,14 @@ // @description:zu Dlala izimpendulo ze-ChatGPT ngokuzenzakalela // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= diff --git a/chatgpt/chatgpt-infinity/chatgpt-infinity.user.js b/chatgpt/chatgpt-infinity/chatgpt-infinity.user.js index 6ff40183e..840daa4a9 100644 --- a/chatgpt/chatgpt-infinity/chatgpt-infinity.user.js +++ b/chatgpt/chatgpt-infinity/chatgpt-infinity.user.js @@ -199,7 +199,7 @@ // @description:zh-TW 從無所不知的 ChatGPT 生成無窮無盡的答案 (用任何語言!) // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E// @compatible chrome @@ -216,7 +216,7 @@ // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@9b871bc/chromium/extension/components/modals.js#sha256-z8OOmEiJhGr1iYVUmBidviqfidTws4qmWkuQGPvTQeA= diff --git a/chatgpt/chatgpt-widescreen/chatgpt-widescreen.user.js b/chatgpt/chatgpt-widescreen/chatgpt-widescreen.user.js index 3eb490776..8e0370911 100644 --- a/chatgpt/chatgpt-widescreen/chatgpt-widescreen.user.js +++ b/chatgpt/chatgpt-widescreen/chatgpt-widescreen.user.js @@ -235,7 +235,7 @@ // @description:zu Thuthukisa iChatGPT ngemodi zesikrini ezibanzi/egcwele/ephezulu + imodi yokuvimbela i-spam. Futhi isebenza ku-poe.com! // @author Adam Lui // @namespace https://github.com/adamlui -// @version 2026.6.17.1 +// @version 2026.6.27 // @license MIT // @icon https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@73594ea/assets/images/icons/widescreen-robot-emoji/icon48.png // @icon64 https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@73594ea/assets/images/icons/widescreen-robot-emoji/icon64.png @@ -254,7 +254,7 @@ // @match *://poe.com/* // @connect cdn.jsdelivr.net // @connect scriptcat.org -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/css.js/dist/css.min.js#sha256-zf9s8C0cZ/i+gnaTIUxa0+RpDYpsJVlyuV5L2q4KUdA= // @require https://cdn.jsdelivr.net/gh/adamlui/userscripts@ff2baba/assets/js/lib/dom.js/dist/dom.min.js#sha256-nTc2by3ZAz6AR7B8fOqjloJNETvjAepe15t2qlghMDo= // @require https://cdn.jsdelivr.net/npm/json5@2.2.3/dist/index.min.js#sha256-S7ltnVPzgKyAGBlBG4wQhorJqYTehj5WQCrADCKJufE= diff --git a/chatgpt/duckduckgpt/duckduckgpt.user.js b/chatgpt/duckduckgpt/duckduckgpt.user.js index e30621596..ced50f490 100644 --- a/chatgpt/duckduckgpt/duckduckgpt.user.js +++ b/chatgpt/duckduckgpt/duckduckgpt.user.js @@ -148,7 +148,7 @@ // @description:zu Yengeza izimpendulo ze-AI ku-DuckDuckGo (inikwa amandla yi-GPT-4o!) // @author KudoAI // @namespace https://kudoai.com -// @version 2026.6.17.1 +// @version 2026.6.27 // @license MIT // @icon https://cdn.jsdelivr.net/gh/KudoAI/duckduckgpt@e73859f/assets/images/icons/app/icon48.png // @icon64 https://cdn.jsdelivr.net/gh/KudoAI/duckduckgpt@e73859f/assets/images/icons/app/icon64.png @@ -194,7 +194,7 @@ // @connect duckduckgpt.com // @connect fanyi.sogou.com // @connect raw.githubusercontent.com -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha256-dppVXeVTurw1ozOPNE3XqhYmDJPOosfbKQcHyQSE58w= // @require https://cdn.jsdelivr.net/npm/json5@2.2.3/dist/index.min.js#sha256-S7ltnVPzgKyAGBlBG4wQhorJqYTehj5WQCrADCKJufE= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@130fe5e/assets/js/chatbot/components/buttons.js#sha256-1EdgOW0kQxjTTzgMz/4JScPw5i04gPsKVBXPA0xQWDg= diff --git a/chatgpt/googlegpt/googlegpt.user.js b/chatgpt/googlegpt/googlegpt.user.js index c64b4eddb..71b499a38 100644 --- a/chatgpt/googlegpt/googlegpt.user.js +++ b/chatgpt/googlegpt/googlegpt.user.js @@ -149,7 +149,7 @@ // @description:zu Yengeza izimpendulo ze-AI ku-Google Search (inikwa amandla yi-Google Gemma + GPT-4o!) // @author KudoAI // @namespace https://kudoai.com -// @version 2026.6.17.1 +// @version 2026.6.27 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22170.667%22%20height=%22170.667%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M82.346%20159.79c-18.113-1.815-31.78-9.013-45.921-24.184C23.197%20121.416%2017.333%20106.18%2017.333%2086c0-21.982%205.984-36.245%2021.87-52.131C55.33%2017.74%2069.27%2011.867%2091.416%2011.867c17.574%200%2029.679%203.924%2044.309%2014.363l8.57%206.116-8.705%208.705-8.704%208.704-4.288-3.608c-13.91-11.704-35.932-14.167-53.085-5.939-3.4%201.631-9.833%206.601-14.297%2011.045C44.669%2061.753%2040.95%2070.811%2040.95%2086c0%2014.342%203.594%2023.555%2013.26%2033.995%2019.088%2020.618%2048.46%2022.539%2070.457%204.608l5.333-4.348%2011.333%203.844c6.234%202.114%2011.54%203.857%2011.791%203.873.252.015-2.037%203.008-5.087%206.65-6.343%207.577-20.148%2017.217-30.493%2021.295-8.764%203.454-23.358%205.06-35.198%203.873zM92%2086.333V74.667h60.648l-11.41%2011.41-11.411%2011.41-18.914.257L92%2098z%22/%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22170.667%22%20height=%22170.667%22%3E%3Cstyle%3E:root%7B--fill:%23000%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--fill:%23fff%7D%7D%3C/style%3E%3Cpath%20fill=%22var(--fill)%22%20d=%22M82.346%20159.79c-18.113-1.815-31.78-9.013-45.921-24.184C23.197%20121.416%2017.333%20106.18%2017.333%2086c0-21.982%205.984-36.245%2021.87-52.131C55.33%2017.74%2069.27%2011.867%2091.416%2011.867c17.574%200%2029.679%203.924%2044.309%2014.363l8.57%206.116-8.705%208.705-8.704%208.704-4.288-3.608c-13.91-11.704-35.932-14.167-53.085-5.939-3.4%201.631-9.833%206.601-14.297%2011.045C44.669%2061.753%2040.95%2070.811%2040.95%2086c0%2014.342%203.594%2023.555%2013.26%2033.995%2019.088%2020.618%2048.46%2022.539%2070.457%204.608l5.333-4.348%2011.333%203.844c6.234%202.114%2011.54%203.857%2011.791%203.873.252.015-2.037%203.008-5.087%206.65-6.343%207.577-20.148%2017.217-30.493%2021.295-8.764%203.454-23.358%205.06-35.198%203.873zM92%2086.333V74.667h60.648l-11.41%2011.41-11.411%2011.41-18.914.257L92%2098z%22/%3E%3C/svg%3E// @compatible brave @@ -382,7 +382,7 @@ // @connect fanyi.sogou.com // @connect raw.githubusercontent.com // @connect scriptcat.org -// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.14.2/dist/chatgpt.min.js#sha256-HU+GlQoVScXwWgqL0tYKNSTLQhDsLkH3F6TSucijFWI= +// @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@4.15.0/dist/chatgpt.min.js#sha256-RglS1MscMHGDI7nq1v0OXEHoEw8stDxErRzSuILzCrQ= // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js#sha256-dppVXeVTurw1ozOPNE3XqhYmDJPOosfbKQcHyQSE58w= // @require https://cdn.jsdelivr.net/npm/json5@2.2.3/dist/index.min.js#sha256-S7ltnVPzgKyAGBlBG4wQhorJqYTehj5WQCrADCKJufE= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@130fe5e/assets/js/chatbot/components/buttons.js#sha256-1EdgOW0kQxjTTzgMz/4JScPw5i04gPsKVBXPA0xQWDg= @@ -390,7 +390,7 @@ // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@5045b1d/assets/js/chatbot/components/menus.js#sha256-13HZm6QRq/dxVbeR2RmeiYmovD8XP/FTwiercFv4nm8= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/replyBubble.js#sha256-hfm7kB1xZMyMT3pmMzmq6IdM6FWEjl9DSGtzUL1RZlI= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/components/tooltip.js#sha256-VaSjsJ9RE8pe5fXrRFdy1lBT73KGDAC2DUb4UWpy3T8= -// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f93a944/assets/js/chatbot/lib/api.js#sha256-PiRrvXkn06TU0GjMXy+ChXlR7ZwFXUDEw3eExyNA0M4= +// @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@0bab5a8/assets/js/chatbot/lib/api.js#sha256-lZDUcdki4/4DcKN3++xh67epyfVHUCTzMqukQn4Ff3I= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/feedback.js#sha256-VB/w0tQj4AeZ+XYgFXendWx9uUroimUgCjl4LHQchx4= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@beedf43/assets/js/chatbot/lib/log.js#sha256-++SE7OgyoPZhNJ+cLiqSraFJCs59qVUhRm0vr1dCznY= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@54d802d/assets/js/chatbot/lib/prompts.js#sha256-zQqAHklFJcr4O5DgBoI9fSRm4SDko8ra3vPjYCm2Z4Q= From b3890bc9c24a1fe696ec21007d47d72efdf54c57 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:17:40 -0700 Subject: [PATCH 08/26] Delete sync-bump-script-changes-to-ai-web.yml --- .../sync-bump-script-changes-to-ai-web.yml | 64 ------------------- 1 file changed, 64 deletions(-) delete mode 100644 .github/workflows/sync-bump-script-changes-to-ai-web.yml diff --git a/.github/workflows/sync-bump-script-changes-to-ai-web.yml b/.github/workflows/sync-bump-script-changes-to-ai-web.yml deleted file mode 100644 index 191cc0cbb..000000000 --- a/.github/workflows/sync-bump-script-changes-to-ai-web.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Sync utils/bump scripts to adamlui/ai-web-extensions - -on: - push: - branches: [master] - paths: [utils/bump/chatbots.js, utils/bump/resources.js] - -jobs: - sync-bump-scripts: - if: (github.repository == 'adamlui/userscripts') && !contains(github.event.head_commit.message, '[auto-sync') - runs-on: ubuntu-24.04 - permissions: - contents: read - env: - TZ: PST8PDT - - steps: - - - name: Checkout adamlui/userscripts - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - path: adamlui/userscripts - - - name: Checkout adamlui/ai-web-extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - token: ${{ secrets.REPO_SYNC_PAT }} - repository: adamlui/ai-web-extensions - path: adamlui/ai-web-extensions - - - name: Sync bump scripts - run: | - for filename in "chatbots.js" "resources.js" ; do - cp -f ${{ github.workspace }}/adamlui/userscripts/utils/bump/${filename} \ - ${{ github.workspace }}/adamlui/ai-web-extensions/utils/bump/${filename} - done - - - name: Escape backticks in commit msg - env: - COMMIT_MSG: ${{ github.event.head_commit.message }} - run: | - DELIM="EOF_$(uuidgen)" - echo "ESCAPED_MSG<<$DELIM" >> "$GITHUB_ENV" - echo "$COMMIT_MSG" | sed 's/`/\`/g' >> "$GITHUB_ENV" - echo "$DELIM" >> "$GITHUB_ENV" - - - name: Config committer - env: - GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - GPG_PRIVATE_ID: ${{ secrets.GPG_PRIVATE_ID }} - run: | - gpg --batch --import <(echo "$GPG_PRIVATE_KEY") - git config --global commit.gpgsign true - git config --global user.name "kudo-sync-bot" - git config --global user.email "auto-sync@kudoai.com" - git config --global user.signingkey "$GPG_PRIVATE_ID" - - - name: Push changes to adamlui/ai-web-extensions - run: | - cd ${{ github.workspace }}/adamlui/ai-web-extensions - git add utils/bump/chatbots.js utils/bump/resources.js - git commit -n -m "$ESCAPED_MSG ↞ [auto-sync from https://github.com/adamlui/userscripts/tree/master/utils/bump]" || true - git pull --rebase - git push From 1179a8b23faf73b28c58568b4f27f51838108790 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:22:05 -0700 Subject: [PATCH 09/26] Re-ordered/merged lines, revised/deleted comments --- utils/bump/chatbots.js | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/utils/bump/chatbots.js b/utils/bump/chatbots.js index 9cebfb1a3..5219deaa9 100644 --- a/utils/bump/chatbots.js +++ b/utils/bump/chatbots.js @@ -10,8 +10,6 @@ 'use strict' const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'] - - // Parse ARGS const args = process.argv.slice(2) const config = { cacheMode: args.some(arg => arg.startsWith('--cache')), @@ -22,23 +20,20 @@ noPush: args.some(arg => ['--no-push', '-np'].includes(arg)) } - // Import LIBS - const fs = require('fs'), // to read/write files - path = require('path'), // to manipulate paths - { execSync, spawnSync } = require('child_process') // for git cmds + const { execSync, spawnSync } = require('child_process'), + fs = require('fs'), + path = require('path') - // Init CACHE paths const cachePaths = { root: '.cache' } cachePaths.bumpUtils = path.join(__dirname, `${cachePaths.root}/bump.min.mjs`) cachePaths.chatbotPaths = path.join(__dirname, `${cachePaths.root}/chatbot-paths.json`) - // Import BUMP UTILS + // Import bump.mjs fs.mkdirSync(path.dirname(cachePaths.bumpUtils), { recursive: true }) fs.writeFileSync(cachePaths.bumpUtils, (await (await fetch( 'https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f63b650/utils/bump/lib/bump.min.mjs')).text())) const bump = await import(`file://${cachePaths.bumpUtils}`) ; fs.unlinkSync(cachePaths.bumpUtils) - // COLLECT chatbot userscripts bump.log.working(`\n${ config.cacheMode ? 'Collecting' : 'Searching for' } chatbot userscripts...\n`) let chatbotFiles = [] if (config.cacheMode) @@ -61,9 +56,7 @@ console.log('') } - // PROCESS each userscript - let filesUpdatedCnt = 0 - const bumpedChatbots = {} + let filesUpdatedCnt = 0 ; const bumpedChatbots = {} for (const chatbotFile of chatbotFiles) { const chatbotName = path.basename(chatbotFile, '.user.js') bump.log.working(`\nProcessing ${chatbotName}...\n`) @@ -79,13 +72,12 @@ } } - // LOG chatbots bumped const pluralSuffix = filesUpdatedCnt > 1 ? 's' : '' if (filesUpdatedCnt == 0) { - bump.log.info('Completed. No chatbots bumped.') ; process.exit(0) - } else bump.log.success(`${filesUpdatedCnt} chatbot${pluralSuffix} bumped!`) + bump.log.info('Completed. No chatbots bumped.') ; process.exit(0) + } else + bump.log.success(`${filesUpdatedCnt} chatbot${pluralSuffix} bumped!`) - // ADD/COMMIT/PUSH bump(s) if (config.commitMsg) { bump.log.working(`\nCommitting bump${pluralSuffix} to Git...\n`) try { @@ -107,8 +99,7 @@ bump.log.info(`TIP: Use --commit-msg "msg" or -m "msg" to commit changes.`) } - // Final SUMMARY log - console.log('') // line break + console.log('') Object.entries(bumpedChatbots).forEach(([chatbotFile, { oldVer, newVer }]) => console.log(` ± ${path.basename(chatbotFile)} ${ bump.colors.bw}v${oldVer}${bump.colors.nc} → ${bump.colors.bg}v${newVer}${bump.colors.nc}`) From db0dfa27c625906e2f81163e08042b8d466bbc11 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:24:23 -0700 Subject: [PATCH 10/26] Deleted comment --- utils/bump/chatbots.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/bump/chatbots.js b/utils/bump/chatbots.js index 5219deaa9..c956d96ff 100644 --- a/utils/bump/chatbots.js +++ b/utils/bump/chatbots.js @@ -84,7 +84,7 @@ execSync('git add ./*.user.js') bump.initKudoSyncBot() spawnSync('git', ['commit', '-n', '-m', config.commitMsg], { stdio: 'inherit', encoding: 'utf-8' }) - console.log('') // line break + console.log('') if (!config.noPush) { bump.log.working('\nPulling latest changes from remote to sync local repository...\n') execSync('git pull') From 651371b2cb704449ccedfaab9c347a2827e33743 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:35:41 -0700 Subject: [PATCH 11/26] Aligned w/ bump/userscript-requires.js --- utils/bump/chatbots.js | 82 ++++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/utils/bump/chatbots.js b/utils/bump/chatbots.js index c956d96ff..57f260797 100644 --- a/utils/bump/chatbots.js +++ b/utils/bump/chatbots.js @@ -2,56 +2,62 @@ // Bumps @version in chatbot userscripts -// NOTE: Pass --cache to use cachePaths.chatbotPaths for faster init +// NOTE: Pass --cache to use script.cache.paths.chatbotPaths for faster init // NOTE: Pass <--commit-msg|-m> "msg" to commit w/ msg // NOTE: Pass <--no-push|-np> to skip git push -(async () => { - 'use strict' +'use strict' - const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'] - const args = process.argv.slice(2) - const config = { - cacheMode: args.some(arg => arg.startsWith('--cache')), - commitMsg: (() => { - const msgIdx = args.findIndex(arg => ['--commit-msg', '-m'].includes(arg)) - return msgIdx != -1 && args[msgIdx +1] ? args[msgIdx +1].replace(/^"|"$/g, '') : null - })(), - noPush: args.some(arg => ['--no-push', '-np'].includes(arg)) - } +async function run() { const { execSync, spawnSync } = require('child_process'), fs = require('fs'), path = require('path') - const cachePaths = { root: '.cache' } - cachePaths.bumpUtils = path.join(__dirname, `${cachePaths.root}/bump.min.mjs`) - cachePaths.chatbotPaths = path.join(__dirname, `${cachePaths.root}/chatbot-paths.json`) + const args = process.argv.slice(2) + + const script = { + cache: { paths: { root: '.cache' }, refs: {} }, + chatbots: ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], + config: { + cache: args.some(arg => arg.startsWith('--cache')), + commitMsg: (() => { + const idx = args.findIndex(arg => ['--commit-msg', '-m'].includes(arg)) + return idx != -1 && args[idx +1] ? args[idx +1].replace(/^"|"$/g, '') : null + })(), + noPush: args.some(arg => ['--no-push', '-np'].includes(arg)) + }, + urls: { bumpmjs: 'https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions/utils/bump/lib/bump.min.mjs' } + } + script.cache.paths.bumpmjs = path.join(process.cwd(), `${script.cache.paths.root}/bump.min.mjs`) + script.cache.paths.chatbotPaths = path.join(process.cwd(), `${script.cache.paths.root}/chatbot-paths.json`) + const { cache: { paths: cachePaths }} = script // Import bump.mjs - fs.mkdirSync(path.dirname(cachePaths.bumpUtils), { recursive: true }) - fs.writeFileSync(cachePaths.bumpUtils, (await (await fetch( - 'https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@f63b650/utils/bump/lib/bump.min.mjs')).text())) - const bump = await import(`file://${cachePaths.bumpUtils}`) ; fs.unlinkSync(cachePaths.bumpUtils) + fs.mkdirSync(path.dirname(cachePaths.bumpmjs), { recursive: true }) + fs.writeFileSync(cachePaths.bumpmjs, (await (await fetch(script.urls.bumpmjs)).text())) + const bump = await import(`file://${cachePaths.bumpmjs}`) + fs.unlinkSync(cachePaths.bumpmjs) - bump.log.working(`\n${ config.cacheMode ? 'Collecting' : 'Searching for' } chatbot userscripts...\n`) + bump.log.working(`\n${ script.config.cache ? 'Collecting' : 'Searching for' } chatbot userscripts...\n`) let chatbotFiles = [] - if (config.cacheMode) + if (script.config.cache) try { // create missing cache file fs.mkdirSync(path.dirname(cachePaths.chatbotPaths), { recursive: true }) const fd = fs.openSync(cachePaths.chatbotPaths, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_RDWR) bump.log.info(`Cache file missing. Generating ${cachePaths.chatbotPaths}...\n`) - for (const chatbot of chatbots) + for (const chatbot of script.chatbots) chatbotFiles.push(...(await bump.findFileBySuffix({ suffix: `${chatbot}.user.js` }))) fs.writeFileSync(fd, JSON.stringify(chatbotFiles, undefined, 2), 'utf-8') bump.log.success(`\nCache file created @ ${cachePaths.chatbotPaths}`) } catch (err) { // use existing cache file chatbotFiles = JSON.parse(fs.readFileSync(cachePaths.chatbotPaths, 'utf-8')) - console.log(chatbotFiles) ; console.log('') + console.log(chatbotFiles) + console.log('') } else { // use bump.findFileBySuffix() - for (const chatbot of chatbots) + for (const chatbot of script.chatbots) chatbotFiles.push(...(await bump.findFileBySuffix({ suffix: `${chatbot}.user.js` }))) console.log('') } @@ -60,9 +66,9 @@ for (const chatbotFile of chatbotFiles) { const chatbotName = path.basename(chatbotFile, '.user.js') bump.log.working(`\nProcessing ${chatbotName}...\n`) - const bumpResult = bump.bumpVersion({ format: 'dateVer', filePath: chatbotFile }) - if (bumpResult) { - const { oldVer, newVer } = bumpResult + const result = bump.bumpVersion({ format: 'dateVer', filePath: chatbotFile }) + if (result) { + const { oldVer, newVer } = result bump.log.success(`${chatbotName} version bumped!\n`) filesUpdatedCnt++ bumpedChatbots[chatbotFile] = { oldVer, newVer } @@ -74,26 +80,29 @@ const pluralSuffix = filesUpdatedCnt > 1 ? 's' : '' if (filesUpdatedCnt == 0) { - bump.log.info('Completed. No chatbots bumped.') ; process.exit(0) + bump.log.info('Completed. No chatbots bumped.') + process.exit(0) } else bump.log.success(`${filesUpdatedCnt} chatbot${pluralSuffix} bumped!`) - if (config.commitMsg) { + if (script.config.commitMsg) { bump.log.working(`\nCommitting bump${pluralSuffix} to Git...\n`) try { execSync('git add ./*.user.js') bump.initKudoSyncBot() - spawnSync('git', ['commit', '-n', '-m', config.commitMsg], { stdio: 'inherit', encoding: 'utf-8' }) + spawnSync('git', ['commit', '-n', '-m', script.config.commitMsg], { stdio: 'inherit', encoding: 'utf-8' }) console.log('') - if (!config.noPush) { + if (!script.config.noPush) { bump.log.working('\nPulling latest changes from remote to sync local repository...\n') execSync('git pull') bump.log.working(`\nPushing bump${pluralSuffix} to Git...\n`) execSync('git push') } bump.log.success(`Success! ${filesUpdatedCnt} chatbot${pluralSuffix} updated/committed${ - !config.noPush ? '/pushed' : '' } to GitHub`) - } catch (err) { bump.log.error('Git operation failed: ' + err.message) } + !script.config.noPush ? '/pushed' : '' } to GitHub`) + } catch (err) { + bump.log.error(`Git operation failed: ${err.message}`) + } } else { bump.log.working(`\nNo commit message provided. Skipping git operations.`) bump.log.info(`TIP: Use --commit-msg "msg" or -m "msg" to commit changes.`) @@ -104,5 +113,8 @@ console.log(` ± ${path.basename(chatbotFile)} ${ bump.colors.bw}v${oldVer}${bump.colors.nc} → ${bump.colors.bg}v${newVer}${bump.colors.nc}`) ) +} + +if (require.main == module) run() -})() +module.exports = { run } From 6a13cb40bcb4557ee3e96ecbf5b5d3c120772e32 Mon Sep 17 00:00:00 2001 From: kudo-sync-bot Date: Sat, 27 Jun 2026 03:47:07 -0700 Subject: [PATCH 12/26] =?UTF-8?q?Deleted=20Technodon=20buttons=20=E2=86=9E?= =?UTF-8?q?=20[auto-sync=20from=20https://github.com/adamlui/ai-web-extens?= =?UTF-8?q?ions/tree/main/duckduckgpt]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chatgpt/duckduckgpt/docs/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/chatgpt/duckduckgpt/docs/README.md b/chatgpt/duckduckgpt/docs/README.md index fb30c17eb..c9cda2ced 100644 --- a/chatgpt/duckduckgpt/docs/README.md +++ b/chatgpt/duckduckgpt/docs/README.md @@ -527,7 +527,6 @@ When disabled, a ChatGPT account is required to fetch responses. If OpenAI API i ## 📣 Social links -[![](https://img.shields.io/mastodon/follow/111075576869014999?domain=https%3A%2F%2Ftechnodon.org&style=social "Follow @kudoai on Mastodon (technodon.org)")](https://technodon.org/@kudoai?utm_source=duckduckgpt&utm_content=github_shield) [![](https://img.shields.io/badge/Follow%20company%2fkudo--ai-151-blue?logo=linkedin&style=social "Follow company/kudo-ai on LinkedIn")](https://linkedin.com/company/kudo-ai) [![](https://img.shields.io/github/followers/kudoai?label=Follow%20%40kudoai&style=social "Follow @kudoai on GitHub")](https://github.com/KudoAI) [![](https://img.shields.io/youtube/channel/subscribers/UCdwQlbPJW3RbkLcHh_DGb0g?label=Follow%20%40kudoailabs&style=social "Follow @kudoailabs on YouTube")](https://www.youtube.com/@kudoailabs?sub_confirmation=1) From c28e50498c7a9672666babf4f584d34de1645e3e Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:49:48 -0700 Subject: [PATCH 13/26] Deleted `dev:chatbot`, condensed `bump:chatbots-n` --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2f0a54855..4e598aeb7 100644 --- a/package.json +++ b/package.json @@ -34,15 +34,14 @@ "scripts": { "prepare": "husky", "dev:chatbots": "node utils/dev/chatbots", - "dev:chatbot": "npm run dev:chatbots", "lint": "eslint . --cache", "lint:all": "eslint .", "lint:fix": "eslint . --fix --cache", "lint:fix-all": "eslint . --fix", "build:js": "minify-js assets/js dist --relative-output", "bump:chatbots": "node utils/bump/chatbots --cache", - "bump:chatbots-nc": "node utils/bump/chatbots --cache --no-commit", - "bump:chatbots-np": "node utils/bump/chatbots --cache --no-push", + "bump:chatbots-nc": "npm run bump:chatbots --no-commit", + "bump:chatbots-np": "npm run bump:chatbots --no-push", "bump:res": "node utils/bump/userscript-requires --cache" }, "devDependencies": { From deb2cb4bd29453026839f41669366aac6df61bb6 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 03:59:30 -0700 Subject: [PATCH 14/26] Added alias scripts --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 4e598aeb7..faaa23744 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "scripts": { "prepare": "husky", "dev:chatbots": "node utils/dev/chatbots", + "dev:chatbot": "npm run dev:chatbots", "lint": "eslint . --cache", "lint:all": "eslint .", "lint:fix": "eslint . --fix --cache", @@ -42,6 +43,9 @@ "bump:chatbots": "node utils/bump/chatbots --cache", "bump:chatbots-nc": "npm run bump:chatbots --no-commit", "bump:chatbots-np": "npm run bump:chatbots --no-push", + "bump:chatbot": "npm run bump:chatbots", + "bump:chatbot-nc": "npm run bump:chatbots-nc", + "bump:chatbot-np": "npm run bump:chatbots-np", "bump:res": "node utils/bump/userscript-requires --cache" }, "devDependencies": { From d3e110b35c04b2aa1f4fd2f616f95bf79d8be322 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:02:22 -0700 Subject: [PATCH 15/26] Re-ordered/grouped const inits --- utils/dev/chatbots.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 3de2ca3d0..85b1b4dd5 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -5,17 +5,14 @@ (() => { 'use strict' - const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'] - - // Import LIBS - const { resolve, dirname } = require('path'), + const { dirname, resolve } = require('path'), spawn = require('cross-spawn') - // Init UI COLORS - const br = '\x1b[91m', // bright red + const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], + br = '\x1b[91m', // bright red nc = '\x1b[0m' // no color - // Init PATHS + // Init paths const repoRoot = (dir => { while (dir != '/' && !require('fs').existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) @@ -23,7 +20,7 @@ chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`) ).filter(path => require('fs').existsSync(path)) - // OPEN files + // Open files spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) })() From 60c60632086c2ffd38869f792b4772f02f4d8f0f Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:04:11 -0700 Subject: [PATCH 16/26] Condensed script --- utils/dev/chatbots.js | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 85b1b4dd5..a4170c03a 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -6,21 +6,15 @@ 'use strict' const { dirname, resolve } = require('path'), - spawn = require('cross-spawn') - - const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], - br = '\x1b[91m', // bright red - nc = '\x1b[0m' // no color - - // Init paths + spawn = require('cross-spawn'), + chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], + br = '\x1b[91m', // bright red + nc = '\x1b[0m' // no color const repoRoot = (dir => { while (dir != '/' && !require('fs').existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) - const filePaths = chatbots.map( - chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`) - ).filter(path => require('fs').existsSync(path)) - - // Open files + const filePaths = chatbots.map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) + .filter(path => require('fs').existsSync(path)) spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) })() From 985e0092afd20ef81daca951b5593250425bc9a3 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:04:50 -0700 Subject: [PATCH 17/26] Deleted line break --- utils/dev/chatbots.js | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index a4170c03a..fc7002f0d 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -4,7 +4,6 @@ (() => { 'use strict' - const { dirname, resolve } = require('path'), spawn = require('cross-spawn'), chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], From c8c3df5a35b5f6f671f6a315b54cfc41f6dd810a Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:05:55 -0700 Subject: [PATCH 18/26] Moved `use strict` to top level --- utils/dev/chatbots.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index fc7002f0d..496982256 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -2,8 +2,9 @@ // Opens KudoAI chatbots in VS Code +'use strict' + (() => { - 'use strict' const { dirname, resolve } = require('path'), spawn = require('cross-spawn'), chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], From 4cf5dcd64a6edca4e4bde36cfeacb18821775bcc Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:08:06 -0700 Subject: [PATCH 19/26] Wrapped/exported main as `run()` --- utils/dev/chatbots.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 496982256..d7ffac3c3 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -4,7 +4,7 @@ 'use strict' -(() => { +function run() { const { dirname, resolve } = require('path'), spawn = require('cross-spawn'), chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], @@ -17,4 +17,8 @@ .filter(path => require('fs').existsSync(path)) spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) -})() +} + +if (require.main == module) run() + +module.exports = { run } From b690d41f01cc02a409448b68d7fd49f3a0c1cb8f Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:13:14 -0700 Subject: [PATCH 20/26] Reverted scripts to IIFEs --- utils/bump/userscript-requires.js | 8 ++------ utils/dev/chatbots.js | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/utils/bump/userscript-requires.js b/utils/bump/userscript-requires.js index 67efe39bd..dda589d23 100644 --- a/utils/bump/userscript-requires.js +++ b/utils/bump/userscript-requires.js @@ -8,7 +8,7 @@ 'use strict' -async function run() { +(async () => { const fs = require('fs'), path = require('path') @@ -181,8 +181,4 @@ async function run() { `\n${ urlsUpdatedCnt ? 'Success! ' : '' }${ urlsUpdatedCnt } resource(s) bumped across ${filesUpdatedCnt} file(s).` ) -} - -if (require.main == module) run() - -module.exports = { run } +})() diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index d7ffac3c3..496982256 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -4,7 +4,7 @@ 'use strict' -function run() { +(() => { const { dirname, resolve } = require('path'), spawn = require('cross-spawn'), chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], @@ -17,8 +17,4 @@ function run() { .filter(path => require('fs').existsSync(path)) spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) -} - -if (require.main == module) run() - -module.exports = { run } +})() From 975d400a8ae9f1543ce5d53582997d2780386dda Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:13:57 -0700 Subject: [PATCH 21/26] Reverted script to IIFE --- utils/bump/chatbots.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/utils/bump/chatbots.js b/utils/bump/chatbots.js index 57f260797..a6047f010 100644 --- a/utils/bump/chatbots.js +++ b/utils/bump/chatbots.js @@ -8,7 +8,7 @@ 'use strict' -async function run() { +(async () => { const { execSync, spawnSync } = require('child_process'), fs = require('fs'), @@ -113,8 +113,4 @@ async function run() { console.log(` ± ${path.basename(chatbotFile)} ${ bump.colors.bw}v${oldVer}${bump.colors.nc} → ${bump.colors.bg}v${newVer}${bump.colors.nc}`) ) -} - -if (require.main == module) run() - -module.exports = { run } +})() From 3337e6127c81c591c619e878c2ff36d7b91f9cd3 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:15:20 -0700 Subject: [PATCH 22/26] Split lines --- utils/dev/chatbots.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 496982256..7381e598e 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -13,7 +13,8 @@ const repoRoot = (dir => { while (dir != '/' && !require('fs').existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) - const filePaths = chatbots.map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) + const filePaths = chatbots + .map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) .filter(path => require('fs').existsSync(path)) spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) From d0f3de806cb5831404b2379cddebb75f0062fe42 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:17:19 -0700 Subject: [PATCH 23/26] Added `fs` init --- utils/dev/chatbots.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 7381e598e..c029030d5 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -6,16 +6,16 @@ (() => { const { dirname, resolve } = require('path'), + fs = require('fs'), spawn = require('cross-spawn'), chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], br = '\x1b[91m', // bright red nc = '\x1b[0m' // no color const repoRoot = (dir => { - while (dir != '/' && !require('fs').existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir - })(__dirname) + while (dir != '/' && !fs.existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) const filePaths = chatbots .map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) - .filter(path => require('fs').existsSync(path)) + .filter(path => fs.existsSync(path)) spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) })() From dfa48c239264c67b2eaf522dca4c5fedf502285d Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:22:15 -0700 Subject: [PATCH 24/26] Rid color vars, re-ordered inits --- utils/dev/chatbots.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index c029030d5..da8e67ef5 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -5,17 +5,16 @@ 'use strict' (() => { - const { dirname, resolve } = require('path'), - fs = require('fs'), - spawn = require('cross-spawn'), - chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], - br = '\x1b[91m', // bright red - nc = '\x1b[0m' // no color + const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], + { dirname, resolve } = require('path'), + fs = require('fs'), + spawn = require('cross-spawn') const repoRoot = (dir => { while (dir != '/' && !fs.existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) const filePaths = chatbots .map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) .filter(path => fs.existsSync(path)) + spawn('code', ['-r', repoRoot, ...filePaths], { stdio: 'inherit' }) - .on('error', err => console.error(`${br}Failed to open VS Code: ${err.message}${nc}`)) + .on('error', err => console.error(`Failed to open VS Code: ${err.message}`)) })() From 1646a94facb0df9b0797dfd3a7d37141bc6a2af4 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 04:23:47 -0700 Subject: [PATCH 25/26] Split line up --- utils/dev/chatbots.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index da8e67ef5..04c3ea462 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -10,7 +10,9 @@ fs = require('fs'), spawn = require('cross-spawn') const repoRoot = (dir => { - while (dir != '/' && !fs.existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) ; return dir })(__dirname) + while (dir != '/' && !fs.existsSync(resolve(dir, 'package.json'))) dir = dirname(dir) + return dir + })(__dirname) const filePaths = chatbots .map(chatbot => resolve(repoRoot, `chatgpt/${chatbot}/${chatbot}.user.js`)) .filter(path => fs.existsSync(path)) From 9cbceccc02fac22bc69079fed321c953e5ce4f53 Mon Sep 17 00:00:00 2001 From: Adam Lui Date: Sat, 27 Jun 2026 06:05:23 -0700 Subject: [PATCH 26/26] Inserted `;` --- utils/bump/chatbots.js | 2 +- utils/bump/userscript-requires.js | 2 +- utils/dev/chatbots.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/bump/chatbots.js b/utils/bump/chatbots.js index a6047f010..e3bf93d57 100644 --- a/utils/bump/chatbots.js +++ b/utils/bump/chatbots.js @@ -8,7 +8,7 @@ 'use strict' -(async () => { +;(async () => { const { execSync, spawnSync } = require('child_process'), fs = require('fs'), diff --git a/utils/bump/userscript-requires.js b/utils/bump/userscript-requires.js index dda589d23..b2f8908b5 100644 --- a/utils/bump/userscript-requires.js +++ b/utils/bump/userscript-requires.js @@ -8,7 +8,7 @@ 'use strict' -(async () => { +;(async () => { const fs = require('fs'), path = require('path') diff --git a/utils/dev/chatbots.js b/utils/dev/chatbots.js index 04c3ea462..223847aef 100644 --- a/utils/dev/chatbots.js +++ b/utils/dev/chatbots.js @@ -4,7 +4,7 @@ 'use strict' -(() => { +;(() => { const chatbots = ['amazongpt', 'bravegpt', 'duckduckgpt', 'googlegpt'], { dirname, resolve } = require('path'), fs = require('fs'),