Compare commits

..
Author SHA1 Message Date
Robin dde07f6d54 Ellipsise app bar text on mobile
We already had text-overflow: ellipsis set on the title and subtitle elements of the app bar, but due to an annoying quirk of place-items: center, this had no effect. place-items: center stretch seems to give the text elements the right size constraints.
2026-10-26 13:25:13 +01:00
Johannes Marbach de05b82cfe Merge pull request #4369 from element-hq/renovate/npm-storybook-vulnerability
Update dependency storybook to v10.6.2 [SECURITY]
2026-10-26 10:16:21 +01:00
Johannes Marbach b0e985c014 Update related storybook dependencies 2026-10-26 09:57:30 +01:00
Johannes Marbach 33368ab8da Merge pull request #4361 from element-hq/renovate/compound
Update dependency @vector-im/compound-design-tokens to v11.3.1
2026-10-26 09:49:54 +01:00
Johannes Marbach d85a4a1929 Merge pull request #4360 from element-hq/renovate/livekit-client
Update dependency livekit-client to v2.23.0
2026-10-26 09:48:08 +01:00
renovate[bot] a6930c5aa9 Update dependency storybook to v10.6.2 [SECURITY] 2026-10-26 08:31:56 +00:00
Johannes Marbach e83093feb2 Merge pull request #4365 from element-hq/renovate/npm-vite-vulnerability
Update dependency vite to v8.2.4 [SECURITY]
2026-10-26 09:30:23 +01:00
renovate[bot] c50127ab62 Update dependency vite to v8.2.4 [SECURITY] 2026-10-22 17:44:29 +00:00
renovate[bot] c3ae1c516b Update dependency livekit-client to v2.23.0 2026-10-21 14:25:29 +00:00
renovate[bot] b975dce53e Update dependency @vector-im/compound-design-tokens to v11.3.1 2026-10-19 01:30:27 +00:00
11 changed files with 541 additions and 353 deletions
-1
View File
@@ -2,7 +2,6 @@ node_modules
.DS_Store
.env
dist
dist-embedded
dist-ssr
*.local
*.bkp
-27
View File
@@ -361,33 +361,6 @@ pnpm backend
# podman-compose -f docker-compose-dev.yml up
```
The two Element Web instances load the Element Call widget from
`./dist-embedded`, which is mounted over the copy bundled in the Element Web
image. Build it from the current sources before starting the backend, and keep
it rebuilding on change:
```sh
VITE_MATRIX_RTC_MODE=matrix_2_0 pnpm build:embedded:development --outDir dist-embedded --watch
```
Build it at least once before the first `pnpm backend`, since Docker otherwise
creates an empty `dist-embedded` directory that the build cannot write to.
Reload the page after a rebuild to pick up the new widget. The widget has no
`config.json` in this setup, so `VITE_MATRIX_RTC_MODE` sets the default
MatrixRTC mode of the build instead (see
[docs/matrix_rtc_modes.md](docs/matrix_rtc_modes.md)); it can still be changed
under Settings → Developer. Do not delete `dist-embedded` while the backend is
running: the containers hold a mount of the directory, and a new directory of
the same name is not picked up until they are recreated.
> [!NOTE]
> When Docker runs in a VM (colima, Docker Desktop), the SFUs' container IPs
> are not routable from the host, so they advertise `127.0.0.1` as their ICE
> candidate instead and the browser reaches them through the published ports.
> This only works in Chromium-based browsers: Firefox ignores loopback
> candidates, and calls drop about fifteen seconds after joining. Media runs
> over ICE-TCP, since the UDP port ranges are not forwarded out of the VM.
> [!NOTE]
> To ensure your local development frontend functions properly, you’ll need to
> add certificate exceptions in your browser for `https://localhost:3000` and
+1 -3
View File
@@ -79,6 +79,4 @@ rc_message:
matrix_rtc:
transports:
- type: livekit
# Omitting livekit_service_url forces usage of the C-S endpoints.
# livekit_service_url: https://matrix-rtc.othersite.m.localhost/livekit/jwt
url: wss://matrix-rtc.othersite.m.localhost/livekit/sfu
livekit_service_url: https://matrix-rtc.othersite.m.localhost/livekit/jwt
+1 -3
View File
@@ -79,6 +79,4 @@ rc_message:
matrix_rtc:
transports:
- type: livekit
# Omitting livekit_service_url forces usage of the C-S endpoints.
# livekit_service_url: https://matrix-rtc.m.localhost/livekit/jwt
url: wss://matrix-rtc.m.localhost/livekit/sfu
livekit_service_url: https://matrix-rtc.m.localhost/livekit/jwt
-6
View File
@@ -157,9 +157,6 @@ services:
pull_policy: always
volumes:
- ./backend/ew.test.config.json:/app/config.json:Z
# Replaces the Element Call widget bundled in the image with the embedded
# build of the current sources. See "Backend" in README.md.
- ./dist-embedded:/app/widgets/element-call:ro,Z
environment:
ELEMENT_WEB_PORT: 8081
ports:
@@ -172,9 +169,6 @@ services:
pull_policy: always
volumes:
- ./backend/ew.test.othersite.config.json:/app/config.json:Z
# Replaces the Element Call widget bundled in the image with the embedded
# build of the current sources. See "Backend" in README.md.
- ./dist-embedded:/app/widgets/element-call:ro,Z
environment:
ELEMENT_WEB_PORT: 18081
ports:
-8
View File
@@ -46,11 +46,3 @@ Valid values are `compatibility` and `matrix_2_0`; an invalid value is
ignored (with a warning) and the user's choice applies. Pinning `matrix_2_0` on a
homeserver without sticky event support makes joining fail with a "sticky events
required" error.
A build can change the default mode, for setups without a `config.json` by setting
`VITE_MATRIX_RTC_MODE` at build time:
```sh
VITE_MATRIX_RTC_MODE=matrix_2_0 pnpm build:embedded
```
+535 -264
View File
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -7,6 +7,7 @@
padding-top: env(safe-area-inset-top);
opacity: 1;
transition: opacity 0.15s;
text-align: center;
}
/* Pseudo-element for the gradient background */
@@ -52,7 +53,7 @@
". . ."
"primaryButton title secondaryButton"
". . .";
place-items: center;
place-items: center stretch;
column-gap: var(--cpd-space-2x);
}
+1 -26
View File
@@ -5,15 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details.
*/
import { describe, expect, it, beforeEach, vi } from "vitest";
import { logger } from "matrix-js-sdk/lib/logger";
import { describe, expect, it, beforeEach } from "vitest";
import { MatrixRTCMode } from "../config/ConfigOptions";
import {
Setting,
parseResolution,
seedSettingsFromConfig,
defaultMatrixRTCMode,
screenShareCodec,
screenShareResolution,
screenShareFramerate,
@@ -41,28 +38,6 @@ describe("parseResolution", () => {
});
});
describe("defaultMatrixRTCMode", () => {
it("is Compatibility when the build sets nothing", () => {
expect(defaultMatrixRTCMode(undefined)).toBe(MatrixRTCMode.Compatibility);
});
it.each([MatrixRTCMode.Compatibility, MatrixRTCMode.Matrix_2_0])(
"takes a valid build value (%s)",
(mode) => {
expect(defaultMatrixRTCMode(mode)).toBe(mode);
},
);
it("ignores an invalid build value and warns", () => {
const warn = vi.spyOn(logger, "warn").mockImplementation(() => {});
expect(defaultMatrixRTCMode("nonsense")).toBe(MatrixRTCMode.Compatibility);
expect(warn).toHaveBeenCalledWith(
expect.stringContaining("VITE_MATRIX_RTC_MODE"),
);
warn.mockRestore();
});
});
describe("Setting", () => {
describe("seedFromConfig", () => {
it("updates value when no localStorage value exists", () => {
+1 -12
View File
@@ -149,20 +149,9 @@ export const enableExtendedLivekitLogs = new Setting<boolean>(
false,
);
export function defaultMatrixRTCMode(
buildValue: string | undefined = import.meta.env.VITE_MATRIX_RTC_MODE,
): MatrixRTCMode {
if (buildValue === undefined) return MatrixRTCMode.Compatibility;
if (Object.values<string>(MatrixRTCMode).includes(buildValue)) {
return buildValue as MatrixRTCMode;
}
logger.warn(`Ignoring invalid VITE_MATRIX_RTC_MODE: ${buildValue}`);
return MatrixRTCMode.Compatibility;
}
export const matrixRTCMode = new Setting<MatrixRTCMode>(
"matrix-rtc-mode",
defaultMatrixRTCMode(),
MatrixRTCMode.Compatibility,
);
export const customTransport = new Setting<UnstableLivekitTransport | null>(
-2
View File
@@ -181,8 +181,6 @@ export const initializeWidget = (
updateDelayedEvents: true,
sendSticky: true,
receiveSticky: true,
rtcLivekitGetToken: true,
rtcLivekitDelegateDelayedLeave: true,
},
roomId,
{