Commit Graph

585 Commits

Author SHA1 Message Date
joel.poyet 637eaa7356 ci: retire legacy healthchat.ch desktop feed 2026-07-29 23:31:39 +02:00
joel.poyet 30bb2bfca3 ci: stage desktop feed on packages.healthchat.ch archive 2026-07-29 23:28:39 +02:00
joel.poyet 09e66dba47 ci: link desktop installers instead of attaching them 2026-07-29 23:19:35 +02:00
joel.poyet 10a380bc81 chore(release): HealthChat 1.6.0 2026-07-29 22:32:04 +02:00
joel.poyet ab295d810c chore: move desktop packages to packages.healthchat.ch 2026-07-29 22:28:43 +02:00
joel.poyet ab91e1a7bc chore(release): HealthChat 1.5.0 2026-07-28 23:41:33 +02:00
joel.poyet be3ab5fb3d chore(release): HealthChat 1.4.1 2026-07-14 14:02:53 +02:00
joel.poyet f33708c705 refactor(theme): single-source the HealthChat Light theme
Author the theme once in apps/web/element.io/healthchat/HealthChat-Light-Theme.json
and sync it into the web (apps/web/config.json) and desktop
(apps/desktop/element.io/healthchat/config.json) configs via
scripts/healthchat-sync-theme.mjs, removing the drifted duplicate.
`pnpm healthchat:theme` writes it; `pnpm lint` runs healthchat:theme:check to
fail on drift.

The canonical palette is the reviewed desktop theme, which reverts the web-only
contrast tweak (f64923ea1a) so web and desktop match.
2026-07-14 14:02:39 +02:00
joel.poyet ce7f9230c3 chore(release): HealthChat 1.4.0 2026-07-14 09:13:58 +02:00
joel.poyet 5e3f235442 chore(release): HealthChat 1.3.1 2026-07-10 18:01:11 +02:00
joel.poyet 0d2ccb9d59 feat(settings): add sign out button to Help & About tab 2026-07-10 17:54:30 +02:00
joel.poyet a9cd6fabb4 chore(release): HealthChat 1.3.0 2026-07-08 23:13:59 +02:00
joel.poyet 745069128f style(spaces): use compound tokens for hierarchy colors 2026-07-08 19:59:50 +02:00
joel.poyet 1697be5239 feat(settings): re-enable slim Help & About tab 2026-07-08 18:25:50 +02:00
joel.poyet 209cd37d0f chore(release): HealthChat 1.2.5 2026-07-01 08:42:57 +02:00
joel.poyet d2aa9ef7a0 chore(release): HealthChat 1.2.4 2026-07-01 08:05:32 +02:00
joel.poyet 8a2754c7c0 fix(desktop): brand Windows installer splash as HealthChat 2026-07-01 08:03:31 +02:00
joel.poyet ead9847d76 chore(web): point help_url at healthchat.ch 2026-07-01 07:20:31 +02:00
joel.poyet 9d53c2b131 chore(desktop): brand About panel, author, homepage, and description as HealthChat
- author.name → HealthChat so the macOS About panel copyright reads
  "Copyright © 2026 HealthChat" (electron-builder derives copyright from author.name)
