mirror of
https://github.com/Mudlet/Mudlet
synced 2026-08-13 18:26:27 -04:00
16 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
71f736297b
|
infrastructure: reject a release tag that does not match APP_VERSION (#9701)
#### Brief overview of PR changes/additions - Adds `CI/check-release-tag.sh`: APP_VERSION must be three-component, and a release tag must be exactly `Mudlet-<APP_VERSION>`. - Wires it into the tag-build validation (`CI/validate_deployment.sh`, `CI/validate-deployment-for-windows.sh`) so a bad tag fails minutes after the push, before an asset exists, and into `create-github-release.yml` as the last gate before anything is published. The PTB path gets the version-shape half, which nothing checks on `development` today. - Covers it with `test/ci/release-tag-version-test.sh`, registered as `ReleaseTagVersionTest`. #### Motivation for adding to Mudlet Tagging `Mudlet-5.0` instead of `Mudlet-5.0.0` would strand the entire 4.22.0 user base with no error anywhere, and it is the one version mistake CI does not currently catch. The updater takes the version it offers from the tag, not the binary: `Release::Release()` strips the `Mudlet-` prefix (`src/updater/Release.cpp:49`) and `SemVer::getRegExp()` needs three components (`src/updater/SemVer.cpp:111`), so `"5.0"` is invalid, `Release::operator<` (`src/updater/Release.cpp:96`) reports the release as not newer, and `Feed::getUpdates()` returns nothing. The update check goes on logging `0 update(s) available` - the same line as a week with no release. The asymmetry is what makes it dangerous. A stale APP_VERSION with a correct tag fails loudly, because `CI/prepare-release-assets.sh:62` rejects assets by tag prefix. A short tag with a correct APP_VERSION passes everything, because `Mudlet-5.0.0-linux-x64.AppImage.tar` genuinely does start with `Mudlet-5.0`. **Why the build scripts and not only the workflow:** `create-github-release.yml` is `workflow_run`-triggered, so it cannot fail before the assets are built - by the time it runs, the full matrix has already finished. The validate scripts run at the start of every tag build on all three platforms and already parse APP_VERSION, so that is where the fast failure belongs. The workflow keeps a copy because it always runs from the default branch, so it still guards a tag placed on a commit that predates this change. APP_VERSION is deliberately left at 4.22.0 - bumping it is a release decision, not a QA fix. This guard is what catches a mismatch when the bump happens. #### Other info (issues closed, discussion etc) From the 5.0 release QA sweep, finding C1, "A two-component release tag silently disables auto-update for every existing user". Pre-existing mechanism, no single commit introduced it. Three claims from an earlier draft did not survive checking and were corrected: `src/sparkleupdater.mm` installs no `versionComparatorForUpdater:`, so Sparkle's default component-wise comparator would still offer `5.0` over `4.22.0` (macOS breaks on the opposite mismatch instead); the update check does log, it is just indistinguishable from having nothing to offer; and SemVer does accept a prerelease component, so rejecting `Mudlet-5.0.0-rc1` follows from APP_VERSION being unable to carry a suffix, not from the updater. No video - a CI guard is not visually observable. The shell output below is the evidence instead. **Test case:** `ctest -R ReleaseTagVersionTest`, and the guard run directly: ``` $ CI/check-release-tag.sh 5.0.0 Mudlet-5.0.0 Release tag 'Mudlet-5.0.0' matches APP_VERSION '5.0.0'. exit=0 $ CI/check-release-tag.sh 5.0.0 Mudlet-5.0 error: release tag 'Mudlet-5.0' does not match APP_VERSION '5.0.0'. The tag has to be exactly 'Mudlet-5.0.0'. Publishing under a mismatched tag breaks auto-update, without saying so. [...] exit=1 ``` Replayed over every release tag since 4.18.5, each against the APP_VERSION at that tag - all accepted, so the guard blocks nothing Mudlet has actually shipped. Executing the real `Determine release type` step under GitHub's shell flags fails on `Mudlet-5.0` + `5.0.0` and on a PTB with APP_VERSION `5.0`, and passes on `Mudlet-5.0.0` + `5.0.0` and on a normal PTB. The updater trace was confirmed by compiling `Release.cpp` + `SemVer.cpp` and comparing: tag `Mudlet-5.0.0` gives `(4.22.0 < release) = true`, tag `Mudlet-5.0` gives `false`. Assisted-by: Claude:claude-opus-5 |
||
|
|
9634c394b8
|
fix: Windows auto-update failing on a release binary with no checksum (#9617)
#### Brief overview of PR changes/additions - Never publish a release binary without a matching `SHA256SUMS.txt` entry: merge over the already-published file instead of overwriting it, set aside assets belonging to a different build than the release tag, and gate the upload on every binary having an entry that matches its bytes. - Say which check failed in the updater - missing checksums, undownloadable checksums, no entry for this platform, unreadable checksum file - instead of one message for all of them. - Add `UpdaterChecksumTest` and `ReleaseChecksumsTest`; both fail if the fix is reverted. #### Motivation for adding to Mudlet Windows auto-update failed with "Could not verify the integrity of the download", so PTB users could not update at all. `create-github-release.yml` runs once per platform build workflow and uploads with `--clobber`, so the 2026-08-02 run regenerated `SHA256SUMS.txt` from its own subset of sidecars and overwrote the complete file while the earlier `.exe` stayed published. The updater was right to refuse it. #### Other info (issues closed, discussion etc) Test case: `ctest -R 'UpdaterChecksumTest|ReleaseChecksumsTest'`. Verified on a Windows 11 VM against a scratch release reproducing the exact layout: before, the Download Error dialog; after replacing only `SHA256SUMS.txt` with what the new script produces, the installer downloaded, verified and staged. `requireChecksums` is unchanged - nothing accepts an unverified download that did not before. Not fixed here: PTBs ship Windows-only when the scheduled Linux/macOS build is still queued, which is why the 2026-08-03 PTB has one asset. Assisted-by: Claude:claude-opus-5 |
||
|
|
344eff7204
|
Infrastructure: Bump actions/checkout from 6 to 7 (#9348)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>What's Changed</h2> <ul> <li>block checking out fork pr for pull_request_target and workflow_run by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> <li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li> <li>Bump flatted from 3.3.1 to 3.4.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li> <li>Bump js-yaml from 4.1.0 to 4.2.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li> <li>Bump <code>@actions/core</code> and <code>@actions/tool-cache</code> and Remove uuid by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li> <li>upgrade module to esm and update dependencies by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li> <li>Bump the minor-npm-dependencies group across 1 directory with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li> <li>getting ready for checkout v7 release by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2464">actions/checkout#2464</a></li> <li>update error wording by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2467">actions/checkout#2467</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6.0.3...v7.0.0">https://github.com/actions/checkout/compare/v6.0.3...v7.0.0</a></p> <h2>v6.0.3</h2> <h2>What's Changed</h2> <ul> <li>Update changelog by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2357">actions/checkout#2357</a></li> <li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> <li>Fix checkout init for SHA-256 repositories by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li> <li>Update changelog for v6.0.3 by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2446">actions/checkout#2446</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/yaananth"><code>@yaananth</code></a> made their first contribution in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6...v6.0.3">https://github.com/actions/checkout/compare/v6...v6.0.3</a></p> <h2>v6.0.2</h2> <h2>What's Changed</h2> <ul> <li>Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is set by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2355">actions/checkout#2355</a></li> <li>Fix tag handling: preserve annotations and explicit fetch-tags by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6.0.1...v6.0.2">https://github.com/actions/checkout/compare/v6.0.1...v6.0.2</a></p> <h2>v6.0.1</h2> <h2>What's Changed</h2> <ul> <li>Update all references from v5 and v4 to v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> <li>Clarify v6 README by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v7.0.0</h2> <ul> <li>Block checking out fork PR for pull_request_target and workflow_run by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li> <li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the minor-actions-dependencies group across 1 directory by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li> <li>Bump flatted from 3.3.1 to 3.4.2 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li> <li>Bump js-yaml from 4.1.0 to 4.2.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li> <li>Bump <code>@actions/core</code> and <code>@actions/tool-cache</code> and Remove uuid by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li> <li>upgrade module to esm and update dependencies by <a href="https://github.com/aiqiaoy"><code>@aiqiaoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li> <li>Bump the minor-npm-dependencies group across 1 directory with 3 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li> </ul> <h2>v6.0.3</h2> <ul> <li>Fix checkout init for SHA-256 repositories by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li> <li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a href="https://github.com/yaananth"><code>@yaananth</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li> </ul> <h2>v6.0.2</h2> <ul> <li>Fix tag handling: preserve annotations and explicit fetch-tags by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li> </ul> <h2>v6.0.1</h2> <ul> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> </ul> <h2>v6.0.0</h2> <ul> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> </ul> <h2>v5.0.1</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <h2>v5.0.0</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> </ul> <h2>v4.3.1</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <h2>v4.3.0</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> <li>Adjust positioning of user email note and permissions heading by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li> <li>Update CODEOWNERS for actions by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li> <li>Update package dependencies by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li> </ul> <h2>v4.2.2</h2> <ul> <li><code>url-helper.ts</code> now leverages well-known environment variables by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li> <li>Expand unit test coverage for <code>isGhes</code> by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li> </ul> <h2>v4.2.1</h2> <ul> <li>Check out other refs/* by commit if provided, fall back to ref by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
748e124d65
|
Infrastructure: Bump leafo/gh-actions-lua from 12 to 13 (#9222)
Bumps [leafo/gh-actions-lua](https://github.com/leafo/gh-actions-lua) from 12 to 13. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/leafo/gh-actions-lua/releases">leafo/gh-actions-lua's releases</a>.</em></p> <blockquote> <h2>v13</h2> <h2>What's new in v13</h2> <h3>Lua 5.5 support</h3> <ul> <li>New <code>5.5</code> version alias pointing to Lua 5.5.0 (released 2025-12-15)</li> <li>Default <code>luaVersion</code> is now <code>5.5</code> (previously <code>5.4</code>)</li> </ul> <h3>ESM migration</h3> <p><code>main.js</code> has been converted to ES modules to match the latest <code>@actions/*</code> toolkit packages, which went ESM-only in their most recent majors. No user-facing behavior change — same action API, same inputs.</p> <h3>Dependency upgrades</h3> <table> <thead> <tr> <th>Package</th> <th>Before</th> <th>After</th> </tr> </thead> <tbody> <tr> <td><code>@actions/core</code></td> <td>1.11.1</td> <td>3.0.1</td> </tr> <tr> <td><code>@actions/cache</code></td> <td>4.1.0</td> <td>6.0.0</td> </tr> <tr> <td><code>@actions/exec</code></td> <td>1.1.1</td> <td>3.0.0</td> </tr> <tr> <td><code>@actions/io</code></td> <td>1.1.3</td> <td>3.0.2</td> </tr> <tr> <td><code>@actions/tool-cache</code></td> <td>2.0.2</td> <td>4.0.0</td> </tr> </tbody> </table> <h3>Release tarballs refreshed</h3> <ul> <li><strong>New</strong>: <code>5.5.0.tar.gz</code></li> <li><code>5.3.6.tar.gz</code> replaces <code>5.3.5.tar.gz</code></li> <li><code>5.4.8.tar.gz</code> replaces <code>5.4.1.tar.gz</code></li> </ul> <h3>README / example updates</h3> <p>The example snippets now use:</p> <ul> <li><code>actions/checkout@v6</code> (was <code>@master</code> / <code>@v4</code>) — silences the Node.js 20 deprecation warning</li> <li><code>step-security/msvc-dev-cmd@v1</code> in place of <code>ilammy/msvc-dev-cmd@v1</code> — same input surface, runs on Node.js 24, actively maintained</li> </ul> <p><strong>Full changelog</strong>: <a href="https://github.com/leafo/gh-actions-lua/compare/v12...v13">https://github.com/leafo/gh-actions-lua/compare/v12...v13</a></p> <h2>v13.0.0</h2> <h2>What's new in v13</h2> <h3>Lua 5.5 support</h3> <ul> <li>New <code>5.5</code> version alias pointing to Lua 5.5.0 (released 2025-12-15)</li> <li>Default <code>luaVersion</code> is now <code>5.5</code> (previously <code>5.4</code>)</li> </ul> <h3>ESM migration</h3> <p><code>main.js</code> has been converted to ES modules to match the latest <code>@actions/*</code> toolkit packages, which went ESM-only in their most recent majors. No user-facing behavior change — same action API, same inputs.</p> <h3>Dependency upgrades</h3> <table> <thead> <tr> <th>Package</th> <th>Before</th> <th>After</th> </tr> </thead> <tbody> <tr> <td><code>@actions/core</code></td> <td>1.11.1</td> <td>3.0.1</td> </tr> <tr> <td><code>@actions/cache</code></td> <td>4.1.0</td> <td>6.0.0</td> </tr> <tr> <td><code>@actions/exec</code></td> <td>1.1.1</td> <td>3.0.0</td> </tr> <tr> <td><code>@actions/io</code></td> <td>1.1.3</td> <td>3.0.2</td> </tr> <tr> <td><code>@actions/tool-cache</code></td> <td>2.0.2</td> <td>4.0.0</td> </tr> </tbody> </table> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
fbc61aace4
|
infrastructure: fix partial PTB releases not triggering when push build exists at same SHA (#9192)
#### Brief overview of PR changes/additions Add `event` filter to the workflow run query in `create-github-release.yml` so scheduled PTB builds only match other scheduled builds, not push builds at the same SHA #### Motivation for adding to Mudlet When a push build and a scheduled build exist at the same commit, the release workflow could find the push build (which has no release metadata) instead of the failed scheduled build, silently skipping the release and preventing the partial-PTB logic from #9163 from ever kicking in. #### Other info (issues closed, discussion etc) On 2026-04-15 no PTB was created despite only macOS failing a flaky test - the Windows and Linux builds succeeded but no release was made because the platform check matched a push build from #9191 instead of the failed scheduled build. **Test case:** Next scheduled PTB build where one platform fails should still create a partial release with the successful platforms' assets. Co-authored-by: Vadim Peretokin <vadi2@users.noreply.github.com> |
||
|
|
5ec6aa71ab
|
Infrastructure: fix Windows SHA256 missing from PTB releases (#9191)
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
fix Windows SHA256 missing from PTB releases
#### Motivation for adding to Mudlet
necessary for updates' download to have validated integrity
#### Other info (issues closed, discussion etc)
download-artifact@v8 doesn't create a subdirectory when only one
artifact matches the pattern. The Windows build produces a single
release-asset-* artifact, so its files end up flat in assets/ instead of
assets/release-asset-Windows-X64/. The glob assets/*/*.sha256 missed it.
Use find instead, matching the pattern already used elsewhere in the
workflow.
|
||
|
|
e83a08a5b9
|
infrastructure: allow partial PTB releases when not all platforms succeed (#9163)
#### Brief overview of PR changes/additions Release workflow no longer blocks PTB creation when one platform build fails - proceeds with available assets and updates when remaining platforms complete. #### Motivation for adding to Mudlet PTB releases were missing Windows builds because the gate required all platforms to succeed, contradicting the asset verification which already tolerates partial PTBs. #### Other info (issues closed, discussion etc) None **Test case:** Trigger a PTB where one platform fails; verify the release is created with available assets and updated when the remaining platform succeeds. |
||
|
|
a167029f81
|
fix: changelog rendering in PTB update dialog (#9182)
#### Brief overview of PR changes/additions Fix the in-app PTB changelog dialog which was showing garbled text (random commit hashes, file paths, broken formatting) by converting unsupported `<details>` HTML to plain markdown and fixing several changelog generation bugs. #### Motivation for adding to Mudlet The PTB changelog was unreadable for users - Qt's markdown renderer can't handle `<details>/<summary>` HTML tags, causing backtick content to leak out as random strings. Additionally, the markdown changelog builder was incorrectly HTML-escaping text, and empty changelog sections appeared when consecutive PTBs had no changes. #### Other info (issues closed, discussion etc) |
||
|
|
4728bf9c07
|
infrastructure: stop deleting and recreating GitHub releases on every build (#9176)
#### Brief overview of PR changes/additions Both build workflows (Linux/macOS and Windows) independently trigger the release workflow, causing the same release to be deleted and recreated twice per commit. Now the workflow checks if the release already exists and uploads assets to it instead of destroying and recreating it. #### Motivation for adding to Mudlet Eliminates notification spam to repository watchers. #### Other info (issues closed, discussion etc) N/A **Test case:** Wait for the next nightly PTB build and verify only one "New release published" notification appears in the activity feed instead of two delete/create cycles. <img width="1556" height="1570" alt="Screenshot from 2026-04-10 18-04-03" src="https://github.com/user-attachments/assets/eea90d57-f56a-45c4-b678-7b5b9499edfe" /> |
||
|
|
994d138d62
|
Infrastructure: Bump actions/download-artifact from 4 to 8 (#9179)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v8.0.0</h2> <h2>v8 - What's new</h2> <blockquote> <p>[!IMPORTANT] actions/download-artifact@v8 has been migrated to an ESM module. This should be transparent to the caller but forks might need to make significant changes.</p> </blockquote> <blockquote> <p>[!IMPORTANT] Hash mismatches will now error by default. Users can override this behavior with a setting change (see below).</p> </blockquote> <h3>Direct downloads</h3> <p>To support direct uploads in <code>actions/upload-artifact</code>, the action will no longer attempt to unzip all downloaded files. Instead, the action checks the <code>Content-Type</code> header ahead of unzipping and skips non-zipped files. Callers wishing to download a zipped file as-is can also set the new <code>skip-decompress</code> parameter to <code>true</code>.</p> <h3>Enforced checks (breaking)</h3> <p>A previous release introduced digest checks on the download. If a download hash didn't match the expected hash from the server, the action would log a warning. Callers can now configure the behavior on mismatch with the <code>digest-mismatch</code> parameter. To be secure by default, we are now defaulting the behavior to <code>error</code> which will fail the workflow run.</p> <h3>ESM</h3> <p>To support new versions of the @actions/* packages, we've upgraded the package to ESM.</p> <h2>What's Changed</h2> <ul> <li>Don't attempt to un-zip non-zipped downloads by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/460">actions/download-artifact#460</a></li> <li>Add a setting to specify what to do on hash mismatch and default it to <code>error</code> by <a href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/461">actions/download-artifact#461</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v7...v8.0.0">https://github.com/actions/download-artifact/compare/v7...v8.0.0</a></p> <h2>v7.0.0</h2> <h2>v7 - What's new</h2> <blockquote> <p>[!IMPORTANT] actions/download-artifact@v7 now runs on Node.js 24 (<code>runs.using: node24</code>) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <h3>Node.js 24</h3> <p>This release updates the runtime to Node.js 24. v6 had preliminary support for Node 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.</p> <h2>What's Changed</h2> <ul> <li>Update GHES guidance to include reference to Node 20 version by <a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li>Download Artifact Node24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> <li>fix: update <code>@actions/artifact</code> to fix Node.js 24 punycode deprecation by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/451">actions/download-artifact#451</a></li> <li>prepare release v7.0.0 for Node.js 24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/452">actions/download-artifact#452</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0">https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0</a></p> <h2>v6.0.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
91e7405519
|
Infrastructure: Bump actions/github-script from 7 to 9 (#9181)
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 9. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/github-script/releases">actions/github-script's releases</a>.</em></p> <blockquote> <h2>v9.0.0</h2> <p><strong>New features:</strong></p> <ul> <li><strong><code>getOctokit</code> factory function</strong> — Available directly in the script context. Create additional authenticated Octokit clients with different tokens for multi-token workflows, GitHub App tokens, and cross-org access. See <a href="https://github.com/actions/github-script#creating-additional-clients-with-getoctokit">Creating additional clients with <code>getOctokit</code></a> for details and examples.</li> <li><strong>Orchestration ID in user-agent</strong> — The <code>ACTIONS_ORCHESTRATION_ID</code> environment variable is automatically appended to the user-agent string for request tracing.</li> </ul> <p><strong>Breaking changes:</strong></p> <ul> <li><strong><code>require('@actions/github')</code> no longer works in scripts.</strong> The upgrade to <code>@actions/github</code> v9 (ESM-only) means <code>require('@actions/github')</code> will fail at runtime. If you previously used patterns like <code>const { getOctokit } = require('@actions/github')</code> to create secondary clients, use the new injected <code>getOctokit</code> function instead — it's available directly in the script context with no imports needed.</li> <li><code>getOctokit</code> is now an injected function parameter. Scripts that declare <code>const getOctokit = ...</code> or <code>let getOctokit = ...</code> will get a <code>SyntaxError</code> because JavaScript does not allow <code>const</code>/<code>let</code> redeclaration of function parameters. Use the injected <code>getOctokit</code> directly, or use <code>var getOctokit = ...</code> if you need to redeclare it.</li> <li>If your script accesses other <code>@actions/github</code> internals beyond the standard <code>github</code>/<code>octokit</code> client, you may need to update those references for v9 compatibility.</li> </ul> <h2>What's Changed</h2> <ul> <li>Add ACTIONS_ORCHESTRATION_ID to user-agent string by <a href="https://github.com/Copilot"><code>@Copilot</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li> <li>ci: use deployment: false for integration test environments by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/712">actions/github-script#712</a></li> <li>feat!: add getOctokit to script context, upgrade <code>@actions/github</code> v9, <code>@octokit/core</code> v7, and related packages by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/700">actions/github-script#700</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/Copilot"><code>@Copilot</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/695">actions/github-script#695</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v8.0.0...v9.0.0">https://github.com/actions/github-script/compare/v8.0.0...v9.0.0</a></p> <h2>v8.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update Node.js version support to 24.x by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li> <li>README for updating actions/github-script from v7 to v8 by <a href="https://github.com/sneha-krip"><code>@sneha-krip</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li> </ul> <h2>⚠️ Minimum Compatible Runner Version</h2> <p><strong>v2.327.1</strong><br /> <a href="https://github.com/actions/runner/releases/tag/v2.327.1">Release Notes</a></p> <p>Make sure your runner is updated to this version or newer to use this release.</p> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/637">actions/github-script#637</a></li> <li><a href="https://github.com/sneha-krip"><code>@sneha-krip</code></a> made their first contribution in <a href="https://redirect.github.com/actions/github-script/pull/653">actions/github-script#653</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/github-script/compare/v7.1.0...v8.0.0">https://github.com/actions/github-script/compare/v7.1.0...v8.0.0</a></p> <h2>v7.1.0</h2> <h2>What's Changed</h2> <ul> <li>Upgrade husky to v9 by <a href="https://github.com/benelan"><code>@benelan</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/482">actions/github-script#482</a></li> <li>Add workflow file for publishing releases to immutable action package by <a href="https://github.com/Jcambass"><code>@Jcambass</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/485">actions/github-script#485</a></li> <li>Upgrade IA Publish by <a href="https://github.com/Jcambass"><code>@Jcambass</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/486">actions/github-script#486</a></li> <li>Fix workflow status badges by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/497">actions/github-script#497</a></li> <li>Update usage of <code>actions/upload-artifact</code> by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/512">actions/github-script#512</a></li> <li>Clear up package name confusion by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/514">actions/github-script#514</a></li> <li>Update dependencies with <code>npm audit fix</code> by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/515">actions/github-script#515</a></li> <li>Specify that the used script is JavaScript by <a href="https://github.com/timotk"><code>@timotk</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/478">actions/github-script#478</a></li> <li>chore: Add Dependabot for NPM and Actions by <a href="https://github.com/nschonni"><code>@nschonni</code></a> in <a href="https://redirect.github.com/actions/github-script/pull/472">actions/github-script#472</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
99fbf43335
|
improve: show version scope in PTB release changelogs (#9148)
#### Brief overview of PR changes/additions Prepend a "Changes since X.Y.Z:" header to PTB release changelogs. #### Motivation for adding to Mudlet PTB changelogs cover all changes since the last release, which can be hundreds of entries. The header makes the scope immediately clear. #### Other info (issues closed, discussion etc) Follow-up to #9145. **Test case:** Run a PTB build via workflow_dispatch and verify the GitHub Release body starts with "Changes since X.Y.Z:". |
||
|
|
12fdd336a2
|
Infrastructure: show changelogs both from last release and last PTB (#9151)
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Show changelogs both from last release and last PTB. Only last 2 PTBs
are ever kept (to reduce flooding our [releases
page](https://github.com/Mudlet/Mudlet/releases) in github), so being
able to see the delta between the PTBs and last release is quite useful.
#### Motivation for adding to Mudlet
More clarity in PTB changelogs
#### Other info (issues closed, discussion etc)
|
||
|
|
12e66c7a94
|
infrastructure: fix Windows release asset upload and appcast SCP paths (#9152)
#### Brief overview of PR changes/additions - Convert `RELEASE_ASSET_PATH` from MSYS2 Unix paths to Windows paths (`cygpath -aw`) so `actions/upload-artifact` can find the files — it runs in Node.js outside MSYS2 and misinterprets `/d/a/...` as `D:\d\a\...` - Remove single quotes from `scp` destination in appcast upload — modern OpenSSH uses SFTP which sends paths literally, so quotes became part of the filename #### Motivation for adding to Mudlet The nightly PTB GitHub Release was missing Windows artifacts and the appcast upload was failing, both due to path handling bugs introduced with the new release workflow. #### Other info (issues closed, discussion etc) Discovered while investigating https://github.com/Mudlet/Mudlet/releases/tag/Mudlet-4.20.1-ptb-2026-04-05-6b2de48d which had Linux/macOS assets but no Windows `.exe`. Evidence from the [Windows build logs](https://github.com/Mudlet/Mudlet/actions/runs/23994294504): ``` path: /d/a/Mudlet/Mudlet/upload/Mudlet-4.20.1-ptb-...-windows-64-installer.exe The least common ancestor is D:\d\a\Mudlet\Mudlet\upload ##[warning]No files were found with the provided path. No artifacts will be uploaded. ``` Evidence from the [release workflow logs](https://github.com/Mudlet/Mudlet/actions/runs/23994926016): ``` scp: dest open "'***/appcast/'": No such file or directory ``` **Test case:** Trigger a PTB build via `workflow_dispatch` with `scheduled=true` and verify the Windows `.exe` appears in the GitHub Release assets and appcast upload succeeds. |
||
|
|
6b2de48d08
|
infrastructure: release workflow failing due to PR build triggers and checkout wiping assets (#9145)
#### Brief overview of PR changes/additions Fix two bugs in create-github-release.yml: PR builds triggering the release workflow with wrong SHA, and actions/checkout wiping downloaded artifacts. #### Motivation for adding to Mudlet Without this fix, the release workflow silently skips creating releases or fails with missing assets. #### Other info (issues closed, discussion etc) Root causes found by investigating failed runs from #9127. **Test case:** Run workflow_dispatch on build-mudlet.yml with "Imitate a PTB" set to true; verify the release workflow picks up the correct build run and creates a GitHub pre-release with all available platform assets. |
||
|
|
67682418d8
|
Infrastructure: add CI workflow to create GitHub Releases for updater (#9127)
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Add a new create-github-release.yml workflow that coordinates
cross-platform build artifacts and creates GitHub Releases compatible
with the new GitHub Releases-based updater.
#### Motivation for adding to Mudlet
Replace dblsqd as the updater backend as it is no longer working.
#### Other info (issues closed, discussion etc)
Stable releases use Mudlet-X.Y.Z tags, PTB uses a rolling
public-test-build tag. Existing dblsqd integration is preserved for
transition.
Meant to go in tandem with https://github.com/Mudlet/Mudlet/pull/9125.
|