09 Interface system
Components
37 COMPONENTS LIGHT + DARK STATES: DEFAULT · HOVER · FOCUS · ACTIVE · DISABLED · ERROR SOURCE: site/css/milo.css
Each component is drawn from rules, fields and type before it is drawn from boxes. Every state carries a glyph and a label; colour is never the only signal. One primary action per surface.
AppShell 09.01
Light · nav + main
Milo
Primary surface · level 1
What matters now?
.app-shell → grid: var(--sidebar-nav) 1fr. Add .has-inspector for a third column; .rail collapses to 56px.
Dark · with inspector
Milo
Primary surface
What matters now?
PrimaryNavigation 09.03
Light · default, current, hover, disabled
SecondaryNavigation 09.04
Light · secondary group never competes with primary
MiloComposer 09.05
Light · conversation + composer
YOU Pause the render and tell me what's left.
◉ On it. Paused at frame 3 of 12. Nine frames remain, about 40 minutes on the M4.
render-queue.json ~/Documents/euangelion/out/
Open ↗
Message Milo Send ▣ euangelion ⌁ local
Dark · focused
◉ Three files changed. Review them?
Message Milo Send ◇ Daily Bread ⌁ local
VoicePill 09.06
Light · five states
LISTENING Pause the Euangelion render
UNDERSTANDING Pause the Euangelion render
WORKING Pausing render · 3 of 12 frames kept
DONE Paused. Resume from Today.
ERROR Didn't catch that.
Dark
LISTENING Open the terminal beside this
WORKING Opening terminal · tiling right
DONE Done.
Level 3, top-centre, transient. See 11 Voice.
Search 09.08
Light · default, disabled
TaskRow 09.10
Light · default, active, selected, done
□ ◌ Queued
□ ● Running
□ ◉ Needs you
✓ ✓ Done
Dark · error, paused
□ ✕ Failed
□ ‖ Paused
□ △ Attention
TaskSummary → RunDetail 09.11 · 09.13
Light · summarised → revealed (open it)
▶ Render Day 1 voice track run 3 · step 2 of 5 m4-pro
● Running
✓ Load reference clip 0.8s
● Synthesise 2,140 words 1m 12s
○ Normalise loudness —
○ Write artifact —
Dark · open
▶ Sync the vault index run 1 · failed at step 2
✕ Failed
✓ Read manifest 0.2s
✕ Push part 145 — broken pipe 21m
RunIndicator 09.12
Light · idle, running, done, error
Always paired with a .state label in the row; role=img with aria-label when standalone.
Progress 09.14
Light · determinate, indeterminate
Status 09.15
Light · every state = glyph + label + colour
○ Idle
◌ Queued
● Running
‖ Paused
◉ Needs you
✓ Done
△ Attention
✕ Failed
⌁ Local
⌁ Connected
⌁ Unreachable
Default pill ◉ Milo ⌁ Offline gpt-5.6-sol local
Dark
● Running
◉ Needs you
✓ Done
△ Attention
✕ Failed
⌁ Local
⌁ Unreachable
◉ Milo ⌁ Offline claude-opus-5
ProjectRow 09.16
Light
◇
● 1 running
◇ FAM ◎ Family record 2 tasks
○ Idle
ActivityRow 09.19
Light · by Milo, by Offline, by you
11:02 ◉ Paused render at frame 3
euangelion
10:58 ⌁ imac-pro reconnected
fleet
10:41 ○ You approved the spend
$1.20
FileRow 09.21
Light
▤ 83.1 KB Jul 28
▣ 3.1 MB today
▤ 2 KB today
Dark
▤ 61.9 KB Aug 19
▣ 210 MB Sep 21
PermissionRequest 09.22
Light · level 3
This needs your approval.
Action Delete 9 render frames Where ~/Documents/euangelion/out/ Recoverable Yes — Trash for 30 days Not now Allow once
Dark · spend authorisation
Spend $1.20 on a cloud model?
Model claude-opus-5 · 48k tokens Why Local 9B lane is stopped Alternative Wait for imac-pro Wait Spend $1.20
Confirmation 09.23
Light · level 4, destructive
Delete the project Daily Bread ?
4 tasks and 12 artifacts move to Trash. You can restore them for 30 days.
Keep Delete
Dark · security
Allow SSH to imac-pro from this session?
Key: id_ed25519 · freelance4@100.120.167.63
Deny Allow for 1 hour
Notification 09.24
Light · unread, read
◉ Finished in 2m 14s. Day 1 voice track written to audio/.
11:02
◉ I found two conflicts. Review them?
yesterday
Dark
◉ This needs your approval. Spend $1.20 on a cloud model.
now
Toast 09.25
Light · by Milo, error
◉ On it. Undo
✕ That didn't work. Nothing changed. Details
Show a live toast
Popover 09.26
Light
Executor
m4-pro
Load 3.2 / 12 cores Memory 18 / 48 GB Cost $0.00
Dark
Model
claude-opus-5
Lane cloud Quota 62% used
Tabs 09.28
Light · live (arrow keys)
Open12
Running1
Done40
Twelve open tasks.
One running.
Forty done this week.
Dark
Preview
Provenance
History3
Source, rights, transformation.
Metric 09.29
Light
Tasks done 40this week 12 vs last
Spend $4.80Sep $2.10
Local share 91% ⌁ 3 machines
QuotaIndicator 09.30
Light · ok, warning (△ + label)
Codex account 2 38 / 100 images
CostIndicator 09.31
Light · cloud, local
$ 1.20$ 0.04$0.00
ResourceIndicator 09.32
Light · Moss = infrastructure
MachineStatus 09.33
Light · up, with Milo, down
⌁ imac-pro 2017 · 18-core Xeon · 128 GB
⌁ Connected100.120.167.63
⌁ m4-pro M4 Pro · 48 GB · this machine
● Milo runninglocal
⌁ wkgd-macbook A1989 · Omarchy
⌁ Unreachableasleep
Dark
⌁ m4-pro M4 Pro · 48 GB
● Milo runninglocal
⌁ imac-pro Xeon · 128 GB
⌁ Connectedtailscale
ModelStatus 09.34
Light
claude-opus-5 cloud $ 15 / M○ Idle
gpt-5.6-sol subscription $0.00 ● Running
qwen-9b-local ⌁ imac-pro $0.00 ‖ Stopped
Dark
claude-opus-5 cloud $ 15 / M● Running
voxcpm ⌁ kaggle $0.00 △ Quota
ConnectionStatus 09.35
Light · on, off
⌁ Tailscale8 devices · tailnet
⌁ Connected
⌁ Cloudflarewokegod.cc · Pages
⌁ Connected
⌁ GitHub (wokegodX)needs login
⌁ Not signed in
Dark
⌁ Codex account 2~/.codex-2
⌁ Signed in
⌁ Jevfree tier
△ Quota exhausted
ArtworkCaption 09.36
Light · the artist is visible
Katsushika Hokusai Under the Wave off Kanagawa 1830/33 · colour woodblock print
Art Institute of Chicago Public domain (CC0)
Dark · interpretation marked
Katsushika Hokusai Under the Wave off Kanagawa 1830/33 · Milo / Nous
Art Institute of Chicago Public domain (CC0)