Repository navigation
Categorise the products into a nav menu, and give the hero its gateway graph - #30
Conversation
… for it The seven products were written down twice, once as SHIPPED in app/page.tsx and once as two hand-written cards above it, while the navbar carried nothing but a hash link to that section. lib/products.js now holds the catalog, the category each product is filed under, and the rule about which repos are public enough to count stars. Products becomes a full width menu with one column per category. Every link points at a destination that already exists, so this adds no pages, and the mobile panel gets the same grouping without the hover.
The hero was a headline, a paragraph and two buttons on empty space, with nothing under it but more text. components/HeroGraph.tsx puts agents on the left, one gateway in the middle, tools on the right, and a field of particles carrying requests through it. The landing rows pick up the same categories the nav menu uses, so the menu and the page are one map rather than two. three loads through next/dynamic with ssr: false and stays out of the first load, which is still 95.4 kB for /. Colours resolve from the design package custom properties and follow the theme toggle. prefers-reduced-motion draws a single static frame, and the loop stops while the tab is hidden or the canvas is scrolled out of view. Two traps are worth naming, both commented at the point they bite. THREE.Color cannot parse oklch() and reading fillStyle back does not normalise it, so tokens are resolved by painting one pixel and reading it. Float32BufferAttribute copies the array it is handed, so writes to the array you passed in never reach the GPU.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…uct split The hero sold "open-source tools you can keep", which names a licence rather than a product. It now names the three layers: a gateway for the credentials agents hold, a context layer for what they read twice, and routing for the models they call. The star clause and the reproducibility promise are untouched, and the hero still states no tool count. The section under it split on "In focus" and "Also shipped", an axis that said which two products got the month and nothing about what any of them do. It runs on the same categories as the nav menu now, each opening with a line on what that layer is for, and the install commands sit with the cards they install. The category lines live in lib/products.js beside the catalog, with a test that fails when a category has none.
|
Added a third commit that reworks the copy rather than the structure. The hero was selling a licence ("open-source tools you can keep, all MIT and The section below dropped the "In focus" / "Also shipped" split. That axis said |
focusProducts and restProducts were left behind when the section moved to filtering inside each category group. Nothing rendered them any more, and the two tests that did were testing the helpers rather than the rule. The rule is still worth a test, so the focus assertion now reads PRODUCTS directly and says why it matters: a third card breaks the two-column grid, and a focus product with no tags renders an empty tag strip.
Closes #28. Closes #29.
The seven products lived in two hand-maintained lists and the navbar could only
offer a hash link to the section.
lib/products.jsis now the one catalog, witha category per entry, and both the navbar menu and the landing rows read it. The
same file holds the rule about which repos are public enough to count, which used
to be a comment in
app/page.tsxnext to a hardcoded array.The hero gets the picture it was describing: agents on the left, one gateway in
the middle, tools on the right, and particles carrying requests through it.
threeloads throughnext/dynamicwithssr: false, so it is not in the firstload. Colours come from the design package and follow the theme toggle,
prefers-reduced-motiongets one static frame, and the loop stops on a hidden tabor a canvas out of view.
Checked in headless Chromium at 1440 and 390 wide, both themes: menu opens on
hover and click, closes on Escape and outside click, mobile panel groups the same
way, and the scene renders in light and dark.
No new pages and no new destinations. Everything in the menu points where it
already pointed.