- author.email → support@healthchat.ch
- homepage → https://www.healthchat.ch
- app description (de-CH) → "Die sichere Chat-Lösung für Schweizer HealthProfessionals"
2026-07-01 07:17:53 +02:00
joel.poyet 22b2d8ca6f chore(release): HealthChat 1.2.3 2026-06-30 18:05:40 +02:00
joel.poyet dd461ddca9 fix(desktop): make module location renderers interactive on macOS
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.
2026-06-30 18:03:47 +02:00
joel.poyet 8b4b63b245 fix(desktop): show HealthChat brand in native About panel and menu
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.
2026-06-30 17:46:12 +02:00
joel.poyet c2b11111dd feat(permalinks): point Share links/QR at to.healthchat.ch
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).
2026-06-30 17:30:56 +02:00
joel.poyet 62e7334a1b chore(release): HealthChat 1.2.2 2026-06-30 17:03:39 +02:00
joel.poyet 95ee5e2391 fix(desktop): point API base URL at api.healthchat.ch
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).
2026-06-30 17:02:25 +02:00
joel.poyet d97198da4b chore(release): HealthChat 1.2.1 2026-06-28 10:24:31 +02:00
joel.poyet 981fd62b8f feat(desktop): show what's changed in auto-update prompt
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.
2026-06-28 10:24:31 +02:00
joel.poyet 87cc3351d2 chore(release): HealthChat 1.2.0 2026-06-28 10:05:02 +02:00
joel.poyet ade1dff201 feat(desktop): wire up HealthChat auto-update + public installer hosting
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.
2026-06-28 09:54:08 +02:00
joel.poyet cf917c1ed5 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
2026-06-28 09:09:27 +02:00
joel.poyet e83c70701a chore(release): HealthChat 1.1.1 2026-06-26 17:45:22 +02:00
joel.poyet f6925dbd77 feat(desktop): build signed Windows + macOS apps in healthchat pipeline
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
2026-06-26 15:10:38 +02:00
joel.poyet eee3275f0c feat(desktop): use healthchat:// deep-link scheme instead of element://
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.
2026-06-23 15:09:30 +02:00
joel.poyet 05705a8983 test: refresh snapshots after rebase onto v1.12.21
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.
2026-06-22 17:16:57 +02:00
joel.poyet f64923ea1a chore(theme): darken secondary text and icon colors for contrast 2026-06-22 17:10:57 +02:00
joel.poyet 3a6a93edfe refactor(profile): drop extended-profile editing, keep right-panel display
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
2026-06-22 17:08:58 +02:00
joel.poyet 098d5b0ca2 chore: regenerate _components.pcss with extended profile styles 2026-06-22 17:07:24 +02:00
joel.poyet d72b973d01 test: adapt unit tests to HealthChat fork customizations 2026-06-22 17:07:24 +02:00
joel.poyet 2685821bdc test: rebrand remaining Element references to HealthChat 2026-06-22 17:06:16 +02:00
joel.poyet 17a89cb12d fix(settings): default to first rendered tab when Account disabled 2026-06-22 17:06:16 +02:00
joel.poyet 5f09f58a82 ci: add HealthChat desktop build pipeline 2026-06-22 17:06:16 +02:00
joel.poyet 2fb8a2c92c test: rebrand hardcoded 'Element' test expectations to 'HealthChat'
Update brand-string assertions and snapshots that asserted the upstream
'Element' brand to the HealthChat brand:
- positionFailureMessage, Map, LocationShareMenu (geolocation messages)
- SupportedBrowser, init (incompatible-browser title + snapshot)
- ElectronPlatform (device display name 'HealthChat Desktop: <os>')
- RoomView (third-party invite waiting view)
- MatrixChat soft-logout snapshot

Leaves non-brand failures untouched (e.g. MatrixChat multi-tab lockout,
extended-profile mock gaps).
2026-06-22 17:06:16 +02:00
joel.poyet facf01beb2 feat: re-enable Security shortcut in the user menu
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.
2026-06-22 17:06:16 +02:00
joel.poyet 29beb42819 feat: re-enable 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.
2026-06-22 17:06:16 +02:00
joel.poyet d5b6aa742e revert: drop in-tree WidgetPermissionCustomisations (handled by plugin)
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.
2026-06-22 17:06:16 +02:00
joel.poyet acdbc4b63d test: regenerate snapshots for HealthChat branding after rebase
Re-baselined against rebased code: HealthChat brand string, PNG
auth-header logo, hidden Security item in the user menu, restructured
settings dialog tabs.
2026-06-22 17:06:16 +02:00
joel.poyet 67663d394a fix: adapt to pnpm monorepo after rebase onto master
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).
2026-06-22 17:05:54 +02:00
joel.poyet 1ed4511211 chore: optimize element call translations 2026-06-22 17:05:54 +02:00
joel.poyet 559f7e1977 chore: update branding logos and home page sizing 2026-06-22 17:05:54 +02:00
Joël Poyet ce840a9ca5 feat(settings): hide Account tab for HealthChat 2026-06-22 17:05:54 +02:00