patbarlow/sift
Reviewed against Rams quality heuristics: accessibility, color, typography, spacing, components, motion, UX, and craft.
13 files reviewed·August 24, 2026
Elevated
Design risk in this codebase.
More findings
Verdict
Careful interaction design sits on a brittle type foundation, with hardcoded point sizes overriding Dynamic Type at nearly every level. The missing modal dialog role is the single sharpest accessibility gap and the fastest fix to close.
Files Rams reviewed
Sources/Sift/DiagnosticView.swift
Sources/Sift/FeedbackPane.swift
Sources/Sift/Lucide.swift
Sources/Sift/Modal.swift
Sources/Sift/OnboardingView.swift
Sources/Sift/SettingsView.swift
Sources/Sift/Theme.swift
Sources/Sift/App.swift
Sources/Sift/AppState.swift
Sources/Sift/Components.swift
Sources/Sift/IntegrationTiles.swift
Sources/Sift/MenuBarContent.swift
Sources/Sift/SlackThread.swift
Accessibility
Sources/Sift/OnboardingView.swift:185
8-9pt decorative illustration text falls below legibility floor
`FilteringIllustration` renders several `Text` elements at 8pt and 9pt: channel badge labels (`.font(.system(size: 9, weight: .medium))`), reply counts (`.font(.system(size: 9))`), and due-date badges (`.font(.system(size: 8, weight: .medium))`). These are well below the 11pt minimum macOS renders crisply, and well below the 12px legibility floor commonly cited in HIG guidance.
Why it matters
Users with even mild vision impairment cannot read these labels, and the illustration loses its ability to communicate the app's filtering metaphor.
Fix
Raise all decorative illustration text to a minimum of 11pt to stay above the macOS legibility floor.
.font(.system(size: 9, weight: .medium))
// …
.font(.system(size: 8, weight: .medium)).font(.system(size: 11, weight: .medium))
// …
.font(.system(size: 11, weight: .medium))Typography
Color
Spacing
Components
Motion
UX
Craft
Working well
- The sidebar uses a real `Button` with `.buttonStyle(.plain)` and `.onHover` for each row instead of an `onTapGesture` on a plain `HStack`. VoiceOver gets the button trait and keyboard navigation works without any extra wiring: this is the correct native pattern and avoids the most common macOS accessibility mistake.
- Auto-focusing the `TextField` via `.onAppear { focused = true }` in `SiftModal` is exactly right. The modal's sole purpose is text entry, and depositing keyboard focus there without making the user click first removes a friction step that would otherwise interrupt every destructive-action confirmation flow.
Scored August 24, 2026 with Rams Engine v0.0.4 · Engine changelog
This page is an automated design review of patbarlow/sift’s UI code: 13 files read against 309 versioned rules covering accessibility, color, typography, spacing, components, UX, motion, and craft. The score is out of 100; confirmed criticals cap it — one at 59, two at 49, three or more at 39.
More design scores
Score your own repo.
Free on public repos, no account. The same engine that scored this page reads your UI code and mints a score page like this one.
Public repos only. The full engine reviews the UI code and mints a public score page — we email you the link too. Already-scored repos open instantly.