chore(release): HealthChat 1.1.2

Remove the Linux desktop build from the release pipeline. It could never
succeed in this fork: the upstream Linux reusable pulls a build-env Docker
image keyed by the building commit's SHA from the upstream element-hq
registry, where the fork's SHA does not exist, so every tagged build failed
with `manifest unknown`. Desktop releases now ship macOS and Windows only.

- Drop the linux job + its release artifacts from build-healthchat-desktop.yaml
- Bump apps/desktop/package.json to 1.1.2
- Update releasing-healthchat skill + desktop README docs
This commit is contained in:
2026-06-28 09:09:27 +02:00
parent e83c70701a
commit cf917c1ed5
5 changed files with 29 additions and 32 deletions
+10 -7
View File
@@ -13,17 +13,19 @@ Releases are driven by git tags of the form `healthchat-v<semver>` pushed to
`:<sha>`, and creates a GitHub Release whose body is the matching section of
`HEALTHCHAT_CHANGES.md`.
- `.github/workflows/build-healthchat-desktop.yaml` (desktop) — builds the Electron
app for Linux (amd64/arm64), macOS (universal, signed+notarised) and Windows
(x64/arm64, signed), and attaches the installers (.dmg/.zip/.exe/.msi/.deb/.tar.gz)
to the **same** GitHub Release. The two workflows create-if-missing then upload, so
they race safely.
app for macOS (universal, signed+notarised) and Windows (x64/arm64, signed), and
attaches the installers (.dmg/.zip/.exe/.msi) to the **same** GitHub Release. The two
workflows create-if-missing then upload, so they race safely. (Linux is intentionally
not built — the upstream Linux reusable pulls a build-env Docker image keyed by commit
SHA that only exists in the upstream element-hq registry, so it cannot succeed in this
fork.)
Publish target: **ghcr.io Docker image + GitHub Release (web bundle + desktop
installers).** No npm, no mobile fan-out.
The desktop app version is taken from `apps/desktop/package.json` (the per-job
`version` input cannot set it — Windows squirrel mangles it into a nightly string,
and on macOS/Linux it only feeds the update manifest). So `apps/desktop/package.json`
and on macOS it only feeds the update manifest). So `apps/desktop/package.json`
**must be bumped to the release version in the release commit** to keep the About
dialog and installer filenames matching the tag. This is no longer optional: the
desktop workflow's "Assert desktop app version matches release" step fails the build
@@ -162,7 +164,7 @@ warning. Prefer fixing the changelog over relying on the fallback.
(`docker buildx imagetools inspect ghcr.io/<owner>/healthchat-web:stable`).
- [ ] The desktop workflow run ("Build HealthChat Desktop") is green and the
GitHub Release has the desktop installers attached (.dmg, *-mac.zip, *.msi,
"* Setup*.exe", *.deb, *.tar.gz).
"* Setup*.exe").
- [ ] Smoke-check signing: macOS `spctl -a -vvv -t install <app>` is accepted;
Windows installer shows a valid publisher (no SmartScreen block).
@@ -219,6 +221,7 @@ conflict on rebase, re-apply the HealthChat changes rather than blindly taking
either side:
- `.github/workflows/build_desktop_prepare.yaml`
- `.github/workflows/build_desktop_linux.yaml`
- `.github/workflows/build_desktop_linux.yaml` (still in the tree, but no longer
invoked by `build-healthchat-desktop.yaml` — the fork doesn't build Linux)
- `.github/workflows/build_desktop_macos.yaml`
- `.github/workflows/build_desktop_windows.yaml`
@@ -1,13 +1,13 @@
name: Build HealthChat Desktop
# Builds the HealthChat desktop (Electron) app for Linux, macOS and Windows: the fork's
# Builds the HealthChat desktop (Electron) app for macOS and Windows: the fork's
# element-web webapp with the HealthChat plugin (healthchat-module.js + healthchat-elements.js)
# injected, packaged via the element-desktop build pipeline and published to the GitHub Release.
#
# This is the desktop counterpart of build-healthchat.yaml (web). On a `healthchat-v*` tag it
# runs alongside the web build; it first builds the element-plugin from healthchat-workspace,
# builds the fork webapp with the plugin injected, then feeds it into build_desktop_prepare.yaml
# (via `webapp-artifact`) and the per-platform build_desktop_{linux,macos,windows}.yaml reusables.
# (via `webapp-artifact`) and the per-platform build_desktop_{macos,windows}.yaml reusables.
#
# Notes:
# - The reusable build workflows are pointed at THIS fork (repository/ref inputs) so the Electron
@@ -18,7 +18,7 @@ name: Build HealthChat Desktop
# GitHub environments (secrets/vars) to be configured. Without them the builds still run but
# produce unsigned/untrusted output. See apps/desktop/element.io/healthchat/README.
# - The desktop app version comes from apps/desktop/package.json (electron-builder); the per-job
# `version` input only feeds the macOS/Linux update manifest and is mangled into a nightly
# `version` input only feeds the macOS update manifest and is mangled into a nightly
# string by Windows squirrel, so it cannot set the app version. To keep the installers / About
# dialog in sync with the tag, apps/desktop/package.json must be bumped to the release version
# in the release commit. The "Assert desktop app version matches release" step below enforces
@@ -176,22 +176,6 @@ jobs:
nightly: false
deploy: false
linux:
name: Linux ${{ matrix.arch }}
needs: prepare
permissions:
contents: read
strategy:
matrix:
arch: [amd64, arm64]
uses: ./.github/workflows/build_desktop_linux.yaml
with:
repository: ${{ github.repository }}
ref: ${{ github.sha }}
arch: ${{ matrix.arch }}
sqlcipher: static
test: false
macos:
name: macOS
needs: prepare
@@ -234,7 +218,7 @@ jobs:
release:
name: Publish to GitHub Release
needs: [linux, macos, windows]
needs: [macos, windows]
# Only publish on a real tag push; manual workflow_dispatch runs build but do not publish.
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
@@ -254,8 +238,6 @@ jobs:
find dist-artifacts -type f \( -iname '*.dmg' -o -iname '*-mac.zip' \) -exec cp -v {} release-files/ \;
# Windows: per-machine MSI + Squirrel "Setup" installer
find dist-artifacts -type f \( -iname '*.msi' -o -iname '* Setup*.exe' \) -exec cp -v {} release-files/ \;
# Linux: portable tarball + Debian package
find dist-artifacts -type f \( -iname '*.tar.gz' -o -iname '*.deb' \) -exec cp -v {} release-files/ \;
echo "--- release files ---"
ls -la release-files
test -n "$(ls -A release-files)" || { echo "::error::No installer files collected"; exit 1; }
+10
View File
@@ -7,6 +7,16 @@ in <version>` section and uses it as the body of the GitHub Release.
One section per released version, newest on top. Upstream element-hq
`CHANGELOG.md` is kept separate and untouched.
## Changes in 1.1.2 (2026-06-28)
🐛 Fixes
- Removed the Linux desktop build from the release pipeline. It could never
succeed in this fork: the upstream Linux build step pulls a build-env Docker
image keyed by commit SHA that only exists in the upstream element-hq registry,
so every tagged build failed with `manifest unknown`. Desktop releases now ship
macOS (.dmg/.zip) and Windows (.msi/.exe) installers only.
## Changes in 1.1.1 (2026-06-26)
🙌 Improvements
+4 -2
View File
@@ -45,11 +45,13 @@ CI
--
.github/workflows/build-healthchat-desktop.yaml builds the plugin + webapp artifact and
feeds it into build_desktop_prepare.yaml (`config: element.io/healthchat`,
`webapp-artifact: healthchat-webapp`) and the per-platform build_desktop_{linux,macos,windows}.yaml
`webapp-artifact: healthchat-webapp`) and the per-platform build_desktop_{macos,windows}.yaml
reusables. It runs on every `healthchat-v*` tag (alongside the web build) and via
workflow_dispatch. The reusables are pointed at THIS fork (`repository`/`ref` inputs) so the
Electron shell, icons and the healthchat:// deep-link handler are fork-branded. On a tag push the
`release` job attaches the .dmg / .zip / .exe / .msi / .deb / .tar.gz to the GitHub Release.
`release` job attaches the .dmg / .zip / .exe / .msi to the GitHub Release.
(Linux is not built: the upstream build_desktop_linux.yaml needs a build-env Docker image
keyed by commit SHA that only exists in the upstream element-hq registry, so it can't run here.)
Branding assets
---------------
+1 -1
View File
@@ -3,7 +3,7 @@
"productName": "Element",
"main": "lib/electron-main.js",
"exports": "./lib/electron-main.js",
"version": "1.1.1",
"version": "1.1.2",
"description": "Element: the future of secure communication",
"author": {
"name": "Element",