Install script now removes index.html, QR codes, and download bundles
from existing site directories before rebuild-all regenerates them.
Preserves config.json, .onionshare-session, server.pid, and logs.
Also auto-rebuilds on serve if index.html is missing.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Existing sites kept stale index.html from old templates after upgrades.
New `voxvera rebuild-all` regenerates HTML for all sites from the
current master template while preserving keys, config, and content.
The install script now calls rebuild-all automatically after install.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Bump version to 0.3.1 for new release with all content fixes
- Reorder install strategies: tarball first (always current with main),
pre-built binary last (can lag behind)
- Translate the "name" field across all 14 locale files
- Rebuild HTML files with updated locales
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Stop deleting pip/pipx Python entry points by narrowing the stale
binary check to ELF/Mach-O only (not generic "executable")
- Clean up stale pip wheel cache, /tmp leftovers, ~/config.json and
~/imports/ from older VoxVera versions (preserves ~/host tor sites)
- Run hash -r after install and prompt user to do the same if command
is not found (curl|bash runs in a subshell)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
The Debian Bookworm SSL/TLS stack (both OpenSSL for curl and GnuTLS
for git) frequently fails or hangs against GitHub. This overhaul:
- Adds wget as fallback downloader (different TLS codepath)
- Wraps all git/network ops with `timeout` to prevent hangs
- Reorders strategies: binary → tarball → shallow clone → pipx → pip
(tarball now before git-based methods since it needs no git protocol)
- Each download retries 3x with both curl and wget before giving up
- Installs wget as a system dep on apt-based distros
- Final error message gives manual download instructions
Co-Authored-By: Claude Opus 4.6 <[email protected]>
A failed binary download (or leftover from a previous install) at
~/.local/bin/voxvera shadows the pipx/pip entrypoint script. Now all
non-binary strategies detect and remove stale ELF/Mach-O binaries
before declaring success.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add GIT_HTTP_LOW_SPEED_LIMIT/TIME to prevent git clones from hanging
- Force TLS 1.2 to work around GnuTLS negotiation bugs on older Debian
- Add curl retries, timeouts, and --retry-connrefused
- Add GitHub tarball fallback (no git clone needed at all)
- Add shallow clone (--depth 1) as final fallback
- Refactor install strategies into a clean cascade: binary → pipx →
pip git → tarball → shallow clone
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Root cause: user-local werkzeug 2.0.3 in ~/.local/lib/python3.11/
site-packages shadows the system werkzeug 2.2.2, breaking Flask's
LocalProxy.unbound_message for the system onionshare-cli.
The pip3 show-based cleanup was unreliable (shows system package,
skips user-local). Two-pronged fix:
1. Set PYTHONNOUSERSITE=1 in the env passed to onionshare-cli so it
never loads packages from ~/.local — uses only system packages.
2. Install script now directly rm -rf's conflicting packages from
~/.local/lib/python3.*/site-packages/ instead of relying on pip3.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Previous pip --user installs left werkzeug 2.0.3 in ~/.local which
shadows the system werkzeug and breaks the system onionshare-cli
(Flask 2.2.2 requires werkzeug >= 2.2 for LocalProxy.unbound_message).
Changes:
- Remove flask, werkzeug, and onionshare-cli from voxvera's own
dependencies — they are onionshare's transitive deps, not ours
- Install script now cleans up stale user-local packages (werkzeug,
flask, flask-socketio, onionshare-cli, voxvera) before installing
- Prevents pip --user packages from poisoning system Python environment
Co-Authored-By: Claude Opus 4.6 <[email protected]>
pipx can omit setuptools at runtime even when listed as a dependency,
causing onionshare-cli to crash on `from pkg_resources import resource_filename`.
Add explicit `pipx inject` after install and ensure setuptools is in deps.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Pinned Flask<2.3.0 and Werkzeug<3.0.0 to fix TypeError in LocalProxy.
- Prepended vendor directory to sys.path for maximum robustness.
- Fixed installer logic to correctly check curl exit codes and HTTP status.
- Standardized binary names across all scripts.
- Use ubuntu-20.04 for Linux builds to ensure compatibility with older GLIBC (like Debian 12).
- Standardized binary names to include architecture (voxvera-linux-x86_64).
- Improved install scripts to handle 404 errors and prevent empty file installation.
- Updated binaries.yml to use ubuntu-latest for Linux packaging.
- Fixed Linux-specific build triggers (.deb, AppImage, Flatpak).
- Standardized binary preparation for packaging scripts.
- Improved dependency installation in ci.yml and e2e.yml using test/e2e extras.
- Synchronized and improved install.sh and voxvera-install.sh for better binary/pip fallback.
- Updated release.yml to build voxvera-linux
- Updated build_appimage.sh to expect voxvera-linux
- Added OS detection to install.sh to fetch correct binary
- Updated README.md and usage docs with links to new binaries