Valere
0dca5835f6
Route Element Call's DOM decoration through an injectable root element
...
Element Call writes its theme classes, background and layout attributes
straight onto document.body, and portals its modals there too. That is
only correct while it owns the page; embedded in a host application it
has to confine itself to the container it was mounted into.
Add a RootElementContext, defaulting to document.body so that the
standalone and widget builds are unaffected, and point the theme classes,
data-background, no-scroll-body and the fullscreen target at it.
Give the Modal and Toast portals an explicit container as well. Radix and
vaul both default to document.body, so without this every modal, drawer
and toast would render outside the container and lose the theme and
platform attributes set on it.
No functional change: the root element is document.body until an embedder
provides otherwise.
2026-09-01 18:54:27 +02:00
Valere
0a8c24bca8
Allow the config to be supplied by an embedder
...
Config.init() derives the location of config.json from window.location,
which only makes sense while Element Call owns the page. When it is
embedded in a host application the host owns the configuration, so add
Config.initWith() to accept it directly.
Share the defaulting and validation between both paths via resolveConfig(),
so that an injected config behaves identically to a fetched one, and mark
initialization as complete so that the init() calls already on the startup
path resolve immediately instead of fetching over the top of it.
initDefault() becomes initWith({}), which also stops it handing out a
shallow copy of DEFAULT_CONFIG whose nested objects were shared with the
module-level default.
2026-09-01 18:40:53 +02:00
Valere
7485b3d71f
Use a dedicated i18next instance instead of the global singleton
...
Element Call configured the global i18next singleton. When Element Call
runs embedded in a host application rather than as its own page, that
singleton belongs to the host, so configuring it would clobber the
host's translations.
Create Element Call's own instance in utils/i18n.ts, configure it in the
initializer, and pass it to components via <I18nextProvider>. Drop
.use(initReactI18next) from the initializer: it registers the instance
as react-i18next's global default, which is the global we are trying to
avoid. Tests and stories keep using it, so that they do not need to wrap
every render in a provider.
Two modules imported `t` directly from "i18next" and so were bound to
the global instance: utils/errors.ts now calls i18n.t() on the instance
(reached at call time, since i18next only assigns `t` during init), and
QrCode uses useTranslation() like every other component.
No functional change.
2026-09-01 18:30:05 +02:00
Valere
9d5ca297e3
Remove well-known discovery
2026-08-05 16:12:41 +02:00
Valere
e1bc4a096b
fix: FF mirrored self video lose rounding
2026-07-31 12:20:32 +02:00
Valere
ffb6b0a5f6
Use rtc transport action with widgets
2026-07-30 10:43:09 +02:00
Valere
53ae78c609
break ratio when tile bigger than screen
2026-07-27 17:25:56 +02:00
Valere
b046c4b569
fix: Safari preview tile no video is 16px wide only
2026-07-27 15:43:35 +02:00
Valere
41d0933d4d
playwright: New toast
2026-06-25 15:55:08 +02:00
Valere
dc5b541b21
fix(voice): Default to earpiece for voice only call
2026-06-25 13:10:27 +02:00
Valere
62a3ec8319
review: cleanup removed redundant default properties
2026-06-05 12:50:25 +02:00
Valere
a430e87104
review: add test for busy behavior for Mic and Video buttons
2026-06-05 12:48:04 +02:00
Valere
acc5a440c7
review: remove unneeded early return
2026-06-05 12:35:21 +02:00
Valere
dc03d9b358
fix: Initial unmute is reverted
2026-06-05 10:29:36 +02:00
Valere
55b2537129
fixup: Update snapshot with button busy state
2026-06-04 19:14:12 +02:00
Valere
b5b238ffd3
storybook: Add storybook for audio/video busy
2026-06-04 19:13:27 +02:00
Valere
4606373e5b
feat(mute): add syncing state and disable toggle during async mute
2026-06-04 18:55:31 +02:00
Valere
4353f09e54
fixup snapshots
2026-06-04 15:48:30 +02:00
Valere
c05c523182
fixup: ensure dynamic keys are extracted by i18n parser
2026-06-04 15:30:59 +02:00
Valere
e7d37f87bb
feat(errors): Report livekit as such rather than like unknown errors
2026-06-04 11:54:42 +02:00
Valere
3799ea2b4e
fixup: Missing translation
2026-05-28 14:43:42 +02:00
Valere
2bd16beccf
Merge branch 'livekit' into valere/improve_error_message
2026-05-28 14:27:17 +02:00
Valere
6777adac54
Merge branch 'livekit' into valere/devx/run_dev_on_phone
2026-05-28 13:17:22 +02:00
Valere
1fafc3b1ba
Merge branch 'livekit' into valere/devx/livekit_logs
2026-05-28 12:45:39 +02:00
Valere
2928e34ee2
test: use toHaveCount instead of count()).toBe
2026-05-28 11:56:29 +02:00
Valere
d98e800077
bump playwright
...
update playwright container image
2026-05-28 11:32:18 +02:00
Valere
8b86c1914d
bump playwright
...
update playwright container image
2026-05-28 11:31:38 +02:00
Valere
e815277fa2
touch commit to unbock gh
2026-05-28 08:59:05 +02:00
Valere
810e263cbe
review: better doc
2026-05-28 08:51:00 +02:00
Valere
70a0914017
eslint
2026-05-27 14:18:34 +02:00
Valere
8011f2579c
test: Add test for new option
...
review: Remove uneeed {" "}
2026-05-27 14:03:31 +02:00
Valere
187665748b
Merge branch 'livekit' into valere/devx/livekit_logs
2026-05-27 11:46:38 +02:00
Valere
265781ea5e
fix(regression): control buttons should be hidden on mobile PIP
2026-05-20 13:08:51 +02:00
Valere
1865110492
reproduce bug internal #578
...
Regression: Controls are shown in Mobile PIP
2026-05-20 13:08:11 +02:00
Valere
dfbb6c770e
devx: Allow to run local dev EC on mobile in same wifi
2026-05-18 13:25:56 +02:00
Valere
408a38a7d6
bugfix: When starting muted, have to click twice to unmute in call
2026-05-12 15:46:38 +02:00
Valere
f1b61a9f1c
update developer settings tab snapshot
2026-05-11 18:07:40 +02:00
Valere
2ac221661b
review: Use Initializer instead of creating a component
2026-05-11 17:43:34 +02:00
Valere
25ac565f8b
Merge branch 'livekit' into valere/devx/livekit_logs
2026-05-11 17:28:07 +02:00
Valere
d0bfef0682
Improve error messages for sfu auth problems
2026-05-07 16:21:30 +02:00
Valere
e06f717156
playwrigth: make dismiss toast more reliable
2026-05-07 11:23:59 +02:00
Valere
09fc38930f
fixup
2026-04-30 17:07:13 +02:00
Valere
e79255e23b
fix accept call with latest web
2026-04-30 16:47:52 +02:00
Valere
3bc8c0590d
dev-tool: Add option to enable extended livekit logs
2026-04-24 18:27:05 +02:00
Valere
2f2bdfce5b
fixup: wrong skip
2026-04-24 12:32:41 +02:00
Valere
82b7e243eb
This test does not need to run on both FF and chrome
2026-04-24 12:10:24 +02:00
Valere
0d5c71bb4e
fixup
2026-04-24 11:29:34 +02:00
Valere
0864b7d828
Merge branch 'livekit' into valere/devx/use_synapse_api_for_playwright
2026-04-24 11:25:10 +02:00
Valere
ca305b9da1
fix: wrong usage of poll
2026-04-24 11:24:00 +02:00
Valere
6317a06472
review: quick cleaning
2026-04-24 11:21:14 +02:00
Valere
3699138eaa
Dismiss the new invite confirmation modal
2026-04-23 15:36:46 +02:00
Valere
a7788a2bfa
Dismiss the new invite confirmation modal
2026-04-23 11:33:52 +02:00
Valere
d9dc61a49d
mark test as slow
2026-04-23 09:50:01 +02:00
Valere
84ac0cc47d
mark test as slow
2026-04-22 20:56:42 +02:00
Valere
e5c11eee13
fix bad assert for reconnect
2026-04-22 20:27:30 +02:00
Valere
6edc4084c6
adjust timeouts
2026-04-22 20:16:59 +02:00
Valere
6d70247acb
this test should be slow (taking more than 30s)
2026-04-22 20:13:00 +02:00
Valere
21b78d6dad
test something in the reconnect bug
2026-04-22 19:30:15 +02:00
Valere
4d8e4c66eb
adjust time out
2026-04-22 19:30:02 +02:00
Valere
78e7adc4c6
remove redundant toBeVisible before click
2026-04-22 18:49:51 +02:00
Valere
5c4d6d0317
turn an assertion as retryable with expect.poll
2026-04-22 18:06:24 +02:00
Valere
1b9682869a
adjust timeouts
2026-04-22 17:25:14 +02:00
Valere
854cfdfe1b
adjust timeouts
2026-04-22 16:51:04 +02:00
Valere
f355aa1ed7
adjust timeout
2026-04-22 15:40:06 +02:00
Valere
879526ce5e
adjust flaky timeouts
2026-04-22 15:17:40 +02:00
Valere
5dd1c76d1c
increase timeout of flaky test
2026-04-22 14:42:35 +02:00
Valere
f9dc4d9b82
Update a tohaveCount() timeout that made a test flak 2 times
2026-04-22 14:14:54 +02:00
Valere
2d9802b6f5
Merge branch 'livekit' into valere/devx/use_synapse_api_for_playwright
2026-04-22 12:10:28 +02:00
Valere
55de3fd216
tests optimizations
2026-04-22 09:03:57 +02:00
Valere
0e2d2c6f72
try paralelize registrations?
2026-04-21 18:36:40 +02:00
Valere
754a42ffd1
increase default timeout on huddle test
2026-04-21 18:14:51 +02:00
Valere
701edd9522
fixup lint
2026-04-21 17:54:10 +02:00
Valere
0127040a8c
Remove slow? no registration anymore
2026-04-21 17:51:42 +02:00
Valere
24e721f572
fix web stuck problem! go to / and not to #/login
2026-04-21 17:51:42 +02:00
Valere
4211405e7b
Use synapse API to register instead doing via UI
2026-04-21 17:51:42 +02:00
Valere
84ed5943ea
fix: using vars. instead of secrets. for NETLIFY_SITE_ID
2026-04-21 11:55:03 +02:00
Valere
8b4762fb29
review: use role locator instead of testID
2026-04-17 17:29:35 +02:00
Valere
eeafd81d31
test: add a screenshare test
2026-04-17 14:58:10 +02:00
Valere
29ba0bdf13
make zizmore happy with exact version in comment
2026-04-15 14:13:58 +02:00
Valere
0350f57275
fixup: Looks like the upload & download action used are not compatible
2026-04-15 14:01:26 +02:00
Valere
7871877863
bump livekit server version
2026-04-15 11:27:13 +02:00
Valere
68518e323e
Skip NotAllowed test until livekit allows to detect that again
2026-04-15 10:28:19 +02:00
Valere
07e3dc1ca4
Update livekit to 2.18.1
...
Fix mocking in a test
Also add "skipLibCheck": true in tsconfig
2026-04-13 10:02:54 +02:00
Valere
dbeae383eb
update livekit again
2026-04-13 09:35:08 +02:00
Valere
208184909e
fixup: prettier
2026-04-10 10:08:57 +02:00
Valere
aea5815dab
Ensure we don't publish to any transport until our own transport is ok
2026-04-10 09:24:34 +02:00
Valere
0f14da7fbb
devx: Use new action to netlify the playwright report as EW is doing
2026-04-09 16:33:26 +02:00
Valere
40dacd523b
review: Move the all advertised/active down to the LocalMember
...
And let the local member use it properly to send membership event and publish media
2026-04-09 15:22:10 +02:00
Valere
08006d640a
fix: Ensure to publish on the correct transport
2026-04-08 11:10:27 +02:00
Valere
58d377c3f7
test: Add publishing bug reproduction test
2026-04-08 11:06:05 +02:00
Valere
9fe35ba822
Add back the patch to avoid reconnect glitch
2026-04-03 19:08:52 +02:00
Valere
a89d231858
review change comment to proper doc
2026-04-03 18:51:14 +02:00
Valere
6d99450d81
review: Remove un-needed initial value for behavior
2026-04-03 18:46:49 +02:00
Valere
3d286e8ab4
revert workaround for widget permission dialog, not needed anymore
2026-04-03 09:45:59 +02:00
Valere
b1f84a34a8
remove dead commented code
2026-04-02 20:42:09 +02:00
Valere
95eb8943af
fixup test: Errors are now wrapped in user readable error
...
and proper fetchmock for doNetworkOperationWithRetry
2026-04-02 19:05:24 +02:00
Valere
b5be123953
fix uncaught errors in tests
2026-04-02 16:53:51 +02:00
Valere
90bfaecd13
refact: step 2 - break down old membership local transport logic
2026-04-02 16:53:51 +02:00
Valere
4cecdda955
refact: step 1 - extract oldest membership transport into new function
2026-04-02 16:53:51 +02:00
Valere
869bab8253
fixup test since usage of doNetworkOperationWithRetry
...
doNetworkOperationWithRetry requires to properly mock the get_token endpoint, whereas retryNetworkOperation didn't require it.
2026-04-02 16:53:51 +02:00