From faf71b568667d75fe2895cfd6ade85eb0e75f490 Mon Sep 17 00:00:00 2001 From: Kane Hsieh Date: Mon, 3 Aug 2026 12:19:09 -0700 Subject: [PATCH 1/5] Add crawlable static mirror for SEO and LLM discovery The terminal renders all content via JavaScript on keystroke, so search engines and LLM crawlers previously saw ~200 characters of hidden text and a single indexable URL. scripts/build-pages.js now generates a plain-HTML mirror from the same config/*.js data at build time: /about/, /jobs/, /portfolio/(+63 companies), /team/(+7 people), robots.txt, sitemap.xml, llms.txt, and llms-full.txt. The terminal itself is visually unchanged. Also extracts firm-level facts (address, fund size, thesis) into config/firm.js so the terminal and static pages read one source of truth, fixes the canonical/og:url host mismatch (www vs apex) and relative og:image paths, and adds a `www` terminal command pointing at the mirror. Co-Authored-By: Claude Sonnet 5 --- README.md | 32 + about/index.html | 167 ++++ config/commands.js | 50 +- config/firm.js | 54 ++ config/help.js | 1 + css/pages.css | 227 ++++++ css/styles.css | 15 + index.html | 211 ++++- jobs/index.html | 103 +++ js/app.bundle.js | 2 +- llms-full.txt | 552 +++++++++++++ llms.txt | 88 +++ package.json | 2 + portfolio/adept/index.html | 114 +++ portfolio/allspice/index.html | 114 +++ portfolio/aperture/index.html | 114 +++ portfolio/apolloshield/index.html | 114 +++ portfolio/breakpoint/index.html | 114 +++ portfolio/cady/index.html | 114 +++ portfolio/cape/index.html | 114 +++ portfolio/chargelab/index.html | 114 +++ portfolio/creator/index.html | 114 +++ portfolio/crux/index.html | 114 +++ portfolio/daily/index.html | 116 +++ portfolio/determinate/index.html | 114 +++ portfolio/digichem/index.html | 114 +++ portfolio/dusty/index.html | 114 +++ portfolio/esper/index.html | 116 +++ portfolio/feather/index.html | 114 +++ portfolio/fudge/index.html | 114 +++ portfolio/genalpha/index.html | 114 +++ portfolio/hash/index.html | 116 +++ portfolio/hunch/index.html | 114 +++ portfolio/iasql/index.html | 114 +++ portfolio/illoca/index.html | 114 +++ portfolio/index.html | 723 +++++++++++++++++ portfolio/instance/index.html | 114 +++ portfolio/instrumental/index.html | 114 +++ portfolio/integrated/index.html | 114 +++ portfolio/kayhan/index.html | 114 +++ portfolio/kodra/index.html | 114 +++ portfolio/latent/index.html | 114 +++ portfolio/loopwork/index.html | 114 +++ portfolio/mashgin/index.html | 114 +++ portfolio/meroxa/index.html | 118 +++ portfolio/nautilus/index.html | 114 +++ portfolio/nordsense/index.html | 114 +++ portfolio/ntopology/index.html | 114 +++ portfolio/nullify/index.html | 114 +++ portfolio/okteto/index.html | 116 +++ portfolio/particle/index.html | 116 +++ portfolio/patterns/index.html | 114 +++ portfolio/privacy_dynamics/index.html | 116 +++ portfolio/quilter/index.html | 114 +++ portfolio/radical/index.html | 114 +++ portfolio/righthook/index.html | 114 +++ portfolio/ruby/index.html | 114 +++ portfolio/seam/index.html | 114 +++ portfolio/seismic/index.html | 114 +++ portfolio/sensable/index.html | 114 +++ portfolio/shaper/index.html | 114 +++ portfolio/sixwheel/index.html | 114 +++ portfolio/skycatch/index.html | 114 +++ portfolio/stellar/index.html | 114 +++ portfolio/sublayer/index.html | 114 +++ portfolio/subtrace/index.html | 114 +++ portfolio/superconductive/index.html | 116 +++ portfolio/supertokens/index.html | 114 +++ portfolio/thruwave/index.html | 114 +++ portfolio/topologic/index.html | 114 +++ portfolio/tortuga/index.html | 114 +++ portfolio/trieve/index.html | 114 +++ portfolio/trucklabs/index.html | 114 +++ portfolio/versatile/index.html | 114 +++ portfolio/vibe_robotics/index.html | 114 +++ portfolio/wildtype/index.html | 114 +++ portfolio/zed/index.html | 114 +++ robots.txt | 71 ++ scripts/build-assets.js | 22 +- scripts/build-pages.js | 1050 +++++++++++++++++++++++++ sitemap.xml | 231 ++++++ team/avidan/index.html | 121 +++ team/ben/index.html | 121 +++ team/chrissy/index.html | 121 +++ team/index.html | 169 ++++ team/kane/index.html | 121 +++ team/laelah/index.html | 121 +++ team/lee/index.html | 121 +++ team/zodi/index.html | 121 +++ tests/build-pages.test.js | 633 +++++++++++++++ welcome.htm | 44 +- 91 files changed, 12439 insertions(+), 55 deletions(-) create mode 100644 about/index.html create mode 100644 config/firm.js create mode 100644 css/pages.css create mode 100644 jobs/index.html create mode 100644 llms-full.txt create mode 100644 llms.txt create mode 100644 portfolio/adept/index.html create mode 100644 portfolio/allspice/index.html create mode 100644 portfolio/aperture/index.html create mode 100644 portfolio/apolloshield/index.html create mode 100644 portfolio/breakpoint/index.html create mode 100644 portfolio/cady/index.html create mode 100644 portfolio/cape/index.html create mode 100644 portfolio/chargelab/index.html create mode 100644 portfolio/creator/index.html create mode 100644 portfolio/crux/index.html create mode 100644 portfolio/daily/index.html create mode 100644 portfolio/determinate/index.html create mode 100644 portfolio/digichem/index.html create mode 100644 portfolio/dusty/index.html create mode 100644 portfolio/esper/index.html create mode 100644 portfolio/feather/index.html create mode 100644 portfolio/fudge/index.html create mode 100644 portfolio/genalpha/index.html create mode 100644 portfolio/hash/index.html create mode 100644 portfolio/hunch/index.html create mode 100644 portfolio/iasql/index.html create mode 100644 portfolio/illoca/index.html create mode 100644 portfolio/index.html create mode 100644 portfolio/instance/index.html create mode 100644 portfolio/instrumental/index.html create mode 100644 portfolio/integrated/index.html create mode 100644 portfolio/kayhan/index.html create mode 100644 portfolio/kodra/index.html create mode 100644 portfolio/latent/index.html create mode 100644 portfolio/loopwork/index.html create mode 100644 portfolio/mashgin/index.html create mode 100644 portfolio/meroxa/index.html create mode 100644 portfolio/nautilus/index.html create mode 100644 portfolio/nordsense/index.html create mode 100644 portfolio/ntopology/index.html create mode 100644 portfolio/nullify/index.html create mode 100644 portfolio/okteto/index.html create mode 100644 portfolio/particle/index.html create mode 100644 portfolio/patterns/index.html create mode 100644 portfolio/privacy_dynamics/index.html create mode 100644 portfolio/quilter/index.html create mode 100644 portfolio/radical/index.html create mode 100644 portfolio/righthook/index.html create mode 100644 portfolio/ruby/index.html create mode 100644 portfolio/seam/index.html create mode 100644 portfolio/seismic/index.html create mode 100644 portfolio/sensable/index.html create mode 100644 portfolio/shaper/index.html create mode 100644 portfolio/sixwheel/index.html create mode 100644 portfolio/skycatch/index.html create mode 100644 portfolio/stellar/index.html create mode 100644 portfolio/sublayer/index.html create mode 100644 portfolio/subtrace/index.html create mode 100644 portfolio/superconductive/index.html create mode 100644 portfolio/supertokens/index.html create mode 100644 portfolio/thruwave/index.html create mode 100644 portfolio/topologic/index.html create mode 100644 portfolio/tortuga/index.html create mode 100644 portfolio/trieve/index.html create mode 100644 portfolio/trucklabs/index.html create mode 100644 portfolio/versatile/index.html create mode 100644 portfolio/vibe_robotics/index.html create mode 100644 portfolio/wildtype/index.html create mode 100644 portfolio/zed/index.html create mode 100644 robots.txt create mode 100644 scripts/build-pages.js create mode 100644 sitemap.xml create mode 100644 team/avidan/index.html create mode 100644 team/ben/index.html create mode 100644 team/chrissy/index.html create mode 100644 team/index.html create mode 100644 team/kane/index.html create mode 100644 team/laelah/index.html create mode 100644 team/lee/index.html create mode 100644 team/zodi/index.html create mode 100644 tests/build-pages.test.js diff --git a/README.md b/README.md index ab908b0c..5ddaf10d 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ Who needs a website when you have a terminal. - instagram: instagram account - git: this repo - github: all repos + - locate: physical address + - www: plain-text version of this site - test: do not use - other: try your favorite linux commands @@ -89,6 +91,36 @@ That build now: - copies and minifies the xterm vendor assets - bundles the app boot/runtime code into `js/app.bundle.js` - emits a minified lazy-load asset for the RickRoll animation + - generates the static mirror (see below) + +## The static mirror +The terminal renders its content only when someone types a command, so search +engines and LLM crawlers see an empty page. `scripts/build-pages.js` renders the +same `config/*.js` data as plain HTML at real URLs: + +``` +/about/ /jobs/ /portfolio/ /portfolio// /team/ /team// +robots.txt sitemap.xml llms.txt llms-full.txt +``` + +**`config/*.js` is the only source of truth — never edit the generated files.** +Changing a portfolio description regenerates that company's page, both indexes, +the sitemap, the llms files, and the `