What's Changed
- fix: reap HEALTHCHECK zombies by running tini as PID 1 by @JamBalaya56562 in #4252
- fix: prevent Postgres 100-arg limit crash and restore data parity for restricted-member project access by @shuv-o in #5103
- fix: sync terminal size with backend PTY (fixes #5092) by @Siumauricio in #5104
- fix(setup): install Docker 29.4.2 on Ubuntu 26.04 to fix failed setup by @pparage in #4660
- fix: false "container is not running" on database password change by @Siumauricio in #5114
- fix: correct switch thumb translate-x for checked state by @Siumauricio in #5121
- fix: assign tags created from the project dialog by @andwati in #5118
- feat(testing): add upgrade version integration test workflow by @Xeoneid in #4702
- fix(github-webhook): apply preview limit only to new previews by @NoiceHax in #5079
- fix: don't quote .env values for stack deploys by @Siumauricio in #5125
- fix(volume-backups): restart services after backup failure by @bestmaa in #5082
- fix: preserve selected stack log container by @thaingnguyen in #5116
- fix: preserve selected log container on refetch by @bestmaa in #5137
- fix(traefik): skip empty service reconnect by @bestmaa in #5160
- chore: automate git worktree setup by @Siumauricio in #5183
- fix(server): allow '+' and '@' in readValidDirectory path validation by @somuai in #5190
- fix(monitoring): remove legacy container and default empty cronJob by @narcisonunez in #5141
- fix: preserve ${VAR} interpolation in .env values by @Siumauricio in #5197
- fix: detect network delete/recreate by Docker ID during sync by @Siumauricio in #5198
- fix: unsaved organization form fields reset on window visibility change by @Siumauricio in #5199
- fix: correct network monitoring chart labels and units by @Siumauricio in #5200
- fix: run Railpack install with sudo during remote deploy by @Souvik-Cyclic in #5021
- fix: resolve relative bind mounts against code dir for git-based compose deploys by @Siumauricio in #5201
- fix: don't write invalid empty traefik config for apps without domains by @Siumauricio in #5202
- fix: File Mount update fails silently on nested paths by @Siumauricio in #5203
- feat(permissions): add server.terminal to decouple server access from root SSH by @narcisonunez in #5142
- fix: keep native log container id in sync when Swarm/compose replaces it by @Siumauricio in #5210
- fix: disable delete/unlink user button while mutation is pending by @Siumauricio in #5211
- fix: close terminal websocket when local container shell exits by @Siumauricio in #5212
- fix: report remote-node containers correctly in stack monitoring by @Siumauricio in #5213
- fix(api): configurable body size limits for OpenAPI catch-all route by @narcisonunez in #5048
- fix: typecheck errors in traefik config test by @Siumauricio in #5215
- fix: domain validation false negative on servers with multiple IPs by @Siumauricio in #5214
- fix(server): security audit JSON parse error on duplicate sshd_config directives by @reikjarloekl in #4889
- fix: apply watch path negations as a pattern set by @lmachineone in #5208
- feat: add OpenPanel analytics to cloud version by @Siumauricio in #5226
- 🚀 Release v0.30.3 by @github-actions[bot] in #5227
New Contributors
- @shuv-o made their first contribution in #5103
- @andwati made their first contribution in #5118
- @Xeoneid made their first contribution in #4702
- @NoiceHax made their first contribution in #5079
- @bestmaa made their first contribution in #5082
- @thaingnguyen made their first contribution in #5116
- @somuai made their first contribution in #5190
- @reikjarloekl made their first contribution in #4889
Full Changelog: v0.30.2...v0.30.3