Commit 9df8fd9
Migrate from markdown-link-check to lychee (#2219)
## Summary
Replaces the broken `markdown-link-check` setup with `lychee` for link
checking.
## Problem
The previous setup using `Wandalen/wretry.action` wrapper with
`tcort/markdown-link-check` was **silently failing** due to a Node.js 21
ESM compatibility bug (see #2217). The tool crashed on every file, but
the crash message didn't match the error detection pattern, so CI
falsely reported "All links are good!" - while actually checking zero
links.
## Solution
Migrate to [lychee](https://github.com/lycheeverse/lychee), a Rust-based
link checker that:
- ✅ **Built-in retry for ALL transient errors** (502, 503, 504) - what
PR #1899 wanted but couldn't achieve
- ✅ **Proper exit codes** (2 = link failures, not relying on string
matching)
- ✅ **Faster execution** (~12 seconds vs 4+ minutes for 550 links)
- ✅ **Result caching** for faster repeated runs
- ✅ **No Docker/Node.js compatibility issues**
## Changes
- Replace `.github/markdown-link-check-config.json` with `.lychee.toml`
- Update workflow to use `lycheeverse/lychee-action@v2`
- Add `.lycheecache` to `.gitignore`
## Test Plan
- [x] CI link checker workflow runs successfully
- [x] lychee correctly identifies broken links (will show ~26 errors
from known broken URLs that need separate fixes)
## Note
This PR will **fail CI** because it correctly detects ~26 broken links
that the previous setup missed. Those links need to be fixed in a
separate PR (like #2216).
Fixes #2217
🤖 Generated with [Claude Code](https://claude.com/claude-code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Chores**
* Migrated CI markdown-link checking to Lychee with caching and updated
workflow steps.
* Removed the previous markdown-link-check configuration and added a new
Lychee configuration.
* Updated ignore rules to stop tracking Lychee cache artifacts.
* **Documentation**
* Rewrote and refreshed release notes and migration docs; updated
tutorial links and formatting.
* Clarified contributing guidance, changelog entry, and project listing
content.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Alexey Romanov <alexeyr-ci2@users.noreply.github.com>1 parent 93ab7df commit 9df8fd9
File tree
9 files changed
+237
-209
lines changed- .github
- workflows
- react_on_rails_pro
- docs/release-notes
9 files changed
+237
-209
lines changedThis file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | | - | |
| 26 | + | |
| 27 | + | |
28 | 28 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
45 | 44 | | |
46 | 45 | | |
47 | 46 | | |
48 | | - | |
| 47 | + | |
49 | 48 | | |
50 | 49 | | |
51 | 50 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
| 105 | + | |
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| |||
0 commit comments