From a6ee71926fbb21e58c1dc092f3f52602f8bcbf2c Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 14 Jul 2026 23:08:06 +0200 Subject: [PATCH 1/3] docs(pages): bigger README download badge; real download links + version link MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: enlarge the Download & Install badge (height=54). - Landing page: download buttons now point at the direct installer asset of the newest release that actually carries modern installers (prefer stable, else the current snapshot — old 1.7.x .msi releases lack setup.exe/.dmg/.AppImage, which is why the buttons fell back to the release page). The version text is now a link to that release's page. Drop the duplicate 'Project on GitHub' footer link (the top 'View on GitHub' button covers it) and the redundant '(pre-release)'. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01CjZYH14th2uGJAMPRRpbsf --- README.md | 8 ++++--- packaging/linux/flatpak/pages-index.html | 28 ++++++++++++++++-------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f90b4e1d..e081e77b 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@ Turn the knobs, sliders and buttons on your [PCPanel](https://getpcpanel.com) in controls for everything on your PC: per-app volume, your microphone, Discord voice, OBS scenes, media playback, keyboard shortcuts and more. -> ## 📥 [**Download & install → nvdweem.github.io/PCPanel**](https://nvdweem.github.io/PCPanel/) -> Installation instructions and downloads for **Windows, macOS and Linux** live on the project -> page. This README is aimed at contributors. +

+ Download and install PCPanel for Windows, macOS or Linux +

+

Windows · macOS · Linux — grab the installer and get automatic updates

