From 85c44296ac8df335207e7364f34d93831813c661 Mon Sep 17 00:00:00 2001 From: Harry Bayliss Date: Mon, 8 Jun 2026 22:09:57 +0100 Subject: [PATCH] Restructure UX and seed a fully simulated organisation Rework the dashboard, environment topology view, header navigation, and status rendering, and standardise selects on a shadcn-vue component. Replace the thin database seeder with a SimulatedEnvironmentSeeder that builds a fully wired, mostly-running organisation (ACTIVE server fleet, managed + GHCR registries, Gitea source provider, ClipBin app with production/staging environments, services, slices, endpoints, managed variables, build artifacts, and a completed/in-progress/failed operations history) so the new UI renders against realistic data. --- CHANGELOG.md | 11 + app/Http/Middleware/HandleInertiaRequests.php | 20 +- database/seeders/DatabaseSeeder.php | 32 +- .../seeders/SimulatedEnvironmentSeeder.php | 441 +++++++++++ database/seeders/TestEnvironmentSeeder.php | 2 +- resources/js/components/AppHeader.vue | 78 +- resources/js/components/StatusIndicator.vue | 91 +++ .../components/environments/ServiceCard.vue | 25 +- .../js/components/environments/SpecRow.vue | 19 + .../components/environments/TopologyCard.vue | 29 + .../operations/OperationTimeline.vue | 31 +- resources/js/components/ui/select/Select.vue | 19 + .../js/components/ui/select/SelectContent.vue | 60 ++ .../js/components/ui/select/SelectGroup.vue | 21 + .../js/components/ui/select/SelectItem.vue | 43 ++ .../js/components/ui/select/SelectLabel.vue | 13 + .../ui/select/SelectScrollDownButton.vue | 31 + .../ui/select/SelectScrollUpButton.vue | 27 + .../components/ui/select/SelectSeparator.vue | 11 + .../js/components/ui/select/SelectTrigger.vue | 33 + .../js/components/ui/select/SelectValue.vue | 11 + resources/js/components/ui/select/index.ts | 10 + resources/js/pages/Dashboard.vue | 297 +++++-- resources/js/pages/applications/Create.vue | 74 +- resources/js/pages/applications/Edit.vue | 63 +- resources/js/pages/applications/Index.vue | 6 +- resources/js/pages/applications/Show.vue | 18 +- resources/js/pages/build-artifacts/Show.vue | 4 +- .../pages/environment-attachments/Create.vue | 76 +- .../js/pages/environment-attachments/Edit.vue | 26 +- .../js/pages/environment-variables/Index.vue | 12 +- resources/js/pages/environments/Edit.vue | 85 +- resources/js/pages/environments/Index.vue | 16 +- resources/js/pages/environments/Show.vue | 724 +++++++++--------- resources/js/pages/gateway-routes/Create.vue | 40 +- resources/js/pages/gateway-routes/Edit.vue | 13 +- resources/js/pages/gateway-routes/Index.vue | 8 +- resources/js/pages/operations/Index.vue | 4 +- resources/js/pages/operations/Show.vue | 11 +- .../js/pages/organisation-members/Index.vue | 83 +- resources/js/pages/organisations/Show.vue | 20 +- resources/js/pages/providers/Create.vue | 26 +- resources/js/pages/registries/Create.vue | 34 +- resources/js/pages/registries/Edit.vue | 30 +- resources/js/pages/registries/Index.vue | 14 +- resources/js/pages/servers/Index.vue | 9 +- resources/js/pages/servers/Show.vue | 60 +- resources/js/pages/service-replicas/Show.vue | 4 +- resources/js/pages/service-slices/Create.vue | 31 +- resources/js/pages/service-slices/Index.vue | 25 +- resources/js/pages/service-slices/Show.vue | 11 +- resources/js/pages/services/Edit.vue | 40 +- resources/js/pages/services/Show.vue | 28 +- .../js/pages/services/updates/Create.vue | 4 +- .../js/pages/source-providers/Create.vue | 34 +- resources/js/pages/source-providers/Edit.vue | 34 +- routes/web.php | 17 +- .../SimulatedEnvironmentSeederTest.php | 100 +++ 58 files changed, 2292 insertions(+), 847 deletions(-) create mode 100644 database/seeders/SimulatedEnvironmentSeeder.php create mode 100644 resources/js/components/StatusIndicator.vue create mode 100644 resources/js/components/environments/SpecRow.vue create mode 100644 resources/js/components/environments/TopologyCard.vue create mode 100644 resources/js/components/ui/select/Select.vue create mode 100644 resources/js/components/ui/select/SelectContent.vue create mode 100644 resources/js/components/ui/select/SelectGroup.vue create mode 100644 resources/js/components/ui/select/SelectItem.vue create mode 100644 resources/js/components/ui/select/SelectLabel.vue create mode 100644 resources/js/components/ui/select/SelectScrollDownButton.vue create mode 100644 resources/js/components/ui/select/SelectScrollUpButton.vue create mode 100644 resources/js/components/ui/select/SelectSeparator.vue create mode 100644 resources/js/components/ui/select/SelectTrigger.vue create mode 100644 resources/js/components/ui/select/SelectValue.vue create mode 100644 resources/js/components/ui/select/index.ts create mode 100644 tests/Feature/SimulatedEnvironmentSeederTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index d5033f2..4ca71d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Reworked the dashboard to lead with recent applications and a latest-deployments activity feed with relative timestamps, replacing the organisation-picker layout. +- Rebuilt the environment view as a Network / Compute / Resources topology with dense spec cards, moving the commit-SHA deploy form and raw Caddyfile previews behind disclosures. +- Added a header organisation switcher, reordered the primary nav, and removed the onboarding nav item. +- Shared a fallback organisation when no organisation is in the route so the header navigation and switcher render on the dashboard, and gave the dashboard a header with a "New application" action and actionable empty states. +- Introduced a shared `StatusIndicator` (coloured dot + label) and standardised status rendering across the dashboard and environment views. + +- Added a shadcn-vue `Select` component (radix-vue based) and replaced every native HTML `