Skip to content

GRO-685-3 Remove jekyll/ruby - #1282

Merged
bpander merged 6 commits into
gro-684-2-migrate-remaining-jekyll-pagesfrom
gro-685-remove-jekyll
Aug 17, 2026
Merged

GRO-685-3 Remove jekyll/ruby#1282
bpander merged 6 commits into
gro-684-2-migrate-remaining-jekyll-pagesfrom
gro-685-remove-jekyll

Conversation

@bpander

@bpander bpander commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

GRO-685

PR env: https://gro-685-remove-jekyll.dkkh35gceu2po.amplifyapp.com/docs/latest/

Final removal of jekyll/ruby from docs repo.

All remaining jekyll/ruby code should be removed and anything that relied on it should use astro/bun.

@bpander bpander self-assigned this Aug 12, 2026
@@ -0,0 +1,159 @@
// usage: bun script/check-broken-links.ts [output-file]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We were using htmlproofer for this, but that's ruby. This is a (mostly) vibe-coded replacement for it. It's suspiciously fast, but in my testing, it catches the same broken links that htmlproofer would, and the output can still be piped into script/analyze_links.clj (e.g. for .github/workflows/update-docs-base-bun.yml).

One difference is it doesn't check opengraph links:

// OpenGraph is intentionally NOT checked even though it was previously with
// htmlproofer. It was essentially an expensive no-op since OG images are
// served over cdn and external urls are skipped.
const CHECK_OPEN_GRAPH = false;

@bpander
bpander marked this pull request as ready for review August 12, 2026 18:20
@bpander
bpander requested a review from a team August 12, 2026 18:20

@gantoreno gantoreno left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving to not block, just one minor item re: link checking. Nice work!

Comment thread script/check-broken-links.ts Outdated
Comment on lines +40 to +41
const TAG_RE =
/<(?:a|link|img|script|iframe|source|track)\b[^>]*?\s(?:href|src)="([^"]*)"[^>]*>/gi;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like this only targets double quoted attributes, but there are many occurrences of single-quoted links in the _site output which are probably getting skipped

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

S-tier catch. Addressed in 0bb1601.

Comment on lines +106 to +109
// Existence only depends on the path; fragments/query strings don't
// point at separate files.
const urlPath = rawUrl.split("#")[0].split("?")[0];
if (!urlPath) continue; // pure fragment/query, e.g. href="#section"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing HTMLProofer did was fragment validation, fine to go if we're intentionally skipping this as a minimal replacement, but it's a parity difference worth knowing

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First of all great catch. But also, apparently script/analyze_links.clj has been ignoring hash errors. There are currently 27 internal hash errors, 28 if you count a regression I introduced that I just noticed because of this comment. The 28th is some markdown syntax I wasn't aware of:

## Conditional and Boolean logic operators {#conditional-operators}

used to set the ID, now it's just output as text. So it's definitely worth checking, but fixing the existing errors is maybe outside the scope of this stack.

TLDR Maybe I fix that one regression now and create a linear issue to add fragment validation + fix the remaining (existing) 27?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error 28 fixed in #1286

Linear issue for remaining 27 + adding functionality GRO-818: Validate hash fragments in broken link checker

Comment thread script/local_dev.clj Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is now wrapping astro commands, and we can now go through Bun for that, do we need to keep this?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think we can remove it (done in 4632687). I don't think this script has worked for a while (maybe ever).

@iethree iethree left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So good ❤️ 💎

Comment thread amplify.yml
- gem install bundler -v 2.5.22
- bundle _2.5.22_ config set --local path 'vendor/bundle'
- bundle _2.5.22_ install
- sudo yum install -y rsync

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❤️

@bpander
bpander force-pushed the gro-685-remove-jekyll branch 2 times, most recently from efcf7e1 to 3893dbd Compare August 17, 2026 13:54
@bpander
bpander merged commit a46e1bb into master Aug 17, 2026
1 check passed
@bpander
bpander deleted the gro-685-remove-jekyll branch August 17, 2026 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants