Commit Graph

254 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 1697be5239 feat(settings): re-enable slim Help & About tab 2026-07-08 18:25:50 +02:00
joel.poyet ead9847d76 chore(web): point help_url at healthchat.ch 2026-07-01 07:20:31 +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 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 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 17a89cb12d fix(settings): default to first rendered tab when Account disabled 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 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
Joël Poyet ce840a9ca5 feat(settings): hide Account tab for HealthChat 2026-06-22 17:05:54 +02:00
Joël Poyet 9a9007d554 feat(settings): prepend module tabs in UserSettingsDialog 2026-06-22 17:05:54 +02:00
joel.poyet 3f63d4e66d refactor(branding): use PNG logo instead of SVG 2026-06-22 17:05:54 +02:00
Joël Poyet 48bd8e46ac feat(spaces): move module items below home in panel 2026-06-22 17:05:54 +02:00
joel.poyet 958539dc83 fix: disable security setting (confusing) 2026-06-22 17:05:54 +02:00
joel.poyet df2d56073c fix: fix branding issues, mobile app urls etc. 2026-06-22 17:05:54 +02:00
joel.poyet f078c65017 fix: update imports after rebase from master
- 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>
2026-06-22 17:05:54 +02:00
joel.poyet b7a94af3f9 fix: make sure we don't allow to minimize or revoke api.healthchat.ch widgets 2026-06-22 17:05:54 +02:00
joel.poyet 25fe9e1f64 feat: do not prompt for api.healthchat.ch widgets 2026-06-22 17:05:54 +02:00
Joël Poyet eb6be2f289 fix: fix sso redirect issue 2026-06-22 17:05:54 +02:00
joel.poyet ac88363425 fix: re-enable session management 2026-06-22 17:05:54 +02:00
Joël Poyet 83e2259cd3 fix: do not open room settings when on direct chats 2026-06-22 17:05:54 +02:00
joel.poyet b4db08a1ae feat: show profile pane when clicked on direct chat room title 2026-06-22 17:05:54 +02:00
Joël Poyet 6cc9c3cc4c feat: remove unnecessary tabs 2026-06-22 17:05:54 +02:00
Joël Poyet d395fd60d4 fix: disable mobile guide 2026-06-22 17:05:54 +02:00
Joël Poyet d5f85dd8ea Revert "fix: disable heimserver info on login page"
This reverts commit 316d335177.
2026-06-22 17:05:54 +02:00
Joël Poyet 1dbb2627bc fix: disable heimserver info on login page 2026-06-22 17:05:54 +02:00
joel.poyet 8d66b387c1 feat: improve profile view with additional fields and validation 2026-06-22 17:05:54 +02:00
Joël Poyet 047a001925 feat: add view to see custom user profile fields 2026-06-22 17:05:54 +02:00
Joël Poyet f0490456a9 fix: set layout 'Nachrichtenblasen' as default 2026-06-22 17:05:54 +02:00
joel.poyet 0f6300845d feat: add ability to edit custom user attributes 2026-06-22 17:05:54 +02:00
R Midhun Suresh 86c7a9b512 Recreate resizer view-model when switching to/from multiroom view (#33792)
(cherry picked from commit a2a9800393b65e38596f2e8dd72f87a415cf6fb7)
2026-06-09 12:43:29 +00:00
David Langley 2c6461db17 Remove resizer from fullscreen modules(like multiroom) (#33684)
* Fix multiroom with new resizer

* Fix multiroom with new resizer

* Add jest test

* Add if/else and comments
2026-06-02 14:10:46 +00:00
Andy Balaam 65b0ac8c28 Support MSC4287 m.key_backup stable prefix as well as the unstable prefix (#33034)
* Support MSC4287 m.key_backup stable prefix as well as the unstable prefix

* Update comments to avoid talking about EX since this now applies more widely

* Make comments about m.key_backup more helpful

* Improve comment on recheckBackupDisabled

* Explicitly say backup is disabled only if enabled is actually set to false
2026-06-02 10:25:03 +00:00
Zack 1c04814c2b Refactor EventPreview to shared MVVM (#33646)
* Refactor EventPreview to shared MVVM

* Fix EventPreviewView export formatting

* Snapshots images for stories

* Deduplicate event preview formatting

* Handle event preview update failures

* Coalesce event preview updates

* Wait for event preview test expectations
2026-06-02 08:36:28 +00:00
Hubert Chathi 2bd5224dbe Apply new design and display logic to logout confirmation dialog (#33426)
* apply new design to logout dialog

* factor out check for other verified devices

* only show recovery warning when user has no other verified devices

* fix playwright tests

* tweak style to better match design

* another playwright test fix

* fix playwright

* Look for the remove button within the dialog

* Use testid to locate 'Remove this device' button

* move rendering to sub-components, rather than embedded functions

* use <Type> element

* use <Text> for the <a> element

---------

Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
2026-06-02 03:08:18 +00:00
RoyS 210421ac47 fix: use configured brand name in JSON and PlainText chat export filenames (#33680)
* fix: use configured brand name in JSON and PlainText chat export filenames

The JSON and PlainText chat export functions were using the hardcoded
default 'matrix' as the brand name in filenames, while the HTML/ZIP
export correctly used the configured brand (e.g., 'Element').

This made the filenames inconsistent:
- ZIP: Element - Room - Chat Export - timestamp.zip
- JSON: matrix - Room - Chat Export - timestamp.json

Now both JSON and PlainText exports pass SdkConfig.get().brand to
makeFileNameNoExtension(), matching the behavior of the base Exporter
class used by HTML exports.

Fixes #32853

Signed-off-by: RoySerbi <roy676564@gmail.com>

* refactor: read brand from SdkConfig inside makeFileNameNoExtension

Address review feedback from @t3chguy: the brand parameter on
makeFileNameNoExtension was effectively dead (all three call sites passed
SdkConfig.get().brand and the 'matrix' default was unreachable).

- Exporter.makeFileNameNoExtension now reads SdkConfig.get().brand directly
- All call sites (Exporter, JSONExport, PlainTextExport) simplified to no-arg
- Drop now-unused SdkConfig imports in JSONExport and PlainTextExport

Tests are unchanged: they already mock SdkConfig to return 'Element', so the
existing 'Element-branded destination file name' snapshots remain valid.

---------

Signed-off-by: RoySerbi <roy676564@gmail.com>
2026-06-01 13:44:28 +00:00
rbondesson 531fc76726 Refactor EventTile using the MVVM pattern - #7b (#33668)
* Normalize Leaf Adapter Pattern

* Extract simple EventTile adapters

* Move simple EventTile adapter VM ownership to EventTileViewModel

* Release listener-owning EventTile child VMs on adapter unmount

* Extract stateful EventTile adapters

* Move action bar VM ownership to EventTileViewModel

* Move reactions row VM ownership into EventTileViewModel

* Extract EventTile receipt rendering

* Extract EventTile sender identity rendering

* Add missing TSDoc on adapters
2026-06-01 13:36:37 +00:00
rbondesson fc23fcad47 Make shared-components tiles render identically outside Element Web - #4 (#33622)
* Use shared MessageTimestampView in edit history

* Move timestamp typography into shared component

* Updated snapshots

* Update comments after clean up

* Fixed sonar issue and added tests for improved coverage

* Fix Prettier issue

* Fix font-size on timestamps and toolbar button sizing

* Updated snapshots

* Updated Storybook screenshots

* Updated screenshots

* Clean up app/web unused/redundant styling for disambiguated profile

* Fix merge error

* Fixes after merge

* Fixes after merge
2026-06-01 05:47:59 +00:00
rbondesson 7ff2bc3e40 Extracting RovingGridIndex from EmojiPicker and move to shared components (#33650)
* Add shared roving grid navigation provider

* Add RovingTabIndex stories and update RovingGridIndex stories

* Handle multiple toolbars/grids in on roving group

* Refactor EmojiPicker to use shared roving grid navigation

* Exclude the roving stories from playwright tests

* Fix Sonar issues
2026-05-29 08:54:58 +00:00
renovate[bot] 1fb6b778e7 Update pnpm to v11 (#33573)
* Update pnpm to v11

* Handle breaking changes

* Attach pnpm hash

* Remove redundant packageManager fields

* Make lint-staged happy

* Lockfile pnpm itself too

* Update pnpm/action-setup for better v11 compatibility

* Specify types to make tsc happier

* Fix permissions

* Check ulimit

* Specify minimumReleaseAgeExclude

* Run desktop tests

* Revert "Run desktop tests"

This reverts commit 911eb0ba2e9237d4b28e3bdaaf8f10ba6f22e827.

* Revert "Check ulimit"

This reverts commit f09eb59d715ba30a2e7fc5dba17dde092bd9bf17.

* Reapply "Check ulimit"

This reverts commit 83227c19ff5d07db91b6586f407f56870b00c041.

* Run desktop tests

* Switch nodeLinker & remove app-builder-lib patch

* Fix webpack.config.ts

* Fix .stylelintrc.cjs

* Fix `events` package

* Makes types happier

* Make knip happy

* Fix hak build

* Make jest happy

* Make pnpm-link happy

* Remove dead file

* Run playwright tests

* Fix linux hak permissions in ci

* Test

* Remove ulimit checks

* Disable skip

* Update nx

* Tweak line endings

* Update screenshot

* Iterate

* Webpack fallback `events`

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2026-05-29 08:26:59 +00:00
ElementRobot 1fb6784c1a [create-pull-request] automated change (#33657)
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
2026-05-29 08:14:34 +00:00
rbondesson 3aa3678c2d Refactor EventTile using the MVVM pattern - #7a (#33640)
* Make EventTileViewModel an owned root VM

* Move timestamp sub-VMs under EventTileViewModel

* Move thread-list action bar VM under EventTileViewModel

* Clean up for improved readability

* Clean up to avoid duplicate EventTile render derivations

* Avoid mutating EventTileViewModel during render

* Move EventTile child VM syncing into adapters

* Replace timestamp VM field setters with batched setProps

* Component wrappers at the end of the file

* Lazy-create EventTile child view models
2026-05-29 05:56:31 +00:00
Zack 3bb9cb2234 Refactor ThreadSummary to MVVM (#33603)
* Refactor ThreadSummary to MVVM

* Stories Snapshot images

* Add ThreadSummary ViewModel coverage

* Fix ThreadSummary preview avatar rendering

* Remove ThreadSummary classnames helper

* Fix Prettier

* Match ThreadMessagePreview typography

* Move folder to correct path and fix storybook path

* Catch ThreadSummary preview refresh errors

* Update snapshot images + fix prettier

* Fix ThreadSummary classNames import

* Update Images

* Remove wrong path
2026-05-28 08:57:55 +00:00
Zack 34c388f760 Refactor E2eMessageSharedIcon to MVVM (#33544)
* Refactor E2eMessageSharedIcon to MVVM

* FIx Prettier and i18n

* Fix prettier

* Remove legacy E2eMessageSharedIcon component

* Cover E2eMessageSharedIcon MVVM updates

* Fix prettier

* Update apps/web/src/components/views/rooms/EventTile.tsx

Co-authored-by: Florian Duros <florian.duros@ormaz.fr>

* Skip unknown E2E shared icon visual

* Track E2E shared icon listener disposal

* Remove E2E shared icon room state guard

* Remove E2E shared icon client resync

* Use built-in disposables for shared icon VM

* Update shared icon VM without React key

---------

Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
2026-05-28 08:01:39 +00:00
rbondesson 6c0f9960b5 Refactor EventTile using the MVVM pattern - #6 (#33621)
* Thin EventTile render state wiring

* Move EventTile E2E verification into a view model

* Derive EventTile E2E padlock slots in view model

* Derive EventTile timestamp slots in render state

* Derive EventTile footer slots in render state

* Fix SonarCloud issues
2026-05-27 11:34:56 +00:00
Florian Duros 1ef544c5c6 Room list: add analytic events (#33625)
* chore: update analytics

* feat: add new analytics
2026-05-27 09:50:22 +00:00
Florian Duros abe383d996 Room list: improve custom sections in Spaces (#33523)
* feat: display empty custom sections in the space where they were created

* test: update tests

* fix: room can't be drag in to a section if a section is created before

* fix: re-render issue when section is created
2026-05-27 09:43:59 +00:00