mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-28 07:32:52 +00:00
The dock stands in for the composer, so the composer's own visibility decides: an observer on the element, not two pixel thresholds that knew where neither the composer nor the footer was. Measured on the export at five widths, the old rule showed both at 1440 and 768 and neither at 1024, 870 and 390. The field turns the browser's native chrome off. It cleared the border and the background and a bare input still painted a rectangle inside the pill around it. Products move under the brand, which now wears the chevron every other trigger wears, and the header keeps one row of destinations. The mode rail goes with them. @hanzogui/shell 8.3.6 carries the brand chevron and a footer whose mark closes the row instead of opening it.
61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
/**
|
|
* The example project every drawn surface on this site runs.
|
|
*
|
|
* ONE project, so a reader who meets the apex and then a product page is
|
|
* looking at the same work twice rather than at two inventions. Its parts are
|
|
* the ones anybody would name in their own org — a gateway, a payments API, a
|
|
* checkout — and none of them is a measurement: no latency, no throughput, no
|
|
* price, no customer. A state is a word a console prints; a sentence is a
|
|
* sentence somebody would write.
|
|
*/
|
|
|
|
/** A turn in the session, and who took it. */
|
|
export interface Turn {
|
|
from: 'you' | 'enso'
|
|
text: string
|
|
}
|
|
|
|
/** The session, as it stands when the reader arrives. Plain, finished sentences. */
|
|
export const SESSION: Turn[] = [
|
|
{ from: 'you', text: 'Add rate limiting to the payments API.' },
|
|
{
|
|
from: 'enso',
|
|
text: 'Read 14 files. The limiter belongs in the gateway, not the handler — one place, every route.',
|
|
},
|
|
{
|
|
from: 'enso',
|
|
text: 'Wrote gateway/limit.go and a test at 100 req/min per key. Tests pass.',
|
|
},
|
|
]
|
|
|
|
/** A service in the project: what it is called, what the console says, what it does. */
|
|
export interface Service {
|
|
name: string
|
|
state: 'Ready' | 'Building'
|
|
note: string
|
|
}
|
|
|
|
/** What the project has running. */
|
|
export const SERVICES: Service[] = [
|
|
{ name: 'gateway', state: 'Ready', note: 'Every request enters here, so the limiter does too.' },
|
|
{ name: 'payments-api', state: 'Ready', note: 'The service the session above is changing.' },
|
|
{ name: 'checkout-web', state: 'Building', note: 'A build is running from the last commit on main.' },
|
|
{ name: 'docs-site', state: 'Ready', note: 'Static, published by the same pipeline as the rest.' },
|
|
]
|
|
|
|
/** A line of a shell transcript: its sigil, and what it says. */
|
|
export type Line = [sigil: string, text: string]
|
|
|
|
/**
|
|
* The same work at a prompt.
|
|
*
|
|
* `hanzo` reads an unrecognised first word as a task for the coding agent, so
|
|
* the transcript asks in English and invents no subcommand.
|
|
*/
|
|
export const SHELL: Line[] = [
|
|
['$', 'hanzo'],
|
|
['>', 'deploy the gateway to staging'],
|
|
['·', 'reading the project'],
|
|
['✓', 'gateway is on staging'],
|
|
]
|