All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.1
Fixed
- Per-task flags are no longer rejected when they lead the arguments. Commands
like
mix xamal.app.logs -f(and-n,--since,--grep) failed withUnknown option; the global option parser now forwards unrecognized flags to the task instead of raising. - Remote commands keep their own flags.
mix xamal.server.exec df -h /no longer has-h /consumed as the global--hostsoption; option scanning stops at the first positional argument. mix xamal.app.execno longer drops command flags other than-i.- Interactive SSH sessions (
mix xamal.app.exec -i,mix xamal.iex) resolve the real terminal device instead of assuming/dev/ttyis openable, so they work when the BEAM runs without a controlling terminal. mix xamal.rollbackno longer prints its "no previous version" error twice.
Added
--skip-pushdeploy option to distribute an already-built release instead of rebuilding.
Removed
mix xamal.shell. It mirrored Kamal'sshell(a bash session inside the running container), but Xamal deploys native releases on the host, so it only duplicatedmix xamal.iex. Usemix xamal.iexfor a remote console ormix xamal.server.execfor host commands.
0.3.0
See UPGRADING.md for step-by-step migration instructions.
Added
- New
mix xamal.prunetask to remove old releases beyond the retained count. - New
mix xamal.shellandmix xamal.iextasks to open a remote shell or IEx session against the running release. - New
mix xamal.migratetask to run the release migrator (<App>.Release.migrate). - New
mix xamal.server.logstask to show Caddy/proxy logs from servers. - New
mix xamal.app.starttask to start the service on its active port without a swap. - New
mix xamal.app.versiontask to show the deployed version per host. - New
mix xamal.app.stale_releasestask to preview releases that pruning would remove. - New
mix xamal.versiontask to print the installed Xamal version. - Hex packaging metadata, badges, and HexDocs configuration.
Changed
- Breaking: Replaced the escript CLI with Mix tasks (
mix xamal.*) as the public command surface. Invoke commands viamix xamal.<task>instead of the previousxamalescript binary, and install Xamal as a Mix dependency rather than a standalone binary. - Breaking: Configuration is now Elixir config in
config/xamal.exsinstead ofconfig/deploy.yml, with destination overrides inconfig/xamal/<destination>.exs. EEx templating is replaced by plain Elixir expressions (e.g.System.get_env/1). - Mix tasks are grouped under a "Mix Tasks" section in the generated docs.
Removed
- The
xamalescript binary and theinstall.shinstaller that downloaded it.
0.2.0
Changed
- Internal refactors toward the Mix-first architecture. No user-facing changes.
0.1.0
Added
- Initial release.