Repository navigation
Conversation
A first-time reader who followed a link out to the platform (the free sign-up, the login) or to GitHub lost the guide: those pages have their own navigation, so Back doesn't lead back. Links inside the docs stay in the same tab, because Back already returns to the same spot on the page (checked at desktop and phone widths). A rehype plugin, src/integrations/external-links.mjs, gives every link to another host target="_blank", rel="noopener noreferrer", the class kbc-external and a visually hidden "(opens in a new tab)". It covers markdown links, raw HTML blocks in .md pages and JSX <a> in .mdx pages. Prereqs.astro passes its set:html strings through the same helper, so "Create a free one" opens in a new tab too. custom.css draws a small ↗ after those links; screen readers skip it and read the hidden text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Review of the first commit found that Pagefind indexed the hidden "(opens in a new tab)": it showed up in search excerpts and pulled pages up for "new tab". The hidden span now carries data-pagefind-ignore, and the three test queries rank the same as on help.keboola.com. A link inside a heading gets no hidden text, because the anchor id and the table-of-contents entry come from the heading's text. A link that holds only an image (the Cursor badge on /ai/mcp-server/) gets no arrow, which wrapped onto its own line under the image. rel is "noopener" only, so Keboola's own sites still see the docs as the referrer. The string helper also handles attributes in any order and inline raw <a> tags whose closing tag sits in another node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 6, 2026
astro.config.mjs conflicted on one line: this branch imports external-links.mjs and main now imports pagefind-titles.mjs in the same place. Both imports stay. The build is clean (373 pages, pagefind-titles writes 372 rows), and all 1941 external content links still get the hidden hint with data-pagefind-ignore, 1940 of them the arrow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
astro.config.mjs conflicted in the markdown block: main added remarkStripComments to remarkPlugins, and this branch added rehypePlugins: [externalLinks] next to it. Both stay. The build is clean (374 pages), no VERIFY comment reaches the HTML, and all 1940 external content links get the hidden hint with data-pagefind-ignore, 1939 of them the arrow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A first-time reader went through Build an app locally on 4 October and suggested opening links in new tabs, or some other way back to the place in the guide. I checked where readers actually lose their place.
What changed
src/integrations/external-links.mjsis a rehype plugin, added undermarkdown.rehypePluginsinastro.config.mjs(MDX inherits it). Every link to a host other than help.keboola.com gets:target="_blank"andrel="noopener";kbc-external;data-pagefind-ignore, so site search neither indexes it nor shows it in excerpts.relhas nonoreferrer, so Keboola's sign-up wizard still sees that a visitor came from the docs..mdpages (a hand-written<table>, for example), and JSX<a>in.mdxpages. An inline raw<a>tag in a paragraph gets the new tab and the arrow, but no hidden text, because its closing tag arrives separately. A link that already has atargetkeeps it.src/components/Prereqs.astropasses itsset:htmlstrings through the same helper, because component HTML never reaches a rehype plugin. So "Create a free one" in the Before you start box opens in a new tab too.custom.cssdraws a small ↗ after these links withcontent: '\2197' / ''. Screen readers skip the arrow and read the hidden text. Browsers that don't support that syntax fall back to a plaincontent: '\2197'.Checks
check-cli-referencefinds 0 issues,audit-phase20 broken links and 0 missing images, anddocs-link-redirect-check --site0 blockers.index.html, not the 404 page) found 1941 external links inside page content (.sl-markdown-content).data-pagefind-ignore.target.Not changed
src/pages/404.astro), which isn't built from markdown.https://help.keboola.com/…ones.This touches site code, so the review bot will route it to a person.
🤖 Generated with Claude Code