Skip to content

[Feat] Add Ubuntu 26 support#1081

Draft
saeedvaziry wants to merge 3 commits into
4.xfrom
add-ubuntu-26-suppor
Draft

[Feat] Add Ubuntu 26 support#1081
saeedvaziry wants to merge 3 commits into
4.xfrom
add-ubuntu-26-suppor

Conversation

@saeedvaziry

@saeedvaziry saeedvaziry commented May 6, 2026

Copy link
Copy Markdown
Member

Not all providers support ubuntu 26 yet

Summary by CodeRabbit

  • New Features
    • Ubuntu 26 operating system is now available as a selectable option with automatic version detection
    • Ubuntu 26 image support has been added for Linode and Hetzner cloud providers
  • Documentation
    • Added a PR title guideline requiring [Feat] or [Fix] prefixes
  • Bug Fixes
    • Improved Debian/Ubuntu apt repository key handling and architecture detection during SSH OS setup

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 12635e99-a2fd-4b77-8c90-6463480c163b

📥 Commits

Reviewing files that changed from the base of the PR and between 804d827 and 5097378.

📒 Files selected for processing (2)
  • resources/views/ssh/mise/ensure-installed.blade.php
  • resources/views/ssh/os/install-dependencies.blade.php

📝 Walkthrough

Walkthrough

Adds Ubuntu 26 support by introducing a new UBUNTU26 enum case ('ubuntu_26') in OperatingSystem, mapping it to version '26.04' in getVersion(), registering it in config/core.php's operating_systems array, and adding ubuntu_26 image name entries for Linode and Hetzner providers in config/serverproviders.php. Additionally, upgrades GPG keyring handling in Mise installation scripts to dearmor keys into binary keyrings with signed-by apt configuration and dynamic architecture detection. Updates CLAUDE.md to require PR title prefixes.

Changes

Ubuntu 26 OS Support

Layer / File(s) Summary
Enum case, version mapping, and OS registration
app/Enums/OperatingSystem.php, config/core.php
Adds UBUNTU26 = 'ubuntu_26' to the OperatingSystem enum, extends getVersion() to return '26.04' for it, and appends OperatingSystem::UBUNTU26->value to the operating_systems config array.
Provider image mappings
config/serverproviders.php
Adds ubuntu_26 => linode/ubuntu26.04 under the Linode provider's images map and ubuntu_26 => ubuntu-26.04 under the Hetzner provider's images map.

Mise Installation GPG Keyring Security

Layer / File(s) Summary
GPG keyring dearmoring and signed-by configuration
resources/views/ssh/mise/ensure-installed.blade.php, resources/views/ssh/os/install-dependencies.blade.php
Replaces raw public key files with dearmored binary keyrings at /etc/apt/keyrings/mise-archive-keyring.gpg, adds gnupg to initial package installations to support key processing, configures apt sources with signed-by= references to the dearmored keyrings, and switches from hard-coded amd64 to dynamic dpkg --print-architecture for system architecture detection.

Development Guidelines

Layer / File(s) Summary
PR title prefix convention
CLAUDE.md
Adds a Git guideline requiring PR titles to be prefixed with [Feat] or [Fix].

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately reflects the primary objective of adding Ubuntu 26 support across the codebase.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch add-ubuntu-26-suppor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@saeedvaziry saeedvaziry changed the base branch from 3.x to 4.x June 20, 2026 13:17
- 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.
@saeedvaziry saeedvaziry force-pushed the add-ubuntu-26-suppor branch from b13a952 to ae9428c Compare June 20, 2026 13:22
@saeedvaziry saeedvaziry changed the title Add ubuntu 26 support [Feat] Add Ubuntu 26 support Jun 20, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CLAUDE.md`:
- Line 120: The documentation at line 120 in CLAUDE.md is incomplete and does
not match the actual CI validation rules defined in the PR title workflow.
Update the line to specify the complete requirement that PR titles must start
with either `[Feat]` or `[Fix]`, followed by a space and then a description.
This will align the documentation with the actual GitHub Actions CI enforcement
and provide clearer guidance to contributors about the exact format expected.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 31ff7762-d5f9-4527-b104-2899af01b5ad

📥 Commits

Reviewing files that changed from the base of the PR and between ae9428c and 804d827.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment thread CLAUDE.md

- 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]`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Incomplete documentation: PR title rule omits required space and description.

Line 120 documents only the prefix requirement ([Feat] or [Fix]), but the GitHub Actions CI validation at .github/workflows/pr-title.yml actually enforces a space and description after the prefix. The workflow's error message is more explicit: "PR titles must start with [Feat] or [Fix], followed by a space and a description."

Update line 120 to match the CI enforcement and provide clearer guidance to contributors.

📝 Proposed fix to improve documentation completeness
- PR titles must be prefixed with `[Feat]` or `[Fix]`
+ PR titles must start with `[Feat]` or `[Fix]`, followed by a space and a description (e.g. `[Feat] Add per-site PHP runtime settings`)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- PR titles must be prefixed with `[Feat]` or `[Fix]`
- PR titles must start with `[Feat]` or `[Fix]`, followed by a space and a description (e.g. `[Feat] Add per-site PHP runtime settings`)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CLAUDE.md` at line 120, The documentation at line 120 in CLAUDE.md is
incomplete and does not match the actual CI validation rules defined in the PR
title workflow. Update the line to specify the complete requirement that PR
titles must start with either `[Feat]` or `[Fix]`, followed by a space and then
a description. This will align the documentation with the actual GitHub Actions
CI enforcement and provide clearer guidance to contributors about the exact
format expected.

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.
@saeedvaziry saeedvaziry marked this pull request as draft June 20, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant