Commit Graph
17107 Commits
Author SHA1 Message Date
Aditya Tripathi 1151449221 fix(ui): collapse non-active sub-sections + accordion on inline service nav
Follow-up to the settings-sidebar accordion. Two gaps:

- Application sidebar rendered every item's in-page sub-sections, so Advanced's
  Build/Container/Deployment/… showed while you were on General. Gate the
  nav-children on the active item so only the current page's sub-sections expand
  (database/service/server already did this).
- The service *main* configuration page renders its nav inline (the component is
  only used by service sub-pages), so it missed the accordion. Wire it up there
  too.

Extends the regression test to cover both.
2026-09-18 08:59:38 +00:00
Aditya Tripathi 7585480670 feat(ui): collapse resource settings sidebar groups into an accordion
Discussion #11833: since v4.3.19 the resource settings sidebar expands every
group by default, so reaching Backups etc. means scrolling past every section.

Restore the v4.3.18 behaviour across all grouped resource sidebars (application,
database, service, server): each group header is now a collapsible toggle, and
only the group containing the active page is open by default. Manual expand/
collapse is remembered per resource type in localStorage; an explicit collapse
sticks even for the active group. Desktop (xl) only — the mobile grid is
unchanged (display:contents wrapper + xl-scoped collapse).

- new shared Alpine provider settingsSidebarAccordion (resources/js) + app.js
- nav-section-toggle utility (chevron header)
- wired into the four grouped sidebars
- static regression test
2026-09-16 12:39:14 +00:00
Aditya Tripathi 2f5b03aee0 Merge remote-tracking branch 'origin/next' into coolify-dashboard-ui-refinements 2026-09-16 11:17:04 +00:00
github-actions[bot] 69d1e89ac2 Merge remote-tracking branch 'origin/main' into next 2026-09-16 03:14:20 +00:00
Andras Bacsai ede9d8417a build(minio): use packaged mx client in development images 2026-09-15 23:00:45 +02:00
Andras Bacsai 113a2f229d fix(restarts): reset legacy restart limits during migration
Normalize existing resources with the old restart limit defaults so restart limits remain opt-in.
v4.3.21
2026-09-15 13:28:50 +02:00
Andras Bacsai ab30f95ad9 feat(restarts): make resource restart limits opt-in
Default restart limits to zero for applications, previews, and services, and bump the Coolify version to 4.3.21.
2026-09-15 12:58:59 +02:00
Andras Bacsai 8ab54da2ac style(ui): remove description placeholders and normalize control heights 2026-09-15 12:28:16 +02:00
Andras Bacsai 776c56f947 fix(helper): hide deployment details unless explicitly requested 2026-09-15 11:38:33 +02:00
Andras Bacsai 596cb39849 chore(traefik): update supported image versions 2026-09-15 10:14:03 +02:00
github-actions[bot] 02ab8db270 Merge remote-tracking branch 'origin/main' into next 2026-09-15 03:14:58 +00:00
Andras Bacsai 065ca9c861 fix(helper): prefer newer fetched helper version
Use a CDN-fetched helper version when it is newer than the bundled
version, while ignoring stale stored versions.
v4.3.20
2026-09-14 20:50:16 +02:00
Andras Bacsai 398f32712a docs(ai): consolidate engineering lessons 2026-09-14 20:41:06 +02:00
Andras Bacsai 246b2cfe0a chore(release): bump Coolify version to 4.3.20 2026-09-14 17:01:53 +02:00
Andras Bacsai 22fbbd74ff fix(sentinel): restore hourly version checks for enabled servers
Dispatch Sentinel checks hourly for eligible servers, including healthy
installations, while continuing to exclude build servers.
2026-09-14 15:43:52 +02:00
Aditya Tripathi d152db3dd2 Merge remote-tracking branch 'origin/next' into coolify-dashboard-ui-refinements 2026-09-14 11:37:30 +00:00
Andras Bacsai 9b07be2d68 chore(helper): bump helper version to 1.0.17 2026-09-14 13:36:46 +02: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