Skip to content

refactor: unify server admin tools into dashboard pages with server selector - #4625

Merged
Siumauricio merged 4 commits into
canaryfrom
claude/agitated-lichterman-51d82b
Jun 12, 2026
Merged

Siumauricio merged 4 commits into
canaryfrom
claude/agitated-lichterman-51d82b

Conversation

@Siumauricio

Copy link
Copy Markdown
Contributor

What changed

Removes the Advanced dropdown on remote server cards (Show Traefik File System, Show Docker Containers, Show Swarm Overview, Show Swarm Nodes, Show Schedules) and unifies everything into the existing dashboard routes via a new shared ServerFilter selector:

  • /dashboard/traefik, /dashboard/docker, /dashboard/swarm, /dashboard/schedules and /dashboard/settings/cluster now render a server select (top right). Default is Dokploy Server, with remote servers as additional options.
  • Selection persists in the URL (?serverId=) and the content remounts on switch so no stale state leaks between servers.
  • The selector uses server.withSSHKey, so it respects server read permissions and excludes build/inactive servers.

Cloud

The dropdown was the only entry point for these features in cloud, so:

  • The IS_CLOUD redirects were removed from these five pages and the sidebar items now show in cloud too (same permission gating as before).
  • In cloud the selector lists only remote servers (no Dokploy Server option) and defaults to the first one; with no servers it shows an empty state linking to Add Server.
  • The cloud-only Show Monitoring modal lost its dropdown home, so it's now an icon button in the server card actions row.

Notes for review

  • The five now-unused modal components were deleted.
  • Existing getServerSideProps permission checks are untouched.
  • In cloud, an org with zero servers will see these sidebar items with the empty state — hiding them would require passing a server count into the sidebar's isEnabled, which I left out on purpose.

Siumauricio and others added 4 commits June 12, 2026 14:11
…elector

Replace the per-server Advanced dropdown (Traefik file system, Docker
containers, swarm overview, swarm nodes, schedules) with a server
selector on the existing dashboard routes, defaulting to the Dokploy
server. Pages are now available in cloud too, since the dropdown was
the only entry point there; the cloud-only monitoring modal moves to
an icon button on the server card.
- Introduced a new skill for creating high-quality frontend designs, emphasizing intentional aesthetics and detailed guidelines for implementation.
- Updated the Traefik system component to improve the user experience when no files or directories are found, incorporating new icons and a more informative layout.
- Enhanced the server filter component with improved loading states, user prompts, and a more visually appealing design, including badges and better server information display.
…sponsiveness

- Modified the Card component in the schedules page to ensure it utilizes full width while maintaining the minimum height, enhancing the overall layout and user experience.
@Siumauricio
Siumauricio merged commit 439f575 into canary Jun 12, 2026
3 of 4 checks passed
@Siumauricio
Siumauricio deleted the claude/agitated-lichterman-51d82b branch June 12, 2026 20:39
@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. enhancement New feature or request labels Jun 12, 2026
masonjames added a commit to masonjames/dokploy that referenced this pull request Jul 3, 2026
Resolves conflicts with 16 upstream commits, notably:
- Renumber caddy migration 0172_parched_ares -> 0173_cool_vargas
  (upstream 0172_quick_the_professor from concurrent deployments Dokploy#4645
  is canonical); regenerated snapshot on top of upstream's, restored
  idempotent DDL so hosts that applied the old identity no-op cleanly
- Adopt dynamic traefik container resolution in access-log cleanup
  (Dokploy#4646) within the provider-aware handler
- Accept admin-tools refactor (Dokploy#4625): traefik file-system modal is
  deleted; /dashboard/traefik page with ServerFilter is now the entry
  point and is cloud-enabled, ShowTraefikSystem stays provider-aware
  with a provider-aware empty state path
- Fold buildsConcurrency (server + webServerSettings) alongside caddy
  provider columns in db schema
- Tailwind v4 class renames (shadow-xs, h-140) applied to our
  provider-aware components, keeping caddy language switch and
  pointer-events-none read-only overlay fix

Co-Authored-By: Claude Fable 5 <[email protected]>
masonjames added a commit to masonjames/dokploy that referenced this pull request Jul 3, 2026
getActiveWebServerProvider was adminProcedure, but it is consumed by
member-visible surfaces: domain forms, application traefik/caddy config
views, and the web-server files page (cloud-enabled by the admin-tools
refactor Dokploy#4625 and gated only by traefikFiles.read). For non-admin
members the query returned FORBIDDEN, so provider resolution failed and
those surfaces silently degraded (e.g. traefik-only fields shown on
caddy installs, file editor locked). getWebServerSettings, a superset
of this data, is already protectedProcedure; ensureServerAccess keeps
remote-server lookups scoped to the caller's organization.

Co-Authored-By: Claude Fable 5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant