From dd8f83a990959dc78bffd52251205bbcfff4b1567ebece63e93a0874fe8565a4 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 26 Apr 2026 21:21:50 -0400 Subject: [PATCH] polish(dedicated): drive bay title, HDD/SSD optgroups, OS expansion + grouping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Four customer-copy / UX cleanups bundled together: 1. Drive bay title strip — shortGroupLabel() collapses "LFF/SFF/NVMe Drive Bays" to just "Drive Bays" everywhere it surfaces (rail anchor, configurator section title, BuildSummary line item). Each chassis only ever shows one drive bay group, so the form-factor prefix was redundant noise. 2. HDD/SSD optgroups in Drive Selection — VSelect now interleaves VListSubheader rows ("HDDs", "SSDs", "NVMe") between options. Sentinel header values (`__hdr_`) are filtered in onDriveChange so a stray header click can't propagate. 3. OS list expansion — went from 6 entries to 14: added AlmaLinux 8, Rocky 8, Ubuntu 22.04 LTS, Debian 11, Fedora Server 41, FreeBSD 14, Proxmox VE 8, Windows Server 2019 (BYOL). Default flipped from "No OS" → "AlmaLinux 9" (matching what most dedicated buyers actually want — flag and revert via seeder if you'd rather keep bare-metal as the default). 4. OS picker grouped by distro — OsGroupSelector renders family sections (AlmaLinux, Rocky Linux, Ubuntu, Debian, Fedora, FreeBSD, Proxmox VE, Windows Server, Other) with a small uppercase heading above each row of tiles. metaFor() helper maps slug → family + logo path. New SVG logos for fedora, freebsd, proxmox; refined geometry on almalinux + rocky + debian. Reseeded the OS group (deleted old 6 values, recreated 14 with new ordering). 20/20 dedicated tests still pass. `npm run build` clean. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../database/seeders/ConfigOptionSeeder.php | 19 ++- website/public/img/os/almalinux.svg | 7 +- website/public/img/os/debian.svg | 6 +- website/public/img/os/fedora.svg | 7 + website/public/img/os/freebsd.svg | 10 ++ website/public/img/os/proxmox.svg | 11 ++ website/public/img/os/rocky.svg | 10 +- .../DriveBayGroupSelector.vue | 92 ++++++++++-- .../OptionGroupSelector.vue | 4 +- .../DedicatedConfigurator/OsGroupSelector.vue | 132 ++++++++++++------ .../ts/stores/dedicatedConfigurator.ts | 6 +- 11 files changed, 235 insertions(+), 69 deletions(-) create mode 100644 website/public/img/os/fedora.svg create mode 100644 website/public/img/os/freebsd.svg create mode 100644 website/public/img/os/proxmox.svg diff --git a/website/database/seeders/ConfigOptionSeeder.php b/website/database/seeders/ConfigOptionSeeder.php index 119b99b..bacf73a 100644 --- a/website/database/seeders/ConfigOptionSeeder.php +++ b/website/database/seeders/ConfigOptionSeeder.php @@ -447,13 +447,24 @@ class ConfigOptionSeeder extends Seeder ); $gen14OsOption = $this->seedRadioOption($gen14Os, 'Operating System', false, 1); + // Order: enterprise Linux first (Alma / Rocky), then mainstream LTS, + // then specialty (Fedora / FreeBSD / Proxmox), then Windows BYOL, + // with "No OS" last so the picker reads as a positive distro choice. $this->seedValues($gen14OsOption, [ - ['label' => 'No OS (BYO image / custom PXE)', 'value' => 'none', 'monthly' => 0, 'is_default' => true], - ['label' => 'AlmaLinux 9', 'value' => 'alma9', 'monthly' => 0], - ['label' => 'Ubuntu 24.04 LTS', 'value' => 'ubuntu24', 'monthly' => 0], - ['label' => 'Debian 12', 'value' => 'debian12', 'monthly' => 0], + ['label' => 'AlmaLinux 9', 'value' => 'alma9', 'monthly' => 0, 'is_default' => true], + ['label' => 'AlmaLinux 8', 'value' => 'alma8', 'monthly' => 0], ['label' => 'Rocky Linux 9', 'value' => 'rocky9', 'monthly' => 0], + ['label' => 'Rocky Linux 8', 'value' => 'rocky8', 'monthly' => 0], + ['label' => 'Ubuntu 24.04 LTS', 'value' => 'ubuntu24', 'monthly' => 0], + ['label' => 'Ubuntu 22.04 LTS', 'value' => 'ubuntu22', 'monthly' => 0], + ['label' => 'Debian 12', 'value' => 'debian12', 'monthly' => 0], + ['label' => 'Debian 11', 'value' => 'debian11', 'monthly' => 0], + ['label' => 'Fedora Server 41', 'value' => 'fedora41', 'monthly' => 0], + ['label' => 'FreeBSD 14', 'value' => 'freebsd14', 'monthly' => 0], + ['label' => 'Proxmox VE 8', 'value' => 'proxmox8', 'monthly' => 0], ['label' => 'Windows Server 2022 (BYOL)', 'value' => 'windows-2022-byol', 'monthly' => 0], + ['label' => 'Windows Server 2019 (BYOL)', 'value' => 'windows-2019-byol', 'monthly' => 0], + ['label' => 'No OS (BYO image / custom PXE)', 'value' => 'none', 'monthly' => 0], ]); $gen14Os->plans()->syncWithoutDetaching($gen14AllPlans); diff --git a/website/public/img/os/almalinux.svg b/website/public/img/os/almalinux.svg index efd9050..2f2727a 100644 --- a/website/public/img/os/almalinux.svg +++ b/website/public/img/os/almalinux.svg @@ -1,5 +1,8 @@ - - + + + + + diff --git a/website/public/img/os/debian.svg b/website/public/img/os/debian.svg index 7695fd5..97dc720 100644 --- a/website/public/img/os/debian.svg +++ b/website/public/img/os/debian.svg @@ -1,5 +1,7 @@ - - + + + + diff --git a/website/public/img/os/fedora.svg b/website/public/img/os/fedora.svg new file mode 100644 index 0000000..949e80c --- /dev/null +++ b/website/public/img/os/fedora.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/website/public/img/os/freebsd.svg b/website/public/img/os/freebsd.svg new file mode 100644 index 0000000..76f3d0d --- /dev/null +++ b/website/public/img/os/freebsd.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/website/public/img/os/proxmox.svg b/website/public/img/os/proxmox.svg new file mode 100644 index 0000000..156d929 --- /dev/null +++ b/website/public/img/os/proxmox.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/website/public/img/os/rocky.svg b/website/public/img/os/rocky.svg index d558786..d11edf1 100644 --- a/website/public/img/os/rocky.svg +++ b/website/public/img/os/rocky.svg @@ -1,7 +1,9 @@ - - - - + + + + + + diff --git a/website/resources/ts/Components/Marketing/Dedicated/DedicatedConfigurator/DriveBayGroupSelector.vue b/website/resources/ts/Components/Marketing/Dedicated/DedicatedConfigurator/DriveBayGroupSelector.vue index 970e0af..59aeb69 100644 --- a/website/resources/ts/Components/Marketing/Dedicated/DedicatedConfigurator/DriveBayGroupSelector.vue +++ b/website/resources/ts/Components/Marketing/Dedicated/DedicatedConfigurator/DriveBayGroupSelector.vue @@ -1,6 +1,6 @@