Files
gpui-native-kit/docs/CHECKLIST.md
T

120 lines
5.6 KiB
Markdown

# 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`
(resolved in `Cargo.lock`, zed @ `504a7f2cf25b817cda3998cab93473adef15f93c`).
[signed](https://git.reya.info/reya/signed)
is the first downstream consumer; its screens drive the order.
## Next
## 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.
- [ ] **Separator** — standalone horizontal/vertical rule; menu-item
separators stay menu-scoped.
- [ ] **Resizable group** — stacked arbitrary panes with drag dividers
outside the dock; signed's commit-diff split.
- [ ] **Searchable list filter** — searchable collection behind combobox and
list option sources; the combobox's pluggable filter covers part of it
(signed's `SearchableVec`).
- [ ] **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 `append` with 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](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`)
- [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] Spinner — painted ring + rotating-icon variant, indeterminate and
determinate; replaces `Tab::busy`'s placeholder
- [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
- [x] Field — label / description / error around any control, block and
settings-row variants
- [x] Status dot — colored state bead, Badge's variant vocabulary, optional
screen-reader label
- [x] Combobox — type-to-filter picker, create / keep / revert blur modes
- [x] Command palette — filtered actions; the matcher stays caller-owned
- [x] Scrollbar — overlay thumbs for gpui's `list` and `uniform_list`,
platform autohide with a `visibility` override
- [x] Clipboard button — copies a value, confirms with a brief check mark
that reverts itself
### data (`crates/data`)
- [x] List, Tree, Tabs (underline default + signed pill), Sidebar (scrolls
internally)
### editor (`crates/editor`)
- [x] 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
- [x] Code view interactions — active line, text selection with copy,
incremental line re-highlight
- [x] Diff view — unified rows via `similar`, highlighted with the code
view's palette; change washes from the ramps, `scroll_to_first_change`
- [x] Markdown view — `pulldown-cmark` blocks 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's `list`
### 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