fix(sdk,ui): kit bugs, template races, preview parity, and an agent component guide
Radin committed
- Author
- Radin · radin@coline.appOct 1, 2026 at 06:14
- Committer
- Radin · radin@coline.appOct 1, 2026 at 06:14
- Parents
- d29b2c3ce126
fix(sdk,ui): kit bugs, template races, preview parity, and an agent component guide
From a Sol (GPT-6.1) review of the SDK/CLI/kit and from watching GPT-6
Luna build two apps with only the shipped docs. Kit gallery E2E 14/14,
all four templates check, full-stack 74/74.
Kit
- Charts that mounted with no data never measured, so they stayed blank
when data arrived (callback ref instead of a mount effect).
- Collapsed accordion content stayed focusable and exposed to screen
readers; it is now visibility-hidden after the collapse animation.
- Clearing a search could let the query typed just before fire after it.
- DataGrid rows opened when a button inside a cell was clicked, and Enter
on a cell control opened the row; on phones every column was squeezed
to a few letters (now a readable minimum width, scrolling sideways).
- ConfirmButton stayed disabled forever after a synchronous throw; it
resets and reports errors (new optional onError).
- useConnection instances share status, so connecting with ConnectButton
unlocks the page (the integration template never saw the connection).
Templates and SDK
- Integration: a sync and a webhook could insert the same issue twice;
records now get a deterministic id per repo and issue number.
- Editor: empty or very long headings made the preview renderer throw.
- Integration AGENTS said job writes belong to the app; jobs act as
whoever enqueued them. Documented the job effect ceiling and links.
- External links: navigation.navigate("https://…") silently did nothing
in production; Coline now offers "Open github.com?" and opens a new tab
on the person's click (the sandbox still cannot open windows).
- Schedule time zones are validated; a typo used to run in UTC silently.
- The test workspace evaluates an event's person-scoped reads as its
actor, like production.
- Preview: uploads failed (guest sends `bytes`, the fake takes `data`) and
the connect/destination pickers returned member-picker shapes; an IPv6
loopback bind advertised an IPv4 URL and rejected its own Host header.
Agent experience (Luna's misses traced to our docs)
- The design skill steered agents to FilterMenu as a value picker and said
boards have no drag and drop. It now has a "component for the job"
table: KanbanBoard for stages, DataGrid, DatePicker, Combobox for people,
Select for fields, Stat/charts, Sheet, ConfirmButton, ConnectButton, …
- The integration template's clientId "YOUR_GITHUB_CLIENT_ID" read like a
secret name, and Luna copied the pattern ("STRIPE_CONNECT_CLIENT_ID").
It is now REPLACE_WITH_…, the docs say clientId is the literal public ID,
and `coline-app check` warns about secret-like ids and placeholders.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>6 files changed+91−20