All notable changes to this project are grouped by day.

2026-08-23

Added

  • Changelog
  • MIT LICENSE.md (e9li GmbH) and CONTRIBUTING.md
  • ExDoc (mix docs) for Hex publication
  • ExUnit coverage for config, remote script, sudoers rendering, and exclude merging
  • Optional remote deploy lock (flock when installed on the server; no-op otherwise so existing hosts keep working)
  • SSH ConnectTimeout / ServerAliveInterval on deploy and setup
  • .deploy.lock rsync exclude

Fixed

  • Deploy reported success when the systemd service never became active (now waits up to ~60s, then fails)
  • mix deploy.init printed “configuration written” even when it skipped an existing config block
  • Sudo check grepped for the English word “password” (locale-fragile); now uses sudo -n exit codes
  • systemctl stop … || true ignored real stop failures; inactive units are still skipped so first-start deploys work
  • Remote script interpolated app_name / service_name / deploy_dir unquoted
  • mix deploy.setup ran scp/ssh through a shell string and a predictable /tmp/vps_deploy_setup.sh path
  • Sudo password was written to a temp file (now piped to sudo -S bash -s; echo hidden with stty -echo)
  • Overridden excludes could omit .env, so rsync --delete could wipe the server env file
  • Failed migrate after stop left the service down with no restart attempt

Changed

  • Version 0.1.7
  • .env is sourced in a subshell around migrations only (same values, no leak into later commands)

2026-06-21

Fixed

  • Environment variables leaking between apps when several applications share the same server

2026-05-18

Added

  • esbuild.install during the remote build

Changed

  • Version bump

2026-03-17

Changed

  • Git dependency URL

2026-03-11

Added

  • mix deploy.setup and sudoers installation for passwordless systemctl
  • Optional database / Ecto migrations (use_database yes/no)

Fixed

  • SSH errors during deploy
  • Sudo prompting mid-deploy
  • Password prompt echoing in the terminal

2026-03-10

Changed

  • Gitignore
  • Remote build deletes mix.lock before mix deps.get (kept for compatibility with existing projects)

2026-02-11

Added

Fixed

  • :stdin handling
  • Dumping all environment variables during deploy