Commit Graph
485 Commits
Author SHA1 Message Date
ZacharyZhang-NY c9f492d0b4 Panics · P11 Motion: a buffer behind the value draws none 2026-10-06 17:21:29 -04:00
ZacharyZhang-NY 8f00d2eabb Panics · P09 Overlays: a lightbox or tour past its last item closes 2026-10-06 17:14:09 -04:00
ZacharyZhang-NY 919f26fcc6 Panics · P07 Navigation: Wizard takes its handlers; stale places in tabs, crumbs, history, steps and pages mark none 2026-10-06 17:06:25 -04:00
ZacharyZhang-NY e2d880fb4f Panics · P06 Forms: roots, stale selections, shaping faults and gone units log instead of panicking; cron runs say UTC in an unknown zone 2026-10-06 16:49:35 -04:00
ZacharyZhang-NY 73a8bf2e34 Panics · P05 Buttons: a segmented choice missing from its segments marks none; slide logs and shows no marker 2026-10-06 16:32:12 -04:00
ZacharyZhang-NY 2347edeed6 Panics · P03 Layout: panes and splits meet stale ids, lagging sizes and mid-drag changes without a panic 2026-10-06 16:21:39 -04:00
ZacharyZhang-NY f46cc4e7c3 Panics · P02 Typography: Link takes its handler, an unknown zone reads as UTC and says so, a long highlight query logs 2026-10-06 16:02:40 -04:00
ZacharyZhang-NY e5166e9e26 Panics · P01 Primitives: init returns an error, a missing app icon logs and shows a broken picture 2026-10-06 15:25:09 -04:00
ZacharyZhang-NY 3d08744d38 Data display · DescriptionList: a value fills its column, so a field inside it is full width 2026-10-06 13:39:06 -04:00
ZacharyZhang-NY bd3772ad54 Charts · Navigation · Forms: band names widen a sideways chart's gutter; Pagination takes a size, speaks the locale and jumps to a typed page
- A horizontal chart's gutter grows to its widest band name, floored at the theme gutter and capped at half the chart; a name past the cap ends in an ellipsis (#10).
- Pagination's previous and next tooltips read i18n (English and zh-CN built in, app catalogs override); `.size(ControlSize)` sizes every control, Sm by default; `.jump()` adds a Go to field (#11).
- NumberInput keys the owner's value as shown: a draft survives a blur, a value set while focused lands when focus leaves, and an echo of its own commit is no new value. A ranged field holds room for its widest bound through `Input::least`.
2026-10-06 13:29:09 -04:00
ZacharyZhang-NY 2ce336895c Menus · ContextMenu: styles size its host, so a list inside can fill it 2026-10-06 09:17:56 -04:00
ZacharyZhang-NY 617a8d68de Editor · FindWidget: Escape from the query closes the box 2026-10-06 04:51:15 -04:00
ZacharyZhang-NY 71bfc93786 Lib · init_for_tests: theme and key bindings without assets, so apps can render Ely components in tests 2026-10-06 00:51:52 -04:00
ZacharyZhang-NY bcf0378ea7 Collab · CommentSidebar: threads are a list; each row is a Tab stop, named, selected, picked with Enter or Space 2026-10-05 20:21:09 -04:00
ZacharyZhang-NY 408f2b0582 Collab · CommentSidebar: localized copy and relative times; one list when the owner does not resolve 2026-10-05 19:26:33 -04:00
ZacharyZhang-NY af54877693 Forms · NumberInput: blank shows a placeholder and commits only what is typed 2026-10-05 17:48:31 -04:00
ZacharyZhang-NY 7df3045a82 Lists · SelectableList: list semantics, row names, selection and place in set 2026-10-05 16:43:30 -04:00
ZacharyZhang-NY 80c46b13d4 Documents · TemplatePicker: one Tab stop, arrows and Enter, list semantics, builtin copy 2026-10-05 13:13:09 -04:00
ZacharyZhang-NY 718617939e Forms · NumberInput label: the name assistive technology reads, drawn nowhere 2026-10-05 12:34:19 -04:00
ZacharyZhang-NY 47caebdd36 Forms · Select: rustfmt's wrap for the label's when_some, so CI's fmt check passes 2026-10-05 09:46:42 -04:00
ZacharyZhang-NY 8658999903 Forms · Select and TextInput label: the name assistive technology reads, drawn nowhere 2026-10-05 04:59:41 -04:00
ZacharyZhang-NY e21336fc1b Primitives · Focus: overlays dropped together hand focus back past every one of them 2026-10-05 04:13:35 -04:00
ZacharyZhang-NY 38deadde89 Primitives · Focus: an overlay dropped without Close hands focus back to what it took it from 2026-10-05 03:39:25 -04:00
ZacharyZhang-NY 3935bb3fde Shell · ColumnShell: columns to the window's top, each under a header that drags it; the traffic lights or controls in the first or last (#6) 2026-10-05 01:04:34 -04:00
ZacharyZhang-NY 2a18e9d0b3 Forms · An IME composition restarts the caret's blink, as every edit does, and logs its ranges (#7) 2026-10-05 00:35:46 -04:00
ZacharyZhang-NY 78bf5917a5 Tests · NumberInput's commit test selects with the platform's secondary key; Tabs tests move to navigation/tests/tabs.rs, under 500 lines 2026-10-04 17:59:36 -04:00
Amit Verma dfe1e9f42c Primitives · Icon::from_path draws an application's SVG with the theme's size and color; a path the asset source lacks fails at render 2026-10-04 17:24:39 -04:00
ZacharyZhang-NY 9977785de6 Navigation · Tabs on_context: a right click on a tab reports that tab and the pointer, not the chosen one 2026-10-04 15:53:30 -04:00
ZacharyZhang-NY 64293a81af Menus · ContextMenu manual: one-line doc 2026-10-04 12:01:34 -04:00
ZacharyZhang-NY 2c62b4f7b9 Menus · ContextMenu manual: opens on the owner's numbered request at a point, not on a right click, for rows that come after the press 2026-10-04 11:04:32 -04:00
ZacharyZhang-NY f6f8b20624 Buttons · ToggleButton disabled: shown, not pressable, no tab stop, says it is unavailable; its tooltip can give the reason 2026-10-04 07:13:14 -04:00
ZacharyZhang-NY b56acd2b9d Forms · NumberInput on_commit runs on Enter, blur, steps and scrubs, never while typing; number tests move to number/tests.rs 2026-10-04 06:33:06 -04:00
ZacharyZhang-NY 59c73f18f2 CI · the crate's tests and the gallery on Linux, Windows and macOS, arm64 and x86_64; tests type the platform's secondary key 2026-10-04 00:00:43 -04:00
ZacharyZhang-NY 5267c44adf Rendering · RenderSurface: host frames at the box's device pixels, redrawn on a new size or revision, freed from the atlas 2026-10-03 23:22:49 -04:00
ZacharyZhang-NY 875cdfdc9b Forms, a11y · Checkbox, Switch, Radio, RadioGroup, Slider and Select name their role, label and state (#3)
A slider's thumb reports its value, the bounds it can reach and its orientation; a select's trigger its value, placeholder and whether its list is open; a disabled control says so in its description.
2026-10-03 01:35:48 -04:00
ZacharyZhang-NY ec586e371b Lists · tree guides fall from the parent's chevron and run unbroken across rows (#2)
The chevron takes its indent as a margin, so no gap parts it from its guide column; the cursor's ring is an overlay, so the guides fill the row through its border.
2026-10-03 01:21:26 -04:00
JetSquirrel 943b7d4f8d Terminal · build on Windows: set alacritty's Windows-only escape_args
alacritty_terminal 0.26's tty::Options has a field that exists only on
Windows, so the crate failed to compile there with E0063. Each launch
argument is one argv entry, so they are escaped by the C runtime rules.
2026-10-03 01:01:17 -04:00
ZacharyZhang-NY 7ba18fbb2f Dialogs · a confirm or alert message names itself to assistive technology 2026-10-02 19:28:01 -04:00
ZacharyZhang-NY 70162a7dbe Dialogs, a11y · Dialog card names its role, title and detail; prompt error reads as a label; Cancel and Close read i18n; a disabled button says so in its description 2026-10-02 18:52:08 -04:00
ZacharyZhang-NY 4580e3b075 i18n, a11y, IME · palette copy reads i18n with builtin en/zh; dialog and palette Enter run on the field's key-down action, so an IME-kept Enter never submits; Button, IconButton, TextInput, Tabs, EditorTabs, StatusBarItem and palette rows name their role and label 2026-10-02 12:58:43 -04:00
ZacharyZhang-NY dcdd46038e T44d Web · Hidden builders start nothing, fields blink only in focus, grids paste with Control 2026-09-29 23:02:37 -04:00
ZacharyZhang-NY 81adec5c47 T44d Web · Hidden demos keep still, wide ones scroll whole, pastes read the web's clipboard 2026-09-29 22:13:27 -04:00
ZacharyZhang-NY 2463bb0ac9 T44d Web · Stories stand alone: nested ones surface, hidden ones drop their demos, early themes land, pastes arrive 2026-09-29 19:16:41 -04:00
ZacharyZhang-NY 48c7b09d8d T44d Web · Gallery builds for wasm32: one story per section by URL, themed by the host
The gallery's entry runs natively or, on wasm32, from a wasm_bindgen start
through gpui_web, single-threaded with WebGL2 fallback. ?page, ?story and
?theme choose what shows; an unknown one fails in the page and the log.
set_theme switches the mode later. Pictures load from ELY_GALLERY_ASSETS.
scripts/stories.py writes examples/gallery/stories.json from the pages.
2026-09-29 19:16:41 -04:00
ZacharyZhang-NY a03df0987c web: the library checks for wasm32 (carried) 2026-09-29 19:16:41 -04:00
ZacharyZhang-NY 2da09c1947 Port · Parity: the last long comments are short 2026-09-29 18:43:49 -04:00
ZacharyZhang-NY c59d19645d Port · Parity: dark shots judged; the status shot waits out the tooltip; comments one short line 2026-09-29 18:18:05 -04:00
ZacharyZhang-NY 3f1597fa28 Port · Parity: every page matches gpui 0.2.2's; the rules re-tested
Every page and scripted state was shot with gpui 0.2.2 and with the
port, light and dark, full width and at 280px, judged pair by pair by
agents with skeptics, and every page's log diffed. What differed is
fixed, each with a test that fails without it where the test platform
can show it:

- The gallery's harness takes posted mouse moves (gpui_macos listens
  to a tracking area), posts each drag move twice (it no longer
  replays a held drag), and waits three frames before each shot.
