Lower default resources for the Zerobyte container: reduce CPU from 4 to 2 and RAM to 2048 MB. Update ct/zerobyte.sh (var_cpu and var_ram) and frontend/public/json/zerobyte.json (UI resources) so the script and frontend metadata remain consistent.
Increase Zerobyte VM defaults (CPU 2→4, RAM 4096→6192). Add a debconf preseed for davfs2 (suid_file=false) to prevent interactive prompts during apt install. Remove redundant mkdir/cp of drizzle migrations and instead expose MIGRATIONS_PATH (/opt/zerobyte/app/drizzle) in the installer environment so migrations are referenced in-place rather than duplicated.
Introduce Zerobyte support: add LXC container installer (install/zerobyte-install.sh), container template/update script (ct/zerobyte.sh), and frontend metadata (frontend/public/json/zerobyte.json). Update docs (docs/AI.md) to require explicit "tarball" mode for fetch_and_deploy_gh_release, add helper notes and best-practices, and include a new get_latest_github_release usage. Also switch the shellscript formatter in .vscode/settings.json to foxundermoon.shell-format. The installer fetches required binaries (restic, rclone, shoutrrr), installs Bun, builds Zerobyte, configures a systemd service, and prepares runtime directories and env config.
Replace the previous `pip install calibreweb` and `uv sync` steps with explicit upgrades of pip/setuptools/wheel and installing dependencies from requirements.txt. If present, optional-requirements.txt is installed as well. Changes applied to both the installer and container update scripts to provide clearer, reproducible dependency management.
Remove the conditional retry logic and always run the venv creation, pip install of calibreweb, and uv sync without build isolation. Updated ct/calibre-web.sh and install/calibre-web-install.sh to: run `$STD uv venv`, `$STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir calibreweb`, then `$STD uv sync --no-dev --no-build-isolation`. This simplifies the dependency installation flow and ensures the virtualenv and package are installed before syncing.
Add retry logic to ct/calibre-web.sh and install/calibre-web-install.sh: if 'uv sync --no-dev' fails, the scripts now create/ensure a venv, install the 'calibreweb' package into it via 'uv pip', and retry 'uv sync' with '--no-build-isolation'. This works around failures caused by isolated builds or build-step issues and preserves existing log messages.
Replace pushd/popd directory stack usage with plain cd in ct/gramps-web.sh and install/gramps-web-install.sh, and remove the >/dev/null redirections. The frontend build and backend migration steps remain functionally the same but use simpler directory changes to avoid relying on pushd/popd output suppression.
Replace plain cd with pushd/popd (silenced) when building the frontend and running migrations to preserve the original working directory. Ensure database migrations run from /opt/gramps-web-api and export ALEMBIC_CONFIG in both install and update scripts so Alembic uses the correct config. Minor cleanup to silence directory stack output.
Replace legacy container/install scripts with a single tools/addon/cronmaster.sh addon. The new script consolidates install, update and uninstall flows, uses community-scripts core functions, fetches prebuilt GitHub releases, sets up Node.js (defaults to v22), creates a systemd service and an update helper (/usr/local/bin/update_cronmaster). Removed ct/cronmaster.sh and install/cronmaster-install.sh to avoid duplication and centralize maintenance.
Using password auth is not recommended, but it can be useful for testing or in environments where public key authentication is not feasible. This commit adds options to enable and disable password authentication in the SSH configuration.