6.5 KiB
6.5 KiB
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; the gpui pin lives in the workspace Cargo.toml
(resolved in Cargo.lock, zed @ 504a7f2cf25b817cda3998cab93473adef15f93c).
signed
is the first downstream consumer; its screens drive the order.
Next
- Platform metric adoption — update components one at a time
through the review gate against the landed theme tokens. The stated
metrics and the radius ladder already flow through the size table,
so each stop covers border + focus chrome (
Theme::borders), the spacing unit (Theme::spacing), and the component's stated dims: button (the API template) first, then input, select, menu, popover, dialog, toast, tooltip, alert, combobox, command palette, switch; per-platform targets in platform-metrics-audit.md.
Queue — to follow
Gaps surfaced by the signed comparison; ordered by signed's usage.
- Virtual list — generic virtualized variable-height rows with a
scroll handle, promoted from the editor views' pattern over gpui's
list; signed's PR lists and commit diff drive it. - Editable code field — syntax-highlighted editable multiline field, the code view's highlighter over the input's editing model; signed's repo file browser.
- Dropdown menu — trigger button + popover + menu composite, three signed call sites; must stay a real component, not a wrapper.
- Motion easing helpers — cubic ease-out and lerp beside
theme::Motion; low priority, gpui's animation primitives cover most cases. - Markdown view follow-ups — streaming
appendwith a coalesced background parse, text selection with copy, per-block a11y roles, GFM alerts + table column alignment, per-fence highlight reuse,soft_break_as_hard_break; ranked notes in markdown-view-comparison.md. - Editor follow-ups — language detection by file path, meta line overlay, per-view config overrides (line height, gutter visibility).
- 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)
- Theme engine — resolve overlay chain, OKLCH accent ramps, presets,
per-platform elevation stacks,
titlebar_height, size table (Sizable) - Platform sources — macOS (NSColor), Windows 11 (UISettings), GNOME (portal), KDE (kdeglobals), Omarchy (colors.toml), neutral fallback; live watchers for each
- Platform metric fidelity — stated control/input/menu-row/switch
metrics and the full radius ladder per platform, Linux root fonts
(GNOME gsettings
font-name, KDEkdeglobals font=), per-source border + focus chrome (Theme::borders), and a per-platform spacing unit (Theme::spacing); findings in platform-metrics-audit.md. Components adopt the tokens one by one (see Next)
icons (crates/icons)
IconRole+ bundled Lucide fallback, Segoe Fluent codepoints (Windows), freedesktop theme walker (Linux/Omarchy)
core (crates/core)
- Button, Checkbox, Switch, Radio + RadioGroup, Toggle, Link, Slider, Progress, Avatar (image + seeded pixel-art fallback)
- Spinner — painted ring + rotating-icon variant, indeterminate and
determinate; replaces
Tab::busy's placeholder - Input — single-line, password with reveal, multiline, undo/redo, actions + key context, caret blink
- ScrollArea, Popover, Menu, Tooltip, Dialog / AlertDialog, Toast, Alert + alerts stack
- Select, Segmented, ContextMenu, EmptyState, Badge
- Field — label / description / error around any control, block and settings-row variants
- Status dot — colored state bead, Badge's variant vocabulary, optional screen-reader label
- Combobox — type-to-filter picker with a caller-owned matcher, create / keep / revert blur modes
- Command palette — filtered actions; the matcher stays caller-owned
- Scrollbar — overlay thumbs for gpui's
listanduniform_list, platform autohide with avisibilityoverride - Clipboard button — copies a value, confirms with a brief check mark that reverts itself
- Separator — horizontal and vertical hairline rules; menu separators stay menu-scoped
data (crates/data)
- List, Tree, Tabs (underline default + signed pill), Sidebar (scrolls internally)
editor (crates/editor)
- Code view — tree-sitter highlighted, virtualized rows with a gutter and the overlay scrollbar; per-language grammar features, roles map to the theme's semantic palette at render
- Code view interactions — active line, text selection with copy, incremental line re-highlight
- Diff view — unified rows via
similar, highlighted with the code view's palette; change washes from the ramps,scroll_to_first_change - Markdown view —
pulldown-cmarkblocks rendered as formatted text: headings, emphasis runs, ordered/task lists, quotes, fenced code highlighted with the code view's palette, tables, clickable links; virtualized variable-height rows over gpui'slist
layout (crates/layout)
- ResizeHandle
- Shell — left/right sidebar regions + center, application-owned
LayoutState - Window frame — client-side decorations under
Decorations::Client - Dock — pane tree, panel registry, tab context menus
- Drag-to-split —
PanelDragpayload, edge + center drop zones - Titlebar + window controls — app-owned window dragging, per-platform
buttons,
Theme::titlebar_height - Sidebar auto-open —
PanelDescriptor::right_sidebar+DockSidebar - Resizable group — stacked panes with drag dividers outside the dock, per-pane floors, double-click reset, keyboard steps
gallery (examples/gallery)
- Component browser — the shell with the catalog in its sidebar, every element a dock panel