Commit Graph
8851 Commits
Author SHA1 Message Date
Muki Kiboigo 68af3a264d properly add lengthComputable flag to XHR sync path 2026-08-25 17:43:04 -07:00
Muki Kiboigo 8bd0febda6 only emit done event on sync XHR 2026-08-25 17:43:04 -07:00
Muki Kiboigo 4171078568 fix crash in sync path of XHR 2026-08-25 17:43:04 -07:00
Muki Kiboigo 35edb2b190 add the ability to do sync requests with XMLHttpRequest 2026-08-25 17:43:04 -07:00
Muki Kiboigo 234d47d0e2 syncRequest -> submitSync on Transfer 2026-08-25 17:43:03 -07:00
Karl Seguin 53e1db66d0 Merge pull request #3273 from lightpanda-io/driver-guidance-rendering
tools: drop the 'no rendering' claim from the driver guidance
2026-08-26 06:36:32 +08:00
Karl Seguin 64cdead237 Merge pull request #3271 from lightpanda-io/mem-vmhwm
mem: On linux CI builds, use an orderfile
2026-08-26 06:35:25 +08:00
Karl Seguin a9d93a87df Merge pull request #3264 from lightpanda-io/wpt-webdriver-keyboard
webdriver: Improve WebDriver keyboard handling
2026-08-26 06:33:59 +08:00
Karl Seguin 22e02f5070 Merge pull request #3263 from lightpanda-io/usp-invalid-escapes
webapi: URLSearchParams passes invalid percent-escapes through
2026-08-26 06:33:49 +08:00
Pierre Tachoire a01e148ab0 Merge pull request #3268 from lightpanda-io/mcp-http-close-after-reject
mcp: close the connection after a keep_alive=false response
2026-08-25 15:38:12 +02:00
Karl Seguin 2929660ae7 Merge pull request #3272 from lightpanda-io/fix-make-test-filter
Makefile: fix test filtering
2026-08-25 21:24:19 +08:00
Adrià Arrufat 4583066b2f tools: drop the 'no rendering' claim from the driver guidance
The engine renders PNGs since #3231. What is still true for the model is
that no tool exposes pixels, so say that instead.
2026-08-25 15:24:01 +02:00
Adrià Arrufat 04484f287f Makefile: fix test filtering
- Stop re-exporting command-line variables via MAKEFLAGS: tikv-jemalloc-sys's
  build script appends its jobserver flags after the inherited "-- F=..."
  separator, so a cold cargo cache failed with "No rule to make target '-j'"
  whenever any VAR=value was passed to make.
- `TEST_FILTER=... make test` was silently clobbered by the empty F and ran
  the full suite; fall back to the environment value when F is unset.
2026-08-25 15:16:02 +02:00
Karl Seguin ee1fd9207c mem: On linux CI builds, use an orderfile
CI build, for e2e-test and nightly now build with:
-Dorderfile/lightpanda.ld

This file informs the build on how to organize the code in the binary, grouping
hot code together so that we have to load less of the binary into memory.

lightpanda.ld will drift: we'll refactor our code, add new features, update
dependencies, update Zig, ... So it has to be re-generated. But we can do that
automatically in the CI (say, before the nightly build). That's for a follow up
PR.

This does not currently cover V8. V8 is being build with
`-no-unique-section-names`, so we don't get names that we can correctly
organize. The real win comes from doing this in V8, since a lot of V8 is cold.
This PR can land as-is, a zig-v8-fork PR will remove that flag, and then we can
have a follow up PR with an lightpanda.ld that includes the v8 symbols.

This is opt-in (via the -Dorderfile flag) because it adds ~20 seconds of
linking time.
2026-08-25 21:02:31 +08:00
Halil Durak 08219f91d6 Merge pull request #3230 from lightpanda-io/nikneym/mimic-image-fetch
Introduce `--load-resources`, supporting `image` parameter
2026-08-25 14:41:21 +03:00
Halil Durak ef7dc313e6 update tests 2026-08-25 14:20:39 +03:00
Halil Durak eb9080be16 Session: update stale comment 2026-08-25 14:20:39 +03:00
Halil Durak f07f818d2f Image: fix generation update order 2026-08-25 14:20:39 +03:00
Halil Durak 87a87ba62e HttpClient: remove pending_low_queue, separate keys for headers_only in cache, more eager connection reuse 2026-08-25 14:20:38 +03:00
Halil Durak 3265d66052 change how --load-resources are provided from CLI 2026-08-25 14:18:47 +03:00
Halil Durak 9b9ecedc7d Image: cover src changes on attributeRemove 2026-08-25 14:18:47 +03:00
Halil Durak 4c946fd172 pendingLoadCompleted can reach documentIsComplete
which results in running events on a destroyed object.
2026-08-25 14:18:47 +03:00
Halil Durak add0f1729f move loadImage and ImageLoad to resource_load.zig 2026-08-25 14:18:47 +03:00
Halil Durak 46f230a44d remove unnecessary import 2026-08-25 14:18:47 +03:00
Halil Durak 2a1659b967 Frame: remove unreachable in dataCallback of ImageLoad 2026-08-25 14:18:46 +03:00
Halil Durak c1079444c4 addHeader -> setHeader + enable low prio for images 2026-08-25 14:18:46 +03:00
Halil Durak d254302f6d update tests 2026-08-25 14:18:46 +03:00
Halil Durak 24019ef1a7 testing interface should respect --load-resources 2026-08-25 14:18:46 +03:00
Halil Durak 6f7aa67c21 update help.zon 2026-08-25 14:18:45 +03:00
Halil Durak e58f99da18 add --load-resources CLI arg, supporting image param 2026-08-25 14:18:45 +03:00
Karl Seguin feb8d17863 Merge pull request #3260 from staylor/fix/termination-async-module-reentry
stability: drop async module completions after termination
2026-08-25 18:49:26 +08:00
Karl Seguin b7f1a2d6cd check terminatePending on Frame.isGoingAway 2026-08-25 18:38:05 +08:00
Karl Seguin 289502e19a Merge pull request #3231 from lightpanda-io/screenshot
Screenshot
2026-08-25 18:12:00 +08:00
Karl Seguin 0c24db4a00 mem: try lto=thin
Try lto=thin in rust so that the html5ever code sits together and triggers less
misses which result in more memory being used.
2026-08-25 17:02:56 +08:00
Adrià Arrufat ec396f5dc1 mcp: close the connection after a keep_alive=false response
std.http.Server's respond() only drains the request body when the server
keeps the connection alive; with keep_alive=false it leaves the body
unread, sets reader.state = .closing, and expects the caller to sever the
connection ("the connection will be severed after the response is sent").

