Commit Graph
240 Commits
Author SHA1 Message Date
ZacharyZhang-NY ffbb37183d T45d Site · Components passes review; Slash leaves a hidden field alone; the review log moves to tasks/reviews.md 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 9ea811d4e8 T45c Site · Home: full screen stops the glide at once, a starting gallery leaves the host's focus alone, a focused frame stays mounted 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 7fd05df4dc T45b Site · Iso passes review 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY ddcc8a4938 T45a Site · Stack passes review 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 167055fdae T45a Site · Stack: Vite 8, React 19 and TanStack Router under pnpm; routes, theme, fonts, the manifest 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 58d3fd7fe2 T44d Web · Stories passes review 2026-09-29 23:39:50 -04:00
ZacharyZhang-NY fe467d2bfe T44c Port · Parity passes review 2026-09-29 19:14:18 -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 3189df013f Tasks: the site deploys to Cloudflare through wrangler
The Dokploy line was a misreading; the plan stays as it was.
2026-09-29 00:28:32 -04:00
ZacharyZhang-NY 48dce3b52b T44b Port · Build passes review 2026-09-28 21:24:24 -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 25b8a6f22c Tasks: live components on the site; Zed's gpui; Dokploy
The site shows every component running, as gpui-kit.com does, never
a screenshot. gpui 0.2.2 cannot build for the browser, so T44b moves
gpui to Zed's repo at 1a28cff, T44c re-checks every page and rule on
it, and T44d builds the gallery for wasm32 as one story per
component. The screenshot items give way, and the site deploys to
Dokploy.
2026-09-28 20:13:44 -04:00
ZacharyZhang-NY 5117a5fc1b T44a Capture · Roots passes review 2026-09-28 20:13:05 -04:00
ZacharyZhang-NY a6f9a7b77b Capture · Roots: the roots round 2 missed
A sweep that read every render found 28 roots still on w_full,
reached by 64 components: the field button under Select and every
picker, the checked and mention fields, the slider track,
NumberInput, Steps, the state views, the agent previews, and every
chart and finance frame. All drop it. LivePreview's size_full becomes
h_full, since its card no longer fills.

Every host of those roots was listed and read, 231 in all. Five
tests that mounted a picker as the window root sit in a size_full
box, the index manager gives its method select a flex_1 box, and the
notification center and the gallery's state frames stack their state
views in a column so they stretch.

Each dropped root carries a debug selector, and six chapter tests
mount 43 components in a padded card whose column is measured by
content, through layout::tests::narrow_width: each root must take the
full 240px. With w_full back on the roots, all six fail.

AGENTS.md names the roots that keep w_full and why: picture frames
that keep a ratio, and rows that hand a text field its share.
2026-09-28 19:34:01 -04:00
ZacharyZhang-NY ad98ca7746 Capture · Roots: the twelve roots round 1 found
Eleven more roots drop w_full: the docked ActionBar, MessageBubble's
three arms, PromptInput, TitleBar, Tabs, the horizontal Divider with
and without a label, DropZone and Playlist. Their hosts in the crate
are blocks or flex columns. The gallery's docked ActionBar sits in an
items_center column, so the demo gives it the width.

AspectRatio keeps w_full, and AGENTS.md says why: taffy 0.9 follows a
ratio from a set width, not from a stretch, and without one the image
gallery's tiles and the ratio demo collapsed.

Every page and scripted state was shot again at full width and at
280px and compared with the shots from before T44a. Nothing collapsed
or shrank. The mail reader's attachments now wrap side by side, as
their row asks.
2026-09-28 16:30:47 -04:00
ZacharyZhang-NY 81e73b79c1 Capture · Roots: roots drop w_full; hosts give the width
145 component roots drop w_full, the early returns included. Three
field rows keep it, Input, InputGroup and TagInput: stretched without
a width, taffy 0.9 laid the field's flex_1 share at no width in the
template picker at 280px, and the placeholder drew nothing. Container
keeps it, since mx_auto needs a width to fill.

Hosts that relied on a root's width now give it: MessageList boxes
each row at the list's width, the splash gives its bar the column's,
and test stages that mount a component as the window's root sit in a
size_full box. Tests hold a narrow row across the list and the splash
bar across its column; each goes red without its fix.

