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

fj-index

One repository, one line. The rail runs behind every node and stops half a row short at each end, so the line terminates on a node rather than on a cut (RAIL-2). The node vocabulary names FORM, never meaning: the same filled disc reads as "pushed this week" on an index and "on the current ref" in a log (RAIL-3).

Light

rest

Four rungs of the ladder on one line: name --fj-primary size-4 medium, sha --fj-faint size-2, subject --fj-muted size-3, date --fj-faint size-2 aligned to the right margin (COMP-4). Single-line, because nothing here is a second independent fact (DENS-1, DENS-2).

Repositories4

  • repo-web22b34a3Merge pull request 'accounts: fjord-web login, read-only'2026-07-30
  • repo-enginea012e30fold: correct the Cv::Conflict base rustdoc2026-07-28
  • repo-storage36ff9f7storage: add Backend::delete for object reclamation2026-07-26
  • fjord-docs5e7a119docs: consolidate the backup claims into one page2026-07-23

the node vocabulary

Filled, half-weight, hollow, and a square rotated 45 degrees. Four forms, one geometry. The merge form is a SHAPE rather than a fourth colour, so the vocabulary survives a monochrome print and a colour-blind reader (COLOR-5). Adding a fifth reading means adding it to the spec's table first (RAIL-4). RAIL-3 states the middle step as "filled at 45%"; it is drawn in --fj-primary-half rather than in 45% opacity, because the node carries meaning and COLOR-6's 3:1 floor has no exception list.

  • filled
  • half-weight
  • hollow
  • merge
  • merge, filled

hover

The row lifts to --fj-surface, the node fills to --fj-primary, and the link gains an underline. Never geometry, never size, never position.

  • repo-enginea012e30pointer only; a hover must not move anything2026-07-28

focus-visible

The ring is on the row's only tab stop, the name. Tab into the list below to see it: this one is live rather than forced, because a focus ring you cannot reach with the keyboard is the thing DNA-5 is about.

cursor (j / k)

The row washes to --fj-select-wash and the node gains a --fj-marker ring in --fj-primary. It lives in the rail's own column, so keyboard navigation adds no new vocabulary (RAIL-5, STATE-CURSOR-3). It is carried by data-cursor rather than by :focus-visible, so a reader who clicked and then pressed j still sees where they are (STATE-CURSOR-4).

  • repo-enginea012e30the next key acts on this row2026-07-28
  • fjord-rfc322cccdand this one is merely next to it2026-07-28

cursor and hover together

STATE-PREC-2: the two must stay distinguishable when both apply. The cursor is carried by the node's ring, hover by the surface lift, so a row that is both reads as both.

active

The background deepens one surface step. No transform (STATE-ACTIVE).

disabled

Every rung collapses to --fj-faint and the name stops being a link: the affordance is removed, not painted over. The node's border drops from --fj-mark to --fj-rule, because a disabled row's node encodes nothing and a boundary that encodes nothing has no contrast floor (COLOR-6).

  • repo-archived30ede92still clears 4.5:1; disabled is not illegible2026-07-25

truncated

