Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions website/layouts/LayoutDefault.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ export default function LayoutDefault({ children }: { children: React.ReactNode
<NavMark />
<div className={layout.navigationLinks} ref={navigationRef}>
<NavItem href="/blog">Blog</NavItem>
<NavItem href="/assistent">Assistant</NavItem>
<NavItem href="/quantum">Quantum</NavItem>
<NavItem href="/lab">Lab</NavItem>
<OwnerNavLinks />
Expand Down
7 changes: 6 additions & 1 deletion website/pages/index/+Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,15 @@ export default function Page() {
description="Game theory and economics, quantum physics, and what I learned building on the web."
link="/blog"
/>
<Card
title="Assistant"
description="An AI assistant that actually looks things up — pay as you go with stablecoins, no account."
link="/assistent"
/>
<Card title="Quantum" description="Tutorials and notes on quantum, AMO and more." link="/quantum" />
<Card
title="Lab"
description="AI image generation, chat assistant, and blockchain-based payments — experiments running on Optimism and Base."
description="AI image generation and blockchain-based payments — experiments running on Optimism and Base."
link="/lab"
/>
</CardList>
Expand Down
6 changes: 0 additions & 6 deletions website/pages/lab/+Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ const LabPage: React.FC = () => {
link="/imagegen"
/>

<Card
title="AI Assistant"
description="Chat with an AI assistant. Pay per message with x402 batch-settlement stablecoin payment channels — no prepaid balance."
link="/assistent"
/>

<Card
title="x402"
description="Pay per request, verified and settled on-chain — no accounts, no signup. This site runs all three roles: buyer, seller, and the facilitator connecting them."
Expand Down
6 changes: 4 additions & 2 deletions website/test/territory.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ describe("territoryFor", () => {
expect(territoryFor("/quantum/qml/3")).toBe("voice");
});

it("gives the lab and everything reachable from it one hue", () => {
// The point of the map: following a card from /lab must not change colour.
it("gives the tool pages one hue — the lab's children and the nav-promoted assistant", () => {
// The point of the map: following a card from /lab must not change colour. The
// assistant moved out of the lab into the nav, but it is a tool page all the
// same, so it keeps the explore hue rather than the writing blue.
for (const path of ["/lab", "/imagegen", "/x402", "/assistent", "/agent-onboarding"]) {
expect(territoryFor(path), path).toBe("explore");
}
Expand Down
8 changes: 5 additions & 3 deletions website/utils/territory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
* Two page territories:
*
* voice — brand blue writing and navigation: home, blog, quantum notes, articles
* explore — purple the lab: the experiments, and every tool reachable from it
* explore — purple the tool pages: the lab and everything reachable from it,
* plus the assistant, which has its own nav entry
*
* Quantum is `voice`, not `explore`: it is writing, the same as the blog. And the lab's
* Quantum is `voice`, not `explore`: it is writing, the same as the blog. The lab's
* children (`/imagegen`, `/x402`, …) carry the lab's hue — they *are* its contents, so
* following a card from `/lab` must not change colour.
* following a card from `/lab` must not change colour. The assistant is not a lab
* child anymore, but it is a tool page all the same, so it keeps the same hue.
*
* Orange is deliberately absent here. It means value exchange — collect, support, tip, pay
* — which is a property of *actions*, not of pages, so it lives on buttons only. Using it
Expand Down
Loading