Commit Graph

852 Commits

Author SHA1 Message Date
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
75cf3f1261
Keep OpenCode SSE startup off ASGI request threads 2026-09-02 22:02:03 -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
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
35e014ae90
fix: correlate snapshot completion leases 2026-09-02 14:18:00 -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
2bba758314
refactor: simplify snapshot maintenance orchestration 2026-09-02 12:05:09 -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
Nick Sweeting
7f9d9ca2c1
Remove transient ArchiveResult migration blip 2026-09-02 04:02:47 -07:00
Nick Sweeting
0c6f017f0a
Preserve ArchiveResult hook history through migrations 2026-09-02 03:49:53 -07:00
Nick Sweeting
fbff88fb0e
Merge remote-tracking branch 'origin/dev' into audit-pr1846
# Conflicts:
#	archivebox/cli/archivebox_extract.py
#	archivebox/core/recovery_util.py
#	archivebox/services/archive_result_service.py
#	archivebox/services/runner.py
2026-09-01 15:43:48 -07:00
Nick Sweeting
032c20bdf5
cleanup: delete obsolete model lifecycle helpers 2026-09-01 15:06:48 -07:00
Nick Sweeting
c2ce82964d
Expose yt-dlp media metadata for snapshot cards 2026-09-01 11:49:16 -07:00
Nick Sweeting
5b99586c1f
Preserve published ArchiveResult migration history 2026-09-01 11:44:54 -07:00
Nick Sweeting
92a939a6a2
Merge remote-tracking branch 'origin/dev' into audit-pr1850 2026-09-01 11:38:24 -07:00
Nick Sweeting
c817da7af6
Merge remote-tracking branch 'origin/dev' into audit-pr1846 2026-09-01 11:38:24 -07:00
Nick Sweeting
70e477c1c8
Clarify startup and local runner ownership 2026-09-01 11:35:12 -07:00
Nick Sweeting
3fc67705a5
Unify plugin runtime and queue lifecycle boundaries 2026-09-01 01:07:04 -07:00
Nick Sweeting
fe967c8a96
fix: simplify cross-machine runner handling 2026-08-31 23:43:33 -07:00
Nick Sweeting
72955a08af
Merge branch 'dev' into fix/static-archive-install-cache 2026-08-31 22:11:02 -07:00
Nick Sweeting
b28a4e1a55
Fix runner recovery across PID namespaces 2026-08-31 21:06:06 -07:00
Nick Sweeting
c498fc174c
Keep static manifest schema consistent 2026-08-30 16:11:48 -07:00
Nick Sweeting
e874ee4201
Write linked static JSONL manifest 2026-08-30 16:02:27 -07:00
Nick Sweeting
b06f2ca7ae
Keep static snapshot links offline-safe 2026-08-30 15:39:35 -07:00
Nick Sweeting
a1b763974e
Handle unarchived static snapshot details 2026-08-30 13:01:34 -07:00
Nick Sweeting
920826b1cb
Fix complete static exports and crawl progress 2026-08-30 12:39:54 -07:00
Nick Sweeting
2c901aaa44
fix: rename Archive Results admin label 2026-08-30 11:22:49 -07:00
Nick Sweeting
c8ef576235
fix: secure snapshot output deletion handoff 2026-08-29 23:03:08 -07:00
Nick Sweeting
6906edc076
fix: make portable exports and screenshot deploys reliable 2026-08-29 16:03:29 -07:00
Nick Sweeting
97486882bd
Address Cubic review feedback 2026-08-28 21:56:23 -07:00
Nick Sweeting
c062a3c54f
Eliminate request-side SQLite write transactions 2026-08-28 21:56:18 -07:00
Nick Sweeting
bdc236f076
Revert "fix: project one archive result per plugin" 2026-08-28 21:56:13 -07:00
Nick Sweeting
4762ff4f57
fix: soften archive result delete controls 2026-08-28 21:14:59 -07:00
Nick Sweeting
de14346a08
fix: project one archive result per plugin 2026-08-28 19:47:15 -07:00
Nick Sweeting
2ea6bf56f1
fix: align snapshot output actions 2026-08-28 19:47:15 -07:00
Nick Sweeting
d882c4bc0c
feat: add output controls to snapshot admin 2026-08-28 14:35:40 -07:00
Nick Sweeting
fce1827fed
Enforce snapshot permissions and authenticated add CSRF (#1844) 2026-08-28 13:42:09 -07:00
Nick Sweeting
6560ad2245
Drop unpublished ArchiveResult migrations 2026-08-28 12:04:29 -07:00
Nick Sweeting
056a02a06e
Restore ArchiveResult hook identity 2026-08-28 11:52:36 -07:00
Nick Sweeting
32362ffbd9
Ignore historical hooks during plugin recovery 2026-08-28 11:27:46 -07:00
Nick Sweeting
5caa61f694
Recover emitted plugin results durably 2026-08-28 10:19:08 -07:00
Nick Sweeting
ea7b92e878
Recover ArchiveResults by plugin 2026-08-28 09:14:07 -07:00
Nick Sweeting
43c2dc9896
Enforce one ArchiveResult per plugin 2026-08-28 08:56:07 -07:00
Nick Sweeting
f092db3255
Preserve shared ArchiveResult outputs 2026-08-28 00:23:49 -07:00
Nick Sweeting
e548608149
feat: add snapshot output batch deletion 2026-08-27 21:34:48 -07:00
Nick Sweeting
d3c28a3284
make runner takeover PID namespace safe 2026-08-27 18:15:34 -07:00