From ae9428c517cd7299f6bf6754b7904940462a3035 Mon Sep 17 00:00:00 2001 From: Saeed Vaziry Date: Sat, 20 Jun 2026 15:21:39 +0200 Subject: [PATCH 1/3] Add Ubuntu 26 support across all server providers - Add UBUNTU26 enum case with version 26.04 - Add ubuntu_26 to core operating_systems list - Add static image entries for Linode and Hetzner (which use the static images map). AWS, DigitalOcean, and Vultr resolve images dynamically via the provider API using getVersion(), so they need no static entry. --- app/Enums/OperatingSystem.php | 2 ++ config/core.php | 1 + config/serverproviders.php | 2 ++ 3 files changed, 5 insertions(+) diff --git a/app/Enums/OperatingSystem.php b/app/Enums/OperatingSystem.php index 659b8453c..0fbee5804 100644 --- a/app/Enums/OperatingSystem.php +++ b/app/Enums/OperatingSystem.php @@ -10,6 +10,7 @@ enum OperatingSystem: string implements VitoEnum case UBUNTU20 = 'ubuntu_20'; case UBUNTU22 = 'ubuntu_22'; case UBUNTU24 = 'ubuntu_24'; + case UBUNTU26 = 'ubuntu_26'; public function getColor(): string { @@ -28,6 +29,7 @@ public function getVersion(): string self::UBUNTU20 => '20.04', self::UBUNTU22 => '22.04', self::UBUNTU24 => '24.04', + self::UBUNTU26 => '26.04', }; } } diff --git a/config/core.php b/config/core.php index d1c8b38ee..a66f79e53 100755 --- a/config/core.php +++ b/config/core.php @@ -59,6 +59,7 @@ OperatingSystem::UBUNTU20->value, OperatingSystem::UBUNTU22->value, OperatingSystem::UBUNTU24->value, + OperatingSystem::UBUNTU26->value, ], /* diff --git a/config/serverproviders.php b/config/serverproviders.php index b81df1f69..71a21160a 100644 --- a/config/serverproviders.php +++ b/config/serverproviders.php @@ -488,6 +488,7 @@ 'ubuntu_20' => 'linode/ubuntu20.04', 'ubuntu_22' => 'linode/ubuntu22.04', 'ubuntu_24' => 'linode/ubuntu24.04', + 'ubuntu_26' => 'linode/ubuntu26.04', ], ], 'digitalocean' => [ @@ -945,6 +946,7 @@ 'ubuntu_20' => 'ubuntu-20.04', 'ubuntu_22' => 'ubuntu-22.04', 'ubuntu_24' => 'ubuntu-24.04', + 'ubuntu_26' => 'ubuntu-26.04', ], ], ]; From 804d8273b84c3ae2f13c1baf14281b05d6f2fbdc Mon Sep 17 00:00:00 2001 From: Saeed Vaziry Date: Sat, 20 Jun 2026 15:23:09 +0200 Subject: [PATCH 2/3] Update claude md --- CLAUDE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CLAUDE.md b/CLAUDE.md index 5e96fffc1..59aa8a131 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -117,3 +117,4 @@ Vito has a specific architecture. Match these patterns exactly: - Use `gh` CLI for issues/PRs. - Don't change dependencies or create new base folders without approval. +- PR titles must be prefixed with `[Feat]` or `[Fix]` From 5097378244713b475665540e435454c0d7e1b13f Mon Sep 17 00:00:00 2001 From: Saeed Vaziry Date: Sat, 20 Jun 2026 15:33:37 +0200 Subject: [PATCH 3/3] [Fix] Dearmor mise apt key so provisioning works on Ubuntu 26 Ubuntu 26 (resolute) ships a newer apt that rejects ASCII-armored keyrings referenced via signed-by=, failing with 'unsupported filetype' and NO_PUBKEY, which broke the install-dependencies step. - Pipe the mise GPG key through 'gpg --dearmor' into a binary .gpg keyring instead of writing the armored .pub directly - Install gnupg so 'gpg --dearmor' is available on minimal images - Detect architecture with dpkg --print-architecture in ensure-installed instead of hardcoding arch=amd64 Applies to both the OS install-dependencies and mise ensure-installed scripts. Backward compatible with Ubuntu 20/22/24. --- resources/views/ssh/mise/ensure-installed.blade.php | 6 +++--- resources/views/ssh/os/install-dependencies.blade.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/views/ssh/mise/ensure-installed.blade.php b/resources/views/ssh/mise/ensure-installed.blade.php index 1a0d6fc9b..45b0884d1 100644 --- a/resources/views/ssh/mise/ensure-installed.blade.php +++ b/resources/views/ssh/mise/ensure-installed.blade.php @@ -4,10 +4,10 @@ exit 0 fi -sudo apt update -y && sudo apt install -y curl +sudo apt update -y && sudo apt install -y curl gnupg sudo install -dm 755 /etc/apt/keyrings -curl -fsSL https://mise.jdx.dev/gpg-key.pub | sudo tee /etc/apt/keyrings/mise-archive-keyring.pub 1> /dev/null -echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list +curl -fsSL https://mise.jdx.dev/gpg-key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/mise-archive-keyring.gpg +echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=$(dpkg --print-architecture)] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list sudo apt update sudo apt install -y mise diff --git a/resources/views/ssh/os/install-dependencies.blade.php b/resources/views/ssh/os/install-dependencies.blade.php index b196a932c..9a8305e06 100755 --- a/resources/views/ssh/os/install-dependencies.blade.php +++ b/resources/views/ssh/os/install-dependencies.blade.php @@ -1,10 +1,10 @@ -sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -y software-properties-common curl zip unzip git gcc openssl ufw cron +sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -y software-properties-common curl zip unzip git gcc openssl ufw cron gnupg git config --global user.email "{{ $email }}" git config --global user.name "{{ $name }}" # Install Mise sudo install -dm 755 /etc/apt/keyrings -curl -fsSL https://mise.jdx.dev/gpg-key.pub | sudo tee /etc/apt/keyrings/mise-archive-keyring.pub 1> /dev/null -echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.pub arch=$(dpkg --print-architecture)] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list +curl -fsSL https://mise.jdx.dev/gpg-key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/mise-archive-keyring.gpg +echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=$(dpkg --print-architecture)] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get update sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -y mise