Compare commits

..

16 Commits

Author SHA1 Message Date
Half-Shot
717fd0aa3f fix merge fails 2025-09-25 12:06:19 +01:00
Half-Shot
8d2c466e74 Fix tests 2025-09-25 11:16:38 +01:00
Half-Shot
8205e59950 lint 2025-09-25 10:50:15 +01:00
Half-Shot
a23da95f5c Merge remote-tracking branch 'origin/livekit' into hs/apply-hints 2025-09-25 10:47:40 +01:00
Half-Shot
781736b80f update packages 2025-09-25 10:45:33 +01:00
Half-Shot
4b55908d22 Automatically update intent on mute change 2025-09-25 10:44:33 +01:00
Half-Shot
f5f41342e3 fix intent 2025-09-25 08:33:32 +01:00
Half-Shot
bf33b27f53 missed a bit 2025-09-19 16:55:02 +01:00
Half-Shot
7ddef09ee7 Merge remote-tracking branch 'origin/livekit' into hs/apply-hints 2025-09-19 16:54:24 +01:00
Half-Shot
26a561bb9c Apply new hint code 2025-09-19 16:43:57 +01:00
Timo
fbb7570210 default mute states (unmuted!) in widget mode (embedded + intent) (#3494)
* default mute states (unmuted!) in widget mode (embedded + intent)

Signed-off-by: Timo K <toger5@hotmail.de>

* review

Signed-off-by: Timo K <toger5@hotmail.de>

* introduce a cache for the url params.

Signed-off-by: Timo K <toger5@hotmail.de>

* Add an option to skip the cache.

Signed-off-by: Timo K <toger5@hotmail.de>

---------

Signed-off-by: Timo K <toger5@hotmail.de>
2025-09-19 16:40:46 +01:00
Will Hunt
2f0febf4c2 Log when a track is unpublished or runs into an error (#3495) 2025-09-19 15:52:34 +01:00
Robin
4848d59b4f Fix the interactivity of buttons while reconnecting or in earpiece mode (#3486)
* Fix the interactivity of buttons while reconnecting or in earpiece mode

When we're in one of these modes, we need to ensure that everything above the overlay (the header and footer buttons) is interactive, while everything obscured by the overlay (the media tiles) is non-interactive and removed from the accessibility tree. It's not a very easy task to trap focus *outside* an element, so the best solution I could come up with is to set tabindex="-1" manually on all interactive elements belonging to the media tiles.

* Write a Playwright test for reconnecting

* fix lints

Signed-off-by: Timo K <toger5@hotmail.de>

* fix test

Signed-off-by: Timo K <toger5@hotmail.de>

* enable http2 for matrx-rtc host to allow the jwt service to talk to the SFU

* remove rate limit for delayed events

* more time to connect to livekit SFU

* Due to a Firefox issue we set the start anchor for the tab test to the Mute microphone button

* adapt to most recent Element Web version

* Use the "End call" button as proofe for a started call

* Currrenty disabled due to recent Element Web
- not indicating the number of participants
- bypassing Lobby

* linting

* disable 'can only interact with header and footer while reconnecting' for firefox

---------

Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>
Co-authored-by: Timo K <toger5@hotmail.de>
Co-authored-by: fkwp <github-fkwp@w4ve.de>
2025-09-19 15:52:34 +01:00
renovate[bot]
6abb7195cb Update dependency livekit-client to v2.15.7 (#3496)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-19 15:52:34 +01:00
Will Hunt
61203b8fac Prevent showing calling view when disconnected from Livekit. (#3491)
* Refactor disconnection handling

* Use "unknown"

* Update signature

* Add tests

* Expose livekitConnectionState directly

* fix whoopsie
2025-09-19 15:52:34 +01:00
Half-Shot
1be4218ec9 Add media hints for notification events. 2025-09-16 15:16:57 +01:00
3 changed files with 6 additions and 18 deletions

View File

@@ -436,7 +436,7 @@ export const GroupCallView: FC<Props> = ({
client={client}
matrixInfo={matrixInfo}
muteStates={muteStates}
onEnter={async () => enterRTCSessionOrError(rtcSession)}
onEnter={() => void enterRTCSessionOrError(rtcSession)}
confineToRoom={confineToRoom}
hideHeader={header === HeaderStyle.None}
participantCount={participantCount}

View File

@@ -57,7 +57,7 @@ interface Props {
client: MatrixClient;
matrixInfo: MatrixInfo;
muteStates: MuteStates;
onEnter: () => Promise<void>;
onEnter: () => void;
enterLabel?: JSX.Element | string;
confineToRoom: boolean;
hideHeader: boolean;
@@ -193,14 +193,6 @@ export const LobbyView: FC<Props> = ({
useTrackProcessorSync(videoTrack);
const [waitingToEnter, setWaitingToEnter] = useState(false);
const onEnterCall = useCallback(() => {
setWaitingToEnter(true);
void onEnter().finally(() => setWaitingToEnter(false));
}, [onEnter]);
const waiting = waitingForInvite || waitingToEnter;
// TODO: Unify this component with InCallView, so we can get slick joining
// animations and don't have to feel bad about reusing its CSS
return (
@@ -230,12 +222,11 @@ export const LobbyView: FC<Props> = ({
>
<Button
className={classNames(styles.join, {
[styles.wait]: waiting,
[styles.wait]: waitingForInvite,
})}
size={waiting ? "sm" : "lg"}
disabled={waiting}
size={waitingForInvite ? "sm" : "lg"}
onClick={() => {
if (!waiting) onEnterCall();
if (!waitingForInvite) onEnter();
}}
data-testid="lobby_joinCall"
>

View File

@@ -151,10 +151,7 @@ export const RoomPage: FC = () => {
: E2eeType.NONE,
},
}}
onEnter={async (): Promise<void> => {
knock?.();
return Promise.resolve();
}}
onEnter={(): void => knock?.()}
enterLabel={label}
waitingForInvite={groupCallState.kind === "waitForInvite"}
confineToRoom={confineToRoom}