# gpui-native-kit — checklist The living queue. Every element lands through the review gate: API sketch → implementation → tests → gallery panel → review. Conventions and rules live in [AGENTS.md](../AGENTS.md); the gpui pin lives in the workspace `Cargo.toml` (zed @ `ec86047d67acd6fddd81392f44ed6ebcc6e7f531`). [signed](https://git.reya.info/reya/signed) is the first downstream consumer; its screens drive the order. ## Next - [ ] **Spinner** (`core`) — the loading ring, indeterminate + determinate. Replaces `Tab::busy`'s placeholder ring; land before signed wires repo loading into dock tabs. - [ ] API sketch - [ ] Implementation (theme-baked, motion inline per AGENTS.md) - [ ] Tests - [ ] Gallery panel - [ ] Review ## Queue — to follow - [ ] **Field wrapper** (M9) — label / description / error around any control; the settings dialog. - [ ] **Tag** (M10) — removable server and relay entries. - [ ] **Status dot** (M11) — sync-drift beads on rows. - [ ] **Combobox** (M12) — type-to-filter pickers; adopt gpuikit's `on_create` / `keep_unmatched` blur modes. - [ ] **Command palette** (M13) — filtered actions; the matcher stays caller-owned. - [ ] **VirtualList** (M14, `data`) — thin `uniform_list` binding for commit histories and the inbox. - [ ] **Code view** (M15, opens `crates/editor`) — tree-sitter highlighting. - [ ] **Diff view** (M16, `editor`). - [ ] **Markdown view** (M17, `editor`) — only if a consumer confirms. - [ ] **Pickers** — Calendar / DatePicker, TimeField, ColorPicker (decide at unit time). - [ ] **Layout follow-ups** — persistence, pane zoom, bottom dock, collapse-to-edge; each waits for a real consumer. - [ ] **Platform screenshot passes** — a Linux run (Omarchy / KDE / GNOME) and the first Windows hardware build, side by side with macOS. ## Landed ### theme (`crates/theme`) - [x] Theme engine — resolve overlay chain, OKLCH accent ramps, presets, per-platform elevation stacks, `titlebar_height`, size table (`Sizable`) - [x] Platform sources — macOS (NSColor), Windows 11 (UISettings), GNOME (portal), KDE (kdeglobals), Omarchy (colors.toml), neutral fallback; live watchers for each ### icons (`crates/icons`) - [x] `IconRole` + bundled Lucide fallback, Segoe Fluent codepoints (Windows), freedesktop theme walker (Linux/Omarchy) ### core (`crates/core`) - [x] Button, Checkbox, Switch, Radio + RadioGroup, Toggle, Link, Slider, Progress, Avatar (image + seeded pixel-art fallback) - [x] Input — single-line, password with reveal, multiline, undo/redo, actions + key context, caret blink - [x] ScrollArea, Popover, Menu, Tooltip, Dialog / AlertDialog, Toast, Alert + alerts stack - [x] Select, Segmented, ContextMenu, EmptyState, Badge ### data (`crates/data`) - [x] List, Tree, Tabs (underline default + signed pill), Sidebar (scrolls internally) ### layout (`crates/layout`) - [x] ResizeHandle - [x] Shell — left/right sidebar regions + center, application-owned `LayoutState` - [x] Window frame — client-side decorations under `Decorations::Client` - [x] Dock — pane tree, panel registry, tab context menus - [x] Drag-to-split — `PanelDrag` payload, edge + center drop zones - [x] Titlebar + window controls — app-owned window dragging, per-platform buttons, `Theme::titlebar_height` - [x] Sidebar auto-open — `PanelDescriptor::right_sidebar` + `DockSidebar` ### gallery (`examples/gallery`) - [x] Component browser — the shell with the catalog in its sidebar, every element a dock panel