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