Milo BRAND + INTERFACE SYSTEM V1.0
27Density + Localisation

Two hundred tasks. Forty-eight rows.

A list is not a surface. When a person has two hundred tasks Milo does not show two hundred rows; it triages what needs them, groups the rest by project, tucks past five, and keeps the done pile closed. The same discipline applies to words: every label is built for the longest language, not the shortest.

RULE TRIAGE → GROUP → TUCK PAST 5WINDOW content-visibility PAST 1,000LANGUAGES EN · DE · FI · EL · JA · STRESS
Density27.1

The rule, on real numbers.

Switch between the rule and the flat list. Both hold the same two hundred tasks; only one of them is a surface a person can act on.

    The density rule, stated
    1 · Triage firstNeeds you, Running and Failed rows come first, in that order, capped at eight in view; the rest of the triage set is one disclosure away.
    2 · Group by projectEverything else is grouped by project, largest group first, five rows visible per group, the remainder tucked with a count.
    3 · Done is closedCompleted tasks live behind one closed disclosure with a count. Undo reaches them; the eye does not have to.
    4 · Filter before scrollA search field is always present above a surface with more than 20 rows. Recognition over recall: it matches project names and titles.
    5 · Window past a thousandRows use content-visibility: auto with a 64px intrinsic size; only rows near the viewport are laid out. No virtual-scroll library; no fake scrollbar.
    6 · Milo may propose, never hideMilo can reorder a group's visible five (a proposal, undoable). It cannot remove a task from the surface; a person does that.
    Applies toTasks, Activity, Files, the Fleet run log, the Costs ledger. Today is exempt: it is one thing, then three, then "n more".
    Localisation27.2

    Built for the longest word.

    Pick a language. The same components re-flow with real translations and a doubled-letter stress string; the readout says whether anything clipped.

    MILO

    MILO

    ↩ · esc◇ FAM · ⌁ local
    Localisation rules
    WidthEvery control is sized by content, never by a fixed width; buttons wrap to a second line before they clip. German runs ~30% longer than English, Finnish ~40%; the stress string is 100%.
    TypeInter covers Latin, Greek and Cyrillic; Japanese falls to the system CJK stack (font-family already lists it). Instrument Serif is Latin only: display statements in CJK use the system serif, and this is expected.
    DirectionLayout uses logical properties (margin-inline, padding-inline) where it matters; RTL is untested and listed open.
    GlyphsState glyphs (○ ● ◉ □ ◇ △ ✓ ✕ ⌁) are script-independent and always sit before the label, so the pair survives translation.
    Numbers, dates, durationsMono metadata uses the locale's formatter (Intl); "2m 14s" is the English short form, others use their own.
    VoiceThe pill shows live transcription in the spoken language; the state word is translated, the transcript is not.
    OpenRTL (Arabic, Hebrew); vertical CJK; a real translation pass by a speaker — the strings here are working translations for stress, not shipping copy.