handleConn looped on the client's keep_alive flag instead, which is true
for any HTTP/1.1 request, so after a 405/413/415/417/403 it called
receiveHead() again and fed the unread POST body to the head parser. The
server advertised `connection: close` but held the socket open until the
peer gave up.

Honour the reader's closing state so the socket is closed right after the
rejection response.
2026-08-25 10:33:39 +02:00
Karl Seguin de422a72f5 Embed DejaVuSansMono-Bold.ttf for bold headings
fix slant direction for italics
2026-08-25 16:02:51 +08:00
Adrià Arrufat dbe89c1b31 Merge pull request #3252 from keenableai/feat/keenable-search-engine
search: add Keenable engine with a keyless rung above the DDG scrape
2026-08-25 08:53:24 +02:00
Ilya Bogin 887e4108bb Merge pull request #1 from lightpanda-io/keenable-review-followups
search: repin zenai to the merged commit and finish the review follow-ups
2026-08-25 09:01:39 +03:00
Karl Seguin 8a951d4f0e webdriver: Improve WebDriver keyboard handling
Normalize key codepoints for the "Private Use Areas" keyboard.

Page holds a `input_modifiers` map so that multiple action sequence preserve
modifier keep states (this is only active with -Dwpt_extensions).

We now generate a keypress and synthentic click on specific keyboard events.
E.g. A trusted "enter" on keydown where the target is an anchor.

Improves various /uievents/ WPT cases.
2026-08-25 13:03:57 +08:00
Karl Seguin 99c8744458 webapi: URLSearchParams passes invalid percent-escapes through
A '%' followed by two non-hex digits is passed through literally. So %2sf ->
%2sf, not a hex decode error.
2026-08-25 12:24:30 +08:00
Karl Seguin 341a015708 Merge pull request #3259 from navidemad/fix-mouseevent-coordinate-flooring
webapi: floor MouseEvent coordinate getters to integers, Chrome-style
2026-08-25 09:32:04 +08:00
Karl Seguin 5d4b01e3a7 add flooring to click-like pointer events 2026-08-25 08:36:32 +08:00
Karl Seguin b403c51ea1 Merge pull request #3257 from navidemad/fix-b20-draggable-idl
webapi: implement the HTMLElement.draggable IDL attribute
2026-08-25 08:17:13 +08:00
Karl Seguin b72042365a Merge pull request #3254 from lightpanda-io/wpt-webdriver-click-semantics
webdriver: better mouse events
2026-08-25 07:09:55 +08:00
Karl Seguin 4d19bf1e5a Merge pull request #3253 from lightpanda-io/URLSearchParams
webapi: URLSearchParams improvements
2026-08-25 07:09:14 +08:00
Karl Seguin 99ee50259b Merge pull request #3248 from lightpanda-io/transfer-single-outcome-guarantee
http: Guarantee Transfer contract of single outcome callback
2026-08-25 07:08:54 +08:00
Karl Seguin 174ba384b8 Merge pull request #3261 from lightpanda-io/mcp-log-format-default
mcp: make logfmt a Config default instead of an override
2026-08-25 07:07:45 +08:00
Adrià Arrufat e02c45888d mcp: make logfmt a Config default instead of an override
MCP mode unconditionally set log.opts.format = .logfmt after the
--log_format flag had already been applied, so `--log_format pretty`
was silently ignored. It also ran after the "starting server" line,
which came out in the pre-override format in debug builds.

Move it into Config.logFormat() as a mode-aware default, mirroring
what logLevel() does for agent mode: null -> logfmt for mcp, and an
explicit flag wins.
2026-08-24 19:35:07 +02:00
Scott Taylor 8673f0815e stability: drop async module completions after termination
Assisted-By: devx/c74ae588-eb01-43ac-9c5d-2e6938841883
2026-08-24 12:32:26 -04:00
Navid EMAD 110d0076a4 webapi: floor MouseEvent coordinate getters to integers, Chrome-style
clientX/clientY, screenX/screenY, pageX/pageY, layerX/layerY and the x/y
aliases returned the MouseEventInit double verbatim, so a synthetic event
built with clientX: 47.5 read back 47.5. Chrome floors these getters on
MouseEvent and its non-pointer subclasses (DragEvent, WheelEvent) and
exposes fractional coordinates on PointerEvent only; page code and
automation tooling written against Chrome assume integer mouse
coordinates. The getters now floor unless the event's _type tag says
pointer_event, so the inherited PointerEvent accessors keep the
fractional double.

Closes #3258
2026-08-24 16:47:47 +02:00