Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 30 additions & 18 deletions .github/workflows/validate-links-on-push-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,55 @@ on:
branches:
- master
schedule:
- cron: "17 6 * * 1"
- cron: "17 6 * * *"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: links-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
lychee:
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Restore lychee cache
id: restore-cache
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
- name: Validate links
id: links
continue-on-error: true
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
restore-keys: cache-lychee-
lycheeVersion: v0.24.2
args: >-
--config .lychee.toml --verbose --no-progress
README.md CONTRIBUTING.md
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

- name: Validate links
- name: Wait before retry
if: steps.links.outcome == 'failure'
run: sleep 15

- name: Retry failed link check
if: steps.links.outcome == 'failure'
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
with:
lycheeVersion: v0.24.2
args: >-
"*.md" "**/*.md"
--verbose --no-progress --include-mail
--include-fragments --index-files README.md --exclude "#readme"
--accept 200..299,300..399,403,429
--cache --max-cache-age 3d
--exclude api\.star-history\.com --exclude browser\.qq\.com --exclude ghostbrowser\.com --exclude openuserjs\.org --exclude stargazers
--config .lychee.toml --verbose --no-progress
README.md CONTRIBUTING.md
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

- name: Save lychee cache
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
- name: Upload link report
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: .lycheecache
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
name: link-check-report
path: lychee/out.md
retention-days: 14
8 changes: 0 additions & 8 deletions .gitlab-ci.yml

This file was deleted.

21 changes: 21 additions & 0 deletions .lychee.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
cache = false
timeout = 30
max_retries = 3
retry_wait_time = 5
max_concurrency = 8
include_mail = true
include_fragments = "anchor-only"
index_files = ["README.md"]

# Bot challenges and rate limits need manual verification, not automatic removal.
accept = ["200..=399", "403", "429"]

# Existing exceptions for generated badges, blocked hosts, and generated anchors.
exclude = [
'#readme',
'api\.star-history\.com',
'browser\.qq\.com',
'ghostbrowser\.com',
'openuserjs\.org',
'stargazers',
]
12 changes: 12 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@ npm run lint

Also open every added or changed link and verify that the install link serves the intended userscript.

### Automated link checks

The required `lychee` check scans `README.md` and `CONTRIBUTING.md` on pull requests, pushes to `master`, and daily at 06:17 UTC. Each run checks links without a persistent cache and saves its report in the Actions job summary and `link-check-report` artifact. A failed scan is retried once after 15 seconds; a second failure blocks the check. Maintainers can also use **Run workflow** under **Actions > Validate links**.

To reproduce the check locally with Lychee 0.24.2:

```sh
lychee --config .lychee.toml README.md CONTRIBUTING.md
```

See `.lychee.toml` for timeouts and exclusions. HTTP 403 and 429 responses are tolerated because bot protection and rate limits do not prove a link is dead; verify those links manually. A passing check does not prove that a userscript works or is safe to install.

## Pull request checklist

- Change is focused on one script or one related improvement.
Expand Down
38 changes: 0 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ Userscripts can improve your browsing experience, and open a lot of possibilitie
- [Discord](#-discord)
- [Display](#-display)
- [DuckDuckGo](#-duckduckgo)
- [Fandom](#-fandom)
- [GitHub](#-github)
- [Google](#-google)
- [Instagram](#-instagram)
Expand Down Expand Up @@ -721,22 +720,6 @@ Userscripts can be used w/ the following browsers:
</blockquote>
</details>

<details> <!-- ChatGPT Auto-Continue -->
<summary><a href="https://codeberg.org/adamlui/ai-web-extensions/src/branch/main/chatgpt-auto-continue/#readme">ChatGPT Auto-Continue</a> - Automatically continue generating answers when ChatGPT responses get cut-off.</summary><br>
<blockquote>
<a href="https://codeberg.org/adamlui/ai-web-extensions/src/branch/main/chatgpt-auto-continue/#readme">
<img width=600 src="https://cdn.staticdelivr.com/gl/adamlui/chatgpt-auto-continue/3d5b5b0/assets/images/tiles/marquee/tile625x250.png"></a>
</blockquote>
<blockquote>
💾 <a href="https://codeberg.org/adamlui/ai-web-extensions/raw/branch/main/chatgpt-auto-continue/greasemonkey/chatgpt-auto-continue.user.js">
Install</a> /
📖 <a href="https://codeberg.org/adamlui/ai-web-extensions/src/branch/main/chatgpt-auto-continue/docs/#readme">
Readme</a> /
🐛 <a href="https://codeberg.org/adamlui/ai-web-extensions/issues">
Report bug</a>
</blockquote>
</details>

<details> <!-- ChatGPT Auto Refresh -->
<summary><a href="https://codeberg.org/adamlui/chatgpt-auto-refresh/#readme">ChatGPT Auto Refresh</a> - Auto-sends background requests to keep sessions fresh & prevent Cloudflare checks + network errors.</summary><br>
<blockquote>
Expand Down Expand Up @@ -956,27 +939,6 @@ Userscripts can be used w/ the following browsers:
</blockquote>
</details>

### <picture><source type="image/png" media="(prefers-color-scheme: dark)" srcset="https://www.fandom.com/favicon.ico"><img height=18 src="https://www.fandom.com/favicon.ico"></picture> Fandom

<details> <!-- Fandom Focus -->
<summary><a href="https://greasyfork.org/scripts/528895-fandom-focus">Fandom Focus</a> - Removes all distractions and unnecessary clutter from Fandom.</summary><br>
<blockquote>
<a href="https://greasyfork.org/scripts/528895-fandom-focus">
<img width=720 src="https://raw.githubusercontent.com/samerop/fandom-focus/main/after.png"></a>
</blockquote>
<blockquote>
💾 <a href="https://update.greasyfork.org/scripts/528895/Fandom%20Focus.user.js">
Install</a> /
📖 <a href="https://greasyfork.org/scripts/528895-fandom-focus">
Readme</a> /
📢 <a href="https://greasyfork.org/scripts/528895-fandom-focus/feedback">
Discuss</a> /
🐛 <a href="https://greasyfork.org/scripts/528895-fandom-focus/feedback">
Report bug</a>
</blockquote>
</details>


### <picture><source type="image/png" media="(prefers-color-scheme: dark)" srcset="https://cdn.jsdelivr.net/gh/awesome-scripts/awesome-userscripts@f11c95f/assets/images/icons/sites/github/white/icon32.png"><img height=17 src="https://cdn.jsdelivr.net/gh/awesome-scripts/awesome-userscripts@f11c95f/assets/images/icons/sites/github/black/icon32.png"></picture> GitHub

<details> <!-- GitHub Commit Labels -->
Expand Down
Loading