diff --git a/Cargo.lock b/Cargo.lock
index 2d0037de..425077b2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2000,6 +2000,25 @@ dependencies = [
"serde",
]
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
[[package]]
name = "is_terminal_polyfill"
version = "1.70.1"
@@ -2493,6 +2512,17 @@ version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
+[[package]]
+name = "open"
+version = "5.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc"
+dependencies = [
+ "is-wsl",
+ "libc",
+ "pathdiff",
+]
+
[[package]]
name = "openssl"
version = "0.10.73"
@@ -2618,6 +2648,12 @@ dependencies = [
"thiserror 1.0.69",
]
+[[package]]
+name = "pathdiff"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
+
[[package]]
name = "percent-encoding"
version = "2.3.2"
@@ -2794,6 +2830,7 @@ dependencies = [
"notify-rust",
"num-traits",
"once_cell",
+ "open",
"os-release",
"pango",
"pkg-config",
diff --git a/changelogs/24.04 b/changelogs/24.04
new file mode 100644
index 00000000..faa201da
--- /dev/null
+++ b/changelogs/24.04
@@ -0,0 +1,9 @@
+Pop!_OS 24.04 includes the COSMIC desktop environment. COSMIC offers better performance, productivity, and in-depth personalization to empower a wide variety of use cases. Learn more.
+
+When you upgrade:
+* The GNOME desktop will be replaced by the new COSMIC desktop.
+* New system applications will be installed, including: COSMIC Files, COSMIC Settings, COSMIC Store, COSMIC Terminal, and COSMIC Text Editor.
+* Applications pinned to the dock will need to be pinned again.
+* PPAs will be removed for increased upgrade reliability.
+* Applications installed from PPAs or local DEB files will need to be reinstalled.
+* COSMIC offers all new user settings and customizations.
diff --git a/daemon/src/changelogs.rs b/daemon/src/changelogs.rs
index b3e3c5ba..2092e1e6 100644
--- a/daemon/src/changelogs.rs
+++ b/daemon/src/changelogs.rs
@@ -1,6 +1,7 @@
use std::cmp::Ordering;
pub const CHANGELOGS: &[(&str, &str)] = &[
+ ("24.04", include_str!("../../changelogs/24.04")),
("22.04", include_str!("../../changelogs/22.04")),
("21.10", include_str!("../../changelogs/21.10")),
("21.04", include_str!("../../changelogs/21.04")),
diff --git a/daemon/src/release/check.rs b/daemon/src/release/check.rs
index 4d4867cc..bd7076d2 100644
--- a/daemon/src/release/check.rs
+++ b/daemon/src/release/check.rs
@@ -101,7 +101,7 @@ const HIRSUTE: &str = "21.04";
const IMPISH: &str = "21.10";
const JAMMY: &str = "22.04";
const NOBLE: &str = "24.04";
-const UNKNOWN: &str = "26.04";
+const RESOLUTE: &str = "26.04";
pub fn release_str(major: u8, minor: u8) -> &'static str {
match (major, minor) {
@@ -112,7 +112,7 @@ pub fn release_str(major: u8, minor: u8) -> &'static str {
(21, 10) => IMPISH,
(22, 4) => JAMMY,
(24, 4) => NOBLE,
- (26, 4) => UNKNOWN,
+ (26, 4) => RESOLUTE,
_ => panic!("this version of pop-upgrade is not supported on this release"),
}
}
@@ -133,11 +133,11 @@ async fn next_ Status, Status: Future