diff --git a/css/specifics.css b/css/specifics.css index 9994ebe5..15730672 100644 --- a/css/specifics.css +++ b/css/specifics.css @@ -147,6 +147,10 @@ border: 1px solid #ddd; background-color: #e5f3ff; } +.download-remark { + color: #555; + font-style: italic; +} /* elements of the documentation section */ #doc-section p { diff --git a/index.html b/index.html index 017d41f4..cea7ad95 100644 --- a/index.html +++ b/index.html @@ -146,13 +146,13 @@

Official downloads

- +

Requires glibc>=2.26, OpenGL and libX11. The distributions openSUSE Leap 15, Fedora 27, Debian 10 and Ubuntu 18.04 are recent enough (be sure the package libopengl0 is installed on Debian/Ubuntu).

These downloads cannot include the Plasmoid/Applet (for the Plasma desktop) and the Dolphin integration for technical reasons. The KDE integrations therefore need to be installed via distribution-specific packages.

- +

These downloads require Windows 10 version 1809 or newer.

@@ -168,7 +168,7 @@

Official downloads

- +

On Windows 7 the bundled Go/Syncthing does not work. Use a version of Go/Syncthing that is older than 1.21/1.27.0 instead.

diff --git a/js/ajaxhelper.js b/js/ajaxhelper.js index e377a2a8..27699b8a 100644 --- a/js/ajaxhelper.js +++ b/js/ajaxhelper.js @@ -2,7 +2,7 @@ export function queryRoute(method, path, callback) { if ((window.location.protocol === 'file:' || window.location.hostname === 'localhost') && path.includes('releases')) { return callback({ - responseText: '[{ "tag_name": "v1.5.2", "name": "v1.5.2", "draft": false, "prerelease": false, "created_at": "2024-04-09T10:05:52Z", "published_at": "2024-04-09T13:05:48Z", "assets": [ { "name": "syncthingctl-1.5.2-i686-w64-mingw32.exe.zip", "size": 13850402, "download_count": 108, "created_at": "2024-04-09T13:25:05Z", "updated_at": "2024-04-09T13:25:17Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingctl-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 5, "created_at": "2024-04-09T13:25:19Z", "updated_at": "2024-04-09T13:25:19Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz", "size": 10403332, "download_count": 19, "created_at": "2024-04-09T13:25:56Z", "updated_at": "2024-04-09T13:25:58Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz" }, { "name": "syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:26:00Z", "updated_at": "2024-04-09T13:26:00Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig" }, { "name": "syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 13764933, "download_count": 217, "created_at": "2024-04-09T13:25:40Z", "updated_at": "2024-04-09T13:25:43Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 15, "created_at": "2024-04-09T13:25:44Z", "updated_at": "2024-04-09T13:25:45Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip", "size": 9749916, "download_count": 11, "created_at": "2024-04-09T13:24:29Z", "updated_at": "2024-04-09T13:24:32Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:24:34Z", "updated_at": "2024-04-09T13:24:34Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 9568527, "download_count": 71, "created_at": "2024-04-09T13:24:45Z", "updated_at": "2024-04-09T13:24:47Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:24:49Z", "updated_at": "2024-04-09T13:24:49Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-1.5.2-i686-w64-mingw32.exe.zip", "size": 27204886, "download_count": 105, "created_at": "2024-04-09T13:25:21Z", "updated_at": "2024-04-09T13:25:35Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingtray-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:25:37Z", "updated_at": "2024-04-09T13:25:37Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz", "size": 22288692, "download_count": 35, "created_at": "2024-04-09T13:26:02Z", "updated_at": "2024-04-09T13:26:07Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz" }, { "name": "syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig", "size": 310, "download_count": 3, "created_at": "2024-04-09T13:26:09Z", "updated_at": "2024-04-09T13:26:09Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig" }, { "name": "syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 27343753, "download_count": 1469, "created_at": "2024-04-09T13:25:46Z", "updated_at": "2024-04-09T13:25:52Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 11, "created_at": "2024-04-09T13:25:54Z", "updated_at": "2024-04-09T13:25:54Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip", "size": 27125311, "download_count": 15, "created_at": "2024-04-09T13:24:36Z", "updated_at": "2024-04-09T13:24:41Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:24:43Z", "updated_at": "2024-04-09T13:24:43Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 26943294, "download_count": 134, "created_at": "2024-04-09T13:24:51Z", "updated_at": "2024-04-09T13:24:57Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:25:03Z", "updated_at": "2024-04-09T13:25:03Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig" } ], "tarball_url": "https://api.github.com/repos/Martchus/syncthingtray/tarball/v1.5.2", "zipball_url": "https://api.github.com/repos/Martchus/syncthingtray/zipball/v1.5.2", "body": "v1.5.2" }]' + responseText: '[{ "tag_name": "v1.5.3", "name": "v1.5.3", "draft": false, "prerelease": false, "created_at": "2024-04-09T10:05:52Z", "published_at": "2024-04-09T13:05:48Z", "assets": [{ "name": "syncthingctl-1.5.3-x86_64-pc-linux-gnu.tar.xz", "size": 10403332, "download_count": 19, "created_at": "2024-04-09T13:25:56Z", "updated_at": "2024-04-09T13:25:58Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.3/syncthingctl-1.5.3-x86_64-pc-linux-gnu.tar.xz" }]},{ "tag_name": "v1.5.2", "name": "v1.5.2", "draft": false, "prerelease": false, "created_at": "2024-04-09T10:05:52Z", "published_at": "2024-04-09T13:05:48Z", "assets": [ { "name": "syncthingctl-1.5.2-i686-w64-mingw32.exe.zip", "size": 13850402, "download_count": 108, "created_at": "2024-04-09T13:25:05Z", "updated_at": "2024-04-09T13:25:17Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingctl-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 5, "created_at": "2024-04-09T13:25:19Z", "updated_at": "2024-04-09T13:25:19Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz", "size": 10403332, "download_count": 19, "created_at": "2024-04-09T13:25:56Z", "updated_at": "2024-04-09T13:25:58Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz" }, { "name": "syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:26:00Z", "updated_at": "2024-04-09T13:26:00Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig" }, { "name": "syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 13764933, "download_count": 217, "created_at": "2024-04-09T13:25:40Z", "updated_at": "2024-04-09T13:25:43Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 15, "created_at": "2024-04-09T13:25:44Z", "updated_at": "2024-04-09T13:25:45Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip", "size": 9749916, "download_count": 11, "created_at": "2024-04-09T13:24:29Z", "updated_at": "2024-04-09T13:24:32Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:24:34Z", "updated_at": "2024-04-09T13:24:34Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 9568527, "download_count": 71, "created_at": "2024-04-09T13:24:45Z", "updated_at": "2024-04-09T13:24:47Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:24:49Z", "updated_at": "2024-04-09T13:24:49Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingctl-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-1.5.2-i686-w64-mingw32.exe.zip", "size": 27204886, "download_count": 105, "created_at": "2024-04-09T13:25:21Z", "updated_at": "2024-04-09T13:25:35Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingtray-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:25:37Z", "updated_at": "2024-04-09T13:25:37Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz", "size": 22288692, "download_count": 35, "created_at": "2024-04-09T13:26:02Z", "updated_at": "2024-04-09T13:26:07Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz" }, { "name": "syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig", "size": 310, "download_count": 3, "created_at": "2024-04-09T13:26:09Z", "updated_at": "2024-04-09T13:26:09Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-pc-linux-gnu.tar.xz.sig" }, { "name": "syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 27343753, "download_count": 1469, "created_at": "2024-04-09T13:25:46Z", "updated_at": "2024-04-09T13:25:52Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 11, "created_at": "2024-04-09T13:25:54Z", "updated_at": "2024-04-09T13:25:54Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-1.5.2-x86_64-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip", "size": 27125311, "download_count": 15, "created_at": "2024-04-09T13:24:36Z", "updated_at": "2024-04-09T13:24:41Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip" }, { "name": "syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 1, "created_at": "2024-04-09T13:24:43Z", "updated_at": "2024-04-09T13:24:43Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-i686-w64-mingw32.exe.zip.sig" }, { "name": "syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip", "size": 26943294, "download_count": 134, "created_at": "2024-04-09T13:24:51Z", "updated_at": "2024-04-09T13:24:57Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip" }, { "name": "syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig", "size": 310, "download_count": 4, "created_at": "2024-04-09T13:25:03Z", "updated_at": "2024-04-09T13:25:03Z", "browser_download_url": "https://github.com/Martchus/syncthingtray/releases/download/v1.5.2/syncthingtray-qt5-1.5.2-x86_64-w64-mingw32.exe.zip.sig" } ], "tarball_url": "https://api.github.com/repos/Martchus/syncthingtray/tarball/v1.5.2", "zipball_url": "https://api.github.com/repos/Martchus/syncthingtray/zipball/v1.5.2", "body": "v1.5.2" }]' }, true); } diff --git a/js/main.js b/js/main.js index 2dc499fb..c05aaed1 100644 --- a/js/main.js +++ b/js/main.js @@ -45,8 +45,8 @@ function queryReleases() } const releases = JSON.parse(xhr.responseText); for (const release of releases) { - if (!release.draft) { - return renderRelease(release); + if (!release.draft && !release.prerelease) { + return renderRelease(release, releases); } } }); @@ -98,6 +98,11 @@ function renderAsset(asset) } const platform = determinePlatformFromAssetName(name); const platformList = document.getElementById("downloads-platform-" + platform) ?? document.getElementById("downloads-platform-other"); + renderAssetIntoList(name, platform, platformList, asset); +} + +function renderAssetIntoList(name, platform, platformList, asset, release) +{ const liElement = document.createElement("li"); const aElement = document.createElement("a"); const important = name.startsWith("syncthingtray-"); @@ -106,6 +111,14 @@ function renderAsset(asset) aElement.href = asset.browser_download_url; aElement.appendChild(document.createTextNode(determineDisplayNameForAsset(name))); liElement.appendChild(aElement); + const releaseName = release?.name; + if (releaseName !== undefined) { + const spanElement = document.createElement("span"); + spanElement.className = "download-remark"; + spanElement.title = "The latest release does not provide downloads for this platform yet. Therefore the download from the next most recent release is shown. Most likely the uploads of the latest release are still in progress and will show up soon."; + spanElement.appendChild(document.createTextNode(` from release ${releaseName}`)); + liElement.appendChild(spanElement); + } if (important) { aElement.style.fontWeight = "bold"; platformList.prepend(liElement); @@ -134,7 +147,28 @@ function renderAssetSignature(asset) liElement.appendChild(document.createTextNode(")")); } -function renderRelease(releaseInfo) +function findAssetsForPlatform(platform, releases) +{ + for (const release of releases) { + const assets = release.assets; + if (!Array.isArray(assets)) { + continue; + } + const relevantAssets = []; + const relevantSignatures = []; + for (const asset of assets) { + const assetPlatform = "downloads-platform-" + determinePlatformFromAssetName(asset.name); + if (assetPlatform === platform) { + (asset.name.endsWith(".sig") ? relevantSignatures : relevantAssets).push(asset); + } + } + if (relevantAssets.length !== 0) { + return {assets: relevantAssets, signatures: relevantSignatures, release: release}; + } + } +} + +function renderRelease(releaseInfo, otherReleases) { const releaseName = releaseInfo.name ?? "unknown"; const releaseDate = releaseInfo.published_at ?? "unknown"; @@ -149,8 +183,26 @@ function renderRelease(releaseInfo) } const lists = document.querySelectorAll(".downloads-platform ul"); for (const list of lists) { - if (!list.firstChild) { + if (list.firstChild) { + continue; + } + if (!list.classList.contains("download-list-important")) { list.parentElement.style.display = 'none'; + continue; + } + const platform = list.id; + const assetsFromOtherRelease = findAssetsForPlatform(platform, otherReleases); + if (assetsFromOtherRelease === undefined) { + const liElement = document.createElement("li"); + liElement.appendChild(document.createTextNode("There are no binaries available for this platform at this point. You may find binaries of older releases on GitHub.")); + list.appendChild(liElement); + continue; + } + for (const asset of assetsFromOtherRelease.assets) { + renderAssetIntoList(asset.name, platform, list, asset, assetsFromOtherRelease.release); + } + for (const signature of assetsFromOtherRelease.signatures) { + renderAssetSignature(signature); } }