Commit Graph

5506 Commits

Author SHA1 Message Date
Nick Sweeting
2bfb3ad4eb
release: archivebox 0.9.35rc5 2026-06-09 22:09:28 -07:00
Nick Sweeting
b8c3ce36a8
Exercise import parsing through live add APIs
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Has been cancelled
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Run linters / lint (push) Has been cancelled
Build Pip package / build (push) Has been cancelled
Release State / release-state (push) Has been cancelled
Parallel Tests / Discover test files (push) Has been cancelled
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Has been cancelled
Run tests / docker_tests (push) Has been cancelled
Update Homebrew tap / dispatch (push) Has been cancelled
Build Docker image / publish multiarch tags (push) Has been cancelled
Parallel Tests / ${{ matrix.test.name }} (push) Has been cancelled
Parallel Tests / ${{ matrix.plugin.name }} (push) Has been cancelled
2026-06-08 23:47:45 -07:00
Nick Sweeting
a1449c2822
Use plugin URL patterns for source imports 2026-06-08 23:40:25 -07:00
Nick Sweeting
f59af9cb2a
Cover malicious feed add input 2026-06-08 23:32:52 -07:00
Nick Sweeting
5adec53b4c
Expand add flow runtime handling 2026-06-08 23:27:08 -07:00
Nick Sweeting
c48531b61c
release: archivebox 0.9.35rc4 2026-06-08 16:33:44 -07:00
Nick Sweeting
c7ad2fe60d Fix takeover log assertion 2026-06-08 16:00:34 -07:00
Nick Sweeting
d1975c90a1
Fix paused crawl integration expectation
Some checks are pending
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Update Homebrew tap / dispatch (push) Waiting to run
2026-06-08 06:25:07 -07:00
Nick Sweeting
cc701b6ab2
release: archivebox 0.9.35rc3 2026-06-08 06:08:22 -07:00
Nick Sweeting
302479308b
Fix CI test expectations for current runtime 2026-06-08 05:37:02 -07:00
Nick Sweeting
0642d085be
release: archivebox 0.9.35rc2 2026-06-08 05:03:19 -07:00
Nick Sweeting
a99f3bfd49
bump version 2026-06-08 04:48:46 -07:00
Nick Sweeting
7bf9bac08c
Delete CLAUDE.md 2026-06-08 07:47:23 -04:00
Nick Sweeting
4b0a143174
Change copyright year to 2026
Updated copyright year in the LICENSE file.
2026-06-08 07:45:56 -04:00
Nick Sweeting
1eadff04f1
root dir cleanup 2026-06-08 04:45:13 -07:00
Nick Sweeting
2b71254fe9
Restore Docker lib root under opt archivebox 2026-06-08 04:44:40 -07:00
Nick Sweeting
24677ae3a7
Delete .claude directory 2026-06-08 07:33:37 -04:00
Nick Sweeting
6b03472086
Update WorkingDirectory and ExecStart in service file 2026-06-08 07:32:33 -04:00
Nick Sweeting
1bb51ca9ee
Repair abxbus cache ownership at Docker startup 2026-06-08 04:30:12 -07:00
Nick Sweeting
4fe678055b
Fix CI expectations for fast crawl and takeover logs
Some checks are pending
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Update Homebrew tap / dispatch (push) Waiting to run
2026-06-07 21:36:06 -07:00
Nick Sweeting
608b9348bb
Restore Docker chromium shim path 2026-06-07 21:01:43 -07:00
Nick Sweeting
c57f0f2543
Fix Docker chrome shim path 2026-06-07 20:57:55 -07:00
Nick Sweeting
4fa90e484a
release: archivebox 0.9.34rc71 2026-06-07 20:51:28 -07:00
Nick Sweeting
667f1658f0
release: archivebox 0.9.34rc70
Some checks are pending
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Update Homebrew tap / dispatch (push) Waiting to run
2026-06-07 13:10:34 -07:00
Nick Sweeting
101c73f67c
Add bundled HTTPS ingress compose profiles 2026-06-07 12:36:51 -07:00
Nick Sweeting
1540e66193
test: relax search stream latency ceiling 2026-06-07 12:34:21 -07:00
Nick Sweeting
8a56553f07
ci: verify all published docker tags 2026-06-07 12:02:16 -07:00
Nick Sweeting
2659f20dc4
fix runner takeover for scoped snapshot workers 2026-06-07 11:41:17 -07:00
Nick Sweeting
0816435b68
test: make sonic takeover fixtures explicit 2026-06-07 06:07:44 -07:00
Nick Sweeting
bb436c5b8d
ci: pin uv setup version 2026-06-07 05:48:58 -07:00
Nick Sweeting
7e62118da0
test: wait for stable daemon runner gate 2026-06-07 05:41:02 -07:00
Nick Sweeting
6c497e543e
ci: install sonic backend plugin for sonic shards 2026-06-07 05:25:32 -07:00
Nick Sweeting
03879c453f
ci: install sonic for runtime search shards 2026-06-07 05:22:24 -07:00
Nick Sweeting
c306018c8c
test: expect normalized snapshot permissions 2026-06-07 04:59:04 -07:00
Nick Sweeting
ea82a36d2b
release: archivebox 0.9.34rc69 2026-06-07 04:34:11 -07:00
Nick Sweeting
1ba5281343
release: archivebox 0.9.34rc68 2026-06-07 04:19:40 -07:00
Nick Sweeting
87b518314a
release: archivebox 0.9.34rc67 2026-06-07 04:06:45 -07:00
Nick Sweeting
2b9a1a7887
Use mkdir -p in install docs 2026-06-07 02:57:38 -07:00
Nick Sweeting
8a22449c29
Update apt install documentation 2026-06-07 02:42:18 -07:00
Nick Sweeting
e580f1a550
release: archivebox 0.9.34rc66 2026-06-06 23:40:29 -07:00
Nick Sweeting
d14dd37b95
release: archivebox 0.9.34rc65 2026-06-06 23:34:58 -07:00
Nick Sweeting
200906410a
release: archivebox 0.9.34rc64 2026-06-06 23:28:53 -07:00
Nick Sweeting
0a3c89e73c
release: archivebox 0.9.34rc63 2026-06-06 23:27:54 -07:00
Nick Sweeting
36e0e3e2b6
release: archivebox 0.9.34rc62 2026-06-06 23:19:13 -07:00
Nick Sweeting
f9b13e3828
release: archivebox 0.9.34rc61 2026-06-06 23:09:44 -07:00
Nick Sweeting
a25adf22eb
Build ArchiveBox on compact abx-dl image
Some checks are pending
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Update Homebrew tap / dispatch (push) Waiting to run
2026-06-06 20:41:21 -07:00
Nick Sweeting
0c984651a3
Avoid Docker bytecode cleanup 2026-06-06 17:28:42 -07:00
Nick Sweeting
a0aec802b7
Support URLs up to 8000 chars with TextField storage (#1817)
Some checks are pending
CodeQL / Analyze (${{ matrix.language }}) (none, python) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-amd64, docker-amd64, linux/amd64, ubuntu-24.04) (push) Waiting to run
Build Docker image / build ${{ matrix.platform }} (digest-linux-arm64, docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Waiting to run
Build Docker image / publish multiarch tags (push) Blocked by required conditions
Run linters / lint (push) Waiting to run
Build Pip package / build (push) Waiting to run
Release State / release-state (push) Waiting to run
Parallel Tests / Discover test files (push) Waiting to run
Parallel Tests / ${{ matrix.test.name }} (push) Blocked by required conditions
Parallel Tests / ${{ matrix.plugin.name }} (push) Blocked by required conditions
Run tests / python_tests (ubuntu-22.04, 3.13) (push) Waiting to run
Run tests / docker_tests (push) Waiting to run
Update Homebrew tap / dispatch (push) Waiting to run
## Summary

Changes the `Snapshot.url` field from a fixed-length
`CharField(max_length=65535)` to a variable-length `TextField` while
enforcing a practical 8000-character limit. This allows short URLs to
use minimal storage space while still supporting very long URLs (e.g.,
data: URLs, deeply nested query strings) that are common in real-world
scenarios.

The TextField with a normal database index maintains fast exact, prefix,
and substring lookups while reducing storage overhead for typical URLs.

## Related issues

Improves URL handling to match practical web server/proxy limits (8000
chars is the de facto standard enforced by most infrastructure).

## Changes these areas

- [x] Internal architecture
- [x] Snapshot data layout on disk

## Details

### Changes Made

1. **`archivebox/misc/util.py`**: Reduced `MAX_URL_LENGTH` from 65535 to
8000 with detailed comments explaining the rationale
2. **`archivebox/core/models.py`**: Changed `Snapshot.url` field from
`CharField(max_length=MAX_URL_LENGTH)` to `TextField(db_index=True)`
with validation in the model's `save()` method
3. **`archivebox/core/migrations/0049_alter_snapshot_url.py`**: Django
migration to alter the field type
4. **`archivebox/tests/test_snapshot_url_length.py`**: Comprehensive
test suite covering:
   - URL length validation at the limit and over the limit
   - Full round-trip persistence through the database
   - Query operations (exact match, prefix search, substring search)
   - Uniqueness constraints per crawl
   - Cross-crawl URL reuse

### Why This Change

- **Storage efficiency**: Variable-length TextField doesn't reserve 8000
bytes for every URL
- **Practical limit**: 8000 chars matches the upper bound enforced by
most web servers and proxies
- **Query performance**: Normal database index on TextField maintains
fast lookups for all query types
- **Real-world support**: Handles legitimate long URLs (data: URIs,
complex query strings) while rejecting pathological cases

## Test Plan

Added comprehensive test suite (`test_snapshot_url_length.py`) that
validates:
- URLs at exactly the 8000-char limit are accepted and persisted
correctly
- URLs exceeding the limit are rejected with validation errors
- Database queries (exact, prefix, substring) work correctly on long
URLs
- Uniqueness constraints per crawl are still enforced
- Same URL can exist in different crawls

All tests pass with the new implementation.

https://claude.ai/code/session_01BLnGTL5GSoouD4ihaYp55n

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Store `Snapshot.url` as an indexed `TextField` to support very long URLs
efficiently while keeping exact, prefix, and substring searches fast.
The supported URL length remains 65535 characters.

- **Refactors**
- Changed `Snapshot.url` from `CharField` to `TextField(db_index=True)`.
- Kept `MAX_URL_LENGTH` at 65535 and validate in model/utilities; tests
updated to the 65535 boundary, lookups, and per-crawl uniqueness.

- **Migration**
  - Apply `0049_alter_snapshot_url`.
- No data rewrite; existing rows remain. New/updated URLs must be ≤65535
chars.

<sup>Written for commit d6d479f50b.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/ArchiveBox/ArchiveBox/pull/1817?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-06-06 03:11:53 -04:00
Nick Sweeting
7cfebc7815
Simplify Docker image layering 2026-06-06 00:02:01 -07:00
Nick Sweeting
d6d479f50b
Merge branch 'dev' into claude/festive-hopper-0p7Bj 2026-06-06 02:38:33 -04:00