Skip to content

The Hub Dashboard

The hub at /admin/glacier-pack is the only admin surface for the whole Glacier Addons family. It is a standalone, full-page admin UI — its own chrome, not AdminLTE — styled after the Glacier theme editor: near-black surfaces, a teal accent, and generous 14px radii. Everything you could ever do on an addon's original admin page happens here.


Layout

  • Topbar — the Glacier Pack brand mark and version on the left, a Back to Panel button on the right.
  • Rail — every addon in the family, grouped under Basic Pack and Advanced Pack headers with counts. Each entry shows the addon's icon and name; the active entry is highlighted. ArrowUp / ArrowDown move through the rail when it has focus.
  • Content — a pane header (addon name + one-line description), then the addon's complete management UI.
  • Footer — total addon count and how many currently have a linked pane.

The hub is root-admin only: the route group runs the standard admin middleware, and the controller performs a second explicit root_admin check, so no code path can ever render it for staff or regular users.


Basic vs Advanced groups

The rail's two groups mirror the two packs. Basic pack addons are panel-operations tools (logs, alerts, uptime, file handling); Advanced pack addons are hosting workflows (backups, installers, delegation, imports). The grouping is presentational only — every pane works the same way regardless of pack.


Panes and sub-tabs

Clicking a rail entry opens the addon's main pane at ?a=<slug>. Addons with multiple pages declare pill-style sub-tabs at the top of their pane — ?a=<slug>&p=<sub> renders the corresponding sub-page. An unknown or invalid p value falls back to the main pane gracefully.

Examples:

AddonSub-tabs
Resource AlertsOverview · Rules · History · Settings
Backup ProOverview · Destinations · Backup Rules · Backups · Archives · Activity · Settings
Node StatsOverview · Nodes · Capacity · Historical · Top Consumers · Reports · Settings
Permission ManagerOverview · Roles · Members · Audit Log
Subdomain ManagerSettings · Domains · Records
Node StatusOverview · Service Updates
Config EditorEditor · Raw file
Server ImporterOverview · Run report

The remaining 16 addons are single-pane — everything fits on one page.


How panes are styled

Panes follow two conventions, and you will see both:

  • .gp-native — the addon's original markup (boxes, tables, forms, buttons, badges, pagination, small-boxes), kept as-is and wrapped in a container the hub stylesheet re-themes to match. Tables, filters and pagination behave exactly like the addon's original pages.
  • gp-* components — shared hub building blocks (cards, buttons, switches, badges, range sliders) used for anything new.

Either way, every control on a pane is real and functional — panes are not summaries or links out; they are the addon's entire admin UI.


Saving: the _hub round-trip

Every form on every pane posts to the addon's own existing endpoint — the hub adds no save logic of its own. A hidden _hub field carries the full return URL:

html
<input type="hidden" name="_hub" value="/admin/glacier-pack?a=<slug>&p=<sub>">

After the endpoint processes the request it redirects back to that URL, so you always land on the same pane you saved from. The _hub value is validated server-side — it must be a local /admin/glacier-pack path, anything else is rejected with 403.

  • Success — the pane reloads with ?saved=1 and a green Settings saved. banner that fades out after a few seconds.
  • Validation failure — the redirect lands back on the hub automatically, and the hub shell renders the full error bag in a red callout above the pane, listing every rejected field.

TIP

Deep links are stable: /admin/glacier-pack?a=backup-pro&p=destinations always opens that exact sub-tab — handy for runbooks and bookmarks.


How addons appear once installed

The rail renders from the hub's registry (config/glacier-pack.php), which lists all 46 addons. For each entry the hub checks whether the addon's pane partial exists on the panel:

  • Installed — the entry opens the addon's live pane.
  • Not installed (or files missing) — the entry shows a small dot and opens a fallback card with the addon's description and, where applicable, a button to any native page that still exists.

Install an addon and its pane lights up on the next page load — no hub reconfiguration is ever needed.

The old admin pages are gone — by design

Before the hub, each addon injected its own sidebar link and shipped its own AdminLTE pages. The hub v2 contract removes both: addon installers no longer inject sidebar links (and actively clean up previously injected ones), and the addons' original GET /admin/<addon> page routes and blades are deleted from the package. Only the action endpoints (POST/DELETE/API routes) remain — they are what hub forms post to.

Two deliberate exceptions:

  • Permission Manager's /admin/staff is a feature surface for staff users, not a pack admin page — it stays, with its own middleware.
  • Client-facing UI (server pages, account area, login page) is untouched by the hub contract entirely.

What's Next?