Releases: coollabsio/coolify
v4.0.0
Finally releasing v4.0.
It was long overdue because we have been in beta for a long time. Thousands of companies and people have been using Coolify in production for 1-2 years.
Of course, this does not mean it has no bugs, it has many, but we fix them every day.
v5 is coming together, but we are not rushing it.
The biggest feature will be full scalability in the core, so you will have cloud infrastructure, but with your own servers.
I already have a working solution for the core and it is soo cool. Can't wait to start showing them to you.
By the way, doing v5 does not mean we won't continue to support v4.
We just want to push what is possible with servers and automations.
Thank you to everyone who helped me reach this point 💜
Let's make cool stuff! 🫰
So the release notes:
What's Changed
Security & Fixes
- Fixed Rallly service environment variable defaults (#9041, fixes #9615)
- Fixed Logto upgrade failure caused by missing database migration step (#9376)
- Fixed Jitsi Meet not working — rebuilt template with stable image and proper UDP/secrets (#9594, fixes #4813)
- Fixed Twenty deployment failure from unhealthy worker dependency (#9603, fixes #9574)
- Fixed mobile info popup not opening on tap and bubbling clicks to parent (#9809, closes #4834)
- Fixed SPA navigation race conditions causing stale state, broken buttons, and unsaved changes (#9742, closes #9732)
New Services & Templates
- Added Cap captcha service template (#9729)
- Re-enabled Plane service with updated docker-compose (#9641, fixes #8338)
- Updated Beszel and Beszel Agent to 0.18.7 (#9775)
- Disabled Cal.com template — project went closed source (#9776)
Improvements
- Added healthcheck to Langfuse worker (#9772)
What's Changed (Github)
- fix(navigation): replace wire:navigate.hover with wire:navigate by @andrasbacsai in #9742
- fix(helper): stop info icon click from propagating to parent on mobile by @andrasbacsai in #9809
- feat(service): disable calcom by @ShadowArcanist in #9776
- chore(service): update beszel to 0.18.7 by @ShadowArcanist in #9775
- feat(service): add healthcheck to langfuse-worker by @GauthierPLM in #9772
- feat(services): add Cap to templates by @tiagozip in #9729
- feat(service): enable plane by @DarkMaper in #9641
- fix(service): twenty fails to deploy due to dependency unhealthy by @ShadowArcanist in #9603
- fix(service): Jitsi Meet doesn't work by @miqonee in #9594
- fix(service): add missing database alteration step for Logto latest image by @FabioHAraujo in #9376
- fix(service): rally invalid next public url by @zupolgec in #9041
- v4.0.0 by @andrasbacsai in #9818
New Contributors
- @tiagozip made their first contribution in #9729
- @DarkMaper made their first contribution in #9641
- @miqonee made their first contribution in #9594
- @zupolgec made their first contribution in #9041
Full Changelog: v4.0.0-beta.474...v4.0.0
v4.0.0-beta.474
What's Changed
Security & Fixes
- Prevent data loss when persistent containers (databases, apps, services) are accidentally pruned during service deletion (#9654, fixes #9582)
- Fix S3 storage backup endpoints returning 500 in API context (#9655, fixes #9581)
- Encrypt manual webhook secrets and strengthen HMAC signature verification (#9652)
- Fix Rocky Linux installer to use correct RHEL Docker repository (#9541, fixes #8730)
- Harden authentication: upgrade email verification hash and fix invitation link login (#9672)
- Validate and rate-limit feedback endpoint (#9653)
- Tighten volume name and path validation with shell argument escaping (#9666)
- Validate backup upload file type and size limits (#9667)
- Tighten S3 endpoint URL validation (#9668)
- Harden dev helper version validation and build argument escaping (#9670)
- Strengthen team scoping across resource creation flows (#9651)
- Fix SSH repository URLs with custom ports being mangled (#9425)
- Fix healthcheck path validation rejecting commas and semicolons (#9223)
- Fix database credential validation and shell escaping across Postgres, MySQL, MariaDB (#9674, #9676, #9681, #9682)
- Improve shell command tokenization for install, build, and start commands (#9684)
- Return stable generic error messages for API 5xx responses (#9669)
Improvements
- Add optional expiration for API tokens with advance notification warning before expiry (#9677)
- Add DELETE API endpoint to remove preview deployments by pull request ID (#9614)
- Mark Docker Swarm support as deprecated ahead of v5 removal (#9621)
- Categorize application advanced settings into logical sections (#9234)
- Improve service settings layout with dedicated advanced page and clearer headings (#9027)
- Display memory limit fields in a single row (#9232)
- Add info callout to clone resource section listing excluded items (#9233)
- Add architecture warning for service templates with platform limitations (#8390)
- Improve domain port+path format documentation in the UI (#8331)
What's Changed (Github)
- fix(installer): use RHEL Docker repo for Rocky Linux by @andrasbacsai in #9541
- fix(dev): add Docker volume path mapping to testing-host for database deployments by @cyface in #9534
- feat(ui): categorize application advanced settings into logical sections by @ShadowArcanist in #9234
- feat(ui): add info callout to clone resource section about excluded items by @ShadowArcanist in #9233
- feat(ui): display memory limit fields in single row by @ShadowArcanist in #9232
- fix(healthcheck): user input is rejected if path contains comma and semicolon by @ShadowArcanist in #9223
- feat(ui): improve service settings UX, headings, and helper text for clarity by @ShadowArcanist in #9027
- feat(services): add architecture warning by @Cinzya in #8390
- Added extra documentation on format for port+path for domains by @JamesPeters98 in #8331
- fix(git): preserve ssh scheme URLs with custom ports by @Iisyourdad in #9425
- refactor: tighten team scoping on resource creation and admin nav by @andrasbacsai in #9651
- build(deps-dev): bump follow-redirects from 1.15.11 to 1.16.0 by @dependabot[bot] in #9580
- refactor(webhook): encrypt manual webhook secrets and tighten HMAC verification by @andrasbacsai in #9652
- feat(api): add DELETE endpoint for preview deployments by PR id by @andrasbacsai in #9614
- refactor(api): validate and throttle feedback endpoint by @andrasbacsai in #9653
- fix(server): exclude persistent resources from container prune by @andrasbacsai in #9654
- fix(api): use explicit team ID for S3 storage lookup in backup endpoints by @andrasbacsai in #9655
- refactor(volumes): validate input and escape shell args by @andrasbacsai in #9666
- refactor(backup): validate database backup upload file type and size by @andrasbacsai in #9667
- refactor(storage): tighten S3 endpoint URL validation by @andrasbacsai in #9668
- refactor(settings): harden dev_helper_version validation and escape build args by @andrasbacsai in #9670
- refactor(api): return stable generic error messages for 5xx responses by @andrasbacsai in #9669
- [v5.x] chore: mark v4 docker swarm support as deprecated by @peaklabs-dev in #9621
- refactor: harden auth, CLI input, and scheduled-log viewer by @andrasbacsai in #9672
- fix(database): mount guard, healthcheck CMD exec-form, port input layout by @andrasbacsai in #9674
- fix(database): credential format validation with dirty-value escape hatch by @andrasbacsai in #9676
- feat(security): add expiration support for API tokens by @andrasbacsai in #9677
- fix(database): tighten Postgres init script filename handling by @andrasbacsai in #9681
- refactor(database): align Postgres SSL chown escaping with MySQL by @andrasbacsai in #9682
- refactor(validation): tokenize shell-safe command pattern by @andrasbacsai in #9684
- v4.0.0-beta.474 by @andrasbacsai in #9542
New Contributors
- @cyface made their first contribution in #9534
- @JamesPeters98 made their first contribution in #8331
Full Changelog: v4.0.0-beta.473...v4.0.0-beta.474
v4.0.0-beta.473
Fixes
- Fixed the upgrade modal to show the correct target version and cleared stale upgrade notifications when the instance was already up to date. (#7774, fixes #6039, #8707)
- Fixed user deletion cleanup so team-owned Git app sources were handled safely, while instance-wide sources were preserved for the root team. (#9435, fixes #8172)
- Fixed dashboard homepage add buttons so they remained visible in light mode. (#9456, fixes #9454)
- Fixed port mapping validation to accept protocol suffixes like
/tcp,/udp,/sctpand IP-bound mappings. (#9503, fixes #9501, #9504)
Improvements
- Updated
phpseclib/phpseclibto3.0.51. (#9500) - Updated
axiosto1.15.0for development dependencies. (#9515) - Updated
axiosto1.15.0incoolify-realtime. (#9516)
What's Changed (Github)
- fix(ui): Initialize latestVersion in Upgrade component mount by @andrasbacsai in #7774
- fix(user-deletion): safely clean up team-owned Git app sources by @andrasbacsai in #9435
- fix(ui): dashboard homepage add buttons are invisible in light mode by @rosslh in #9456
- fix(validation): allow protocol suffix and ip in port mappings (/tcp, /udp, /sctp) by @ShadowArcanist in #9503
- build(deps): bump phpseclib/phpseclib from 3.0.50 to 3.0.51 by @dependabot[bot] in #9500
- build(deps-dev): bump axios from 1.13.2 to 1.15.0 by @dependabot[bot] in #9515
- build(deps): bump axios from 1.13.6 to 1.15.0 in /docker/coolify-realtime by @dependabot[bot] in #9516
- v4.0.0-beta.473 by @andrasbacsai in #9521
New Contributors
Full Changelog: v4.0.0-beta.472...v4.0.0-beta.473
v4.0.0-beta.472
What's Changed
Security & Fixes
- Allow quoted arguments in custom Docker run options (#9481, fixes #9343)
- Patched Alpine packages in helper, realtime, and development Docker images (#9437)
- Bumped Alexandrie images to address upstream security advisory (#9434)
New Services & Templates
- Added Grimmory one-click service, the successor to Booklore (#9109)
- Comprehensive Supabase template update to latest versions (#8316)
- Allow overriding GOTRUE_SITE_URL in Supabase for separate frontend domains (#9079, fixes #5581)
- Added sensible CORS defaults to Directus templates (#9081, fixes #5024)
- Updated Rivet template to v2.2.0 (#9378)
- Updated Convex to current latest version (#9392)
- Fixed LibreChat healthcheck and upgraded Meilisearch image (#9358)
- Fixed n8n task-runners health check (#9309, fixes #9306)
- Increased Nextcloud healthcheck interval to prevent worker exhaustion (#9440, fixes #9439)
- Updated Nextcloud healthcheck endpoint to
/status.php(#9470) - Fixed Netbird client volume path so settings persist across restarts (#9484)
- Corrected Minecraft template category to games (#9387)
- Corrected several template categories that were set incorrectly (#9449)
Improvements
- Removed Algora bounty program references from community docs and templates (#9436)
What's Changed (Github)
- fix(services): bump images of alexandrie to fix security issue by @Smaug6739 in #9434
- feat(service): update Convex to current latest version by @sebous in #9392
- fix(template): Minecraft was on wrong category by @Iisyourdad in #9387
- feat(service): update Rivet to v2.2.0 by @yipfram in #9378
- fix(service): fix librechat healthcheck and update dependencies by @GauthierPLM in #9358
- fix(service): n8n task-runners health check fails by @frank-netkey in #9309
- feat(service): add grimmory by @RickyWanga in #9109
- fix(service): directus cors not applied in preflight requests by @xidik12 in #9081
- feat(service): update Supabase to current latest versions by @Vadko in #8316
- fix(service): allow overriding GOTRUE_SITE_URL in Supabase template by @xidik12 in #9079
- fix(service): nextcloud workers exhaustion due to low interval healthcheck by @ShadowArcanist in #9440
- fix(docker): add apk upgrade to helper, realtime, and development Dockerfiles by @andrasbacsai in #9437
- chore(community): remove Algora bounty program references by @andrasbacsai in #9436
- chore(service): update nextcloud healthcheck endpoint by @ShadowArcanist in #9470
- fix(validation): allow quoted docker run options in custom config by @andrasbacsai in #9481
- build(deps-dev): bump vite from 7.3.0 to 7.3.2 by @dependabot[bot] in #9457
- fix(service): Several templates on wrong catagory. by @Iisyourdad in #9449
- fix(service): netbird-client wrong volume path by @iamimmanuelraj in #9484
- v4.0.0-beta.472 by @andrasbacsai in #9492
New Contributors
- @sebous made their first contribution in #9392
- @Iisyourdad made their first contribution in #9387
- @frank-netkey made their first contribution in #9309
- @RickyWanga made their first contribution in #9109
- @iamimmanuelraj made their first contribution in #9484
Full Changelog: v4.0.0-beta.471...v4.0.0-beta.472
v4.0.0-beta.471
What's Changed
Security & Fixes
- Harden model mass assignment protection across all models (#9282)
- Scope server and project queries to current team (#9230)
- Harden GetLogs component with locked properties and input validation (#9229)
- Add validation and escaping for Docker network names (#9228)
- Add URL validation for notification webhook fields (#9224)
- Use server-side config for password reset URL generation (#9193)
- Add input validation for install/build/start command fields (#9227)
- Add input validation for resource limit fields (#9238)
- Add IP validation for custom DNS servers input (#9239)
- Add URL validation for proxy redirect input (#9241)
- Add input validation for server advanced settings page (#9242)
- Add input validation for sentinel configuration (#9243)
- Add input validation for database backup timeout (#9245)
- Add input validation for emails configuration (#9259)
- Add input validation for database public port and proxy timeout
- Add validation to block unsafe webhook URLs
- Use random_int() for email change verification codes (#9226)
- Move admin route into middleware group (#9225)
- Enforce team-scoped project/env lookups in onboarding
- Add input validation for port exposes and port mappings fields
New Services & Templates
- Added ElectricSQL template (#8190)
Fixes
- Fix intermittent pre-deployment command failures (#9165, fixes #9076)
- Fix Grafana GF_SERVER_DOMAIN using FQDN instead of URL (#9080, fixes #5307)
- Fix listmonk db config env typo (#9250)
- Fix Langfuse by pinning ClickHouse version to avoid init errors
- Fix cloning persistent volumes with missing uuid (#9290, fixes #9270)
- Fix redirect value not persisting in setRedirect (#9279)
- Fix cloud subscription notification links (#9296)
- Fix slash branches in public repo URLs
- Fix shared env vars resolving on wrong server
- Fix database SSL/status state and clone writes
- Fix auto-generate missing CA cert on SSL regeneration
- Fix backup notification failures affecting backup status (fixes #9088)
- Fix backup retention enforcement and stale execution cleanup
- Fix password visibility toggle using Alpine state
- Fix GitHub branch state when refreshing repositories
Improvements
- Shared server environment variables (#7764)
- Refresh repos on private GitHub app (#8621)
- Support Docker image tags for preview deployments
- Add preserve repository option to deployment API (#8371)
- Implement exponential backoff for unreachable servers (#9184)
- Improve scheduled task single view UX (#9266)
- Add two-step confirmation to enable self-registration (#9277)
- Add public port timeout configuration for databases
- Make textarea monospace opt-in and improve multiline toggle
What's Changed (Github)
- fix(backup): prevent notification failures from affecting backup status by @andrasbacsai in #9162
- fix(preview-env): ensure auto-created preview env vars inherit runtime/buildtime flags by @andrasbacsai in #9164
- fix(api): validate server ownership in domains endpoint and scope activity lookups by @andrasbacsai in #9166
- fix(backup): validate MongoDB collection names in backup input by @andrasbacsai in #9168
- fix(terminal): apply authorization middleware to terminal bootstrap routes by @andrasbacsai in #9169
- fix(livewire): add Locked attributes and consolidate container name validation by @andrasbacsai in #9171
- fix(livewire): add input validation to unmanaged container operations by @andrasbacsai in #9172
- feat(deployment): add command_hidden flag to hide command text in logs by @andrasbacsai in #9167
- fix(deployment): normalize whitespace in pre/post deployment commands by @andrasbacsai in #9173
- fix(storage): consistent path validation and escaping for file volumes by @andrasbacsai in #9176
- fix(backup): use escapeshellarg for credentials in backup commands by @andrasbacsai in #9175
- fix(storage): use escapeshellarg for volume names in shell commands by @andrasbacsai in #9185
- refactor: simplify remote process chain and harden ActivityMonitor by @andrasbacsai in #9189
- Add URL validation for GitHub source fields by @andrasbacsai in #9190
- refactor: split invitation endpoint into GET/POST flow by @andrasbacsai in #9192
- fix: sanitize error output in server validation logs by @andrasbacsai in #9197
- fix: use server-side config for password reset URL generation by @andrasbacsai in #9193
- refactor: move admin route into middleware group by @andrasbacsai in #9225
- Add URL validation for notification webhook fields by @andrasbacsai in #9224
- refactor: use random_int() for email change verification codes by @andrasbacsai in #9226
- fix: add input validation for install/build/start command fields by @andrasbacsai in #9227
- refactor: scope server and project queries to current team by @andrasbacsai in #9230
- fix: add validation and escaping for Docker network names by @andrasbacsai in #9228
- fix(application): persist redirect value in setRedirect by @andrasbacsai in #9279
- fix: harden GetLogs Livewire component properties by @andrasbacsai in #9229
- feat(api): Add support for Preserve Repository During Deployment in API by @ahmadw13 in #8371
- fix(clone): exclude uuid when replicating persistent volumes by @andrasbacsai in #9290
- fix(notification): updated cloud subscription links to valid url by @ShadowArcanist in #9296
- feat(ui): add two step confirmation to enable self registration by @ShadowArcanist in #9277
- fix(service): listmonk db config env typo by @mxswd in #9250
- fix(service): pin clickhouse version on Langfuse service to avoid error during clickhouse init by @GauthierPLM in #9236
- fix(service): use FQDN instead of URL for Grafana GF_SERVER_DOMAIN by @xidik12 in #9080
- feat(service): Add ElectricSQL by @matfire in #8190
- refactor: define explicit fillable attributes on all Eloquent models by @andrasbacsai in #9282
- fix(validation): add input validation for database public port and proxy timeout by @ShadowArcanist in #9272
- feat(ui): improve schedule task single view for better UX by @ShadowArcanist in #9266
- fix(validation): add input validation for emails configuration by @ShadowArcanist in #9259
- fix(validation): add input validation for database backup timeout by @ShadowArcanist in #9245
- fix(validation): add input validation for sentinel configuration by @ShadowArcanist in #9243
- fix(validation): add input validation for server advanced settings page by @ShadowArcanist in #9242
- fix(validation): add URL validation for proxy redirect input by @ShadowArcanist in #9241
- fix(validation): add input validation for port exposes and port mappings fields by @ShadowArcanist in #9240
- fix(validation): add IP validation for custom DNS servers input by @ShadowArcanist in #9239
- fix(validation): add input validation for resource limit fields by @ShadowArcanist in #9238
- feat: refresh repos on private github app by @adiologydev in #8621
- feat: Shared server environment variables by @ShadowArcanist in #7764
- chore(deps): bump aws/aws-sdk-php from 3.371.3 to 3.374.2 by @dependabot[bot] in #9222
- chore(deps): bump picomatch by @dependabot[bot] in #9178
- build(deps): bump league/commonmark from 2.8.1 to 2.8.2 by @dependabot[bot] in #9047
- build(deps): bump phpseclib/phpseclib from 3.0.49 to 3.0.50 by @dependabot[bot] in #9044
- feat(jobs): implement exponential backoff for unreachable servers by @andrasbacsai in #9184
- fix(deployment): resolve intermittent pre-deployment command failures by @andrasbacsai in #9165
- v4.0.0-beta.471 by @andrasbacsai in #9206
New Contributors
v4.0.0-beta.470
What's Changed
Security & Fixes
- Fixed proxy config validation to ensure stored config matches the current proxy type (#9146, fixes #9127)
- Fixed environment variables being incorrectly resolved in compose files instead of preserving ${VAR} references (#9147, fixes #9136)
- Fixed deployment issues with shell argument escaping in nixpacks commands (#9122, fixes #9042)
- Fixed GitHub webhook errors for unsupported event types (#9119, fixes #9090)
- Fixed server limit checks when using API tokens (#9123, fixes #9116)
- Fixed hostname validation to be case-insensitive and allow more characters (#9134, fixes #9131)
- Fixed duplicate subscription creation
- Fixed environment variable refresh when variables are missing or stale
- Fixed Docker cleanup logging when server is unreachable
New Services & Templates
- Added EspoCRM one-click service template (#8658)
Improvements
- Improved mobile responsiveness for confirmation modals
- Simplified Docker installation process
- Added storage API endpoints with UUID support for databases and services
- Added Nightwatch monitoring support
- Disabled Booklore service template (#9105)
- Bumped Sentinel and Traefik versions
What's Changed (Github)
- fix(github-webhook): handle unsupported event types gracefully by @andrasbacsai in #9119
- fix(deployment): properly escape shell arguments in nixpacks commands by @andrasbacsai in #9122
- fix(validation): make hostname validation case-insensitive and expand allowed name characters by @andrasbacsai in #9134
- fix(team): resolve server limit checks for API token authentication by @andrasbacsai in #9123
- chore(service): disable Booklore service by @Cinzya in #9105
- Add EspoCRM, provided by the official team by @tmachyshyn in #8658
- fix(parsers): preserve ${VAR} references in compose instead of resolving to DB values by @andrasbacsai in #9147
- fix(proxy): validate stored config matches proxy type by @andrasbacsai in #9146
- v4.0.0-beta.470 by @andrasbacsai in #9139
New Contributors
- @tmachyshyn made their first contribution in #8658
Full Changelog: v4.0.0-beta.469...v4.0.0-beta.470
v4.0.0-beta.469
What's Changed
Security & Fixes
- Fixed sporadic SSH "permission denied" errors during key rotation (#8990, fixes #7724)
- Fixed deployment failures when build server is enabled during restart operations (#9045, fixes #9013)
- Fixed breadcrumb queries causing out-of-memory crashes (#9048, fixes #9009)
- Fixed GitHub App webhook endpoint defaulting to IPv4 instead of instance domain (#8948)
- Fixed Hoppscotch service failing to start due to database health check (#8949)
- Fixed Docker Compose not respecting preserveRepository for project directory (#8956, fixes #8953)
- Fixed backup error when S3 storage is missing or deleted (#9038, fixes #9035)
- Fixed Stripe subscription error handling and resilience (#9030)
- Fixed Heyform template configuration (#8747)
- Fixed API resource UUID extraction from route parameters
- Fixed Docker cleanup stale container warning on cloud instances
- Fixed Compose file-not-found error now includes git branch info
New Services & Templates
- Added LibreSpeed service for self-hosted speed testing (#8626)
- Added imgcompress service for offline image processing (#8763)
- Updated Databasus to v3.16.2 (#8586)
- Updated n8n with Postgres and Worker to v2.10.4 (#8807)
- Updated SeaweedFS images to v4.13 (#8738)
- Fixed Castopod service port from 8000 to 8080 (#8817)
Improvements
- Added per-volume control of PR suffix in preview deployments (#9006, fixes #7802, fixes #7343)
- Added auto-population of FQDN from docker_compose_domains for compose previews (#8963, fixes #8958)
- Added force deletion option for servers with existing resources (#8962)
- Added auto-fetch of server metadata after validation (#8964)
- Added container label escape control to services API (#8955, fixes #8954)
- Added database environment variable management API endpoints
- Added storage management API endpoints for applications and backup schedules
- Added support for comments in bulk environment variable API endpoints
- Added placeholder hints for magic environment variables
- Added next billing date and billing interval display for subscriptions
- Added cache-based deduplication for delayed cron execution
- Simplified environment variable settings by removing buildtime/runtime options
What's Changed (Github)
- fix(git): GitHub App webhook endpoint defaults to IPv4 instead of the instance domain by @ShadowArcanist in #8948
- feat(service): update n8n-with-postgres-and-worker to 2.10.4 by @michachan in #8807
- Change Castopod service port from 8000 to 8080 by @SeriousM in #8817
- fix(service): hoppscotch fails to start due to db unhealthy by @ShadowArcanist in #8949
- fix(api): allow is_container_label_escape_enabled in service operations by @andrasbacsai in #8955
- fix(docker-compose): respect preserveRepository when injecting --project-directory by @andrasbacsai in #8956
- feat(server): allow force deletion of servers with resources by @andrasbacsai in #8962
- feat(compose-preview): populate fqdn from docker_compose_domains by @andrasbacsai in #8963
- feat(server): auto-fetch server metadata after validation by @andrasbacsai in #8964
- feat(templates): Add imgcompress service, for offline image processing by @ariqpradipa in #8763
- fix(template): fix heyform template by @iMuFeng in #8747
- chore(service): Update SeaweedFS images to version 4.13 by @FabioHAraujo in #8738
- feat(service): Add librespeed by @diogo24m in #8626
- feat(service): update databasus to v3.16.2 by @Luzefiru in #8586
- fix(preview): enable per-volume control of PR suffix in preview deployments by @andrasbacsai in #9006
- fix: prevent sporadic SSH permission denied on key rotation by @pannous in #8990
- fix(stripe): add error handling and resilience to subscription operations by @andrasbacsai in #9030
- fix(backup): throw explicit error when S3 storage missing or deleted by @andrasbacsai in #9038
- perf(breadcrumb): optimize queries and simplify navigation to fix OOM by @andrasbacsai in #9048
- fix(deployment): disable build server during restart operations by @andrasbacsai in #9045
- v4.0.0-beta.469 by @andrasbacsai in #9007
New Contributors
- @michachan made their first contribution in #8807
- @SeriousM made their first contribution in #8817
- @FabioHAraujo made their first contribution in #8738
- @pannous made their first contribution in #8990
Full Changelog: v4.0.0-beta.468...v4.0.0-beta.469
v4.0.0-beta.468
What's Changed
Security & Fixes
- Fixed SSH connection retry failures during deployments (#8927, fixes #8926)
- Fixed deployment type selection when using GitHub/GitLab Apps (#8934, fixes #8917)
- Fixed deployment authorization endpoint returning incorrect 404 errors (#8931, fixes #8925)
- Fixed shared variables not resolving in Docker Compose environments (#8930, fixes #8918)
- Fixed SSH keys not being used for git submodule and LFS operations (#8933, fixes #8895)
- Added support for scoped npm packages in file path validation (#8928, fixes #8924)
Improvements
- Added log filtering capability based on log level in deployment logs (#8784)
What's Changed (Github)
- fix(ssh): remove undefined trackSshRetryEvent() method call by @andrasbacsai in #8927
- fix(validation): support scoped packages in file path validation by @andrasbacsai in #8928
- fix(parsers): resolve shared variables in compose environment by @andrasbacsai in #8930
- fix(api): cast teamId to int in deployment authorization check by @andrasbacsai in #8931
- fix(git-import): ensure ssh key is used for fetch, submodule, and lfs operations by @andrasbacsai in #8933
- feat(ui): add log filter based on log level by @ShadowArcanist in #8784
- fix(application): clarify deployment type precedence logic by @andrasbacsai in #8934
- v4.0.0-beta.468 by @andrasbacsai in #8929
Full Changelog: v4.0.0-beta.467...v4.0.0-beta.468
v4.0.0-beta.467
What's Changed
Security & Fixes
- Fixed command injection vulnerability in health check commands (#8898)
- Added path validation to prevent command injection in file locations
- Fixed environment variables being overwritten when changing service domains (#8915, fixes #8912)
- Fixed Nixpacks deployment failures when application has no domain set (#8902, fixes #6830)
- Fixed resource deletion failing silently in the danger zone (#8909, fixes #8836)
- Fixed scheduled task input fields losing focus while editing (#8654, fixes #8647)
- Added
docker_cleanupparameter to API stop endpoints (#8899, fixes #7758)
Improvements
- Added GitLab source integration with SSH deploy keys and HTTP basic auth (#8910, fixes #5295)
- Added database-backed proxy config storage with automatic recovery and versioned backups (#8905, fixes #7178)
- Added server metadata collection and display
What's Changed
- fix(security): sanitize newlines in health check commands to prevent RCE by @andrasbacsai in #8898
- fix: prevent scheduled task input fields from losing focus by @sharkcreep87 in #8654
- fix(api): add docker_cleanup parameter to stop endpoints by @andrasbacsai in #8899
- fix(deployment): filter null and empty environment variables from nixpacks plan by @andrasbacsai in #8902
- feat(proxy): add database-backed config storage with disk backups by @andrasbacsai in #8905
- fix(livewire): add error handling and selectedActions to delete methods by @andrasbacsai in #8909
- feat(git-sources): add GitLab integration and URL encode credentials by @andrasbacsai in #8910
- fix(parsers): use firstOrCreate instead of updateOrCreate for environment variables by @andrasbacsai in #8915
- v4.0.0-beta.467 by @andrasbacsai in #8911
New Contributors
- @sharkcreep87 made their first contribution in #8654
Full Changelog: v4.0.0-beta.466...v4.0.0-beta.467
v4.0.0-beta.466
What's Changed
Security & Fixes
- Prevent command injection via base64-encoding log drain environment variables
- Prevent command injection via git reference validation
- Add sentinel token validation to prevent command injection
- Require write permission for API validation endpoints
- Prevent false container exits on failed docker queries (#8860)
- Track last_online_at and reset database restart state
- Preserve user-saved environment variables on Docker Compose redeploy (#8894)
- Fix build-time environment variables breaking Next.js (#8890)
- Prevent command injection in developer view shared variables (#8889)
- Make confirmation modal close after dispatching Livewire actions (#8892)
- Respect keep for rollback setting for Nixpacks build images (#8859)
Dependencies
What's Changed
- fix(docker-cleanup): respect keep for rollback setting for Nixpacks build images by @andrasbacsai in #8859
- fix(docker): prevent false container exits on failed docker queries by @andrasbacsai in #8860
- build(deps): bump rollup from 4.57.1 to 4.59.0 by @dependabot[bot] in #8691
- build(deps): bump league/commonmark from 2.8.0 to 2.8.1 by @dependabot[bot] in #8793
- fix: prevent command injection and fix developer view shared variables error by @andrasbacsai in #8889
- fix: Build-time environment variables break Next.js by @andrasbacsai in #8890
- fix(modal): make confirmation modal close after dispatching Livewire actions by @andrasbacsai in #8892
- fix(parser): preserve user-saved env vars on Docker Compose redeploy by @andrasbacsai in #8894
- v4.0.0-beta.466 by @andrasbacsai in #8893
Full Changelog: v4.0.0-beta.465...v4.0.0-beta.466