Commit Graph

3063 Commits

Author SHA1 Message Date
Nick Sweeting
0d061392f8
Import Chromium personas with portable authenticated browser state 2026-09-11 13:45:02 -07:00
Nick Sweeting
f0d7947874
Explain why agent adapters reuse request configuration 2026-09-07 01:49:36 -07:00
Nick Sweeting
6f8e3b75a3
Reuse request configuration in optional agent adapters 2026-09-07 01:39:34 -07:00
Nick Sweeting
974cb91a22
Assert OpenCode defaults do not pin a model that can leave the catalog 2026-09-07 01:18:02 -07:00
Nick Sweeting
434a78a02d
Test OpenCode private asset caching and honor isolated test package paths 2026-09-07 01:03:33 -07:00
Nick Sweeting
a59742940b
Test immediate OpenCode events and real terminal ticket handshakes (#1871)
* Stop initializing Git repositories for OpenCode sessions

* Isolate optional AI failures behind a lazy plugin adapter

* Keep explicit plugin enable flags boolean after config resolution

* Use Django login redirect encoding at the optional agent boundary

* Cover cold-start failures and real browser storage isolation

* Verify persisted dismissal and native storage denial variants

* Keep headless browser interaction independent of display timing

* Install optional OpenCode clients through the plugin extra

* Authenticate and route optional OpenCode WebSockets with real browser coverage

* Apply control-plane policy and proxy authentication to agent sockets

* Require immediate delivery of the first real OpenCode event

* Exercise browser same-origin headers in event regression

* Exercise OpenCode terminal tickets in proxy and browser regressions

* Preserve primary terminal failure while verifying cleanup
2026-09-03 19:09:25 -07:00
Nick Sweeting
fb66ca15d6
Route authenticated OpenCode WebSockets and verify mounted browser navigation (#1870)
* Stop initializing Git repositories for OpenCode sessions

* Isolate optional AI failures behind a lazy plugin adapter

* Keep explicit plugin enable flags boolean after config resolution

* Use Django login redirect encoding at the optional agent boundary

* Cover cold-start failures and real browser storage isolation

* Verify persisted dismissal and native storage denial variants

* Keep headless browser interaction independent of display timing

* Install optional OpenCode clients through the plugin extra

* Authenticate and route optional OpenCode WebSockets with real browser coverage

* Apply control-plane policy and proxy authentication to agent sockets
2026-09-03 17:33:32 -07:00
Nick Sweeting
d044f5ee0e
Isolate OpenCode in its plugin and stop forced Git initialization (#1869)
* Stop initializing Git repositories for OpenCode sessions

* Isolate optional AI failures behind a lazy plugin adapter

* Keep explicit plugin enable flags boolean after config resolution

* Use Django login redirect encoding at the optional agent boundary

* Cover cold-start failures and real browser storage isolation

* Verify persisted dismissal and native storage denial variants

* Keep headless browser interaction independent of display timing

* Install optional OpenCode clients through the plugin extra
2026-09-03 16:05:30 -07:00
Nick Sweeting
e7ff7cdad2
Disable OpenCode filesystem snapshots 2026-09-03 11:50:09 -07:00
Nick Sweeting
27c2a947b4
Handle existing OpenCode JSONC defaults 2026-09-03 11:22:07 -07:00
Nick Sweeting
9a3f058f73
Fix OpenCode defaults and false health failures 2026-09-03 10:56:43 -07:00
Nick Sweeting
57e7820a0b
Bound OpenCode startup health probes 2026-09-03 01:13:40 -07:00
Nick Sweeting
57ee874d6e
Trust ready OpenCode processes 2026-09-03 00:59:38 -07:00
Nick Sweeting
650697f3c2
Make OpenCode readiness checks race-safe 2026-09-03 00:17:53 -07:00
Nick Sweeting
91aa70cc73
Track OpenCode readiness separately from liveness 2026-09-03 00:14:34 -07:00
Nick Sweeting
8a12e3399c
Honor the OpenCode recovery deadline 2026-09-02 23:57:59 -07:00
Nick Sweeting
944907bfee
Keep OpenCode proxy traffic out of recovery 2026-09-02 23:56:46 -07:00
Nick Sweeting
7f1767a2db
Avoid restarting OpenCode on transient health misses 2026-09-02 23:49:58 -07:00
Nick Sweeting
a33b333b6a
Keep OpenCode recovery nonblocking 2026-09-02 23:19:30 -07:00
Nick Sweeting
00e867d949
Separate OpenCode health monitoring from recovery 2026-09-02 23:02:59 -07:00
Nick Sweeting
69ca67b37d
Make OpenCode recovery detect server changes 2026-09-02 22:47:15 -07:00
Nick Sweeting
4149b6f578
Reload stale OpenCode frames after server recovery 2026-09-02 22:37:53 -07:00
Nick Sweeting
7d7e219962
Join the SSE startup worker before test teardown 2026-09-02 22:21:52 -07:00
Nick Sweeting
24470ca551
Surface OpenCode startup failures on the event stream 2026-09-02 22:11:40 -07:00
Nick Sweeting
ff2766c007
Keep SSE disconnect test from starting a background server 2026-09-02 22:10:42 -07:00
Nick Sweeting
75cf3f1261
Keep OpenCode SSE startup off ASGI request threads 2026-09-02 22:02:03 -07:00
Nick Sweeting
ce529842e3
Stop the full OpenCode process group (#1858)
* Stop the full OpenCode process group

* Fall back when process-group signaling fails

* Guarantee fallback test process cleanup
2026-09-02 21:31:03 -07:00
Nick Sweeting
3954119a0e
Keep embedded OpenCode proxy resilient (#1857)
* Keep embedded OpenCode proxy resilient

* Serialize OpenCode startup readiness

* Re-run review after dependency rebase
2026-09-02 20:43:21 -07:00
Nick Sweeting
4a31c409ca
Avoid OpenCode proxy startup stalls (#1856)
* Avoid OpenCode proxy startup stalls

* Handle concurrent OpenCode startup and read failures

* Hide OpenCode upstream errors from clients
2026-09-02 19:49:01 -07:00
Nick Sweeting
31bdeb4534
Allow same-origin OpenCode agent framing (#1855)
* Allow same-origin OpenCode agent framing

* Reuse OpenCode proxy prefix for framing policy
2026-09-02 18:45:51 -07:00
Nick Sweeting
480ad08cf0
Fix snapshot backfill orchestration regressions (#1854)
* fix snapshot backfill orchestration regressions

* address snapshot orchestration review

* fix admin process projection fixture

* fix noresult projection fixture
2026-09-02 17:25:31 -07:00
Nick Sweeting
0a9d8fd525
Merge remote-tracking branch 'origin/dev' into refactor/simplify-snapshot-orchestration
# Conflicts:
#	archivebox/services/runner.py
2026-09-02 15:04:37 -07:00
Nick Sweeting
a29dd2edbc
test: exercise keyset maintenance pagination 2026-09-02 14:51:37 -07:00
Nick Sweeting
ec4b8ef2ef
fix: preserve unbounded maintenance pagination 2026-09-02 14:43:13 -07:00
Nick Sweeting
e878007b6a
fix: bound snapshot scheduling ownership 2026-09-02 14:35:57 -07:00
Nick Sweeting
2e0c0f14e9
Keep UUID migration check migration-only 2026-09-02 14:25:51 -07:00
Nick Sweeting
35e014ae90
fix: correlate snapshot completion leases 2026-09-02 14:18:00 -07:00
Nick Sweeting
b7b4f34090
Keep CI dependency roots isolated 2026-09-02 14:06:15 -07:00
Nick Sweeting
8bc9f40e9f
fix: harden concurrent snapshot retries 2026-09-02 13:52:42 -07:00
Nick Sweeting
a85d417d0f
fix: preserve queued snapshot retry work 2026-09-02 13:33:21 -07:00
Nick Sweeting
9ee0dcf165
fix: address orchestration review findings 2026-09-02 12:56:23 -07:00
Nick Sweeting
40e6ded0f7
Scope machine service test to liteparse 2026-09-02 12:27:56 -07:00
Nick Sweeting
809bd938a3
Preflight plugin dependencies before crawl hooks 2026-09-02 12:18:06 -07:00
Nick Sweeting
2bba758314
refactor: simplify snapshot maintenance orchestration 2026-09-02 12:05:09 -07:00
Nick Sweeting
663017924b
refactor: consume canonical abx-dl execution plans 2026-09-02 05:23:11 -07:00
Nick Sweeting
f3a8c6945d
Clarify targeted plugin maintenance contract 2026-09-02 04:59:40 -07:00
Nick Sweeting
e7b3f1c485
Adopt canonical abx-dl execution plan API 2026-09-02 04:44:55 -07:00
Nick Sweeting
23b91d6840
Merge remote-tracking branch 'origin/dev' into dev 2026-09-02 04:34:29 -07:00
Nick Sweeting
95a7e64dd7
Centralize queued plugin execution 2026-09-02 04:34:22 -07:00
Nick Sweeting
3e58261cd5
Expose yt-dlp media metadata for snapshot cards (#1819)
Supersedes #1818.

This keeps yt-dlp-specific player rendering out of ArchiveBox core. Core
now:

- exposes media type metadata to plugin card templates: `is_video`,
`is_audio`, `is_browser_playable`
- sorts yt-dlp media with browser-playable video/audio first
- prefers browser-playable yt-dlp outputs before thumbnails and
non-browser containers when choosing the primary card output
- avoids pinning resumed snapshots to stale selected hook maps, fixing a
pause/resume runner regression surfaced by CI
- makes `update --index-only` discover the configured search backend
even when `PLUGINS` is restricted for test/runtime isolation
- stabilizes CI-only recursive/takeover/public-UI tests that were
failing due external/heavy plugin coverage, hard-kill recovery races,
and transient full-server `/add/` startup responses

The actual click-to-load player UI lives in the companion plugin PR:
ArchiveBox/abx-plugins#34.

Verification:
```text
pytest archivebox/tests/test_ui_admin_snapshot.py -q
48 passed

pytest archivebox/tests/test_cli_update_reindex_snapshots.py -q
9 passed

pytest -xvs archivebox/tests/test_api_v1_crawls_crawl_crawl_id.py --basetemp=tests/out --ignore=archivebox/pkgs
7 passed

pytest -xvs archivebox/tests/test_takeover_util.py --basetemp=tests/out --ignore=archivebox/pkgs
19 passed

pytest -xvs archivebox/tests/test_takeover_util.py::test_live_add_update_jobs_survive_server_and_cli_owner_exits --basetemp=tests/out --ignore=archivebox/pkgs
1 passed

pytest -xvs archivebox/tests/test_ui_public_snapshot.py --basetemp=tests/out --ignore=archivebox/pkgs
6 passed

pytest -q archivebox/tests/test_recursive_crawl.py::test_recursive_crawl_depth_two_all_plugins_runs_snapshots_in_parallel --basetemp=tests/out --ignore=archivebox/pkgs
1 passed
```
2026-09-02 04:14:15 -07:00