Single-line, ellipsis at the end, full value in title, never wraps and never reflows the row (DENS-4). Narrow this window to watch the subject give way while the name, the sha and the date hold their columns.

  • repo-control-plane-asyncd27c798Merge pull request 'accounts: wire the KeyEvent key-set into the advance gate (Slice A)' (#8) from feat/keyevent-advance-gate into main2026-07-30

tall row

DENS-2: --fj-row-tall only where a second independent fact cannot be truncated onto the first line. A commit row qualifies; an index row does not, which is why the specimen here is a commit. DENS-6: nothing is ever taller than this.

  • Merge pull request 'accounts: fjord-web login, read-only (Slice S1)' (#1)Stephen Way / 2026-07-30 / 2 parents
  • accounts: fjord-web login (Slice S1)Stephen Way / 2026-07-30 / 24 files changed

loading

aria-busy on the region and a word in the eyebrow's count slot. The rail still renders, so the page does not change shape when the rows arrive.

Repositoriesloading

  • Loading repositories

empty

One left-aligned line in --fj-muted, on the content column, with the rail rendered as a single node stub. Never centred (DNA-4), never illustrated, never an emoji (AP-10).

Repositories0

  • No repositories yet. Push one with a git client.

error

A hairline region with a --fj-del border, a SIGN GLYPH, and the message in --fj-ink. The sign is a required parameter, so an error rendered through this binding cannot lose its non-colour carrier (COLOR-5, A11Y-5).

Dark

rest

Four rungs of the ladder on one line: name --fj-primary size-4 medium, sha --fj-faint size-2, subject --fj-muted size-3, date --fj-faint size-2 aligned to the right margin (COMP-4). Single-line, because nothing here is a second independent fact (DENS-1, DENS-2).

Repositories4

  • repo-web22b34a3Merge pull request 'accounts: fjord-web login, read-only'2026-07-30
  • repo-enginea012e30fold: correct the Cv::Conflict base rustdoc2026-07-28
  • repo-storage36ff9f7storage: add Backend::delete for object reclamation2026-07-26
  • fjord-docs5e7a119docs: consolidate the backup claims into one page2026-07-23

the node vocabulary

Filled, half-weight, hollow, and a square rotated 45 degrees. Four forms, one geometry. The merge form is a SHAPE rather than a fourth colour, so the vocabulary survives a monochrome print and a colour-blind reader (COLOR-5). Adding a fifth reading means adding it to the spec's table first (RAIL-4). RAIL-3 states the middle step as "filled at 45%"; it is drawn in --fj-primary-half rather than in 45% opacity, because the node carries meaning and COLOR-6's 3:1 floor has no exception list.

  • filled
  • half-weight
  • hollow
  • merge
  • merge, filled

hover

The row lifts to --fj-surface, the node fills to --fj-primary, and the link gains an underline. Never geometry, never size, never position.

  • repo-enginea012e30pointer only; a hover must not move anything2026-07-28

focus-visible

The ring is on the row's only tab stop, the name. Tab into the list below to see it: this one is live rather than forced, because a focus ring you cannot reach with the keyboard is the thing DNA-5 is about.

cursor (j / k)

The row washes to --fj-select-wash and the node gains a --fj-marker ring in --fj-primary. It lives in the rail's own column, so keyboard navigation adds no new vocabulary (RAIL-5, STATE-CURSOR-3). It is carried by data-cursor rather than by :focus-visible, so a reader who clicked and then pressed j still sees where they are (STATE-CURSOR-4).

  • repo-enginea012e30the next key acts on this row2026-07-28
  • fjord-rfc322cccdand this one is merely next to it2026-07-28

cursor and hover together

STATE-PREC-2: the two must stay distinguishable when both apply. The cursor is carried by the node's ring, hover by the surface lift, so a row that is both reads as both.

active

The background deepens one surface step. No transform (STATE-ACTIVE).

disabled

Every rung collapses to --fj-faint and the name stops being a link: the affordance is removed, not painted over. The node's border drops from --fj-mark to --fj-rule, because a disabled row's node encodes nothing and a boundary that encodes nothing has no contrast floor (COLOR-6).

  • repo-archived30ede92still clears 4.5:1; disabled is not illegible2026-07-25

truncated

Single-line, ellipsis at the end, full value in title, never wraps and never reflows the row (DENS-4). Narrow this window to watch the subject give way while the name, the sha and the date hold their columns.

  • repo-control-plane-asyncd27c798Merge pull request 'accounts: wire the KeyEvent key-set into the advance gate (Slice A)' (#8) from feat/keyevent-advance-gate into main2026-07-30

tall row

DENS-2: --fj-row-tall only where a second independent fact cannot be truncated onto the first line. A commit row qualifies; an index row does not, which is why the specimen here is a commit. DENS-6: nothing is ever taller than this.

  • Merge pull request 'accounts: fjord-web login, read-only (Slice S1)' (#1)Stephen Way / 2026-07-30 / 2 parents
  • accounts: fjord-web login (Slice S1)Stephen Way / 2026-07-30 / 24 files changed

loading

aria-busy on the region and a word in the eyebrow's count slot. The rail still renders, so the page does not change shape when the rows arrive.

Repositoriesloading

  • Loading repositories

empty

One left-aligned line in --fj-muted, on the content column, with the rail rendered as a single node stub. Never centred (DNA-4), never illustrated, never an emoji (AP-10).

Repositories0

  • No repositories yet. Push one with a git client.

error

A hairline region with a --fj-del border, a SIGN GLYPH, and the message in --fj-ink. The sign is a required parameter, so an error rendered through this binding cannot lose its non-colour carrier (COLOR-5, A11Y-5).