The post_install initializes var/archivebox as the data directory,
but users need to know where it is for subsequent commands. The
caveats block is shown after brew install/upgrade to guide users.
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
- preremove.sh: Stop the systemd service during upgrades (not just
remove/purge) so the running process doesn't use stale venv binaries
while postinstall replaces them. Only disable + remove venv on full
removal.
- debian.yml: Fail loudly when release lookup fails during a release
event (exit 1), but still skip gracefully for workflow_dispatch
manual testing (exit 0). Prevents silently broken .deb publication.
- archivebox.rb + build_brew.sh + homebrew.yml: Add post_install that
initializes ArchiveBox in var/archivebox with DATA_DIR set, using
correct Homebrew system() syntax (no env hash as first arg).
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
docker.yml uses github.event_name to decide between full release tags
(semver, latest) vs CI-only tags (branch, sha). When release.yml calls
it via `uses:`, the child sees event_name='workflow_call' which was
hitting the non-release path. Now workflow_call is treated the same as
workflow_dispatch so published releases get proper Docker tags.
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
- install.sh: Replace awk float comparison with integer major/minor check
so Python 3.9 is correctly rejected as < 3.13
- nfpm.yaml: Add git/curl/wget as recommends so users have basic archiving
tools out of the box without needing `archivebox install`
- debian.yml: Restore git/curl/wget in CI smoke test to match what the
package recommends, instead of relying on runner preinstalls
- debian.yml: Guard release upload to skip gracefully when no GitHub
Release exists (fixes workflow_dispatch failures)
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
The release job was duplicating ~70 lines of PyPI fetching + formula
generation that build_brew.sh already handles. Now it just calls
./bin/build_brew.sh. Also merged the two Linux-only brew setup steps.
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
Remove all non-essential dependencies from both package formats.
The .deb now only depends on python3, pip, and venv. The brew
formula only depends on python@3.13. All other runtime deps
(node, chrome, yt-dlp, wget, ripgrep, etc.) are installed
on-demand by `archivebox install` at runtime.
Removed from brew formula:
- 6 depends_on entries (node, git, wget, curl, ripgrep, yt-dlp)
- on_linux block (pkg-config, openssl, libffi)
- post_install hook (was running archivebox install)
- service block (users run archivebox server directly)
Removed from .deb:
- 6 depends entries (nodejs, npm, git, wget, curl, ripgrep)
- recommends section (yt-dlp, ffmpeg, chromium)
Net: -126 lines across packaging files.
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
- systemd service: use /usr/bin/archivebox wrapper (exports venv PATH
for bundled tools like yt-dlp) instead of direct venv binary
- install.sh: prefer python3.13, fail early with clear error if < 3.13,
add comment clarifying the manual (unpinned) fallback behavior
- debian.yml release job: fall back to pyproject.toml version when
github.event.release.tag_name is empty (workflow_dispatch path)
- nfpm.yaml: clarify that install.sh enforces the real >= 3.13 constraint
- CI pre-seed step: expanded comment explaining why we pre-seed with
python3.13 and how it relates to real installs
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn
- Pin cache-apt-pkgs-action to commit SHA for supply-chain safety
- Fix Homebrew post_install to use with_env block instead of env hash
in system() call (idiomatic Homebrew pattern)
- Add clarifying comments to service file, preremove.sh, and nfpm.yaml
explaining user/group creation, directory ownership, and upgrade handling
https://claude.ai/code/session_01Vx1EsNrNySgsc8Y67dGzCn