StatsGrid / KPI tile
Big number + tiny icon + one-line label. Four up on Home, three up on narrow detail panes. Rule: the number is Inter Tight 28/700, never bigger.
AppViews.swift either already has in system- default styling, or needs to grow into. Preview + anatomy + SwiftUI skeleton per pattern. Copy names, sizes, and tokens as spec.Big number + tiny icon + one-line label. Four up on Home, three up on narrow detail panes. Rule: the number is Inter Tight 28/700, never bigger.
One row per step in the flow. Four visual states, three role badges (deterministic / LLM / human). The running state gets a pulsing dot + signal-orange left border + soft accent glow. This is the single most visible pattern in the app.
Horizontal chip-strip of every step in the flow with role tint + done marker. Compresses 7-step flows into a scannable block. Arrow rule is 1px thin line, not a chevron — keep it calm.
Inline, not a toast. 3px colored left stripe, tinted background at 6-8% opacity, the tone label as a small mono eyebrow. Dismiss chevron is optional — errors are not dismissible.
The killer screen. The user spends most of their time here — scanning proposed filenames. Make editing a single tap/click (cell becomes an input). Green pill row = user accepted; amber = edited; red = rejected. Approve all must be a single keystroke (⌘⏎) and the primary action must be visually dominant.
The ROI moment. 替代 47 分鐘 is the hero — 36pt display, rest is mono. This is also the only place in the app where a Reveal in Finder button appears as the primary CTA — it gives the user immediate physical proof the flow did something.
Shows an embedded Python/Node runtime with version, size, install path, and live progress. Dagrun is local-first — the card should communicate “we ship this runtime in the app bundle, never from your system PATH”. Progress bar uses signal orange; idle state hides it.
The permission prompt is Dagrun's main trust moment. Rule of three bullets: (1) what we will do, (2) what we will never do, (3) where to revoke. Signal-orange shield icon, not system padlock. Decline is always the easier button visually.
Mac System-Preferences convention: 200px label column, 1fr control column, divider between rows, section header as a small bold eyebrow. Help text below the label — not beside the control. Toggles use AccentColor (signal).
Timestamp → flow name → status → 4 metrics (output, saved, cost, duration). Metrics are Mono 12. Status pill uses success/danger tokens. Designed to be scannable at 48px row height.
Three patterns still waiting on design: OAuthWebView (the in-app Google consent flow), EmptyState (no runs yet / no flows installed), and OnboardingSheet (first-run walkthrough). Flag these when the SwiftUI engineer hits them and we’ll spec alongside the first real usage.