Files
hanzo.ai/app/(marketing)/ide/view.tsx
zeekay 11265a21fd Highlight every code sample with shiki in the code theme
Code on hanzo.ai was plain monospace: 285 blocks across 200 pages, one of
them hand-inked in four greys. components/code now renders each sample
at build with shiki and @hanzo/ui's codeTheme (Dracula dark, GitHub
Light light), every colour written as light-dark() so the page's
color-scheme picks it, on the theme's own ground. The page ships the
coloured spans and no highlighter; e2e/gates/code.spec.ts holds both.

A client page that shows code is split into a server page.tsx that owns
the sample and a client view.tsx that takes the highlighted node:
ProductLanding's code.source, the blockchain pages' codeExamples, the
models kit Sample, the guest-key card, realtime, analytics, payments,
sdks and the rest. Transcripts, agent prompts and ASCII diagrams are not
code and keep their markup.

Takes @hanzo/ui 8.27.83 for codeTheme and @hanzo/design 0.5.35 with it,
regenerates app/gui.css for the new theme keys, and lowers the raw-colour
allowance to 58: the samples' literal inks are gone.
2026-10-05 01:31:58 -07:00

96 lines
4.5 KiB
TypeScript

'use client'
import type { ReactNode } from 'react'
import {
Activity,
Blocks,
Brain,
Cloud,
Code2,
GitBranch,
Lock,
Network,
Puzzle,
Rocket,
ShieldCheck,
Users,
} from 'lucide-react'
import { ProductLanding } from '@/components/product/ProductLanding'
import { ProductFooter } from '@/components/products/ProductFooter'
const IDE = 'https://ide.hanzo.ai'
const GITHUB = 'https://github.com/hanzoai/ide'
const CONSOLE = 'https://platform.hanzo.ai'
export default function IdePage({ source }: { source: ReactNode }) {
return (
<>
<ProductLanding
badge="Hanzo IDE ยท Developers"
badgeIcon={Code2}
title="An IDE that remembers your codebase"
lede="The editor you already know, on a Rust engine that is ours. The agent keeps a memory of your project across sessions, reads the call graph before it changes a line, and runs every tool in a sandbox."
ctas={[
{ label: 'Open the IDE', href: IDE, icon: Rocket },
{ label: 'View on GitHub', href: GITHUB },
]}
note={{ icon: Cloud, text: 'Open source (Apache 2.0). The VS Code workbench on a Rust engine. Open VSX extensions run as they are.' }}
what={{
eyebrow: 'What is Hanzo IDE',
title: 'The workbench you know, on an engine that is ours',
sub: 'The editor surface, the extension model and the keybindings are the ones you use today. Everything under them is Rust: the agent loop, the memory, the indexing, the sandbox.',
pillars: [
{
icon: Brain,
title: 'It remembers',
body: 'Engram gives the agent a memory that lasts past the conversation: what happened, what is true about the project, and how things are done here. Memories are consolidated, decay when unused, and come back when they matter.',
},
{
icon: Network,
title: 'It understands structure',
body: 'Tree-sitter indexing gives the agent the call graph, the type hierarchy and the impact radius of a change, so it reads the code that matters instead of every file.',
},
{
icon: ShieldCheck,
title: 'It is safe by default',
body: 'Tool calls run in a sandbox. Secrets live in the keychain, sensitive fields are encrypted at rest, and every action lands in an audit trail. All of it is in the core, none of it is a plugin.',
},
],
}}
code={{
head: { eyebrow: 'Get started', title: 'Open it in the browser, or build it on your machine' },
lang: 'bash',
source,
ctas: [
{ label: 'Open the IDE', href: IDE, icon: Rocket },
{ label: 'View on GitHub', href: GITHUB },
],
}}
features={{
eyebrow: 'Capabilities',
title: 'What the window carries',
items: [
{ icon: Brain, title: 'Three tiers of memory', body: 'A sensory buffer for the turn, working memory for the session, and a long-term graph of episodic, semantic and procedural memory that survives a restart.' },
{ icon: Blocks, title: 'Recall that ranks', body: 'Full-text and vector search run together across every store, fused and reranked, and every answer arrives with a quality score.' },
{ icon: Users, title: 'Agent profiles', body: 'Name what an agent may touch, which model it runs on, and how far it may go on its own. Switch profiles per task.' },
{ icon: Activity, title: 'An activity feed', body: 'Every tool call, every decision and every approval the agent made, in real time, in one column.' },
{ icon: Puzzle, title: 'Open VSX extensions', body: 'The extensions you rely on install from Open VSX and run natively. Language servers, themes, keymaps.' },
{ icon: Lock, title: 'Ten layers of security', body: 'PII detection, field-level encryption, sandbox enforcement, keychain integration and audit trails, built into the engine.' },
],
}}
finalCta={{
icon: GitBranch,
title: 'Open the IDE. It already knows the way around.',
sub: 'Your project, its call graph, and what the agent learned last week, in one window.',
buttons: [
{ label: 'Open the IDE', href: IDE, icon: Rocket },
{ label: 'GitHub', href: GITHUB },
{ label: 'Hanzo Cloud', href: CONSOLE },
],
}}
/>
<ProductFooter slug="ide" name="IDE" />
</>
)
}