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
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).
- Update icon imports in ExtendedProfileView.tsx to use available icons
- Update Flex import to use @element-hq/web-shared-components
- Fix missing address property in ExtendedProfileData
- Fix translation key for error message
- Remove unused imports in UserSettingsDialog.tsx
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>