Caution
This is a major upgrade and a complete re-write of the core catalog system. If you have a large catalog of files, this upgrade may take some time to complete as it migrates your data to the new format. If you have shell access, we recommend running the update from the command line:
sudo /var/www/bbs/bin/bbs-update
What's New
Catalog System Overhaul
- Flat per-agent catalog tables — replaces the old normalized
file_paths+file_catalogschema with simplefile_catalog_{agent_id}tables. Eliminates expensive JOINs and deduplication overhead. - MyISAM + server-side LOAD DATA INFILE — catalog imports that previously took 7+ minutes now complete in under 70 seconds for ~1M files.
- Instant directory browsing — new
catalog_dirsindex table enables sub-second folder expansion in the file recovery UI, even for catalogs with millions of files. - Automatic schema upgrades — existing catalog tables are automatically converted (InnoDB→MyISAM, TEXT→VARCHAR, optimized indexes) during update.
- Catalog cleanup on prune — pruned archives now have their catalog entries automatically removed, preventing unbounded table growth.
SSH-Piped Catalog Streaming
- Catalog data now streams directly from agent to server via SSH pipe instead of HTTP batch upload — faster, more reliable, and handles arbitrarily large file lists.
Background Upgrade Page
- Clicking "Upgrade" now runs the update in the background and redirects to a dedicated progress page with a live progress bar, streaming log output, and elapsed timer. All other pages redirect to the upgrade page while an update is in progress. Future upgrades will use this new flow automatically.
Split Updater
bbs-updateis now a two-stage process: thin shell wrapper pulls code, thenbbs-update-runexecutes post-pull steps using the freshly-pulled version. Ensures update steps always match the new code.
PHP Migration Support
- The migration system now supports
.phpmigration files alongside.sql, enabling complex data migrations that require application logic.
Reliability Fixes
- Auto-prune now waits for catalog import to complete before starting, preventing table lock contention on MyISAM tables
- Fixed catalog tree root path browsing (LIKE pattern and SUBSTRING offset bugs)
Quality of Life
- Real-time status messages in queue UI (plugin phase, file counting, etc.)
- Detailed timing logs for catalog imports visible in the server log
- Agent self-update fixes for ASCII-only systems
- Borg cache lock cleanup before each task
- Bulletproof catalog upload with stream-to-disk, retry, and resume
Agent Updates (v2.0.2)
- SSH catalog streaming support
- Fixed update failures on ASCII-only locales
- Fixed Unicode encoding errors on non-UTF-8 systems
- Auto-clear stale borg cache locks