Commit graph

5216 commits

Author SHA1 Message Date
Maurits de Ruiter
8cc10ab10a
fix: enable preview deployment page for deploy key applications 2026-02-23 21:08:43 +01:00
Tjeerd Smid
1935403053 fix: application rollback uses correct commit sha
- setGitImportSettings() now accepts optional $commit parameter
 - Uses passed commit over application's git_commit_sha (typically HEAD)
 - Fixes rollback deploying latest instead of selected commit
 - Also fixes shallow clone "bad object" error on rollback

Fixes #8445
2026-02-23 20:13:07 +01:00
Andras Bacsai
ec14b55f0a chore: prepare for PR 2026-02-23 14:28:28 +01:00
Andras Bacsai
620da191b1 chore: prepare for PR 2026-02-23 14:15:13 +01:00
Andras Bacsai
1f3fca5f71
fix(database): chown redis/keydb configs when custom conf set (#8561) 2026-02-23 13:26:58 +01:00
Andras Bacsai
76a6960f44 chore: prepare for PR 2026-02-23 13:26:01 +01:00
Andras Bacsai
133241bac1
fix(service): resolve team lookup via service relationship (#8559) 2026-02-23 13:24:01 +01:00
Andras Bacsai
61a54afe2b fix(service): resolve team lookup via service relationship
Update service application/database team accessors to traverse the service relation chain and add coverage to prevent null team regressions.
2026-02-23 13:23:12 +01:00
Andras Bacsai
bf51ed905f chore: prepare for PR 2026-02-23 13:02:06 +01:00
Andras Bacsai
cb0f5cc812 chore: prepare for PR 2026-02-23 12:19:57 +01:00
Andras Bacsai
0c8b9b75f4
fix(traefik): respect force https in service labels (#8550) 2026-02-23 12:16:12 +01:00
Andras Bacsai
d51b26c047
Dont ignore "force https" pref when using docker compose (#8424) 2026-02-23 12:15:37 +01:00
Andras Bacsai
16e85e27e8 fix(service): always enable force https labels
Force HTTPS routing labels in parser helpers and remove per-service toggles now that the preference is no longer honored.
2026-02-23 12:14:44 +01:00
Andras Bacsai
73170fdd33 chore: prepare for PR 2026-02-23 12:12:10 +01:00
Aditya Tripathi
04283a03a0
Merge branch 'next' into feat/healthcheck-cmd 2026-02-21 06:54:29 +05:30
Andras Bacsai
fd24a54304
feat(monitoring): add scheduled job monitoring dashboard (#8433) 2026-02-18 16:16:56 +01:00
Andras Bacsai
664b31212f chore: prepare for PR 2026-02-18 15:42:42 +01:00
Andras Bacsai
4d36265017 fix(api): improve scheduled tasks validation and delete logic
- Use explicit has() checks for timeout and enabled fields to properly handle falsy values
- Add validation to prevent empty update requests
- Optimize delete endpoint to use direct query deletion instead of fetch-then-delete
- Update factory to use Team::factory() for proper test isolation
2026-02-18 14:30:44 +01:00
Andras Bacsai
ab79a51e29 fix(api): improve scheduled tasks API with auth, validation, and execution endpoints
- Add authorization checks ($this->authorize) for all read/write operations
- Use customApiValidator() instead of Validator::make() to match codebase patterns
- Add extra field rejection to prevent mass assignment
- Use Application::ownedByCurrentTeamAPI() for consistent query patterns
- Remove non-existent standalone_postgresql_id from hidden fields
- Add execution listing endpoints for both applications and services
- Add ScheduledTaskExecution OpenAPI schema
- Use $request->only() instead of $request->all() for safe updates
- Add ScheduledTaskFactory and feature tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 11:53:58 +01:00
Andras Bacsai
301282a9ad Merge branch 'pr-8395' into 8394-scheduled-task-missing 2026-02-18 11:46:34 +01:00
Andras Bacsai
967d295963 chore: prepare for PR 2026-02-18 11:20:32 +01:00
Jono
35a6110252 Dont ignore "force https" pref when using docker compose 2026-02-17 15:30:49 -08:00
Ahmed
2b913a1c35 feat(api): add update endpoints for scheduled tasks in applications and services 2026-02-17 02:18:08 +03:00
Ahmed
a5d48c54da feat(api): add delete endpoints for scheduled tasks in applications and services 2026-02-17 01:33:46 +03:00
Ahmed
8c6c2703cc feat: expose scheduled tasks to API 2026-02-16 22:26:58 +03:00
Andras Bacsai
766355b9ac
test: migrate to SQLite :memory: and add Pest browser testing (#8364) 2026-02-16 14:41:54 +01:00
peaklabs-dev
25ccde83fa
fix(api): add a newline to openapi.json 2026-02-16 00:04:05 +01:00
Andras Bacsai
f05b7106cf chore: prepare for PR 2026-02-15 14:19:02 +01:00
Andras Bacsai
b566889782 merge fix 2026-02-15 14:14:23 +01:00
Andras Bacsai
211ab37045 refactor(ssh-retry): remove Sentry tracking from retry logic
Remove the trackSshRetryEvent() method and its invocation from the SSH retry
flow. This simplifies the retry mechanism and reduces external dependencies for
retry handling.
2026-02-15 14:14:23 +01:00
Andras Bacsai
da0e06a97e chore: prepare for PR 2026-02-15 14:14:23 +01:00
Andras Bacsai
1519666d4c chore: prepare for PR 2026-02-15 14:14:23 +01:00
Andras Bacsai
b40926e915 chore: prepare for PR 2026-02-15 14:14:23 +01:00
Andras Bacsai
4a40009020 chore: prepare for PR 2026-02-15 14:14:23 +01:00
Andras Bacsai
ce29dce9e7 chore: prepare for PR 2026-02-15 14:14:23 +01:00
Andras Bacsai
76a770911c fix(server): improve IP uniqueness validation with team-specific error messages
- Refactor server IP duplicate detection to use `first()` instead of `get()->count()`
- Add team-scoped validation to distinguish between same-team and cross-team IP conflicts
- Update error messages to clarify ownership: "already exists in your team" vs "in use by another team"
- Apply consistent validation logic across API, boarding, and server management flows
- Add comprehensive test suite for IP uniqueness enforcement across teams
2026-02-15 14:14:23 +01:00
Andras Bacsai
5d54bc1c96
fix(sentry): use withScope for SSH retry event tracking (#8363) 2026-02-15 14:00:41 +01:00
Andras Bacsai
c3f0ed3098 refactor(ssh-retry): remove Sentry tracking from retry logic
Remove the trackSshRetryEvent() method and its invocation from the SSH retry
flow. This simplifies the retry mechanism and reduces external dependencies for
retry handling.
2026-02-15 14:00:27 +01:00
Andras Bacsai
ced1938d43 chore: prepare for PR 2026-02-15 13:48:01 +01:00
Andras Bacsai
b9e6c12e8d
fix(database): disable proxy on port allocation failure (#8362) 2026-02-15 13:47:37 +01:00
Andras Bacsai
b7480fbe38 chore: prepare for PR 2026-02-15 13:46:08 +01:00
Andras Bacsai
4a0426ef88
fix(push-server-job): skip containers with empty service subId (#8361) 2026-02-15 13:43:54 +01:00
Andras Bacsai
6d9dbb4ba1
fix(jobs): handle queue timeouts gracefully in Horizon (#8360) 2026-02-15 13:43:23 +01:00
Andras Bacsai
e9323e3550 chore: prepare for PR 2026-02-15 13:43:08 +01:00
Andras Bacsai
a34d1656f4 chore: prepare for PR 2026-02-15 13:42:58 +01:00
Andras Bacsai
1b2c03fc2d chore: prepare for PR 2026-02-15 13:28:52 +01:00
Andras Bacsai
4ec32290cf fix(server): improve IP uniqueness validation with team-specific error messages
- Refactor server IP duplicate detection to use `first()` instead of `get()->count()`
- Add team-scoped validation to distinguish between same-team and cross-team IP conflicts
- Update error messages to clarify ownership: "already exists in your team" vs "in use by another team"
- Apply consistent validation logic across API, boarding, and server management flows
- Add comprehensive test suite for IP uniqueness enforcement across teams
2026-02-12 08:10:59 +01:00
Andras Bacsai
47a3f2e2cd test: add Pest browser testing with SQLite :memory: schema
Set up end-to-end browser testing using Pest Browser Plugin + Playwright.
New v4 test suite uses SQLite :memory: database with pre-generated schema dump
(database/schema/testing-schema.sql) instead of running migrations, enabling
faster test startup.

- Add pestphp/pest-plugin-browser dependency
- Create GenerateTestingSchema command to export PostgreSQL schema to SQLite
- Add .env.testing configuration for isolated test environment
- Implement v4 test directory structure (Feature, Browser, Unit tests)
- Update Pest skill documentation with browser testing patterns, API reference,
  debugging techniques, and common pitfalls
- Configure phpunit.xml and tests/Pest.php for v4 suite
- Update package.json and docker-compose.dev.yml for testing dependencies
2026-02-11 15:25:47 +01:00
Andras Bacsai
7589d5699f
fix(ui): fix datalist border color and add repository selection watcher (#8240) 2026-02-09 15:25:35 +01:00
Andras Bacsai
c5afd8638e chore: prepare for PR 2026-02-09 15:24:24 +01:00
Andras Bacsai
95e93ad899 chore: prepare for PR 2026-02-09 14:48:16 +01:00
Andras Bacsai
63a1c5c0c7 feat(openclaw): add Openclaw service with environment variables and health checks
- Implemented Openclaw service in Service.php to manage environment variables and passwords.
- Added Openclaw SVG icon for branding.
- Created openclaw.yaml for Docker Compose configuration, including necessary environment variables and volume mappings.
- Updated service-templates-latest.json and service-templates.json to include Openclaw service details and metadata.
2026-02-09 12:33:17 +01:00
Andras Bacsai
5dde97dac2
Merge branch 'next' into 8035-public-port-stays-open 2026-02-09 10:00:06 +01:00
Alberto Rizzi
bedaed3ae6
feat(ui): improve global search with uuid and pr support (#7901) 2026-02-04 19:39:57 +01:00
peaklabs-dev
7485b1829c
fix(parser): replace dashes and dots in auto generated envs 2026-02-04 18:29:15 +01:00
peaklabs-dev
48ec6b3169
fix(database): pgvector 18 version is not parsed properly 2026-02-04 17:59:49 +01:00
peaklabs-dev
a05545c78a
feat(database): add official postgres 18 support
- postgres versions 18 and higher require a different volume mount path, so we need to adjust the path when creating them
2026-02-04 00:35:01 +01:00
ShadowArcanist
e57cc16b91
fix(validation): enforce url validation for instance domain (#8078) 2026-02-03 22:00:12 +01:00
Andras Bacsai
fc229c4889 chore: prepare for PR 2026-02-03 15:32:03 +01:00
Andras Bacsai
042cae1335 Merge remote-tracking branch 'origin/next' into 6160-investigate-cant-seem-to 2026-01-28 11:12:22 +01:00
Andras Bacsai
c0dadc003d fix(env): skip escaping for valid JSON in environment variables (#6160)
Prevent double-escaping of COMPOSER_AUTH and other JSON environment variables
by detecting valid JSON objects/arrays in realValue() and skipping quote
escaping entirely. This fixes broken JSON values passed to runtime services
while maintaining proper escaping for non-JSON values.

- Add JSON detection before escaping logic in EnvironmentVariable::realValue()
- JSON objects/arrays pass through unmodified, avoiding quote corruption
- Add comprehensive test coverage for JSON vs non-JSON escaping behavior
2026-01-28 10:59:00 +01:00
Miroslav Banov
442d38c277
fix(api): infinite loop with github app with many repos (#8052)
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-27 22:00:02 +01:00
Raphael Afonso
dd9e599321
fix(backup): postgres restore arithmetic syntax error (#7997) 2026-01-19 19:08:32 +01:00
peaklabs-dev
24ff75bb7f
fix(validation): add @, / and & support to names and descriptions 2026-01-19 18:50:56 +01:00
peaklabs-dev
b02e64beda
docs(api): improve app endpoint deprecation description 2026-01-16 18:24:12 +01:00
Andras Bacsai
95091e918f fix: optimize queries and caching for projects and environments 2026-01-16 11:51:26 +01:00
🏔️ Peak
51301fd12e
feat(notifications): add mattermost notifications (#7963) 2026-01-15 21:59:51 +01:00
🏔️ Peak
fbacf7076e
fix(api): application endpoint issues part 2 (#7948) 2026-01-15 14:06:07 +01:00
🏔️ Peak
650186b1ab
fix(preview): docker compose preview URLs (#7959) 2026-01-15 14:03:10 +01:00
peaklabs-dev
e53c71908f
fix(api): if domains field is empty clear the fqdn column
- providing an empty string for `domains` allows the ability to remove all URLs from the domains field
2026-01-15 13:12:49 +01:00
Aditya Tripathi
33d5879160
Merge branch 'next' into feat/healthcheck-cmd 2026-01-15 16:37:54 +05:30
peaklabs-dev
161e0d2b05
chore(api): improve current request error message 2026-01-14 15:37:02 +01:00
peaklabs-dev
6ca04b5613
feat(api): add more allowed fields
- added dockerfile_location as it is needed for Dockerfile deployments to work properly
- added is_spa as it makes sense together with is_static
- added is_auto_deploy_enabled and is_force_https_enabled
2026-01-14 15:28:02 +01:00
peaklabs-dev
8a1d76cd99
fix(api): is_static and docker network missing
- GitHub App and Private Deploy Key where missing is_static and connect_to_docker_network
2026-01-14 15:27:54 +01:00
peaklabs-dev
5f5c26d841
fix(api): check domain conflicts within the request 2026-01-14 15:22:30 +01:00
peaklabs-dev
754448d9d4
feat(api): improve docker_compose_domains
- add url conflict checking and force_domain_override support
- refactor docker_compose_domains URL validation function
2026-01-14 15:22:18 +01:00
peaklabs-dev
c66b6490e6
docs(api): improve domains API docs 2026-01-14 15:21:59 +01:00
peaklabs-dev
f4acf7ca10
refactor(api): application urls validation
- rename fqdn to urls as that is what it actually is
- improve URL validation to allow urls without a TLD
- improve error messages to make it clear that URLs are needed
- improve code by combining some actions
2026-01-14 15:21:44 +01:00
🏔️ Peak
b87d54f9e4
feat(api): add url update support to services api (#7929) 2026-01-14 14:51:50 +01:00
peaklabs-dev
ae9d0ec817
docs(api): change domains to urls 2026-01-14 14:50:48 +01:00
peaklabs-dev
33d3f196cc
chore(api): improve current request error message 2026-01-14 14:42:35 +01:00
peaklabs-dev
c5196e12d2
fix(api): show an error if the same 2 urls are provided 2026-01-13 20:04:44 +01:00
peaklabs-dev
0628268875
feat(api): improve service urls update
- add force_domain_override functionality and docs
- delete service on creation if there is URL conflicts as otherwise we will have stale services (we need to create the service because we need to parse it and more)
2026-01-13 19:25:58 +01:00
peaklabs-dev
aed11b4d67
fix(api): one click service name and description cannot be set during creation 2026-01-13 17:26:51 +01:00
peaklabs-dev
b44b7ac49e
fix: switch custom labels check to UTF-8
- this allows more characters then ASCII
2026-01-13 17:12:16 +01:00
peaklabs-dev
aeb9f3c852
fix(env): only show nixpacks plan variables section in dev 2026-01-13 16:58:57 +01:00
🏔️ Peak
3ff2743e01
fix(api): encoding checks (#7944) 2026-01-13 16:53:11 +01:00
peaklabs-dev
23b5a3e561
fix(env): only cat .env file in dev 2026-01-13 12:43:18 +01:00
Jérôme Gamez
b3743d341b
feat(service): add linkding template (#6651)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-13 00:05:43 +01:00
peaklabs-dev
764d8861f6
feat(api): add update urls support to services api
- added update urls support to services api
- remove old stale domains update code
2026-01-12 22:39:30 +01:00
peaklabs-dev
ce3cae3ff9
fix(api): applications post and patch endpoints
- remove `docker_compose_raw` from post and patch endpoints, as the compose file is sourced from git and should not be manually settable via the api
- improve the documentation for `docker_compose_domains` (URLs)
- enhanced array validation for `docker_compose_domains` by validating each array field and verifying which fields are allowed
- set a custom array validation error message, as the default message is not really clear
- show an error if the user attempts to set `domains` when the build pack is `dockercompose`
- validate that the `domains` in `docker_compose_domains` are proper URLs and include a valid scheme (`http` or `https`)
2026-01-12 22:08:05 +01:00
peaklabs-dev
7c0cb2f59d
fix(api): deprecate applications compose endpoint
- this endpoint is a duplicate of the services endpoint and also updates fields that do not exist which makes it unstable
2026-01-12 22:08:05 +01:00
peaklabs-dev
9253586f8f
refactor(api): update application create endpoints docs 2026-01-12 22:08:05 +01:00
🏔️ Peak
a83e1899be
fix(api): create service endpoint validation and docs (#7916) 2026-01-11 18:29:55 +01:00
peaklabs-dev
9c0e308dd3
refactor(api): make docker_compose_raw description more clear 2026-01-11 18:27:54 +01:00
peaklabs-dev
a0c307ac45
fix(api): add custom_network_aliases to allowed fields 2026-01-11 18:18:36 +01:00
peaklabs-dev
7c7c09aa3d
fix(api): create service validation and docs
- if service type and docker_compose_raw is filled show an error
- if service type is not valid show an error with all valid service types
- remove enum from service type docs as it always gets outdated
2026-01-10 22:29:11 +01:00
Yassine Benh
31ba241d97
feat(api): add tag filtering on the applications list endpoint (#7360) 2026-01-10 20:22:29 +01:00
Hendrik Kleinwaechter
2f5e879b73
feat: add application logs link to preview deployments PR comment (#7906) 2026-01-10 17:34:13 +01:00
Andras Bacsai
b69fb77cb4
fix(docker): use dynamic OS ID for Docker repository URL (#7907) 2026-01-09 10:08:14 +01:00
Andras Bacsai
e7db637a5d fix(docker): use dynamic OS ID for Docker repository URL
Replace hardcoded 'debian' with ${ID} from /etc/os-release to use
the correct Docker repository for Ubuntu, Debian, and Raspbian servers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 10:04:42 +01:00
peaklabs-dev
233c79f598
fix(backup): database restores with custom db name 2026-01-08 16:29:08 +01:00
peaklabs-dev
54a834e042
fix(git): trigger deployments when watch_paths is empty 2026-01-07 19:15:16 +01:00
Andras Bacsai
162e43a7fc
fix: GitLab webhook validation (#7899) 2026-01-07 18:19:11 +01:00
Andras Bacsai
7a305fd2cd fix: prevent timing attack in GitLab webhook token validation
Replace insecure !== operator with hash_equals() for constant-time
string comparison when validating GitLab webhook tokens.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 15:23:48 +01:00
Andras Bacsai
cc53e9476e fix(docker): add fallback for Docker Swarm container labels 2026-01-07 14:57:13 +01:00
peaklabs-dev
8ba30d75ea
refactor: move all env sorting to one place 2026-01-06 16:19:38 +01:00
peaklabs-dev
3af456cd35
chore: remove raw sql from env relationship
- raw sql should not be used whenever possible
- using sql to order on the relationship environment_variables() causes custom sorting to break or be additionally complicated
2026-01-06 16:18:37 +01:00
Daniele Luisetto
e9ef331def
feat(api): allow to escape special characters in labels (#7886) 2026-01-06 15:50:55 +01:00
🏔️ Peak
caca421e2e
fix: db public port instant save and simplify if condition (#7883) 2026-01-06 13:44:46 +01:00
Yassir
aeef97f295
fix(docs): api docs for bulk env update response (#7714) 2026-01-06 12:52:32 +01:00
peaklabs-dev
51640b0e64
fix(ui): instance public ips ui validation 2026-01-05 22:14:51 +01:00
peaklabs-dev
38fefa7330
fix(docs): remove environments from projects endpoint 2026-01-05 21:52:10 +01:00
Yassir
eaa668036f
feat(service): upgrade docker registry template (#7034)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-05 14:13:42 +01:00
peaklabs-dev
e774921866
refactor: remove duplicated validation messages 2026-01-05 13:15:14 +01:00
peaklabs-dev
4021c8ac2f
feat: allow more characters when validating
- allow more characters in the name and description validation, while still not allowing any unsafe characters
2026-01-05 13:14:27 +01:00
Andras Bacsai
81780d652f fix(deployment): use mainServer consistently instead of redundant original_server
Remove the redundant $original_server property and use $mainServer throughout
ApplicationDeploymentJob. Both properties held the same value (the deployment
target server), causing unnecessary duplication.

Also fixes two bugs in generate_compose_file() where $this->server was used
instead of $this->mainServer for isSwarm() and isLogDrainEnabled() checks.
When using a build server, $this->server could point to the build server,
causing incorrect configuration for the deployment target.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 11:56:08 +01:00
Andras Bacsai
162eaa9f0d feat(github): implement processing for GitHub pull request webhooks and add helper functions for commit and PR file retrieval 2026-01-05 11:13:18 +01:00
Yassir
959dfa8125
fix(ui): images inside coolify changelog (#7357) 2026-01-04 21:59:34 +01:00
Andras Bacsai
fdb7f36347 refactor(server): remove unused destinationsByServer method 2026-01-04 19:37:47 +01:00
Muhammed Mustafa AKŞAM
cbf412ea35
fix: add datetime cast to finished_at column (#7418) 2026-01-04 17:23:22 +01:00
Muhammed Mustafa AKŞAM
9b6d1613ed
fix(docs): remove incorrect uuid format in openapi spec (#7419)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-04 16:16:19 +01:00
Andras Bacsai
e4e0618cea
perf(server): optimize destinationsByServer query (#7854) 2026-01-02 19:53:46 +01:00
Andras Bacsai
dd7962885c
fix: use original_server for log drain config in generate_compose_file (#7619) 2026-01-02 17:12:41 +01:00
Andras Bacsai
63380d27c7 fix(service): prevent public toggle from saving entire database form
The instantSave method for the 'Make it publicly available' checkbox was
calling submitDatabase(), which saved all form fields. This caused
unintended saves when only toggling the public visibility. The
syncDatabaseData() call already handles saving the public toggle state.
2026-01-02 16:59:20 +01:00
Andras Bacsai
29c62cb38f fix(service): use database UUID for ServiceDatabase proxy container name
The proxy container was incorrectly named using the service UUID instead
of the database UUID, causing proxy logs to query the wrong container.
Each ServiceDatabase should have its own uniquely named proxy container.
2026-01-02 16:49:24 +01:00
Andras Bacsai
f53229b7af
feat: add ServiceDatabase restore/import support (#7540) 2026-01-02 16:32:27 +01:00
Andras Bacsai
796bb3a19d feat: Refactor service database management and backup functionalities
- Introduced a new sidebar component for service database navigation.
- Updated routes for database import and backup functionalities.
- Refactored the database import view to improve clarity and maintainability.
- Consolidated service application and database views into a more cohesive structure.
- Removed deprecated service application view and integrated its functionalities into the service index.
- Enhanced user experience with modal confirmations for critical actions.
- Improved code readability and organization across various components.
2026-01-02 16:29:48 +01:00
luojiyin
a38717810c
perf(server): optimize destinationsByServer query
Replace in-memory filtering with database-level query in
Server::destinationsByServer(). Previously loaded all team servers
into memory before filtering by ID. Now uses findOrFail() to query
directly at the database level.
2026-01-02 22:09:38 +08:00
Andras Bacsai
7ea4191aac feat: add Sessy as one-click service
Add email observability platform Sessy to the service catalog with auto-generated HTTP Basic Auth credentials and SQLite storage.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 14:38:19 +01:00
Andras Bacsai
9466ad4a48 fix(service): handle missing service database and redirect to configuration 2026-01-02 13:46:53 +01:00
Andras Bacsai
360a82ec5d Merge branch 'next' into feat/servicedatabase-restore 2026-01-02 13:45:15 +01:00
Andras Bacsai
009b4e7d48
fix(settings): fix 404 on /settings for root user on cloud (#7785) 2026-01-02 13:18:07 +01:00
Andras Bacsai
b448b08058
fix: prevent metric charts from freezing on page navigation (#7848) 2026-01-02 13:13:45 +01:00
Andras Bacsai
6cdda5427a
Fix: Trim whitespace from domain input in instance settings (#7837) 2026-01-02 13:12:11 +01:00
Andras Bacsai
a8aa452475 fix: prevent metric charts from freezing when navigating with wire:navigate
Wraps inline chart initialization scripts in IIFEs to create local scope for variables. This prevents "Identifier has already been declared" errors when Livewire's SPA navigation re-executes scripts, allowing smooth navigation between metrics pages without page refresh.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:36:17 +01:00
claude[bot]
5b6074c38a Move FQDN trim before validation in submit() method
The trim operation was happening after validation, which meant
whitespace was counted toward the max:255 validation rule. Now
input is normalized before validation, matching the pattern used
in Application and Service components.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Andras Bacsai <andrasbacsai@users.noreply.github.com>
2026-01-02 11:16:52 +00:00
Andras Bacsai
006e787e2a
feat(logs): Add loading indicator to download all logs buttons (#7847) 2026-01-02 12:05:14 +01:00
Andras Bacsai
4d4254b591
claude fix test (#7825) 2026-01-02 12:04:23 +01:00
Andras Bacsai
a980fd460a feat(logs): Add loading indicator to download all logs buttons
Add visual feedback when downloading all logs in both container and deployment log views. Users now see an animated spinner and "Downloading..." text, preventing multiple concurrent downloads and improving UX during long operations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:04:17 +01:00
Andras Bacsai
b33962bf82 chore: remove unused $server property and add missing import
- Remove unused $server property and Server import from Advanced.php
- Add proper import for UpdateStripeCustomerEmailJob in User.php

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 15:42:21 +01:00
claude[bot]
21a7f2f581 fix(api): add docker_cleanup parameter to stop endpoints
Add optional docker_cleanup query parameter to the stop endpoints for
Services, Applications, and Databases. This allows API users to control
whether docker cleanup (pruning networks, volumes, etc.) is performed
when stopping resources.

The parameter defaults to true for backward compatibility.

API Usage:
- Stop without docker cleanup: GET /api/v1/{resource}/{uuid}/stop?docker_cleanup=false
- Stop with docker cleanup (default): GET /api/v1/{resource}/{uuid}/stop

Fixes #7758

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Andras Bacsai <andrasbacsai@users.noreply.github.com>
2026-01-01 12:03:13 +00:00
claude[bot]
d130030ad6 Fix domain input whitespace trimming in instance settings
- Add trim() to FQDN in instantSave() method to prevent whitespace from being saved
- Add trim() to FQDN in submit() method before validation and DNS checks
- Prevents invalid HostSNI rules caused by leading/trailing whitespace
- Fixes issue where accidental whitespace from copy-paste causes deployment failures

Fixes #7797

Co-authored-by: Andras Bacsai <andrasbacsai@users.noreply.github.com>
2026-01-01 10:45:13 +00:00
Andras Bacsai
a674720c7a
fix(metrics): prevent 30-day interval page freeze with LTTB downsampling (#7787) 2025-12-31 11:51:48 +01:00
Andras Bacsai
770ce2d327 Refactor application general settings view for improved readability and maintainability
- Adjusted indentation and formatting for better code clarity.
- Simplified conditional statements and removed unnecessary null checks.
- Enhanced user interface elements for Docker Compose and Dockerfile configurations.
- Improved handling of deployment commands and network settings.
- Updated helper texts for better user guidance.
2025-12-31 11:44:08 +01:00
Andras Bacsai
3ffe05f0ce refactor: remove unused updateServiceEnvironmentVariables method 2025-12-31 11:32:02 +01:00
Claude
bbb2aa9ad4
feat(logs): Add dropdown to download displayed or all logs
Users can now choose between downloading only the currently displayed
logs or fetching and downloading all available logs from the container.

Changes:
- Add downloadAllLogs() method that fetches all logs without limit
- Replace download button with dropdown menu
- Options: "Download displayed logs" and "Download all logs"

Addresses #7803
2025-12-29 17:59:23 +00:00
Claude
b484c0cc25
fix(logs): Remove hardcoded 2000 line display limit
The log viewer was artificially limiting display to 2000 lines
regardless of user's requested amount. Users could request 10k, 40k,
or 50k lines but only 2000 were ever shown.

Changes:
- Remove the hardcoded $maxDisplayLines = 2000 limit in the view
- Add MAX_LOG_LINES constant (50,000) in GetLogs component
- Enforce maximum limit in backend to prevent extremely large requests
- Update input field with max attribute and tooltip

Fixes #7803
2025-12-29 17:52:35 +00:00
Andras Bacsai
8d212bc110 fix(team): improve team retrieval and session handling for users 2025-12-28 14:50:59 +01:00
Andras Bacsai
ddd78658e8 fix(user): improve cache key and remove redundant route check
- Include sessionTeamId in currentTeam() cache key to prevent stale
  team data when users switch teams
- Update refreshSession() to use new cache key format
- Remove redundant routeIs('settings.index') check since settings.*
  already matches it

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 14:02:41 +01:00