Commit Graph

69519 Commits

Author SHA1 Message Date
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 healthchat-v1.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 healthchat-v1.2.5 2026-07-01 08:42:57 +02:00
joel.poyet d2aa9ef7a0 chore(release): HealthChat 1.2.4 healthchat-v1.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 healthchat-v1.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 healthchat-v1.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 205c49c010 ci: drop nightly cron schedules in HealthChat fork
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.
2026-06-30 16:51:57 +02:00
joel.poyet d97198da4b chore(release): HealthChat 1.2.1 healthchat-v1.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 healthchat-v1.2.0 2026-06-28 10:05:02 +02:00
joel.poyet e581504ebe Merge pull request #5 from Novaloop-AG/feat/desktop-auto-update
feat(desktop): wire up HealthChat auto-update + public installer hosting
2026-06-28 10:02:55 +02:00
joel.poyet 15161b6ddf ci: gate storybook build workflow on fork
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.
2026-06-28 09:58:07 +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 bd6241ad9d ci: gate element-hq-only workflows on fork
Skip upstream deploy/publish/release, org automation, translations and
PR previews via a repo guard; allow PRs to release/* base branches.
2026-06-28 09:44:07 +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
healthchat-v1.1.2
2026-06-28 09:09:27 +02:00
joel.poyet e83c70701a chore(release): HealthChat 1.1.1 healthchat-v1.1.1 2026-06-26 17:45:22 +02:00
joel.poyet 68b96e57f1 docs: refine CLAUDE.md command and architecture notes 2026-06-26 17:44:46 +02:00
joel.poyet b8cf40ff5a ci(desktop): enforce app version matches release tag 2026-06-26 16:41:28 +02:00
joel.poyet d53b20e2a8 fix(ci): grant contents:read so desktop builds can clone the internal fork
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.
2026-06-26 15:29:22 +02:00
joel.poyet 15d870fc1f fix(ci): read pnpm version from devEngines in healthchat desktop webapp 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.
2026-06-26 15:16:16 +02:00
joel.poyet 0ecf6b8531 docs(changelog): add HealthChat 1.1.0 release notes healthchat-v1.1.0 2026-06-26 15:13:17 +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 f0c6c17e4a docs: rewrite CLAUDE.md for pnpm/Nx monorepo 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 53ee5a7e07 chore(release): healthchat v1.0.1
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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 8be6bc6e08 chore(release): set up tag-driven HealthChat release pipeline
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.
2026-06-22 17:05:54 +02:00