Project variable resolution now matches the Docker Compose CLI
Previously, environment variables set on Arcane's own container (such as PORT) could be picked up when resolving ${VARIABLE} references in your projects' compose files. This could cause surprising results β for example, a project using ${PORT:-8191} could end up binding to Arcane's own port instead of its default (#3499).
Starting with this release, variable references in a project's compose file resolve only from:
your global Variables (.env.global)
the project's own .env file
defaults in the compose file itself (${VAR:-default})
timezone and locale from Arcane's environment (TZ, LANG, LANGUAGE, LC_ALL)
This means a project deployed through Arcane now resolves its variables the same way as running docker compose up in the project directory, and projects can no longer accidentally pick up Arcane's own configuration.
If a project referenced a variable that was only defined on Arcane's container, add it under Customization β Variables to share it with all projects, or to that project's .env file. No other action is needed.
New features
simplify build registry image references (#3243 by @traeli)
add gated admin password reset to interal CLI (#3470 by @kmendell)
per user passkey mfa / passwordless login support (#3493 by @kmendell)
custom payload generic webhooks and google chat notifications (#3417 by @khanhx)
bump docker/compose to v5.4.0, gate diverged-volume recreation behind deploy option, pull pre_start hook and image-volume images (#3502 by @kmendell)
Bug fixes
synchronize structured log toggle state (#3418 by @Kstateag)