Commit Graph
336 Commits
Author SHA1 Message Date
ZacharyZhang-NY 4587d1f251 T46 E2E: the suite follows the new site (hero, features, city, search, rail, keys, captures, live frames, focus, skip, full screen), in Chrome, Firefox and a phone 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 1bf9c632ec T45e Site · Local passes review 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 5d198634e7 T45e Site · Local: pnpm local builds the gallery for localhost, builds the site and serves both on 4173 2026-10-01 08:38:05 -04:00
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 4aff314bb5 T45d Site · Components: the rail reveals the current story with room, Shift arrows stay the page's 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 8d647e632f T45d Site · Components: comments one short line 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 8712fd0389 T45d Site · Components: one search over chapters, stories and components (Slash, Enter, Escape), the index in hairline rows, the story beside a sticky chapter rail, arrows between stories 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 d7dbcfbb18 T45c Site · Home: full screen locks the page's overflow and Lenis halts on it, ending a glide in flight 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 03f40c4b86 T45c Site · Home: a route change ends the glide, full screen holds against the wheel, each skip control focuses its own target 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY b47f2267e4 T45c Site · Home: a full-screen hero, five live features beside their miniatures, counts on the beat, the chapters as a city, a closing call; smooth scroll, reveals from scroll, a fade between routes; the OG image from the new hero 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 d05e73770f T45b Site · Iso: diagonal cells in order, the pointer meets only grown cells, motion follows the system live, replay by key, the header fits 280px 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 02c2bbe0a1 T45b Site · Iso: isometric line miniatures on a canvas, hidden lines removed, cells on a marimba beat, playable under the pointer, still under reduced motion 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 49d5c8161d T45a Site · Stack: comments one short line 2026-10-01 08:38:05 -04:00
ZacharyZhang-NY 3ae04f4ead T45a Site · Stack: reloads open in the current mode, the first paint keeps the system's, plain route changes 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 e3957f7816 Update README.md 2026-09-30 00:29:08 -04:00
ZacharyZhang-NY 327bdf4b7f T45 Website: native captures stand in where a browser cannot run, an OG image, no web notes 2026-09-30 00:03:23 -04:00
ZacharyZhang-NY 587e08b5cb T45 Website: an isometric miniature grows to a marimba; finance, charts and chat beside their models; no bars, no boxes 2026-09-29 23:40:04 -04:00
ZacharyZhang-NY f50a708951 T46 E2E: Playwright walks the built site, desktop and phone, live stories included 2026-09-29 23:40:04 -04:00
ZacharyZhang-NY 6ff43607b7 T45 Website: a home in motion and every story live, chapters on the left 2026-09-29 23:40:04 -04:00
ZacharyZhang-NY 58d3fd7fe2 T44d Web · Stories passes review 2026-09-29 23:39:50 -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 edab58e91a T44d Web · The gallery's start takes its defaults from one place 2026-09-29 19:16:41 -04:00
ZacharyZhang-NY 2cd2ca8bc1 T44d Web · What a browser cannot do says why; fonts resolve; the bundle builds
Demos that open a second window, take files, move the window, read the
clipboard or set native menus show a note on the web in the blocked style.
IBM Plex Sans Regular joins the assets, unmodified, where gpui's svg
renderer loads it: gpui_web answers .SystemUIFont with it. The gallery's
web entry registers a Hebrew cut of Noto Sans Hebrew. scripts/web.sh builds
the bundle with wasm-bindgen and wasm-opt -Oz, 20.0 MB, and fails past 25 MiB.
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 fe467d2bfe T44c Port · Parity passes review 2026-09-29 19:14:18 -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 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 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
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 a7e492f28e Tooling · Catalogs: the audit reads active and code; avatar and container sizes
The audit now holds fg_subtle on active, a selected row's fill, and
each syntax color over the editor's surface, a code block and the
current line. What it found is fixed at the source: fg_subtle is
#696764 light and #94928f dark, syntax.comment follows it, and the
light number, constant and attribute darken to #a3591b, #aa5529 and
#9f5d12. The token viewer adds avatar and container sizes, draws a
container at its share of the widest so it stays in its row, and
names what it shows: the shared colors and scales. Tests pin every
variant, the hue each chart row reads and the code rows.
2026-09-28 08:57:52 -04:00
ZacharyZhang-NY d5271d03ea Tooling · Catalogs: token viewer, contrast audit; fg_subtle meets AA
DesignTokenViewer shows every token of the theme in the mode shown,
named as code reads it: colors with their hex, syntax, chart and
terminal colors, the type scale, radii, control and icon sizes,
elevations and spacing. A11yChecker audits each text color over the
surfaces it sits on at 4.5:1 and the focus ring and chart hues at
3:1, failures first. The audit found fg_subtle under 4.5:1 on hover
and overlay; it is #6f6d6a light and #8c8a87 dark now, and a test
holds all four Ely palettes to the audit. IconBrowser points to
forms::IconPicker and the ScreenshotTest Harness to the gallery's
capture, each with a section on the tooling page.
2026-09-28 08:23:39 -04:00
ZacharyZhang-NY bfd1285064 T43b Tooling · Inspection passes review 2026-09-28 08:05:26 -04:00
ZacharyZhang-NY 4d1a17d29a Tooling · Inspection: stalls count whole, the panel owns Tab, bound keys log
FpsMeter keeps the stamp before the last second, so a frame longer
than the span shows as the worst and a bar. The inspector's panel, a
second root out of the app's scope, sits in a FocusScope of its own,
so Tab goes on from Pick. EventLogger takes key downs through an
interceptor, which runs before bindings, and marks its box with a key
context to know focus is inside, so a field's Backspace and Enter log.
Tests hold the stall, Tab both ways through Pick, bound keys in a
field, a key while focus is outside, newest first and a bare border.
2026-09-28 07:54:54 -04:00