Dad Joke of the Release
What do you call a moose that everyone knows? Famoose 🤣
What's New
1. Custom Branding
Replace the default BentoPDF logo, name, and footer text with your own.
- 3 new build-time variables —
VITE_BRAND_NAME,VITE_BRAND_LOGO,VITE_FOOTER_TEXT. - Works across all deployment methods, Docker, static hosting, air-gapped.
- Compatible with Simple Mode and all other build options.
2. Default Language Configuration
Set the default UI language at build time so users see your preferred language on first visit.
- New
VITE_DEFAULT_LANGUAGEbuild variable — supports all 15 languages. - Configurable via Docker
--build-argor.env.production.
3. Air-Gapped Deployment Script
A new scripts/prepare-airgap.sh automates the entire air-gapped deployment process
- Interactive mode — run it with no arguments and it walks you through everything.
- Downloads WASM packages, builds the Docker image, and exports a self-contained bundle.
- Generates a
setup.shfor the air-gapped side - Supports all build options (branding, language, Simple Mode, base URL).
4. Non-Root Dockerfile
New Dockerfile.nonroot is added for deployments where containers must not run as root.
5. Fixes & Improvements
- Divide Pages node fix — fixed workflow node for page division.
- Dutch tools.json corrections — Thanks @Stephan-P! ❤️
- Updated self-hosting docs (Vercel, Netlify, Cloudflare, AWS, Nginx, Apache, Docker) with branding and language configuration.
- Added Scanner Effect, Adjust Colors, and PDF Workflow Builder to README tools table.
As always, thank you very much for your support. If you run into any issues with branding or the air-gapped script, please report them. Thank you and have a great weekend! ❤️
Full Changelog: v2.2.0...v2.2.1