Make the crawlable index actually reachable, and fix deep-link photo URLs - #127
Merged
Conversation
The block that gives non-JS crawlers the portfolio and team was wrapped in <noscript>, which loses it to exactly the audience it was written for. Extraction pipelines routinely strip <noscript> as non-content, and Googlebot indexes the rendered DOM, which drops <noscript> entirely once JS runs. So the one artifact meant to make the terminal legible to crawlers was invisible to most of them. It is now an offscreen div using the .visually-hidden class already in styles.css, whose own comment notes that display:none gets discounted. The text is present in both the raw HTML and the rendered DOM, and sighted visitors still never see it. Verified in a browser against a built dist/: the element is in the rendered DOM, clips to 1x1, adds no scroll overflow, and a plain text extraction of the page now returns all 6318 characters. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The fallback text concatenated the image path onto document.location.href, so any fragment in the URL landed in the middle of the result. Arriving at /#whois-avidan rendered "[ Photo: https://root.vc/#whois-avidanimages/ avidan.png ]". Resolving against document.baseURI drops the fragment the way URL resolution is supposed to. Matters more now that deep links are becoming the primary way to reach specific content. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4 tasks
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.
Two fixes on the way to making root.vc's terminal legible to crawlers without a static mirror.
The crawlable index was invisible to the crawlers it was written for
The homepage block listing every portfolio company and team member was wrapped in
<noscript>. That loses it twice over:<noscript>as non-content. An LLM crawler running one of those sees an empty page.<noscript>content is absent from it once JS runs.So the one artifact meant to make the terminal readable was skipped by most of its intended audience.
It's now an offscreen div using the
.visually-hiddenclass already incss/styles.css— whose own comment notes thatdisplay:nonegets discounted by search engines. The text sits in both the raw HTML and the rendered DOM, and sighted visitors still never see it.Photo fallback URLs broke on deep-link arrivals
js/ascii-art.jsbuilt the fallback text by concatenating ontodocument.location.href, so any fragment ended up in the middle of the path. Landing on/#whois-avidanrendered:Resolving against
document.baseURIdrops the fragment the way URL resolution is meant to. This matters more now that deep links are becoming the main way to reach specific content.Verification
npm test— 313/313 passing, including a new test that locks in the no-<noscript>/no-display:nonedecision so it doesn't get "tidied" backdist/and served it in a browser:#text-versionis in the rendered DOM, clips to 1×1, adds no scroll overflow, and a plain text extraction of the page returns all 6318 characters/#whois-avidanbefore and after — terminal visually identical, photo URL now correct🤖 Generated with Claude Code