What's Changed
Security & Fixes
- Terminal stays connected when browser tab loses focus (#7538)
- Preview deployments now properly cleaned up on GitLab, Bitbucket, and Gitea (#7537, fixes #2610)
- Fixed SSH conflicts during concurrent scheduled tasks (#7503, fixes #6736)
- Fixed Nixpacks failing with null environment variables (#7493, fixes #6830)
- Deployment status now shows "In Progress" immediately when queued (#7487, fixes #6708)
- Fixed cleanup errors incorrectly marking successful deployments as failed (#7460, fixes #7439)
- Fixed service status stuck at "Starting" after stop (#7479)
- Fixed backup timeout not being applied during remote execution (#7476)
- Fixed Traefik warning not clearing after proxy restart (#7466)
- Fixed container "Restarting" status not displaying correctly (#7463)
- Fixed degraded sub-resource and mixed status states (#7461)
- Fixed Traefik email notifications with clickable server links (#7452)
- Fixed PostgREST showing in wrong category and empty Domains section (#7442)
- Fixed base directory path validation issues (#7437)
- Fixed port validation blocking advanced checkbox saves (#7435)
- Fixed Docker build args not working with service names (#7433)
- Fixed preview URL port template variable (#7527)
- Fixed logs not loading for single container services (#7509)
- Fixed Garage service TOML config and healthcheck (#7510)
New Services & Templates
- Added Garage (S3-compatible distributed storage) (#7508)
- Added RustFS (S3-compatible storage) (#7486)
- Added Fizzy (feedback widget) (#7468)
Improvements
- Added Arch Linux server support (#7531, #7408, fixes #4523)
- Added Docker image retention for application rollback support (#7504)
- Added colorized log levels with toggle (#7502)
- Added log search, download, and collapsible sections (#7484)
- Added collapsible option to logs component (#7495)
- Added runtime/buildtime properties to environment variables (#7470)
- Proxy restart now runs as background job with real-time logs (#7475)
- Dashboard performance improved with request-level caching (#7533)
- Renamed "unsend" to "usesend" in email configuration (#7526, fixes #7189)
- Renamed DOCKER_TOKEN/USERNAME to DOCKERHUB_TOKEN/USERNAME (#7432)
- Improved Advanced Settings helper text clarity (#7453)
- Improved PostgreSQL type docs link styling (#7494)
- Improved Sentinel update check scheduling (#7491)
- Decoupled storage check from Sentinel sync (#7454)
What's Changed (Github)
- Refactor: Replace DOCKER_TOKEN/USERNAME with DOCKERHUB_TOKEN/USERNAME by @andrasbacsai in #7432
- fix: bypass port validation when saving advanced checkboxes by @andrasbacsai in #7435
- Fix: Docker build args injection regex to support service names by @andrasbacsai in #7433
- Fix Traefik email notification with clickable server links by @andrasbacsai in #7452
- Improve Advanced Settings helper texts for clarity by @andrasbacsai in #7453
- Add Simple View toggle for logs by @andrasbacsai in #7457
- Fix complex status logic: degraded sub-resources and mixed states by @andrasbacsai in #7461
- Fix container status display: preserve Restarting status by @andrasbacsai in #7463
- Revert "Add Simple View toggle for logs" by @andrasbacsai in #7465
- fix: prevent cleanup exceptions from marking successful deployments as failed by @andrasbacsai in #7460
- Add Fizzy one-click service by @andrasbacsai in #7468
- Fix Traefik warning persistence after proxy configuration update by @andrasbacsai in #7466
- Add runtime and buildtime properties to environment variables by @andrasbacsai in #7470
- Decouple ServerStorageCheckJob from Sentinel sync by @andrasbacsai in #7454
- Fix: Pass backup timeout to remote SSH process by @andrasbacsai in #7476
- Fix: Service status stuck at starting after stop by @andrasbacsai in #7479
- Add RustFS one-click service by @andrasbacsai in #7486
- Set deployment status to IN_PROGRESS when queuing builds by @andrasbacsai in #7487
- Add log search, download, and collapsible sections by @andrasbacsai in #7484
- fix: move base directory path normalization to frontend by @andrasbacsai in #7437
- Fix PostgREST misclassification and empty Domains section by @andrasbacsai in #7442
- Remove webhook maintenance mode replay feature by @andrasbacsai in #7455
- Run proxy restart as background job with real-time logs by @andrasbacsai in #7475
- Style PostgreSQL type docs links to match service list by @andrasbacsai in #7494
- Refactor: Move sentinel update checks to ServerManagerJob and add tests for hourly dispatch by @andrasbacsai in #7491
- Add collapsible option to GetLogs component by @andrasbacsai in #7495
- Fix Nixpacks null environment variable parsing error by @andrasbacsai in #7493
- Add colorized log levels to runtime logs with toggle by @andrasbacsai in #7502
- Fix SSH multiplexing contention for concurrent scheduled tasks (#6736) by @andrasbacsai in #7503
- Add per-application Docker image retention for rollback by @andrasbacsai in #7504
- Add Garage as a one-click service by @andrasbacsai in #7508
- Fix logs not loading for single container services by @andrasbacsai in #7509
- Fix Garage service: TOML config and healthcheck by @andrasbacsai in #7510
- Rename unsend to usesend in configuration by @KMKoushik in #7526
- fix: add Arch Linux support for Docker installation by @murataslan1 in #7408
- fix: remove {{port}} template variable from preview URLs by @andrasbacsai in #7527
- Add Arch Linux server support and fix package sanitization by @andrasbacsai in #7531
- perf: Add request-level caching and indexes for dashboard optimization by @andrasbacsai in #7533
- fix: Add comprehensive PR cleanup to GitLab, Bitbucket, and Gitea by @andrasbacsai in #7537
- fix: Prevent terminal disconnects when browser tab loses focus by @andrasbacsai in #7538
- v4.0.0-beta.453 by @andrasbacsai in #7467
New Contributors
- @KMKoushik made their first contribution in #7526
- @murataslan1 made their first contribution in #7408
Full Changelog: v4.0.0-beta.452...v4.0.0-beta.453