fjord-uiv0.1.0 / generation 1, "sounding"

fjord-ui

A centralized definition of how every fjord surface looks and behaves, consumed as a dependency rather than copied. This gallery is the reference, and it is written in the same framework, the same renderer and the same asset pipeline as the consumer, so a component that renders correctly here renders correctly at /r.

fj-btnThe control. Three variants, six states.fj-indexThe repository index row, hanging off the rail.fj-repoheadThe repository header: title, pills, tab bar.fj-diffMachine output, presented rather than prettified.LoadingThe busy phrase, and the system's second sanctioned motion.TokensThe contract every rule above is written against.
Light

the section header

COMP-3: the only section header in the system. Uppercase, tracked, --fj-size-1, --fj-muted, an optional count in --fj-accent, and a hairline that runs to the right margin. INV-EARN names the job that hairline does: it ties the left and right edges of the column together, and it is the only trailing rule in the system.

Repositories20

Files at HEAD

Recent commitsloading

the prose exception

TYPE-2: the one proportional face, opted into per BLOCK, on paragraphs a person wrote in sentences. TYPE-3 applies inward: a sha, a path or a ref inside such a paragraph reverts to mono at 0.94em, which is what makes the distinction legible rather than decorative. Nothing at /r renders a prose block yet (spec open question 5); the rule ships first so the first one that does cannot ship shas set in a sans.

The login slice is deliberately read-only. It establishes a session and a signed-in identity, and it stops there: no write path reaches the daemon, and no route added in this change mutates anything. That boundary is the point of the slice, and it is what makes the canary safe to run against production data.

The cookie work lives in src/app.rs, which now imports RouterBuilderCookieExt and sets CACHE_CONTROL and VARY on every authenticated response. See e6d13d5 for the whole change, and feat/accounts-s1-login for the branch.

Everything a machine said stays in mono, inside the paragraph.
Dark

the section header

COMP-3: the only section header in the system. Uppercase, tracked, --fj-size-1, --fj-muted, an optional count in --fj-accent, and a hairline that runs to the right margin. INV-EARN names the job that hairline does: it ties the left and right edges of the column together, and it is the only trailing rule in the system.

Repositories20

Files at HEAD

Recent commitsloading

the prose exception

TYPE-2: the one proportional face, opted into per BLOCK, on paragraphs a person wrote in sentences. TYPE-3 applies inward: a sha, a path or a ref inside such a paragraph reverts to mono at 0.94em, which is what makes the distinction legible rather than decorative. Nothing at /r renders a prose block yet (spec open question 5); the rule ships first so the first one that does cannot ship shas set in a sans.

The login slice is deliberately read-only. It establishes a session and a signed-in identity, and it stops there: no write path reaches the daemon, and no route added in this change mutates anything. That boundary is the point of the slice, and it is what makes the canary safe to run against production data.

The cookie work lives in src/app.rs, which now imports RouterBuilderCookieExt and sets CACHE_CONTROL and VARY on every authenticated response. See e6d13d5 for the whole change, and feat/accounts-s1-login for the branch.

Everything a machine said stays in mono, inside the paragraph.