AeroFoil v2.4.0
Highlights
- Rebranded from OwnFoil to AeroFoil with updated branding/assets.
- Added a dedicated Downloads page with live torrent status and stronger end-to-end update handling.
- Added IP lockout and permanent auth blacklist controls for login protection.
- Switched production serving to Waitress WSGI and added a Fast transfer mode toggle.
- Expanded Save backup management (per-user folders, delete API/UI, and clearer Save Data Backups UX).
New Features
- Download automation improvements:
- Configurable search character replacements.
- Prowlarr categories filter and request timeout settings.
- Better completion tracking/retry behavior.
- Manage page improvements:
- Resizable/expandable diagnostics panel.
- Duplicate cleanup action with dry-run support.
- Conversion workflow updates:
- Verify toggle.
- Better NSZ progress/failure handling.
- API/UI additions:
- Memory diagnostics endpoint and enhanced diagnostics UI.
- Activity page lockout visibility and client detail improvements.
Performance & Reliability
- Major memory improvements:
- TitleDB titles/CNMT moved to disk-backed indexes.
- Lower cold-boot RSS when TitleDB is unavailable.
- Reduced scan/rebuild memory pressure and rebuild churn.
- API/database optimizations:
- Hot endpoints moved to DB-backed/cached paths.
- Batched DB writes and SQLite runtime performance schema.
- Cached shop sections and benchmark guardrails.
- Robustness fixes:
- Hardened TitleDB JSON recovery and hydration refresh.
- Multiple conversion DB/session consistency fixes.
- Restored and normalized diacritic-insensitive search behavior.
UI & UX
- Refreshed layout across Manage/Users/Requests/Upload/Discovery pages.
- Improved Activity page UX and client detail visibility.
- Updated header/login banners and runtime version visibility in settings.
- Renamed Saves Files page to Save Data Backups.
Upgrade Notes
- Preferred env vars are now AEROFOIL_; legacy OWNFOIL_ names remain supported for backward compatibility.
- python app/app.py now runs with Waitress by default; use AEROFOIL_USE_FLASK_DEV=true only for Flask dev mode.
- Start.bat moved to repository root.
Full compare: v2.3.0...v2.4.0