Repository navigation
What's Changed
- fix: resolve 6 critical Dependabot alerts by @narcisonunez in #5351
- fix(ui): standardize settings layout widths to full width by @imrja8 in #5406
- fix(auth): prefetch SSO state in SSR to prevent layout flash by @imrja8 in #5407
- feat: transfer services between servers by @Siumauricio in #5396
- feat(compose): pull latest images on deploy toggle by @Siumauricio in #5410
- fix(compose): move Fresh Volumes into a Danger Zone with typed confirmation by @Siumauricio in #5411
- fix(vault): read Infisical secrets pulled in through an import by @aspatari in #5414
- chore(ci): update GitHub Actions to latest versions and harden workflows by @maks-oleksyuk in #5364
- feat: added missing Railpack versions by @KingIronMan2011 in #5358
- fix(notifications): add missing newline to ntfy database backup message by @RezaRahemtola in #5350
- feat(compose): support models in Compose specification by @EgerDev in #5418
- fix(deps): bump next to 16.3.4 to patch critical RCE advisories by @narcisonunez in #5416
- fix(billing): pick a plan for the trial and warn before it expires by @Siumauricio in #5477
- fix(billing): allow switching billing interval during trial by @Siumauricio in #5515
- fix(cloud): load HubSpot chat widget for startup plan users by @Siumauricio in #5538
- fix: prevent add-invitation form from resetting on submission error by @imrja8 in #5498
- fix: preserve application status when saving provider settings by @roshanasingh4 in #5455
- feat(ui): enhance deployments layout and fix visual jumping by @imrja8 in #5429
- fix(ui): unify tab header styles across backups, schedules, volume backups and patches by @y4aniv in #5535
- fix: accept deploy webhook payloads up to 25 MB by @Souvik-Cyclic in #5543
- fix: preserve compose status when saving provider settings by @roshanasingh4 in #5544
- fix: count only physical disks in host Block I/O stats by @Souvik-Cyclic in #5540
- fix: redact S3 credentials in backup logs regardless of shell quoting by @Souvik-Cyclic in #5527
- fix: kill deployment log tail when the client disconnects early by @Souvik-Cyclic in #5529
- fix: mark session cookie as Secure when served over HTTPS by @Souvik-Cyclic in #5022
- feat(ai): add Perplexity integration attribution by @qirh in #5482
- feat: account deletion for Dokploy Cloud by @Siumauricio in #5463
- Revert "fix(ui): standardize settings layout widths to full width" by @imrja8 in #5561
- fix(terminal): prevent terminal from collapsing on zoom by @imrja8 in #5582
- fix(ui): resolve tooltips overlapping open modals on remote servers page by @imrja8 in #5575
- fix(libsql): validate appName like the other database kinds by @cevheri in #5584
- feat(dns): add optional zone to OVH provider by @tomron in #5614
- feat(enterprise): dual-mode branding with separate light/dark theme logos by @imrja8 in #5649
- fix(gitlab): share one token refresh between concurrent callers by @ahmedisam99 in #5655
- feat(ui): make projects card clickable on home dashboard by @Totopo27 in #5657
- fix(ui): wrap and clamp service card description on environment page by @Totopo27 in #5656
- fix(backups): preserve service name when changing database type by @olivier-drieux in #5654
- feat(logs-and-metrics): ship container logs and metrics to external providers via Vector by @narcisonunez in #5624
- fix(server): let members list servers in server pickers by @narcisonunez in #5613
- fix(templates): cap visible tags so the Create button stays visible by @manozzo in #5661
- Dependabots alerts fixes by @narcisonunez in #5517
- chore(deps): fix high-severity Dependabot alerts in emails lockfile by @narcisonunez in #5684
- feat(permissions): add AI module to enterprise custom roles by @imrja8 in #5489
- fix(settings): confine Traefik file read/write to the Traefik config directory by @bunlongheng in #5070
- fix(billing): guard loadStripe behind key check for self-hosted instances by @imrja8 in #5693
- fix: escape HTML and truncate long messages in Telegram notifications by @imrja8 in #5694
- fix(ui): prevent service header overflow on mobile by @GlebsonS4ntos in #5590
- fix: decode Route53 octal escapes in record names by @Souvik-Cyclic in #5553
- fix: stop leaking secrets through ExecError and bind container terminal to its service by @narcisonunez in #5733
- fix(security): pass registry passwords to docker login via stdin by @Gabrielgvl in #5701
- fix(monitoring): let members with service access see container monitoring by @Gourav224 in #5716
- refactor(wss): reuse findServiceAppName from container-ownership by @imrja8 in #5741
- chore: bump Node.js to 24.22.1 (security release) by @imrja8 in #5738
- fix(monitoring): gate host monitoring on docker access and let docker readers see disk usage by @imrja8 in #5742
- fix(deploy): preserve remote serverId in webhook deployment jobs by @Totopo27 in #5732
- fix: register cloud schedules without a timezone by @Siumauricio in #5748
- fix(ai): hide AI actions for users without ai.read by @imrja8 in #5749
- fix: prevent Radix Select from clearing form values on reset by @Siumauricio in #5745
- fix: resolve YAML merge keys when rewriting compose files by @Siumauricio in #5753
- chore(deps): bump dependencies flagged by Dependabot by @narcisonunez in #5754
- fix: security issues by @narcisonunez in #5752
- Fix/2fa password manager autofill by @imrja8 in #5735
- feat(enterprise): custom forgot password flow in whitelabeling settings by @imrja8 in #5648
- feat(traefik): add version check and safe update, bump to v3.7.16 by @imrja8 in #5756
- fix: keep service labels on application deploy by @moataz-hjaiji in #5631
- fix(monitoring): stop docker stats polling when the socket closes during auth by @narcisonunez in #5762
- feat(backups): add optional custom name for backup files by @narcisonunez in #4964
- fix(previews): use the configured build server and registry by @narcisonunez in #5765
- fix(traefik): disable the swarm provider on swarm worker servers by @narcisonunez in #5764
- fix(cron): register cron jobs on a fresh install before the owner exists by @narcisonunez in #5763
- feat: allow download backups by @narcisonunez in #5260
- fix(server): fail fast when update is triggered without a dokploy docker resource by @mudravadev in #5676
- fix(compose): default deleteVolumes to false on compose.delete by @1sakshm in #5666
- fix(encryption): keep env vars readable after leaving the legacy auth secret by @narcisonunez in #5779
- fix(environment): keep saved env in the editor after save by @narcisonunez in #5777
- fix(cluster): load saved replicas and registry in cluster settings by @narcisonunez in #5778
- fix(deploy): skip untagged GHCR package events in docker webhook by @ituzov in #5682
- fix(logs): return empty result when readLogs search has no matches by @1sakshm in #5667
- fix(traefik): serialize concurrent writes to an app's domain config by @narcisonunez in #5790
- fix(mounts): write file mounts as files on create by @narcisonunez in #5791
- fix(logs): virtualize log viewer rows by @narcisonunez in #5802
- fix(requests): read the access log backwards from the newest entry by @narcisonunez in #5801
- fix(deployments): fail remote deploys when the server dies mid-deploy by @narcisonunez in #5803
- feat(audit-logs): export filtered logs as CSV, TSV or JSON by @imrja8 in #5797
- fix(audit-logs): include the whole end day in the date range filter by @imrja8 in #5798
- chore(deps): bump dependencies flagged by Dependabot by @narcisonunez in #5809
- chore(deps): bump @hono/node-server to 2.x and systeminformation for Dependabot alerts by @narcisonunez in #5812
- feat(compose): add "Delete volumes" option to individual service delete on project page by @imrja8 in #5774
- fix(mounts): show the file on disk in the File Mount editor by @imrja8 in #5782
- chore: bump version to v0.30.11 by @Siumauricio in #5813
- chore: merge main into canary by @Siumauricio in #5817
- fix(webhooks): match Bitbucket watch paths against the whole push by @narcisonunez in #5818
- fix(templates): substitute variables in every key of [[config.env]] tables by @cevheri in #5583
- fix(forms): trim email inputs before validating by @narcisonunez in #5819
- fix(backups): skip cloned .git directories in web-server backups by @narcisonunez in #5820
- fix(volume-backups): accept tar exit 1 when backing up live volumes by @Souvik-Cyclic in #5800
- fix(docker): don't prune a stopped dokploy-traefik during cleanup by @narcisonunez in #5821
- fix(compose): keep dokploy-network on services whose domain is disabled by @narcisonunez in #5822
- feat(cloud): PostHog analytics for trial conversion by @Siumauricio in #5825
- fix(deps): bump follow-redirects, glob and minimatch to patched versions by @narcisonunez in #5844
- fix(deps): bump bcrypt to 6 to drop vulnerable minimatch 3 by @narcisonunez in #5845
- fix(vault): strip pasted auth prefix from Phase service account token by @rafa-acioly in #5512
- fix(docker): wait for Swarm image pulls before cleanup by @narcisonunez in #5848
- fix(deploy): fail the deploy when Swarm can't schedule the new task by @narcisonunez in #5846
- fix(security): harden HTTP security headers and hide X-Powered-By by @narcisonunez in #5857
- feat(security): server security section for remote servers by @Siumauricio in #5866
- chore: bump version to v0.31.0 by @Siumauricio in #5868
- chore(ci): sync OpenAPI to mcp and cli via PR by @Siumauricio in #5843
- fix: turn on 2FA for users with a leftover setup row by @imrja8 in #5871
- chore(ci): sync MCP repository through pull requests by @Siumauricio in #5870
- feat(panel): add toggle functionality for panel port with recovery co… by @Siumauricio in #5833
- 🚀 Release v0.31.0 by @github-actions[bot] in #5869
New Contributors
- @maks-oleksyuk made their first contribution in #5364
- @KingIronMan2011 made their first contribution in #5358
- @RezaRahemtola made their first contribution in #5350
- @EgerDev made their first contribution in #5418
- @roshanasingh4 made their first contribution in #5455
- @y4aniv made their first contribution in #5535
- @qirh made their first contribution in #5482
- @cevheri made their first contribution in #5584
- @tomron made their first contribution in #5614
- @ahmedisam99 made their first contribution in #5655
- @Totopo27 made their first contribution in #5657
- @olivier-drieux made their first contribution in #5654
- @manozzo made their first contribution in #5661
- @bunlongheng made their first contribution in #5070
- @GlebsonS4ntos made their first contribution in #5590
- @Gourav224 made their first contribution in #5716
- @moataz-hjaiji made their first contribution in #5631
- @mudravadev made their first contribution in #5676
- @1sakshm made their first contribution in #5666
- @ituzov made their first contribution in #5682
- @rafa-acioly made their first contribution in #5512
Full Changelog: v0.30.10...v0.31.0