The gallery gains --narrow <px>, which lays each page in a padded
card at that width and shoots it without its script. The page
header wraps: the title takes the room and the theme switcher drops
below, where a long summary used to push it past the edge. A file
panel step waits for the panel to become key instead of a fixed
pause, which lost a race in a capture.
2026-09-28 13:07:22 -04:00
ZacharyZhang-NY 3be809a660 Tasks: split T44 into three 2026-09-28 09:12:25 -04:00
ZacharyZhang-NY 59f57c89c2 T43c Tooling · Catalogs passes review 2026-09-28 09:10:55 -04:00
ZacharyZhang-NY bfd1285064 T43b Tooling · Inspection passes review 2026-09-28 08:05:26 -04:00
ZacharyZhang-NY 274089a8f6 T43a Tooling · Workbench passes review 2026-09-28 06:46:24 -04:00
ZacharyZhang-NY c9ff1f8f36 Tasks: split T43 into three 2026-09-28 06:03:22 -04:00
ZacharyZhang-NY 7ed840e02d T42g Misc · Export and import passes review 2026-09-28 06:03:05 -04:00
ZacharyZhang-NY cbba4ddeec T42f Misc · Web passes review
in_view names its types in place and the non-macOS branch reads its fields, so builds off macOS stay free of warnings.
2026-09-28 05:07:35 -04:00
ZacharyZhang-NY a978f7a6eb T42e Misc · Terms and notices passes review
A test walks Shift-Tab round the cookie banner past the resting Necessary switch.
2026-09-28 04:25:31 -04:00
ZacharyZhang-NY 320ab4ae3a T42d Misc · Asking and learning passes review
The poll's mark and its row's selector share one binding.
2026-09-28 03:24:15 -04:00
ZacharyZhang-NY a213248910 T42c Misc · Codes and checks passes review
Tests now hold focus in the field after an answer and a passed captcha with no Tab stop.
2026-09-28 02:22:34 -04:00
ZacharyZhang-NY fd052086eb Tasks: the website's home page, components page and Cloudflare deploy 2026-09-28 01:40:15 -04:00
ZacharyZhang-NY dc4911a68f T42b Misc · Numbers passes review 2026-09-28 01:14:17 -04:00
ZacharyZhang-NY d1345cd14e T42a Misc · Time passes review 2026-09-28 00:30:00 -04:00
ZacharyZhang-NY 4777cd666b Tasks: split T42 into seven 2026-09-27 23:44:24 -04:00
ZacharyZhang-NY e97850163f T41c Maps · World passes review 2026-09-27 23:42:16 -04:00
ZacharyZhang-NY a64b78b673 T41b Maps · Layers passes review 2026-09-27 23:01:43 -04:00
ZacharyZhang-NY 91a0fc2252 T41a Maps · View passes review 2026-09-27 22:20:08 -04:00
ZacharyZhang-NY 090520a9f1 Tasks: split T41 into view, layers and world 2026-09-27 20:57:30 -04:00
ZacharyZhang-NY 2863e4fde2 T40b a11y passes review 2026-09-27 20:52:32 -04:00
ZacharyZhang-NY aa39fba87f T40a i18n passes review 2026-09-27 19:40:34 -04:00
ZacharyZhang-NY 17e3e19fc9 Tasks: split T40 into i18n and a11y 2026-09-27 18:26:52 -04:00
ZacharyZhang-NY ba5ec73ecb T39c Theme · Platform passes review 2026-09-27 18:25:40 -04:00
ZacharyZhang-NY 5f5504be38 Theme · Platform: a title bar in three parts, buttons at the window's rem
A title bar lays out a start, a title and an end. In the centered styles
the start and end grow alike from nothing, their padding inside them, so
a short title sits at the bar's center and a long one gives way before
whatever stands at either end; on Windows the title, or a spacer when
there is none, takes the free width before the buttons. Caption buttons
take the bar's height at the window's own rem. Tests keep an untitled
Windows bar's buttons at its end, a long Linux title before the round
buttons, a short title centered, and the buttons inside a bar at rem 8.
2026-09-27 18:20:20 -04:00
ZacharyZhang-NY ff1e97132e Theme · Platform: caption buttons of their own height, titles that give way
Windows caption buttons take the bar's height less its hairline, a new
token, instead of their row's, so they keep their height beside caps
that wrap below them. A title bar's title is an Ellipsis: on Windows it
takes the free width before the buttons and gives way; a centered title
sits inset past the lights on both sides. The controls never shrink.
Tests hold a long Windows title's close button inside a 280px bar and
wrapped caps inside their row.
2026-09-27 18:04:05 -04:00
ZacharyZhang-NY 7f2205c811 T39b Theme · Importing passes review 2026-09-27 17:34:16 -04:00
ZacharyZhang-NY d95ee5a88d Theme · Importing: a long name gives way, four-digit colors read
A read theme's name is an Ellipsis that gives way beside its mode badge,
so a long name keeps the badge inside a 280px box. parse_hex reads #rgba
as VS Code does, each digit doubled, so a theme with a four-digit color
reads. Tests hold the badge inside the box and read #0008 as black at
0x88 alpha.
2026-09-27 17:32:21 -04:00
ZacharyZhang-NY d2a5c0d955 T39a Theme · Editing passes review 2026-09-27 17:02:23 -04:00
ZacharyZhang-NY fe6a20d463 Theme · Editing: segments sized by their labels, a thumb that covers its segment
A segmented control's segments now take their labels' widths first and
share the spare room, so a label ends in an ellipsis only when the whole
strip lacks room. The thumb's insets meet the strip's padding again, and
each segment is measured from its borderless wrapper, so the thumb covers
the chosen segment exactly. Tests hold Comfortable whole at 280px and the
thumb to the chosen segment's bounds.
2026-09-27 16:58:23 -04:00
ZacharyZhang-NY 84bc45df5f Theme · Editing: segments that give way, every color named
SegmentedControl's segments now give way when narrow, their labels
ending in an ellipsis, down to twice a control's height each; past
that the strip scrolls as before. The pill's border and padding moved
onto the scrolling strip, and the row inside it takes that floor as its
least width, so the strip scrolls exactly to its last segment. The
palette macro now writes each color's name from its field: Palette and
Syntax gain NAMES and token_mut for every color, the quiet fills too.
Tests press a density segment and each slider, and fit the density
strip in 280px with the text a step and a half larger.
2026-09-27 16:48:07 -04:00
ZacharyZhang-NY 9160fdc931 Theme · Editing: a theme laid open, and an owner's palette per mode
settings::ThemeEditor lays a theme open: density, corners, text size,
high contrast and reduced motion, then twelve colors of the mode shown,
each a swatch that opens a picker beside its hex; each change hands the
owner a whole draft. Theme::set_palette takes an owner's palette per
mode, the colors fading to it when the mode shows; Theme::palette names
the palette the shown mode fades to; Palette::token_mut and
Syntax::token_mut reach a color by its field's name. The gallery's
theme page applies the editor to the whole gallery live, with a way
back to Ely's theme.
2026-09-27 16:31:33 -04:00
ZacharyZhang-NY 5edc937cdf T38b passes review in round 1 2026-09-27 16:18:23 -04:00
ZacharyZhang-NY 08171a269d T38a passes review in round 2 2026-09-27 16:01:08 -04:00
ZacharyZhang-NY c19c45ca8a Interaction · Pointer: handles inside the box, drags from the press
Resizable's grip sits inside the box's lower right corner and its edge
handles lie inside the edges, their lines on the edge; the edges use
layout::resize_edge, a resize_handle whose line shows only while
hovered, since the box draws its own border. A drag now measures from
the handle's press, kept in keyed state, so the edge follows the
pointer from the first move. Tests drag the right edge downward and
the bottom edge sideways, turn the dial without Shift, and draw a band
with Shift over a selection.
2026-09-27 15:58:19 -04:00
ZacharyZhang-NY 040fc94f49 Interaction · Pointer: resize, turn, band selection, and gpui's own drag
Resizable sizes a box from its right and bottom edges and a grip at
its corner, within its least and greatest size; the grip is a Tab stop
whose arrows resize a step. Rotatable turns an svg to its angle inside
a ring whose knob a drag moves, Shift snapping to 15 degrees, with the
arrows turning it a notch. SelectionArea selects items with a band
drawn on empty space, a press, Command or Shift to add, and a cursor
the arrows walk with Space to add or drop; Escape clears and
Command-A takes all. The gallery shows gpui's own drag and drop, drag
preview, double press and wheel zoom, with pointers for Sortable,
LongPress and PanZoom; pinch stays blocked, gpui 0.2.2 forwards no
magnify event.
2026-09-27 15:42:03 -04:00