From b277a5853bd441e0ab905a8f3560af049c11514b Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Wed, 26 Aug 2026 09:07:33 +0200 Subject: [PATCH 1/3] fix: hide dial-out button when can't add participants Signed-off-by: Maksim Sukharev --- .../RightSidebar/Participants/ParticipantsTab.vue | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/RightSidebar/Participants/ParticipantsTab.vue b/src/components/RightSidebar/Participants/ParticipantsTab.vue index 1f4d0730d5f..546a817cb31 100644 --- a/src/components/RightSidebar/Participants/ParticipantsTab.vue +++ b/src/components/RightSidebar/Participants/ParticipantsTab.vue @@ -241,6 +241,10 @@ export default { }, canAddPhones() { + if (!this.canAdd) { + return false + } + const canModerateSipDialOut = hasTalkFeature(this.token, 'sip-support-dialout') && getTalkConfig(this.token, 'call', 'enabled') && getTalkConfig(this.token, 'call', 'sip-enabled') @@ -250,6 +254,10 @@ export default { }, hintAddPhones() { + if (!this.canAdd) { + return false + } + const canModerateSipDialOut = hasTalkFeature(this.token, 'sip-support-dialout') && getTalkConfig(this.token, 'call', 'sip-enabled') && getTalkConfig(this.token, 'call', 'sip-dialout-enabled') From 8785e25e39b75f84b536b6cdd142245987707aa3 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Wed, 26 Aug 2026 09:09:34 +0200 Subject: [PATCH 2/3] fix: hide participants tab from changelog Signed-off-by: Maksim Sukharev --- src/components/RightSidebar/RightSidebar.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/RightSidebar/RightSidebar.vue b/src/components/RightSidebar/RightSidebar.vue index 88004bfbc63..c9c5b82c298 100644 --- a/src/components/RightSidebar/RightSidebar.vue +++ b/src/components/RightSidebar/RightSidebar.vue @@ -370,6 +370,7 @@ export default { return (this.getUserId || this.isGuestModerator) && (!this.isOneToOne || this.isInCall) && !this.isNoteToSelf + && !this.isChangelog && (!isChannelConversation(this.conversation) || this.$store.getters.isModerator) }, @@ -385,6 +386,10 @@ export default { return this.conversation.type === CONVERSATION.TYPE.NOTE_TO_SELF }, + isChangelog() { + return this.conversation.type === CONVERSATION.TYPE.CHANGELOG + }, + breakoutRoomsText() { return t('spreed', 'Breakout rooms') }, From 536e8cc7f06f50fc4bff04bd6b6167bd7be170e3 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Wed, 26 Aug 2026 09:39:36 +0200 Subject: [PATCH 3/3] fix: wrap icons with title into span - vue-material-design-icons puts title inside svg > path > title, so interactive area is thing Signed-off-by: Maksim Sukharev Signed-off-by: Maksim Sukharev --- src/components/AdminSettings/StunServer.vue | 10 +++++--- .../MediaSettings/MediaDevicesSelector.vue | 1 - .../Participants/Participant.spec.js | 12 +++++----- .../Participants/ParticipantItem.vue | 23 ++++++++----------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/components/AdminSettings/StunServer.vue b/src/components/AdminSettings/StunServer.vue index 37611fcf4cf..525eb53caa5 100644 --- a/src/components/AdminSettings/StunServer.vue +++ b/src/components/AdminSettings/StunServer.vue @@ -21,11 +21,12 @@ labelOutside /> - + :title="t('spreed', 'The server address is invalid')"> + + { ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.EMAILS, PARTICIPANT.TYPE.GUEST, 'Alice(guest)'], ['', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST, 'Guest(guest)'], // The role is rendered as an icon, its accessible name is part of the text content - ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.OWNER, 'AliceOwner'], - ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.MODERATOR, 'AliceModerator'], - ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST_MODERATOR, 'AliceModerator(guest)'], + ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.OWNER, 'Alice'], + ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.MODERATOR, 'Alice'], + ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST_MODERATOR, 'Alice(guest)'], ['Bot', ATTENDEE.BRIDGE_BOT_ID, ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.USER, 'Bot(bot)'], ] @@ -194,9 +194,9 @@ describe('ParticipantItem.vue', () => { ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.EMAILS, PARTICIPANT.TYPE.GUEST, 'Alice(guest)(in the lobby)'], ['', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST, 'Guest(guest)(in the lobby)'], // Owners and moderators can skip the lobby, so they get no lobby badge - ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.OWNER, 'AliceOwner'], - ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.MODERATOR, 'AliceModerator'], - ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST_MODERATOR, 'AliceModerator(guest)'], + ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.OWNER, 'Alice'], + ['Alice', 'alice', ATTENDEE.ACTOR_TYPE.USERS, PARTICIPANT.TYPE.MODERATOR, 'Alice'], + ['Alice', 'guest-id', ATTENDEE.ACTOR_TYPE.GUESTS, PARTICIPANT.TYPE.GUEST_MODERATOR, 'Alice(guest)'], ] it.each([ diff --git a/src/components/RightSidebar/Participants/ParticipantItem.vue b/src/components/RightSidebar/Participants/ParticipantItem.vue index f9f29c9bd86..06c4af624d6 100644 --- a/src/components/RightSidebar/Participants/ParticipantItem.vue +++ b/src/components/RightSidebar/Participants/ParticipantItem.vue @@ -32,16 +32,13 @@ {{ computedName }} - - + :title="showOwnerIcon ? ownerIconLabel : moderatorIconLabel"> + + + ({{ t('spreed', 'bot') }}) ({{ t('spreed', 'guest') }}) ({{ t('spreed', 'in the lobby') }}) @@ -92,12 +89,12 @@ - + :title="callIcon.title"> + +