• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

solidjs / solid / 36198964945
74%
main: 89%

Build:
Build:
LAST BUILD BRANCH: claude/issue-3672
DEFAULT BRANCH: main
Ran 25 Sep 2026 11:03PM UTC
Jobs 1
Files 8
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

25 Sep 2026 10:56PM UTC coverage: 73.772% (-0.09%) from 73.859%
36198964945

push

github

web-flow
Stage 8 Part B: live server components — frames consume live, document face, conditional reconnect, GET end to end (#3660)

* frames: tear the render down when its reader is gone (Stage 8 B1)

A frame render lived as long as its sources did: `serverComponentResponse`'s
body `cancel()` only dropped writes, and nothing carried the request's
abort to the render — a frame's emission never touches the document
writable, so `renderToStream`'s disconnect path could not fire. Now
`renderToStream` takes `signal?: AbortSignal` and aborts through that
same path (`abandon("signal")`, `SSR_STREAM_ABANDONED` with
`data.reason: "signal"`). The frame responses own a teardown controller:
the body's `cancel()` aborts it, the request's signal (passed by
`frameTransformResult` / `frameTransformFlightResult` from
`event.request.signal`) chains into it, and the body closes itself on
abort since a torn-down render never ends its sink. A flight response
stops at the frame in progress and skips the rest.

The other half was in the reactive core: the frame-scope pump noticed
`comp.disposed` only when `next()` settled, so a source parked on a wait
was held until its next yield. The pump closes its source from the
compute's disposal now (`onDisposed`, run by the owner's disposal flag);
both pump sites share one `pumpIterator`.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* frames: consume live — a live server component is the loop's connection

A server component called through `live(fn)` is now a standing render
whose lifetime is the reference's loop. The call arrives at the live
address, `frameTransformResult` learns it from the invocation record
(`getServerFunctionInvocation().live`) and `serverComponentResponse({
live })` frames the chunks as server-sent events with the live headers,
the idle heartbeat and the dev chaos knob (`armLiveBody`, shared with
the codec stream). On the client the loop's wire slot rides on t... (continued)

625 of 914 branches covered (68.38%)

Branch coverage included in aggregate %.

6 of 11 new or added lines in 3 files covered. (54.55%)

922 of 1183 relevant lines covered (77.94%)

27.1 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
75.53
-0.04% packages/solid/src/client/hydration.ts
2
0.0
0.0% packages/solid/src/internal.ts
1
55.56
-2.14% packages/solid/src/index.ts
Jobs
ID Job ID Ran Files Coverage
1 36198964945.1 25 Sep 2026 11:03PM UTC 8
73.77
GitHub Action Run
Source Files on build 36198964945
  • Tree
  • List 8
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #36198964945
  • 1d3ec5d8 on github
  • Prev Build on next (#36165283560)
  • Next Build on next (#36229998558)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc