- scripts/deploy.sh with no tag deploys the latest main (detached
origin/main); with a tag, that release.
- ecosystem.config.js is no longer in git (now ecosystem.config.example.js;
the deploy creates the install's copy from it once). The deploy keeps the
install's copy safe across checkouts and rollbacks, including releases
that still tracked it.
- The script runs from a temp copy, so checking out a new deploy.sh can't
change it mid-run; set -E so failures in functions still roll back.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Timed jobs move from in-process timers to a job registry run by pg-boss:
once per schedule across processes, retries, run history, cron schedules
in the church timezone, and an admin Background jobs page with Run now.
Playwright end-to-end tests run against their own seeded database. A
Gitea Actions workflow runs backend tests, frontend checks and the e2e
tests, and deploys v* tags with scripts/deploy.sh once secrets are set.
Also fixes the at-the-door check-in count for multi-day tickets.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>