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.
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.
- 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
- 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
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.
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.
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.
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.
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.
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
- 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
- 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)
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.
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.
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.
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.
Add restartLimitReached to the notification event toggle list so admins can disable restart-limit email notifications. Cover the toggle with an authorization test.
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.
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.
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.
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.
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.
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.