The macOS frameless-titlebar CSS marks .mx_RoomView_wrapper as a
-webkit-app-region drag handle, which swallows all mouse/keyboard input
for its descendants. Module location renderers (the HealthChat Angular
custom elements like hc-user-browser / hc-admin-dashboard) are mounted
there but match none of the no-drag exclusions, so their inputs and
buttons were dead in the desktop app while working in the web app.
Exclude the room-view wrapper's direct children from the drag region so
the mounted page receives pointer events; the existing .mx_RoomView child
and the ::before drag strips are unaffected.
The native About panel and macOS app menu derived their name from
Electron's app.name and ignored the configured brand, so they still
showed "Element". Set the About panel options from vectorConfig.brand
and use the brand for the macOS app/About menu labels.
Add a config-driven matrix_to_url option so Share dialog links and QR
codes resolve against a matrix.to-compatible resolver instead of the
hardcoded public matrix.to. MatrixToPermalinkConstructor now reads the
base URL lazily from config (default https://matrix.to), keeping the
matrix.to URL format. HealthChat configs point it at the in-house fork
https://to.healthchat.ch and drop the conflicting permalink_prefix
(which routes to the Element-format constructor a matrix.to fork can't
parse).
The desktop variant config hardcoded ch.healthchat.api_base_url as
https://healthchat.ch, which is the wrong host. The fork's widget
auto-approval logic keys on the api.healthchat.ch origin, so the bare
domain bypassed it and pointed API traffic at the wrong host.
Stale since the desktop build pipeline was introduced (5f09f58a82).
The schedule triggers on build-and-test.yaml and build_desktop_and_deploy.yaml
fired nightly from the default branch (release/healthchat) and failed at startup,
since the repo gate only skips jobs, not the cron-spawned runs. Remove the
schedule triggers; pull_request/merge_group/push/release/workflow_dispatch are
untouched.
Publish HEALTHCHAT_CHANGES.md release notes into the update feeds so users
see what changed. macOS gets them natively via releases.json's notes field;
Windows fetches a published notes.txt, since Squirrel.Windows only delivers
releaseName through the update-downloaded event.
Add the same repo guard applied to sibling upstream workflows in
bd6241ad9d. On the private fork this job failed at checkout because
permissions: {} leaves GITHUB_TOKEN without contents:read, so
actions/checkout 404s on the private repo.
The Electron auto-updater (Squirrel.Mac / Squirrel.Windows) was already
implemented but switched off for HealthChat because the variant config
omitted update_base_url, and CI published only installers (no update feed),
to a private GitHub Release that can't serve end users or the updater.
- config.json: set update_base_url to https://healthchat.ch/packages/desktop/update/
so electron-main starts the updater.
- build-healthchat-desktop.yaml: pass base-url to the macOS job so releases.json
is generated; extend the release job to stage the update feed + public
installers and mirror them to healthchat.ch over FTPS (lftp, no-delete to
preserve prior nupkgs; password via LFTP_PASSWORD).
- Document the feed/install layout, FTP secrets, and the two caveats (first
install is manual; Windows auto-update needs the Setup.exe path, not .msi)
in the healthchat README and the releasing-healthchat skill.
Requires repo secrets FTP_SERVER / FTP_USERNAME / FTP_PASSWORD.
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
The reusable build jobs ran with permissions: {} (fine for upstream's public
repo, which checks out with no token). This fork is internal, so checkout failed
with 'Repository not found'. Grant contents:read on the linux/macos/windows
caller jobs and the reusable build jobs, mirroring the prepare job.
pnpm/action-setup@v4 errored 'No pnpm version specified' because this repo
declares pnpm via devEngines.packageManager, not the top-level packageManager
field. Bump to v6.0.8 (as the shared desktop reusables use), which reads it.
Extend the HealthChat desktop pipeline beyond Linux to produce fully branded,
signed Windows (.exe/.msi) and macOS (.dmg/.zip) installers, published to the
GitHub Release on the healthchat-v* tag alongside the web build.
- Add HealthChat desktop icons (icon.png/ico + Apple Icon Composer bundle),
derived from apps/web/res/vector-icons/1024.png
- Point the reusable build workflows at this fork (new repository/ref inputs)
so the Electron shell, icons and healthchat:// handler are fork-branded
- Relax hardcoded Element*/element-desktop* filename asserts to be
product-name-agnostic
- Wire signed macOS + Windows jobs into build-healthchat-desktop.yaml, trigger
it on healthchat-v* tags, and add a release job that uploads installers
- Map the org-level eSigner secrets to the CKA names the reusable expects
- Document signing setup (Apple env, eSigner mapping, ESIGNER_MODE=prod) in the
desktop README and releasing-healthchat skill
Switch the friendly deep-link / legacy SSO callback scheme from element://
to healthchat:// and stop registering element:// entirely. The reverse-DNS
OIDC primary scheme (ch.healthchat.desktop://) is unchanged. Also rebrand the
round-tripped SSO id param element-desktop-ssoid -> healthchat-desktop-ssoid
on both the desktop and web sides.
Two export-filename snapshots now reflect HealthChat branding (were
still "Element"), and the appearance-tab snapshot picks up the upstream
Radix/React auto-generated id format change from master.
Extended-profile fields (io.element.profile.*) are no longer edited in the
client, so remove the edit form and the dead code that came with it, keeping
only the read-only right-panel display (UserExtendedProfileInfo).
- Remove ExtendedProfileSettings (edit form) + its Settings integration and CSS
- Remove ExtendedProfileView (never-rendered, dead) + its CSS
- Inline the EXT_PROFILE_KEY_* constants into UserExtendedProfileInfo so it no
longer depends on the deleted settings component
- Drop now-unused set/deleteExtendedProfileProperty from UserProfilesStore
- Prune dead settings|extended_profile_settings|* i18n keys (and the unused
user_info.extended_profile header/not_provided keys) across all locales
- Regenerate _components.pcss
- Revert UserProfileSettings/AccountUserSettingsTab tests (+snapshot) to master,
since their adaptations existed only for the removed edit form
Restore openSecurity to isAuthenticated (master's behaviour) so the
Security quick-link reappears in the user menu, consistent with the
re-enabled Security settings tab.
Restore the Security tab in UserSettingsDialog (re-add the LockIcon and
SecurityUserSettingsTab imports and uncomment the tab). Reverses part of
the earlier 'disable security setting' customisation.
HealthChat's preapproveCapabilities customisation returned undefined for
non-HealthChat widgets, which short-circuits master's reworked
validateCapabilities flow (it falls back to the customisation whenever it
is defined). The api.healthchat.ch auto-approval is handled by the plugin,
so restore the empty upstream customisations object.
Post-rebase fixups for the v1.12.7 -> v1.12.20 jump (yarn single-package
-> pnpm monorepo):
- UserSettingsDialog: TranslationKey is now a global ambient type (drop
the import); remove imports left unused by the disabled Account/Security
tabs; cast the module tab icon to the tightened Tab icon type.
- SdkConfig: point the default branding auth_header_logo_url at the PNG
logo (the SVG was removed by HealthChat branding), fixing a broken
default asset reference.
- build-healthchat.yaml: build apps/web/Dockerfile (monorepo location).
Convert build-healthchat workflow from branch-push to tag-push trigger
(healthchat-v*), add version/workspace-ref/release-notes resolution,
and create a GitHub Release on tag push. Pin healthchat-workspace to
v0.5.0-rc.4 via .healthchat-workspace-version, seed the changelog with
1.0.0, and document the runbook in the releasing-healthchat skill.