Commit Graph
17091 Commits
Author SHA1 Message Date
Aditya Tripathi d152db3dd2 Merge remote-tracking branch 'origin/next' into coolify-dashboard-ui-refinements 2026-09-14 11:37:30 +00:00
Aditya Tripathi db6b089876 revert(dev): drop minio/mc registry changes (fixed upstream)
The minio mc client fix landed upstream, so remove it from this branch to avoid
duplication/conflict. Restores docker-compose.dev.yml, docker-compose-maxio.dev.yml,
docker-compose.dev-multi.yml, and docker/development/Dockerfile to their base
state. The unrelated shared-variables sidebar-sticky fix is retained.
2026-09-14 11:36:26 +00:00
github-actions[bot] b903def71b Merge remote-tracking branch 'origin/main' into next 2026-09-14 11:33:22 +00:00
Andras Bacsai b692b27b4e chore(docker): pin AIStor MinIO client release 2026-09-14 13:32:30 +02:00
Andras Bacsai fc6c3e1953 chore: merge main into next (#11784) 2026-09-14 13:31:30 +02:00
Andras Bacsai 2c1744fbd2 Merge remote-tracking branch 'origin/next' into pr-11784-automation/sync-main-to-next 2026-09-14 13:30:17 +02:00
Andras Bacsai e07d929927 chore: merge main into next (#11732) 2026-09-14 13:27:46 +02:00
Andras Bacsai 6a8cee4630 Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next 2026-09-14 13:26:19 +02:00
Andras Bacsai fde274c358 chore(development): switch MinIO client to AIStor image 2026-09-14 13:02:49 +02:00
Aditya Tripathi f39fa67cf0 fix(notifications): add canGate/canResource authorization to channel buttons
Per the repo's form-authorization guideline (flagged in review), the enable/
disable and send-test buttons now pass canGate/canResource so they gate on the
policy server-side, not just the browser :disabled. The 5 channel pages pass
their $settings resource; the toggle/test Livewire methods already authorize.
2026-09-14 10:11:17 +00:00
Aditya Tripathi 28de75af32 fix: address review — minio mc build stage + settings sidebar sticky
- docker/development/Dockerfile: the minio-client build stage pulled
  minio/mc:${MINIO_VERSION} from Docker Hub (now 404), which fails a clean image
  build; repoint to quay.io/minio/mc with the same pinned tag
- shared-variables layout: drop inline xl:sticky/xl:top-26 (SettingsSidebarStickyTest
  forbids them); sticky positioning comes from the shared .application-settings-navigation
  CSS rule
2026-09-14 10:05:47 +00:00
Aditya Tripathi 7a96f0900d fix(ui): follow-up polish + extend deploy-log reopen to apps
- Fix DB URL copy button: a Blade @if inside the <x-copy-button> tag silently
  broke the component; compute the resolve expression in PHP and pass one attr
- Sidebar: show section dividers between groups in the collapsed rail
- Project cards/list + dashboard: use the app's styled tooltip (data-tooltip) on
  the env/resource icon stats, and lift them above the card link overlay so they
  actually receive hover
- Applications: show the persistent 'Deploying… View log' indicator (links to the
  running deployment's log page) in the heading, extending the reopen feature to
  all resource types
- Shared variables: use the canonical application-settings-workspace stacked,
  sticky sidebar to match other settings pages
- Environment page: add a 'Shared variables' shortcut to the dedicated page
2026-09-14 07:12:11 +00:00
Aditya Tripathi 772f724468 fix(dev): pull minio mc client from quay.io
MinIO removed the mc client image from Docker Hub, so 'minio/mc:latest' now
fails with 'pull access denied / authentication required' and breaks the dev
minio-init container (spin up / docker compose up). Repoint minio-init to
quay.io/minio/mc:latest (MinIO's own registry, pullable without login) in the
dev, maxio, and dev-multi compose files. The minio server image
(coollabsio/maxio:latest) still pulls fine and is unchanged.
2026-09-14 06:04:14 +00:00
Aditya Tripathi 421056ea43 feat(env-vars): split production and preview into labelled sections
Preview and production variables were interleaved in one table with a shared
Type column. Drop the Type column and head each scope's rows with a
'Production' / 'Preview deployments' section label, so the two groups read as
separate sections. Rows already carry their scope and are ordered
production-first, so this is presentation-only.
2026-09-14 05:34:48 +00:00
Andras Bacsai 59eacc9ff8 fix(services): keep Traefik subtype from stored service type
Label service apps as application even after the compose image looks like a database. Do not auto-heal existing deployments.
2026-09-13 21:09:01 +02:00
Andras Bacsai 7d11bc92f7 feat(logs): accept all for log lines and keep -1
API log endpoints and the GetLogs UI now treat `all` as unbounded
output, with `-1` remaining as a compatibility alias. MCP still
falls back to a positive default. Traefik version checks run from
CheckForUpdatesJob instead of a weekly schedule.
2026-09-13 15:25:20 +02:00
Andras Bacsai 6f58ad4b97 fix(backups): keep service DB context after deleting a schedule
Cache the related database before deleting the backup so authorization,
server lookup, and the service redirect do not touch a deleted morph.
Skip rendering after delete and cover the service-database path.
2026-09-12 08:54:17 +02:00
Aditya Tripathi eec61e45b4 feat(database): reopen the live start/restart log after closing it
Extend the service reopen-deployment pattern to databases:
- Track the running activity id (refreshed on the 10s poll, on broadcasts, and
  instantly when start/restart runs)
- Add reopenDeployment() to re-attach the activity monitor and reopen the dialog
- Show the shared x-deploying-indicator in the mobile status row + desktop HUD
- Clicking Start/Restart while an operation runs reopens the log instead of
  launching a duplicate

Applications already use a persistent deployment-log page, so they need no
reopen affordance.
2026-09-11 09:10:20 +00:00
Aditya Tripathi af093eea6e feat(service): reopen the live deployment log after closing it
The deploy/start log lived in a fire-and-forget dialog; closing it left the
deploy running server-side with no way back, and re-clicking Deploy only
errored 'deployment in progress'.

- Track the running activity id in the service heading (refreshed on the 10s
  poll, on broadcasts, and instantly when a deploy starts)
- Add reopenDeployment(): re-attach the activity monitor to the running deploy
  and reopen the dialog
- Show a persistent 'Deploying… View log' indicator (mobile status row +
  desktop action HUD) that reopens the live log
- Clicking Deploy/Restart while a deploy runs now reopens the log instead of
  throwing an error
- New reusable x-deploying-indicator component
2026-09-11 08:00:02 +00:00
Aditya Tripathi c046b186aa feat(ui): optimistic updates for notifications and resource actions
- Notification channels: flip enable/disable label + highlight instantly, roll back on error (all 6 channels via shared channel-actions)
- Database heading: Start/Restart show instant Starting/Restarting state + spinner, disable during the request
- Service heading: Restart now reuses the deploying state (spinner + Restarting label), matching the existing Deploy pattern
2026-09-11 06:38:48 +00:00
Aditya Tripathi 01337c0cd6 feat(ui): dashboard refinements + wire:navigate setting fixes
- Sidebar: keep nav icons at the same x-position when collapsed (muscle memory)
- Database URLs: add copy button to internal/public URL fields
- Project cards + list: compact icon stats for env/resource counts, add Created column
- Server card graph: add CPU/Memory color legend to the tooltip
- Server list: add IP address, resource count, and status dot columns
- Respect is_wire_navigate_enabled on scheduled-backups links (use wireNavigate helper)
2026-09-11 06:33:39 +00:00
Andras Bacsai 33f453912a chore(sentinel): bump sentinel version from 0.0.22 to 1.0.1 v4.3.19 2026-09-10 17:41:29 +02:00
Andras Bacsai fc9e61b7b4 feat(services): open resource settings in a modal with restart limits
Move service application and database settings into an embedded modal with a footer, subtitle helper, and Docker restart-count control. Accept max_restart_count on the service applications API, cap compose YAML collection aliases, and tighten status, backup, and database sidebar layouts.
2026-09-10 17:39:56 +02:00
Andras Bacsai d24ee35824 fix(s3): allow uppercase letters in S3 bucket names
S3-compatible and legacy buckets may include uppercase letters. Relax the bucket name pattern, validation messages, and tests so those names are accepted while still rejecting invalid characters and formats.
2026-09-10 15:12:53 +02:00
Andras Bacsai 3f1235158d fix(domains): detect Docker Compose domain conflicts
Normalize schemes when comparing routing identities and include per-service
Compose domains in conflict checks. Show the conflicting service name and
align the service domains heading layout.
2026-09-10 14:53:01 +02:00
Andras Bacsai 3229141126 fix(domains): compact service cards at medium widths 2026-09-10 14:08:46 +02:00
Andras Bacsai 6028461f92 fix(domains): unify editing and queued DNS checks
Add indexing, redirect, and hostname regeneration controls to domain editors. Queue DNS checks only for scheme or hostname changes and show progress consistently across application, service, and preview domains.
2026-09-10 14:00:50 +02:00
Andras Bacsai a0a8c86752 fix(domains): ignore hostless URLs in deployment and port overrides 2026-09-10 12:33:50 +02:00
Andras Bacsai 36befcfecd fix(service): avoid storing inherited ports as overrides 2026-09-10 12:08:06 +02:00
Andras Bacsai 0134401f7c fix(service): write compose .env files atomically via temp rename
Replace direct .env overwrite with a unique temp file and mv so a
partial write cannot leave a truncated environment file on disk.
2026-09-10 09:24:37 +02:00
Andras Bacsai d85a7800fa feat(notifications): allow toggling restart-limit email events
Add restartLimitReached to the notification event toggle list so admins can disable restart-limit email notifications. Cover the toggle with an authorization test.
2026-09-10 09:06:17 +02:00
Andras Bacsai 361d5a3c8c feat(deploy): pull compose images before stopping containers
Pull image-based Docker Compose services with --ignore-buildable before stopping the current deployment so image-only services are ready first. Fail the deploy if pull fails, and run the pull on the runtime server when a build server is used.
2026-09-10 09:03:28 +02:00
Andras Bacsai 285684ad3c style(ui): unify view toggles at h-8 and View all buttons
Extract a shared view-toggle utility so list/grid switchers use the same 32px control height instead of mixed h-8/h-9 styles. Point section-heading View all links at the shared button class so they match other actions.
2026-09-10 08:40:41 +02:00
Andras Bacsai fbb569a4b3 fix(ui): respect sidebar toggle and show application domains
Honor an explicit sidebarCollapsed preference instead of always auto-collapsing with a second nav. Show the primary domain on the application access card, use a persisted GitLab name in the page title after delete, and shrink the compose view switcher.
2026-09-10 08:36:15 +02:00
peaklabs-dev 9faa4f4b7c Merge branch 'main' into next 2026-09-09 15:32:27 +02:00
🏔️ Peak 80b97517a4 feat: add custom container name prefix option (#11704) 2026-09-09 15:04:32 +02:00
peaklabs-dev 6ad739a53c feat(docker): limit container name prefixes to 30 characters 2026-09-09 15:01:57 +02:00
peaklabs-dev 0d8ef9411f feat(api): allow setting the container name prefix 2026-09-09 15:01:57 +02:00
peaklabs-dev 7efece06c4 feat(ui): add container name prefix to application container settings 2026-09-09 15:01:57 +02:00
peaklabs-dev 266d414a04 feat(docker): add container name prefix for generated container names 2026-09-09 15:01:57 +02:00
🏔️ Peak 62df33ba3d feat(docker): use ISO 8601 timestamp suffix for generated container names (#11702) 2026-09-09 15:01:53 +02:00
🏔️ Peak 45501131bb fix(docker): custom container names (#11701) 2026-09-09 14:58:10 +02:00
Andras Bacsai 936a2566c6 fix(analytics): hide traffic UI when disabled and skip default-on (#11700) 2026-09-09 14:28:15 +02:00
Andras Bacsai f4bec96bd6 feat(api): add database import and Cloudflare DNS management (#11699) 2026-09-09 14:28:08 +02:00
Andras Bacsai d4a655c390 fix(database): keep S3 import credentials out of activity commands
Pass S3 endpoint and keys as helper container env vars and run mc alias
via those variables so the stored import command no longer contains
access keys or secrets. Start the helper in a separate remote process,
use the storage filesystem adapter for object checks, and remove a
credential temp file during import cleanup when the path is safe.
2026-09-09 14:27:31 +02:00
Andras Bacsai 7109a11826 fix: queue import cleanup and scope DNS record updates
Move database import temp/container cleanup into a queued listener with retries, and clear the import running state on failed restore starts. Tighten Cloudflare replace/delete to the current server IP and owning resource, notify when DNS jobs fail, and pass domain-removal confirmation through remove-by-key. Document import request oneOf schemas without extra properties.
2026-09-09 13:43:56 +02:00
peaklabs-dev 8d07bb9274 fix(docker): use custom container names for compose applications 2026-09-09 13:38:07 +02:00
peaklabs-dev de013ace2a fix(docker): only use custom container names in consistent naming mode 2026-09-09 13:38:07 +02:00
peaklabs-dev efe474e0e2 fix(docker): enable consistent naming for legacy custom container names 2026-09-09 13:38:07 +02:00
Andras Bacsai 7002ee95bc fix(database): decompress gzip backups for mysql and mariadb restores
Single-database mysql/mariadb imports accepted .gz files but redirected
them straight into the client. Pipe through the existing gunzip fallback
used by dump-all restores.
2026-09-09 13:10:12 +02:00