@@ -45,30 +45,35 @@ organize the flow of the meeting.
4545✅ ** Emoji Reactions** – Users can react with emojis 👍️ 🎉 👏 🤘, adding
4646engagement and interactivity to the conversation.
4747
48- ## 🚀 Deployment Options
48+ ## 🚀 Deployment & Packaging Options
4949
50- Element Call can be packaged in two ways:
50+ Element Call is developed using the
51+ [ Matrix js-sdk] ( https://github.com/matrix-org/matrix-js-sdk ) with Matroska mode.
52+ This allows the app to run either as a Standalone App directly connected to a
53+ homeserver with login interfaces or it can be used as a widget within a Matrix
54+ client.
5155
52- ** Full Package** – Supports both ** Standalone** and ** Widget** mode. Hosted as
53- a static web page and accessed via a URL when used as a widget.
56+ ### 🖥️ Standalone Mode
5457
55- ** Embedded Package ** – Designed for ** Widget mode ** only. Bundled with a
56- messenger app for seamless integration. This is the recommended method for
57- embedding Element Call into a messenger app.
58+ < p align = " center " >
59+ < img src = " ./docs/element_call_standalone.drawio.png " alt = " Element Call in Standalone Mode " >
60+ </ p >
5861
59- See the [ here] ( ./docs/embedded-standalone.md ) for more information on the packages.
60-
61- ### Standalone mode
62-
63- ![ Element Call in Standalone Mode] ( ./docs/element_call_standalone.drawio.png )
64-
65- In Standalone mode Element Call operates as an independent, full-featured video
66- conferencing web application, allowing users to join or host calls without
62+ In Standalone mode, Element Call operates as an independent, full-featured video
63+ conferencing web application, enabling users to join or host calls without
6764requiring a separate Matrix client.
6865
69- ### Widget mode embedded in Messenger Apps
66+ ### 📲 In-App Calling (Widget Mode in Messenger Apps)
67+
68+ When used as a widget 🧩, Element Call is solely responsible on the core calling
69+ functionality (MatrixRTC). Authentication, event handling, and room state
70+ updates (via the Client-Server API) are handled by the hosting client.
71+ Communication between Element Call and the client is managed through the widget
72+ API.
7073
71- ![ Element Call in Widget Mode] ( ./docs/element_call_widget.drawio.png )
74+ <p align =" center " >
75+ <img src =" ./docs/element_call_widget.drawio.png " alt =" Element Call in Widget Mode " >
76+ </p >
7277
7378Element Call can be embedded as a widget inside apps like
7479[ ** Element Web** ] ( https://github.com/element-hq/element-web ) or ** Element X
@@ -80,6 +85,30 @@ and voice calls within Matrix rooms.
8085> [ !IMPORTANT]
8186> Embedded packaging is recommended for Element Call in widget mode!
8287
88+ ### 📦 Element Call Packaging
89+
90+ Element Call offers two packaging options: one for standalone or widget
91+ deployment, and another for seamless widget-based integration into messenger
92+ apps. Below is an overview of each option.
93+
94+ ** Full Package** – Supports both ** Standalone** and ** Widget** mode. It is
95+ hosted as a static web page and can be accessed via a URL when used as a widget.
96+
97+ <p align =" center " >
98+ <img src =" ./docs/full_package.drawio.png " alt =" Element Call Full Package " >
99+ </p >
100+
101+ ** Embedded Package** – Designed specifically for ** Widget mode** only. It is
102+ bundled with a messenger app for seamless integration and this is the
103+ recommended method for embedding Element Call.
104+
105+ <p align =" center " >
106+ <img src =" ./docs/embedded_package.drawio.png " alt =" Element Call Embedded Package " >
107+ </p >
108+
109+ For more details on the packages, see the
110+ [ Embedded vs. Standalone Guide] ( ./docs/embedded-standalone.md ) .
111+
83112## 🛠️ Self-Hosting
84113
85114For operating and deploying Element Call on your own server, refer to the
@@ -91,13 +120,15 @@ For proper Element Call operation each site deployment needs a MatrixRTC backend
91120setup as outlined in the [ Self-Hosting] ( #self-hosting ) . A typical federated site
92121deployment for three different sites A, B and C is depicted below.
93122
94- ![ Element Call federated setup] ( ./docs/Federated_Setup.drawio.png )
123+ <p align =" center " >
124+ <img src =" ./docs/Federated_Setup.drawio.png " alt =" Element Call federated setup " >
125+ </p >
95126
96127### Backend Discovery
97128
98129MatrixRTC backend (according to
99- [ MSC4143] ( https://github.com/matrix-org/matrix-spec-proposals/pull/4143 ) )
100- is announced by the Matrix site's ` .well-known/matrix/client ` file and discovered
130+ [ MSC4143] ( https://github.com/matrix-org/matrix-spec-proposals/pull/4143 ) ) is
131+ announced by the Matrix site's ` .well-known/matrix/client ` file and discovered
101132via the ` org.matrix.msc4143.rtc_foci ` key, e.g.:
102133
103134``` json
@@ -130,8 +161,11 @@ points them to a Matrix LiveKit JWT Auth Service via `livekit_service_url`.
130161The example below illustrates how backend selection works across ** Matrix
131162federation** , using the setup from sites A, B, and C. It demonstrates backend
132163selection for ** Matrix rooms 123 and 456** , which include users from different
133- homeservers.
134- ![ Element Call SFU selection over Matrix federation] ( ./docs/SFU_selection.drawio.png )
164+ homeservers.
165+
166+ <p align =" center " >
167+ <img src =" ./docs/SFU_selection.drawio.png " alt =" Element Call SFU selection over Matrix federation " >
168+ </p >
135169
136170## 🌍 Translation
137171
@@ -198,21 +232,23 @@ yarn backend
198232
199233### Playwright tests
200234
201- Our Playwright tests run automatically as part of our CI along with our other tests,
202- on every pull request.
235+ Our Playwright tests run automatically as part of our CI along with our other
236+ tests, on every pull request.
203237
204- You may need to follow instructions to set up your development environment for running
205- Playwright by following < https://playwright.dev/docs/browsers#install-browsers > and
238+ You may need to follow instructions to set up your development environment for
239+ running Playwright by following
240+ < https://playwright.dev/docs/browsers#install-browsers > and
206241< https://playwright.dev/docs/browsers#install-system-dependencies > .
207242
208- However the Playwright tests are run, an element-call instance must be running on
209- https://localhost:3000 (this is configured in ` playwright.config.ts ` ) - this is what will
210- be tested.
243+ However the Playwright tests are run, an element-call instance must be running
244+ on https://localhost:3000 (this is configured in ` playwright.config.ts ` ) - this
245+ is what will be tested.
211246
212247The local backend environment should be running for the test to work:
213248` yarn backend `
214249
215- There are a few different ways to run the tests yourself. The simplest is to run:
250+ There are a few different ways to run the tests yourself. The simplest is to
251+ run:
216252
217253``` shell
218254yarn run test:playwright
@@ -237,8 +273,8 @@ to test visibility, text content and clicking.
237273
238274##### Investigate a failed test from the CI
239275
240- In the failed action page, click on the failed job, then scroll down to the ` upload-artifact ` step.
241- You will find a link to download the zip report, as per:
276+ In the failed action page, click on the failed job, then scroll down to the
277+ ` upload-artifact ` step. You will find a link to download the zip report, as per:
242278
243279```
244280Artifact playwright-report has been successfully uploaded! Final size is 1360358 bytes. Artifact ID is 2746265841
@@ -252,7 +288,8 @@ npx playwright show-report ~/Downloads/playwright-report/
252288```
253289
254290Under the failed test there is a small icon looking like "3 columns" (next to
255- the test name file name), click on it to see the live screenshots/console output.
291+ the test name file name), click on it to see the live screenshots/console
292+ output.
256293
257294### Test Coverage
258295
0 commit comments