Commit Graph
6863 Commits
Author SHA1 Message Date
Nick Sweeting 5750f9be76 Simplify ArchiveBox model, runner, and interface responsibilities 2026-09-17 19:00:45 -07:00
ArchiveBox Release Bot 1fa2d4dc96 Bump release version to 0.9.35rc461 v0.9.35rc461 release-candidate/0.9.35rc461 2026-09-17 23:42:11 +00:00
ArchiveBox Release Bot 00a8105b6c Bump for abx-dl 1.12.282 2026-09-17 23:41:54 +00:00
ArchiveBox Release Bot d96092d76d Bump release version to 0.9.35rc460 release-candidate/0.9.35rc460 v0.9.35rc460 2026-09-17 23:27:21 +00:00
ArchiveBox Release Bot 3f54139240 Bump for abx-dl 1.12.281 2026-09-17 23:27:02 +00:00
ArchiveBox Release Bot 673a1fb4ed Bump release version to 0.9.35rc459 release-candidate/0.9.35rc459 2026-09-17 23:16:00 +00:00
Nick Sweeting a711ae7da0 Fix trusted snapshot previews across server security modes 2026-09-17 16:15:17 -07:00
ArchiveBox Release Bot 680ef683ee Bump release version to 0.9.35rc458 v0.9.35rc458 release-candidate/0.9.35rc458 2026-09-17 23:02:50 +00:00
ArchiveBox Release Bot 3350aba3f3 Bump for abx-dl 1.12.279 2026-09-17 23:02:24 +00:00
ArchiveBox Release Bot 83ed0e9a4c Bump release version to 0.9.35rc457 release-candidate/0.9.35rc457 v0.9.35rc457 2026-09-17 22:36:53 +00:00
Nick Sweeting d3aa90b060 Persist TLSNotary opt-in before starting screenshot workers 2026-09-17 15:36:30 -07:00
ArchiveBox Release Bot e3a5f77981 Bump release version to 0.9.35rc456 release-candidate/0.9.35rc456 v0.9.35rc456 2026-09-17 22:30:00 +00:00
Nick Sweeting 786a9d07df Report capture diagnostics when gallery verification output is missing 2026-09-17 15:29:46 -07:00
ArchiveBox Release Bot 510365a282 Bump release version to 0.9.35rc455 release-candidate/0.9.35rc455 2026-09-17 22:21:13 +00:00
Nick Sweeting 4d12bfd650 Configure screenshot services before starting the server 2026-09-17 15:20:52 -07:00
Nick Sweeting 0f1a89b199 Preserve downloader layers and verify TLSNotary in the screenshot gallery 2026-09-17 15:20:51 -07:00
ArchiveBox Release Bot c73884e3d8 Bump release version to 0.9.35rc454 release-candidate/0.9.35rc454 2026-09-17 22:20:36 +00:00
ArchiveBox Release Bot 06572f2e38 Bump for abx-dl 1.12.278 2026-09-17 22:20:14 +00:00
ArchiveBox Release Bot d7e9504a52 Bump release version to 0.9.35rc453 v0.9.35rc453 release-candidate/0.9.35rc453 2026-09-17 21:40:09 +00:00
Nick Sweeting c09fa8ffd3 Cache collection totals outside progress requests 2026-09-17 14:39:55 -07:00
ArchiveBox Release Bot d00ffe9f3b Bump release version to 0.9.35rc452 v0.9.35rc452 release-candidate/0.9.35rc452 2026-09-17 21:03:43 +00:00
Nick Sweeting 29d40addf4 Issue browser sessions from administrator API keys for native apps 2026-09-17 14:03:24 -07:00
ArchiveBox Release Bot b512553d75 Bump release version to 0.9.35rc451 v0.9.35rc451 release-candidate/0.9.35rc451 2026-09-17 20:05:26 +00:00
ArchiveBox Release Bot a2f8d81b60 Bump for abx-dl 1.12.276 2026-09-17 20:05:09 +00:00
ArchiveBox Release Bot 63326f501a Bump release version to 0.9.35rc450 v0.9.35rc450 release-candidate/0.9.35rc450 2026-09-17 19:41:39 +00:00
Nick Sweeting 79d864915d Bound crawl admission and fix server, search, and schedule contention 2026-09-17 12:40:48 -07:00
ArchiveBox Release Bot 8c5ea7974c Bump release version to 0.9.35rc449 release-candidate/0.9.35rc449 v0.9.35rc449 2026-09-16 22:32:20 +00:00
Nick Sweeting 9a00ac6929 Fix Machine.current startup after weekly host refresh
Machine.save intentionally invalidates the process cache so config edits are visible immediately. Keep a local instance through host refresh, sanitation, and file reconciliation, then publish the completed instance to the cache. Explain why invalidation must remain and why reading the global after save can return None.

