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.