This is **third-party, community-maintained** software for PCPanel hardware. It is a drop-in alternative to the official app that adds features and bug fixes requested by the community. +(This README is aimed at contributors — end users just need the download button above.) > **Not affiliated with PCPanel / getpcpanel.com.** The original, official software lives > [here](https://www.getpcpanel.com/download). This project's version numbering is independent — diff --git a/packaging/linux/flatpak/pages-index.html b/packaging/linux/flatpak/pages-index.html index 2cabc39e..ab875cce 100644 --- a/packaging/linux/flatpak/pages-index.html +++ b/packaging/linux/flatpak/pages-index.html @@ -40,6 +40,7 @@ a.btn.ghost { background:#21262d; border:1px solid var(--border); color:var(--fg); } .dl-row { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:8px; } .ver { color:var(--muted); font-size:.85rem; } + .ver a { color:var(--accent); } .links a { color:var(--accent); } hr.sep { border:0; border-top:1px solid var(--border); margin:30px 0; } .markdown-body { background:transparent; } @@ -143,7 +144,7 @@

Debian / Ubuntu (.deb)

- +
@@ -186,23 +187,32 @@

Project README

document.querySelectorAll('[data-copy-text]').forEach(btn => btn.addEventListener('click', () => copy(btn.getAttribute('data-copy-text'), btn))); - // ---- Fill in direct download links + version from the latest release ----- + // ---- Direct download links + a version that links to its release page -------------------- function setLink(id, url) { const a = document.getElementById(id); if (a && url) a.href = url; } - fetch('https://api.github.com/repos/' + REPO + '/releases?per_page=15') + fetch('https://api.github.com/repos/' + REPO + '/releases?per_page=30') .then(r => r.ok ? r.json() : Promise.reject()) .then(rels => { if (!rels.length) throw 0; - const rel = rels.find(r => !r.prerelease) || rels[0]; // newest stable, else newest - const a = rel.assets || []; - const find = re => (a.find(x => re.test(x.name)) || {}).browser_download_url; + // Feature the release that actually carries the current installers: prefer the newest stable one, + // else the newest overall (a snapshot, until a stable is cut). Old releases (the 1.7.x .msi era) + // lack these assets, so blindly picking "newest stable" would point every button at a release page. + const hasModern = r => (r.assets || []).some(x => /(setup\.exe|\.AppImage)$/i.test(x.name)); + const rel = rels.find(r => !r.prerelease && hasModern(r)) || rels.find(hasModern) || rels[0]; + const assets = rel.assets || []; + const find = re => (assets.find(x => re.test(x.name)) || {}).browser_download_url; setLink('dl-win', find(/setup\.exe$/i)); setLink('dl-mac-arm', find(/arm64\.dmg$/i)); setLink('dl-mac-intel', find(/x86_64\.dmg$/i) || find(/intel.*\.dmg$/i)); setLink('dl-appimage', find(/x86_64\.AppImage$/i)); setLink('dl-deb', find(/\.deb$/i)); - const label = (rel.name || rel.tag_name || '') + (rel.prerelease ? ' (pre-release)' : ''); - document.getElementById('ver').textContent = 'Latest: ' + label; - const wa = find(/setup\.exe$/i); if (wa) document.getElementById('ver-win').textContent = wa.split('/').pop(); + // The version text is a link to that release's page — the buttons download, the version navigates. + const label = rel.name || rel.tag_name || 'release'; + const ver = document.getElementById('ver'); + ver.textContent = 'Latest: '; + const link = document.createElement('a'); + link.href = rel.html_url; + link.textContent = label; + ver.appendChild(link); }) .catch(() => { document.getElementById('ver').textContent = 'See the releases page for the latest downloads.'; }); From 4c7ef3f67630d4953b4cb8464f3367c56c65c10d Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 14 Jul 2026 23:09:02 +0200 Subject: [PATCH 2/3] docs(readme): drop the byline under the download button (button is enough) Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01CjZYH14th2uGJAMPRRpbsf --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index e081e77b..cc5665f6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ media playback, keyboard shortcuts and more.

Download and install PCPanel for Windows, macOS or Linux

-

Windows · macOS · Linux — grab the installer and get automatic updates

This is **third-party, community-maintained** software for PCPanel hardware. It is a drop-in alternative to the official app that adds features and bug fixes requested by the community. From 59a63bc4c08a1c2e14b7586c7ad7038f63c9a7e9 Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 14 Jul 2026 23:12:39 +0200 Subject: [PATCH 3/3] fix(pages): feature the newest STABLE release, never snapshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts the download-target to the newest non-pre-release. Featuring the snapshot was wrong — stable is the download, snapshots stay opt-in. Buttons resolve to a direct asset when the stable release has it, else fall back to that release's page; with only the old 1.7.x stable today, Windows/mac/AppImage link to its page until a modern 2.0 stable ships. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01CjZYH14th2uGJAMPRRpbsf --- packaging/linux/flatpak/pages-index.html | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packaging/linux/flatpak/pages-index.html b/packaging/linux/flatpak/pages-index.html index ab875cce..6f787b00 100644 --- a/packaging/linux/flatpak/pages-index.html +++ b/packaging/linux/flatpak/pages-index.html @@ -193,18 +193,18 @@

Project README

.then(r => r.ok ? r.json() : Promise.reject()) .then(rels => { if (!rels.length) throw 0; - // Feature the release that actually carries the current installers: prefer the newest stable one, - // else the newest overall (a snapshot, until a stable is cut). Old releases (the 1.7.x .msi era) - // lack these assets, so blindly picking "newest stable" would point every button at a release page. - const hasModern = r => (r.assets || []).some(x => /(setup\.exe|\.AppImage)$/i.test(x.name)); - const rel = rels.find(r => !r.prerelease && hasModern(r)) || rels.find(hasModern) || rels[0]; + // Feature the newest STABLE release — stable is the download, snapshots stay opt-in (the Flatpak + // snapshot command above). Until 2.0 stable ships this is the old 1.7.x, whose assets predate the + // current installers, so some buttons fall back to that release's own page; that self-corrects the + // moment a modern stable is released. + const rel = rels.find(r => !r.prerelease) || rels[0]; const assets = rel.assets || []; const find = re => (assets.find(x => re.test(x.name)) || {}).browser_download_url; - setLink('dl-win', find(/setup\.exe$/i)); - setLink('dl-mac-arm', find(/arm64\.dmg$/i)); - setLink('dl-mac-intel', find(/x86_64\.dmg$/i) || find(/intel.*\.dmg$/i)); - setLink('dl-appimage', find(/x86_64\.AppImage$/i)); - setLink('dl-deb', find(/\.deb$/i)); + setLink('dl-win', find(/setup\.exe$/i) || rel.html_url); + setLink('dl-mac-arm', find(/arm64\.dmg$/i) || rel.html_url); + setLink('dl-mac-intel', find(/x86_64\.dmg$/i) || find(/intel.*\.dmg$/i) || rel.html_url); + setLink('dl-appimage', find(/x86_64\.AppImage$/i) || rel.html_url); + setLink('dl-deb', find(/\.deb$/i) || rel.html_url); // The version text is a link to that release's page — the buttons download, the version navigates. const label = rel.name || rel.tag_name || 'release'; const ver = document.getElementById('ver');