diff --git a/config/config.php b/config/config.php index 020b1e16..f5cec734 100644 --- a/config/config.php +++ b/config/config.php @@ -23,6 +23,17 @@ $betaVersionSignature = 'RYWh27QN+GYl7If3pcpRVnny7ClHXpwjh7HqY06tXU0LXyfFqYciCFDdukdh49gfEVy9ocJjsJtSya/CxoG0DQ=='; $betaVersionLength = 381334544; +// +// stable Qt6.9 (macOS 11 / 12 — not compatible with Qt6.10) +// fixed to the last Qt6.9-compatible stable release +// +$stableQt69ReleaseDate = '2026-01-22 18:00'; +$stableQt69Version = '4.0.6'; +$stableQt69VersionSignature = 'yzAm+RTOEtHCEmz1L4JHiRJkdfKMIeFAqYEJlaYNYP6s5IBKLq7YZY1sbtlmKQttRqKurB67s7dCuaGA2A6VBA=='; +$stableQt69VersionLength = 345060719; +$stableQt69VersionFileProviderSignature = 'BCONOVs9x/wJxP4y5i0gqdwEErYFy9HFfGHYyWuXxUn6mgzhMlFLt3lFQOsuVvz2ADsR+fEdIqSFiSN8zEDYAA=='; +$stableQt69VersionFileProviderLength = 373240934; + // // stable // @@ -81,6 +92,9 @@ $stableVersionString = 'Nextcloud Client ' . $stableVersion; $stableUrl = 'https://github.com/nextcloud-releases/desktop/releases/download/v' . $stableVersion . '/'; +$stableQt69VersionString = 'Nextcloud Client ' . $stableQt69Version; +$stableQt69Url = 'https://github.com/nextcloud-releases/desktop/releases/download/v' . $stableQt69Version . '/'; + $enterpriseVersionString = 'Nextcloud Client ' . $enterpriseVersion; $enterpriseUrl = 'https://github.com/nextcloud-releases/desktop/releases/download/v' . $enterpriseVersion . '/'; @@ -128,6 +142,23 @@ "fileProviderLength" => 97371547, ], ], + 'stable-qt6.9' => [ + 'release' => $stableQt69ReleaseDate, + 'macos' => [ + 'version' => $stableQt69Version, + 'versionstring' => $stableQt69VersionString, + "fileProviderVersionString" => $stableQt69VersionString, + 'downloadurl' => $stableQt69Url . 'Nextcloud-' . $stableQt69Version . '.pkg', + 'fileProviderDownloadUrl' => $stableQt69Url . 'Nextcloud-' . $stableQt69Version . '-macOS-vfs.pkg', + 'web' => 'https://nextcloud.com/install', + "sparkleDownloadUrl" => $stableQt69Url . 'Nextcloud-' . $stableQt69Version . '.pkg.tbz', + "fileProviderSparkleDownloadUrl" => $stableQt69Url . 'Nextcloud-' . $stableQt69Version . '-macOS-vfs.pkg.tbz', + "signature" => $stableQt69VersionSignature, + "length" => $stableQt69VersionLength, + "fileProviderSignature" => $stableQt69VersionFileProviderSignature, + "fileProviderLength" => $stableQt69VersionFileProviderLength, + ], + ], 'stable' => [ 'release' => $stableReleaseDate, 'linux' => [ diff --git a/src/Response.php b/src/Response.php index 35fadda2..8a3bf547 100644 --- a/src/Response.php +++ b/src/Response.php @@ -84,21 +84,16 @@ private function getUpdateVersion() : array { return []; } - // if outdated platform, hand out latest stable-qt5, no daily/beta possible - if ($this->checkOldPlatform()) { - $stable = $this->config[$this->oem]['stable-qt5'][$this->platform]; - $beta = null; - $daily = null; - $enterprise = null; - } else if (version_compare($this->osVersion, '12.0', '<') && - version_compare($this->version, '3.14.0', '<') && - version_compare($this->config[$this->oem]['stable'][$this->platform]['version'], '3.14.0', '==')) { - // Skip 3.14.0 for macOS < 12 when updating as we have an issue with the system requirement settings - // Serve the prior version instead in the meantime (3.13.4) - $stable = $this->config[$this->oem]['stable-qt5'][$this->platform]; - $beta = $this->config[$this->oem]['beta'][$this->platform]; - $daily = $this->config[$this->oem]['daily'][$this->platform]; - $enterprise = null; + // if legacy platform, hand out its dedicated stable version; no daily/beta/enterprise + $legacyChannel = $this->getLegacyChannel(); + if ($legacyChannel !== null) { + if (!isset($this->config[$this->oem][$legacyChannel][$this->platform])) { + return []; + } + $stable = $this->config[$this->oem][$legacyChannel][$this->platform]; + $beta = null; + $daily = null; + $enterprise = null; } else { $stable = $this->config[$this->oem]['stable'][$this->platform]; $beta = $this->config[$this->oem]['beta'][$this->platform]; @@ -127,8 +122,8 @@ private function getUpdateVersion() : array { return []; } - private function checkOldPlatform(): bool { - // Outdated platforms: + private function getLegacyChannel(): ?string { + // Outdated platforms (Qt5 era): // - macOS < 11 // - Win < 10 // - Win 10 (build number < 1809) @@ -139,41 +134,46 @@ private function checkOldPlatform(): bool { // Mac < 11 if ($this->platform === "macos" && version_compare($this->osVersion, "11") == -1) { - return true; + return 'stable-qt5'; + } + + // macOS 11/12 — not compatible with Qt6.10 (required by current stable) + if ($this->platform === "macos" && version_compare($this->osVersion, "13") == -1) { + return 'stable-qt6.9'; } // Windows <10 if ($this->platform === "win32" && version_compare($this->osVersion, "10") == -1) { - return true; + return 'stable-qt5'; } // Windows 10 (build number < 1809) if ($this->platform === "win32" && version_compare($this->osVersion, "10") == 0 && version_compare($this->kernelVersion, '10.0.1809') == -1) { - return true; + return 'stable-qt5'; } // - Win 11 (build number < 17764) if ($this->platform === "win32" && version_compare($this->osVersion, "11") == 0 && version_compare($this->kernelVersion, '10.0.17764') == -1) { - return true; + return 'stable-qt5'; } // - Ubuntu <22.04 if ($this->platform === "linux" && $this->osRelease == "ubuntu" && version_compare($this->osVersion, '22.04') == -1) { - return true; + return 'stable-qt5'; } // - RHEL <9.2 if ($this->platform === "linux" && $this->osRelease == "rhel" && version_compare($this->osVersion, '9.2') == -1) { - return true; + return 'stable-qt5'; } // - openSuse <15.5 if ($this->platform === "linux" && $this->osRelease == "opensuse-leap" && version_compare($this->osVersion, '15.5') == -1) { - return true; + return 'stable-qt5'; } - return false; + return null; } /** diff --git a/tests/unit/ResponseTest.php b/tests/unit/ResponseTest.php index 3bae33b0..06a7e42b 100644 --- a/tests/unit/ResponseTest.php +++ b/tests/unit/ResponseTest.php @@ -36,7 +36,18 @@ public function updateDataProvider(): array 'length' => 62738920, ] ], - 'stable' => [ + 'stable-qt6.9' => [ + 'release' => '2024-06-01 01:01', + 'macos' => [ + 'version' => '2.1.0.2000', + 'versionstring' => 'Nextcloud Client 2.1.0 (build 2000)', + 'downloadurl' => 'https://download.nextcloud.com/desktop/stable/Nextcloud-2.1.0.2000.pkg', + 'sparkleDownloadUrl' => 'https://download.nextcloud.com/desktop/stable/Nextcloud-2.1.0.2000.pkg.tbz', + 'signature' => 'LEGACYMACSIG==', + 'length' => 55555555, + ], + ], + 'stable' => [ 'release' => '2019-02-24 17:05', 'linux' => [ 'version' => '2.2.2', @@ -207,7 +218,7 @@ public function updateDataProvider(): array false, $config, ' -2.2.2.3472Nextcloud Client 2.2.2 (build 3472)https://download.owncloud.com/desktop/stable/ownCloud-2.2.2.3472.pkghttps://download.owncloud.com/desktop/stable/ownCloud-2.2.2.3472.pkg.tbzMC0CFQDmXR6biDmNVW7TvMh0bfPPTzCvtwIUCzASgpzYdi4lltOnwbFCeQwgDjY=62738920 +2.1.0.2000Nextcloud Client 2.1.0 (build 2000)https://download.nextcloud.com/desktop/stable/Nextcloud-2.1.0.2000.pkghttps://download.nextcloud.com/desktop/stable/Nextcloud-2.1.0.2000.pkg.tbzLEGACYMACSIG==55555555 ' ], // #5 @@ -229,9 +240,9 @@ public function updateDataProvider(): array Most recent changes with links to updates. en - Nextcloud Client 2.2.2 (build 3472) + Nextcloud Client 2.1.0 (build 2000) Wed, 13 July 16 21:07:31 +0200 - + 11.0 @@ -400,9 +411,9 @@ public function updateDataProvider(): array Most recent changes with links to updates. en - Nextcloud Client 2.2.2 (build 3472) + Nextcloud Client 2.1.0 (build 2000) Wed, 13 July 16 21:07:31 +0200 - + 11.0 @@ -491,15 +502,15 @@ public function updateDataProvider(): array Most recent changes with links to updates. en - Nextcloud Client 2.2.2 (build 3472) + Nextcloud Client 2.1.0 (build 2000) Wed, 13 July 16 21:07:31 +0200 - + 11.0 ' ], - // #21 Sparkle on, always needs to know what the latest version is + // #21 macOS 12 (legacy) on beta channel with RC version — gets stable-qt6.9, not beta [ 'nextcloud', 'macos', @@ -518,15 +529,15 @@ public function updateDataProvider(): array Most recent changes with links to updates. en - Nextcloud Client 2.2.2-rc2 + Nextcloud Client 2.1.0 (build 2000) Wed, 13 July 16 21:07:31 +0200 - + 11.0 ' ], - // #22 Sparkle on, always needs to know what the latest version is + // #22 macOS 12 (legacy) on beta channel with stable version — gets stable-qt6.9, not beta [ 'nextcloud', 'macos', @@ -545,9 +556,9 @@ public function updateDataProvider(): array Most recent changes with links to updates. en - Nextcloud Client 2.2.2-rc2 + Nextcloud Client 2.1.0 (build 2000) Wed, 13 July 16 21:07:31 +0200 - + 11.0 @@ -820,7 +831,7 @@ public function updateDataProvider(): array 2.2.2.6192Nextcloud Client 2.2.2 (build 6192)https://download.nextcloud.com/desktop/stable/ownCloud-2.2.2.6192-setup.exe ' ], - // #39 Again, Sparkle needs to know about the latest version + // #39 macOS 11 (legacy) on enterprise channel — gets stable-qt6.9, not enterprise [ 'nextcloud', 'macos', @@ -833,6 +844,33 @@ public function updateDataProvider(): array false, $config, ' + + + Download Channel + Most recent changes with links to updates. + en + + Nextcloud Client 2.1.0 (build 2000) + Wed, 13 July 16 21:07:31 +0200 + + 11.0 + + +' + ], + // #40 macOS 13 — not legacy, gets regular stable via sparkle + [ + 'nextcloud', + 'macos', + '1.9.0', + '', + '13.0', + '22.00.00', + 'stable', + true, + false, + $config, + ' Download Channel @@ -845,6 +883,33 @@ public function updateDataProvider(): array 11.0 +' + ], + // #41 macOS 13 — not legacy, gets regular beta via sparkle + [ + 'nextcloud', + 'macos', + '2.2.2-rc1', + '', + '13.0', + '22.00.00', + 'beta', + true, + false, + $config, + ' + + + Download Channel + Most recent changes with links to updates. + en + + Nextcloud Client 2.2.2-rc2 + Wed, 13 July 16 21:07:31 +0200 + + 11.0 + + ' ], ];