Commit Graph

346 Commits

Author SHA1 Message Date
Karl Seguin
e2f80ace33 update v8 dep 2026-07-24 11:34:45 +08:00
Karl Seguin
0871b6a8da disable Zig 0.16 signal_stack_size
Make sure jemallocator is disabled in Release builds (we only use it in Debug
builds to collect metrics. Supposedly something changed in our 0.16 build that
causes it to be initialized even though it isn't used. Not sure, for this, I'm
just doing what Claude tell me, but disabling something in Release that I know
we aren't using sounds ok).
2026-07-22 13:26:06 +08:00
Karl Seguin
92537df123 Raise memory limit regression to 29MB
We've been climbing the last couple weeks, and Zig 0.16 appears to have added
~400KB. I'll try to go hunt it, but I don't want this to delay the merge.

(Pierre agrees)
2026-07-22 13:26:06 +08:00
Karl Seguin
df7bde233d Fix linux build
Try to fix CI (this is what claude came up with, I have no idea why CI is
failing).
2026-07-22 13:26:06 +08:00
Pierre Tachoire
fd35c0d01a wpt: adjust concurrency 2026-07-21 11:38:27 +02:00
Thibaud-Vdb
1d553ff5ee ci: add plumber to watch workflow security
Runs on pushes to main and on pull requests. The config starts from
the generated defaults and is scoped to this repo: the few controls
that are off carry a note explaining why and what would let them
come back on.

Reports are uploaded to code scanning, except on PRs from forks
where the token cannot write security events. Each run on main also
publishes the score through OIDC, which feeds the live badge added
to the README next to the existing ones.
2026-07-20 15:12:58 +02:00
Thibaud-Vdb
cca00c022e ci: pin github actions to commit shas
Mutable tags like @v6 can be re-pointed by whoever controls the action,
so the next run executes code nobody here reviewed, with the job's
token and secrets. Pinning to the full commit sha freezes what runs.
Version tags are kept as comments so renovate or dependabot can still
track updates.

dtolnay/rust-toolchain is pinned to a master commit with the toolchain
moved to an explicit input, as its readme recommends for sha pinning.
2026-07-20 14:56:59 +02:00
Pierre Tachoire
af3a552af7 wpt: set a memory limit per browser instead of per process 2026-07-20 08:29:44 +02:00
Adrià Arrufat
f5ddbb49fe ci: publish agent-regression results to slack, run nightly
Mirror the wpt/e2e-integration pattern: tee the suite output to a log,
strip the ANSI colors, and upload it to the #ci-agent channel
(AGENT_SLACK_CHANNEL_ID) via the CI slack bot, with the final
pass/fail summary as the comment. The post also happens when the
suite fails, without masking its exit code (explicit bash pipefail).

Add a nightly cron trigger (03:37, offset from wpt's 02:21) so the
suite actually runs unattended; workflow_dispatch stays for manual
runs with a model override.
2026-07-08 16:22:41 +02:00
Karl Seguin
cc7d319ea5 Merge pull request #2874 from lightpanda-io/agent-regression
Add agent regression suite to CI (consumed from lightpanda-io/demo)
2026-07-08 09:19:00 +08:00
Karl Seguin
4253bd852d update v8 dep 2026-07-07 20:41:12 +08:00
Adrià Arrufat
52a8779f2a Merge branch 'main' into agent-regression 2026-07-07 11:43:12 +02:00
Karl Seguin
5056140bff Merge pull request #2857 from lightpanda-io/detach_global
v8: When re-using window, detach from original context first
2026-07-04 13:39:17 +08:00
Karl Seguin
a082dc2b07 update v8 2026-07-04 07:29:40 +08:00
Adrià Arrufat
2170b34ea9 ci: agent-regression is manual-only, drop the nightly cron
Claude-Session: https://claude.ai/code/session_01SG5kc3gGurhT7N6f63cjMq
2026-07-03 12:01:05 +02:00
Adrià Arrufat
f7bcdace77 ci: drop temporary push trigger, cross-repo wiring validated green
Claude-Session: https://claude.ai/code/session_01SG5kc3gGurhT7N6f63cjMq
2026-07-03 10:13:43 +02:00
Adrià Arrufat
bd95d9a610 test: consume agent regression suite from lightpanda-io/demo
The suite moved to the demo repo (machinery in agent/, targets the
existing public/ sites — lightpanda-io/demo#206). Delete the in-repo
copy and point the agent-deterministic job, agent-regression.yml, and
make test-agent at the demo checkout, passing the binary via LPD_PATH
(the same variable wptrunner uses) — same consumption model as
runner/integration/wpt.

Includes a temporary push trigger on agent-regression.yml to validate
the cross-repo wiring pre-merge; dropped before merging.
2026-07-03 09:59:29 +02:00
Adrià Arrufat
f9c3e4bc2a ci: drop temporary push trigger, suite validated green in CI 2026-07-02 12:00:19 +02:00
Adrià Arrufat
86ef37e12b ci: temporary push trigger to validate agent-regression pre-merge 2026-07-02 10:24:59 +02:00
Adrià Arrufat
f191410773 test: add agent regression suite
Two layers driven by test/agent/run.sh:

- deterministic: replay a golden PandaScript against frozen local HN
  fixtures and diff the returned JSON exactly against a golden file.
  No API key, no network; gates every PR via e2e-test.yml.

- live (GOOGLE_API_KEY): closed-form Q&A over a local fixture page
  (substring match), and a live Hacker News scrape saved with --save,
  replayed token-free and validated against a jq shape invariant.
  Runs nightly and on demand via agent-regression.yml.

The live output contract lives in cases/hn-live.task (prompt) +
schemas/hn-live.jq (invariant). Model pinned to gemini-3.5-flash in
run.sh; per-task timeouts and a $usage token ceiling guard runaway
loops. make test-agent for local runs.
2026-07-02 09:40:22 +02:00
Halil Durak
5e567adf1b ci: run serve command with TLS host verification disabled 2026-07-02 08:46:21 +03:00
Pierre Tachoire
7aa8bac4ba ci: add read permission to release for docker 2026-06-30 08:31:15 +02:00
Karl Seguin
1f8076b8be Merge pull request #2834 from lightpanda-io/update-v8
Update v8
2026-06-30 13:58:58 +08:00
Karl Seguin
d2f72dfd4b update v8 version 2026-06-30 13:39:13 +08:00
Karl Seguin
98157e18ab update zig-v8-fork dep 2026-06-30 13:36:02 +08:00
Pierre Tachoire
30eb23e0c5 ci: login on GH registry during release 2026-06-29 09:41:58 +02:00
Pierre Tachoire
e396cbb90c ci: login on GH registry during release 2026-06-29 09:38:10 +02:00
Pierre Tachoire
4d07f47da1 Generate a versions.json file 2026-06-25 17:45:19 +02:00
Pierre Tachoire
4e97d1e2e9 ci: fix homebrew release workflow name 2026-06-24 08:13:36 +02:00
Pierre Tachoire
4314148b70 ci: trigger homebrew-browser formula update after release 2026-06-23 11:58:22 +02:00
Pierre Tachoire
ff6fc57d3d call browser-docker workflow after installation 2026-06-22 18:00:48 +02:00
Pierre Tachoire
b2f7bdd935 ci: upload on s3 an agent alias 2026-06-18 10:10:59 +02:00
Karl Seguin
0b85904967 update v8 dep 2026-06-18 11:19:18 +08:00
Pierre Tachoire
7836e1e042 ci: invalidate cloudfront distribution on release 2026-06-17 08:33:57 +02:00
Pierre Tachoire
12cdaea683 ci: upload release on s3 in its own directory 2026-06-17 08:29:06 +02:00
Pierre Tachoire
cd5822c889 ci: remove nightly agent build 2026-06-17 08:29:03 +02:00
Karl Seguin
0c1bb406c0 ci: Include v8 version in Snapshot cache key 2026-06-11 17:12:55 +08:00
Pierre Tachoire
a899fbaec0 ci: fix cache invalidation for agent-build 2026-06-09 11:18:23 +02:00
Pierre Tachoire
8d98d7aa99 ci: add missing cache key for integration test 2026-06-08 12:05:44 +02:00
Pierre Tachoire
41cff18e75 ci: save LP cache for integration tests 2026-06-08 10:56:26 +02:00
Karl Seguin
80bf294e1c update v8 dep 2026-06-04 12:49:51 +08:00
Karl Seguin
79cdbd285d Improve forced terminate on CDP client disconnect.
Depends on https://github.com/lightpanda-io/zig-v8-fork/pull/179

An improvement to https://github.com/lightpanda-io/browser/pull/2515 to prevent
a v8 assertion if we terminate as an inspector dispatch is happening.

The problem is that if we just immediately terminate, we aren't sure what the
worker thread is doing, and, apparently, if we terminate then dispatch a message
to the inspector, we fail an assertion.

With the way the code was, the only safe solution would be to hold a mutex
over the session dispatch, but that could block the network thread.

So instead of terminating from the network thread, we now ask v8 to execute
a callback. This gets executed on the worker thread, which can then terminate
the execution.

The initial version of 2515 delayed the termination from the network thread.
It's possible that solution would "solve" the issue, simply because it's very
unlikely that a worker would be "stuck" for 5 seconds and then get unstuck.
More likely that it exits immediately, or is stuck in an endless loop. But
that would still leave a window where we could terminate in network and then
dispatch in the worker. Less likely, but still possible. Hopefully this new
mechanism eliminates this from being a problem in all circumstances.
2026-06-02 08:27:49 +08:00
Pierre Tachoire
d68f1a48ad ci: always enable cache with e2e test 2026-05-28 11:25:47 +02:00
Pierre Tachoire
a15c04de4b ci: remove cdp logs from end to end tests 2026-05-19 17:32:13 +02:00
Adrià Arrufat
8981a6245c ci: tighten mcp-smoke jq assertions
Replace `grep '"id":N' | jq -e ...` with `jq -ec 'select(.id == N) | ...'`.
The grep form also matched `"id":10`, `"id":11`, ... and any tool description
containing that substring; numeric `select` is type-correct. `jq -e` still
fails the job when `select` produces no output (exit 4), so the smoke
semantics are preserved.

Also add `jq --version` up front so the job fails fast and loud if the
`ubuntu-latest` image ever stops shipping jq.
2026-05-17 10:43:03 +02:00
Pierre Tachoire
803e4303c2 Merge pull request #2481 from navidemad/ci-mcp-smoke
ci: smoke test the MCP stdio server
2026-05-17 10:39:18 +02:00
Karl Seguin
a5c1068b85 Force kill lightpanda between steps to prevent "port already in-use" error in CI 2026-05-16 08:39:53 +08:00
Navid EMAD
f08a1fef12 ci: smoke test the MCP stdio server
Sends initialize + notifications/initialized + tools/list over stdin
and asserts the JSON-RPC responses with jq. Catches regressions in
the agentic surface (./lightpanda mcp) without needing a node client.

Reuses the existing lightpanda-build-release artifact, so the new
job costs about a minute on top of zig-build-release.
2026-05-15 22:53:38 +02:00
Karl Seguin
2bcf9a22d5 Disable cache=true from e2e matrix
cache=true is problematic for a few reasons

1 - The current cache implementation is known to cause timing issues; i.e. it
    executes callbacks synchronously.

2 - Unlike something like robots.txt or proxy, cache tests need to be explicitly
    tested. The response has to include cache headers and the resource loaded
    again.
2026-05-13 17:52:46 +08:00
Karl Seguin
bcd94c4f9d Update v8 dep
https://github.com/lightpanda-io/browser/issues/2407
2026-05-12 14:06:17 +08:00