Add a real CLI regression that ages persisted machine rows, runs archivebox status, and verifies successful refresh without changing machine identities. Confirmed failing before the fix; 13 targeted tests and Ruff checks pass.
2026-09-16 15:31:50 -07:00
ArchiveBox Release Bot 5d6fc0cc3c Bump release version to 0.9.35rc448 v0.9.35rc448 release-candidate/0.9.35rc448 2026-09-16 22:04:08 +00:00
ArchiveBox Release Bot 86b81452db Bump for abx-dl 1.12.274 2026-09-16 22:03:45 +00:00
ArchiveBox Release Bot 30a1ec8fa3 Bump release version to 0.9.35rc447 release-candidate/0.9.35rc447 2026-09-16 22:00:09 +00:00
Nick Sweeting 1f3f3b6e0f Serve log and shell script files as inline plain text 2026-09-16 14:59:27 -07:00
ArchiveBox Release Bot e81802c91b Bump release version to 0.9.35rc446 release-candidate/0.9.35rc446 2026-09-16 21:54:09 +00:00
Nick Sweeting 57240f8798 Self-heal Docker permissions and wait for Sonic search readiness (#1877)
Fixes #1876.

## Root cause

`restart: unless-stopped` repeated the startup failure; it did not
create it. The Docker entrypoint created required directories as
container root first and swallowed failures before checking them as the
application user. On NFS `root_squash` and filesystems with synthetic
ownership, root can be unable to create or change a path that the
intended non-root identity can use. That led to the reported `cannot
write to /data/logs` failure.

## What changed

- Honor Docker `PUID`/`PGID` when supplied, otherwise retain
collection-owner detection and the `911:911` fallback. ArchiveBox and
Chrome remain non-root; `PGID=0` remains supported.
- Check and create required paths as the final non-root identity first.
If a collection path is inaccessible, repair only that path's own
metadata as root and recheck. Runtime/cache trees can receive one-time
recursive repair only after their access check fails.
- Use real create/delete probes for logs, archive output, and the Chrome
profile. Writable NFS/synthetic-permission mounts avoid repeated
metadata operations.
- Never recursively scan or change `data/archive`, regardless of byte
size. The cost is driven by file count and filesystem latency, so even
measuring a 2 GiB threshold would be undesirable at startup.
- Clean up only known browser lock files at persona profile roots,
without traversing large profiles.
- Keep the shipped Compose restart policy, and test fresh
initialization, non-root execution, restarts, root-squashed NFS, and
explicit `PGID=0` with real containers.
- Wait for a newly started Sonic worker to answer on its search port
before querying. An explicit `SONIC_BINARY` (absolute path or relative
executable name) now takes precedence over a persisted Machine config
value before plugin hydration; absolute paths are pinned in Supervisor
rather than routed through a mutable `lib/env/bin/sonic` projection.
Sonic releases have incompatible on-disk KV encodings. A real CLI
regression test checks both override forms, the generated Supervisor
command, and the listener guard. Backend failures now include child
stderr and the Sonic worker log in test output.

## Verification

- `uv run pytest archivebox/tests/test_permissions.py -q` (15 passed)
- `bash -n bin/docker_entrypoint.sh bin/validate_docker_uid_gid.sh`
- Targeted pre-commit hooks for all changed files
- Real Docker checks for distinct PUID/PGID, explicit `PGID=0`, PUID 0
fallback, shallow collection repair, and unchanged nested archive
ownership
- Fresh Compose initialization and non-root writes succeeded; a restart
returned healthy
- Five warm starts on the same Docker Desktop host: previous entrypoint
1.48s, changed entrypoint 1.50s (within run-to-run noise)
- Live Sonic search matrix passed locally on Linux ARM and in native
x86_64 CI
- Real CLI regressions for absolute and relative Sonic binary overrides
over persisted config passed locally on Linux ARM
- Full CI workflow passed on the final PR commit
2026-09-16 17:51:32 -04:00
Nick Sweeting a9b5fe0911 Honor relative Sonic binary environment overrides 2026-09-16 14:23:41 -07:00
Nick Sweeting 72f011c734 Honor explicit Sonic binary over stored machine config 2026-09-16 13:47:46 -07:00
Nick Sweeting af73e93d51 Preserve Sonic listener guard for custom binary paths 2026-09-16 13:30:16 -07:00
Nick Sweeting 9b93a55fcb Keep Sonic E2E binary outside managed install tree 2026-09-16 13:25:58 -07:00
Nick Sweeting 09fb7270c5 Honor explicit Sonic binary in supervisor worker 2026-09-16 13:08:02 -07:00
Nick Sweeting b9833c962c Pin Sonic executable across search index lifecycle 2026-09-16 12:41:40 -07:00
Nick Sweeting 77ce497ad7 Include Sonic daemon logs in search test failures 2026-09-16 12:24:01 -07:00
Nick Sweeting d3275f445d Cover Sonic index writes and finish Docker review fixes 2026-09-16 12:19:52 -07:00
Nick Sweeting 8977cdde4e Bound startup cache work and surface Sonic plugin failures 2026-09-16 11:57:48 -07:00
Nick Sweeting c1e030919a Wait for Sonic listener before running search queries 2026-09-16 11:40:53 -07:00
Nick Sweeting cd5202bce0 Auto-repair Docker mount permissions safely 2026-09-15 20:07:11 -07:00
ArchiveBox Release Bot 3a32fe9404 Bump release version to 0.9.35rc445 v0.9.35rc445 release-candidate/0.9.35rc445 2026-09-15 23:39:10 +00:00
Nick Sweeting f973e0a353 Honor Chrome sandbox config during persona imports 2026-09-15 16:38:47 -07:00
ArchiveBox Release Bot 7265eb0569 Bump release version to 0.9.35rc444 v0.9.35rc444 release-candidate/0.9.35rc444 2026-09-15 23:21:24 +00:00
Nick Sweeting 4ea7acd3c6 Fix pre-commit violations in persona startup changes 2026-09-15 16:20:56 -07:00
ArchiveBox Release Bot deb44ea972 Bump release version to 0.9.35rc443 release-candidate/0.9.35rc443 2026-09-15 23:16:36 +00:00