- Rolling digits: a block column, so taffy 0.13 lends the cell no
  baseline, and a line of whole device pixels, since gpui snaps each
  length on its own. DescriptionList's row aligns ends.
- Margins that taffy 0.13 collapses through a plain block: the
  drawer's pull and snap, the stagger and transition rise, the dialog
  and palette rises, the fullscreen dialog's slide.
- An Input keeps room to type in a squeezed row; the field rows drop
  w_full, whose reason was taffy 0.9's.

AGENTS.md's rules that named gpui 0.2.2 or taffy 0.9 were re-tested
against both sources and rewritten, and new ones say what the port
changed. TASKS.md's tags follow: what the new gpui makes possible is
prove. Captions, doc comments and README say what holds now.
2026-09-29 10:39:55 -04:00
ZacharyZhang-NY 05bd22b7f0 Port · Calendar: a real exit clears the preview after a key
The calendar's grid clears its preview on leave, and ignores a leave
that follows a key. gpui records the exit a key makes before the
handler runs, so the guard swallowed it and a real exit afterwards
had no change left to report: the stale day stayed the preview. The
grid now listens independently of input, while its days keep the
default, so a key is no leave and a real exit is. A test leaves the
grid after an arrow, a letter and a month key.

shaped()'s doc goes back to its one line; AGENTS.md keeps the why.
2026-09-28 20:54:25 -04:00
ZacharyZhang-NY 4c3ed1bbb9 Port · Build: Zed's gpui at 1a28cff
gpui and gpui_platform now come from Zed's repo by git at 1a28cff,
the code gpui-pre 0.3.7 republishes, so the gallery can later build
for the browser. gpui takes stacker, as 0.2.2 always did, and
gpui_platform takes font-kit, without which macOS draws no text;
runtime_shaders moves to gpui_platform.

The API moved: focus, blur and Tab steps take cx, Corner is Anchor,
shaped lines paint with an alignment, defer_draw takes a content
mask, the inspector registers a factory, async updates return their
value, and wrapped lines are shared, not cloned. Updates through a
window context go through the window, so a closed window still ends
them as it did.

Where the new gpui behaves differently, Ely keeps its old intent.
Holds and reveals under a resting pointer survive typing through
gpui's input-modality-independent hover; previews the keyboard also
moves keep the default, and the calendar's leave ignores a key press.
Enter reaches a button inside the code editor, since gpui now arms a
key click on the press. The event logger skips a lone modifier. A
video and an image grid keep their shape in a flex column under
taffy 0.13, as a picture does.

AGENTS.md records the new stack and the rules this port changes; the
rest of the old gpui and taffy rules are re-tested in T44c.
2026-09-28 20:30:17 -04:00