Power level tags (MSC3949): named, coloured power levels #67
Open
opened 2026-10-06 21:04:46 +00:00 by robocub
·
0 comments
No Branch/Tag specified
main
sync/state
sync/testing
sync/topic/fix/accept-dm-invite
sync/topic/ci/integration-banners
sync/topic/ci/integration-mosaic
sync/topic/ci/integration-tests
sync/topic/feat/discover
sync/topic/feat/screenshare-audio-linux
sync/topic/feat/screenshare-audio-upstream
sync/topic/feat/sliding-sync
sync/topic/feat/welcome-first-login
sync/topic/fix/banner-thumbnail-scale
sync/topic/fix/image-fullres-cache
sync/topic/fix/missing-media
sync/topic/fix/notification-fallback
sync/topic/fix/room-preview-deleted
sync/topic/fix/startup-splash-until-loaded
sync/topic/fix/sticker-picker-resolution
sync/topic/fix/voip-late-joiner-tiles
sync/topic/perf/lazy-home-room-list
sync/topic/perf/postload-keep-ui-responsive
sync/topic/perf/startup-postload-queue
sync/topic/ci/flatpak
sync/topic/ci/fork-invariants
sync/topic/feat/desktop-copy-selection
sync/topic/feat/gradient-themes
sync/topic/feat/media-mosaic
sync/topic/feat/personal-packs
sync/topic/feat/room-banners
sync/topic/feat/room-picker-search
sync/topic/feat/space-remove-room
sync/topic/feat/sso-first-login
sync/topic/feat/telegram-sticker-import
sync/topic/feat/voice-messages
sync/topic/fix/linux-app-id
sync/topic/fix/own-push-gateway
sync/topic/chore/branding
sync/topic/chore/fork-settings
sync/topic/ci/android-apk
sync/topic/ci/version-label
sync/main
fix/accept-dm-invite
feat/voice-isolation
feat/screenshare-audio-upstream
ci/android-apk
ci/flatpak
ci/integration-tests
feat/screenshare-audio-linux
ci/windows-testing
feat/native-oidc
testing
ci/integration-banners
ci/integration-mosaic
feat/discover
feat/sliding-sync
feat/welcome-first-login
fix/banner-thumbnail-scale
fix/image-fullres-cache
fix/missing-media
fix/room-preview-deleted
fix/startup-splash-until-loaded
fix/sticker-picker-resolution
fix/voip-late-joiner-tiles
perf/lazy-home-room-list
perf/postload-keep-ui-responsive
perf/startup-postload-queue
ci/fork-invariants
feat/desktop-copy-selection
feat/gradient-themes
feat/media-mosaic
feat/personal-packs
feat/room-banners
feat/room-picker-search
feat/space-remove-room
feat/sso-first-login
feat/telegram-sticker-import
feat/voice-messages
fix/linux-app-id
fix/notification-fallback
fix/own-push-gateway
chore/branding
chore/fork-settings
ci/version-label
ci/windows-release
ci/windows-preview
ci/windows
ci/sync-dep-report
fix/sticker-no-autofavorite
chore/register-gradient-themes
design/logo
bootstrap
keybinder
update-emoji
fix-url-previews
fix-flatpak
test-color-scheme-generation
widget-reliability
custom-themes
livekit-rust
test-disabled-notification-counts
stutter-test
improved-link-handling
platform/ios
rich-notifications-linux
fix/gif-search-input
test/voip-data-channel
pre-sync/20261007-003728/main
pre-sync/20261007-003728/perf/postload-keep-ui-responsive
pre-sync/20261007-003728/perf/lazy-home-room-list
pre-sync/20261007-003728/testing
pre-sync/20261007-003728/fix/banner-thumbnail-scale
pre-sync/20261007-003728/fix/image-fullres-cache
pre-sync/20261007-003728/ci/integration-banners
pre-sync/20261007-003728/feat/discover
pre-sync/20261007-003728/fix/voip-late-joiner-tiles
pre-sync/20261007-003728/fix/sticker-picker-resolution
pre-sync/20261007-003728/fix/room-preview-deleted
pre-sync/20261007-003728/fix/missing-media
pre-sync/20261007-003728/ci/integration-tests
pre-sync/20261007-003728/fix/startup-splash-until-loaded
pre-sync/20261007-003728/fix/notification-fallback
pre-sync/20261007-003728/feat/sliding-sync
pre-sync/20261007-003728/feat/welcome-first-login
pre-sync/20261007-003728/perf/startup-postload-queue
pre-sync/20261007-003728/ci/integration-mosaic
pre-sync/20261007-003728/ci/flatpak
pre-sync/20261007-003728/feat/desktop-copy-selection
pre-sync/20261007-003728/ci/fork-invariants
pre-sync/20261007-003728/fix/own-push-gateway
pre-sync/20261007-003728/fix/linux-app-id
pre-sync/20261007-003728/feat/personal-packs
pre-sync/20261007-003728/feat/media-mosaic
pre-sync/20261007-003728/feat/voice-messages
pre-sync/20261007-003728/feat/sso-first-login
pre-sync/20261007-003728/feat/space-remove-room
pre-sync/20261007-003728/feat/room-banners
pre-sync/20261007-003728/feat/gradient-themes
pre-sync/20261007-003728/feat/room-picker-search
pre-sync/20261007-003728/feat/telegram-sticker-import
pre-sync/20261007-003728/ci/android-apk
pre-sync/20261007-003728/ci/version-label
pre-sync/20261007-003728/chore/fork-settings
pre-sync/20261007-003728/chore/branding
pre-sync/20261006-230447/main
pre-sync/20261006-230447/ci/flatpak
pre-sync/20261006-230447/ci/integration-tests
pre-sync/20261006-230447/ci/android-apk
pre-sync/20261006-230447/fix/startup-splash-until-loaded
testing-2026-10-06b
pre-sync/20261006-230447/ci/integration-banners
pre-sync/20261006-230447/feat/room-banners
pre-sync/20261006-230447/feat/welcome-first-login
pre-sync/20261006-230447/testing
pre-sync/20261006-230447/fix/image-fullres-cache
pre-sync/20261006-230447/fix/voip-late-joiner-tiles
pre-sync/20261006-230447/fix/sticker-picker-resolution
pre-sync/20261006-230447/fix/room-preview-deleted
pre-sync/20261006-230447/fix/missing-media
pre-sync/20261006-230447/feat/sliding-sync
pre-sync/20261006-230447/perf/startup-postload-queue
pre-sync/20261006-230447/ci/integration-mosaic
pre-sync/20261006-230447/feat/desktop-copy-selection
pre-sync/20261006-230447/ci/fork-invariants
pre-sync/20261006-230447/fix/own-push-gateway
pre-sync/20261006-230447/fix/linux-app-id
pre-sync/20261006-230447/feat/discover
pre-sync/20261006-230447/feat/personal-packs
pre-sync/20261006-230447/feat/media-mosaic
pre-sync/20261006-230447/feat/voice-messages
pre-sync/20261006-230447/fix/notification-fallback
pre-sync/20261006-230447/feat/sso-first-login
pre-sync/20261006-230447/feat/space-remove-room
pre-sync/20261006-230447/feat/gradient-themes
pre-sync/20261006-230447/feat/telegram-sticker-import
pre-sync/20261006-230447/chore/fork-settings
pre-sync/20261006-230447/chore/branding
pre-sync/20261006-230447/ci/version-label
pre-sync/20261006-230447/feat/room-picker-search
pre-sync/20261006-230447/fix/banner-thumbnail-scale
pre-sync/20261006-204407/perf/startup-postload-queue
pre-sync/20261006-204407/main
pre-sync/20261006-204407/ci/flatpak
pre-sync/20261006-204407/ci/integration-tests
pre-sync/20261006-204407/ci/android-apk
pre-sync/20261006-204407/testing
pre-sync/20261006-204407/fix/image-fullres-cache
pre-sync/20261006-204407/fix/voip-late-joiner-tiles
pre-sync/20261006-204407/fix/sticker-picker-resolution
pre-sync/20261006-204407/fix/missing-media
pre-sync/20261006-204407/feat/sliding-sync
pre-sync/20261006-204407/ci/integration-mosaic
pre-sync/20261006-204407/feat/desktop-copy-selection
pre-sync/20261006-204407/ci/fork-invariants
pre-sync/20261006-204407/fix/own-push-gateway
pre-sync/20261006-204407/fix/linux-app-id
pre-sync/20261006-204407/feat/discover
pre-sync/20261006-204407/feat/personal-packs
pre-sync/20261006-204407/feat/media-mosaic
pre-sync/20261006-204407/feat/voice-messages
pre-sync/20261006-204407/fix/notification-fallback
pre-sync/20261006-204407/feat/sso-first-login
pre-sync/20261006-204407/feat/space-remove-room
pre-sync/20261006-204407/feat/room-banners
pre-sync/20261006-204407/feat/gradient-themes
pre-sync/20261006-204407/feat/room-picker-search
pre-sync/20261006-204407/feat/telegram-sticker-import
pre-sync/20261006-204407/chore/fork-settings
pre-sync/20261006-204407/chore/branding
pre-sync/20261006-204407/ci/version-label
pre-sync/20261006-204407/fix/room-preview-deleted
pre-sync/20261006-191450/main
pre-sync/20261006-191450/ci/integration-mosaic
pre-sync/20261006-191450/fix/missing-media
pre-sync/20261006-191450/feat/media-mosaic
pre-sync/20261006-191450/testing
pre-sync/20261006-191450/fix/image-fullres-cache
pre-sync/20261006-191450/fix/sticker-picker-resolution
pre-sync/20261006-191450/feat/desktop-copy-selection
pre-sync/20261006-191450/ci/fork-invariants
pre-sync/20261006-191450/fix/own-push-gateway
pre-sync/20261006-191450/fix/linux-app-id
pre-sync/20261006-191450/feat/discover
pre-sync/20261006-191450/feat/personal-packs
pre-sync/20261006-191450/fix/voip-late-joiner-tiles
pre-sync/20261006-191450/ci/integration-tests
pre-sync/20261006-191450/feat/voice-messages
pre-sync/20261006-191450/fix/notification-fallback
pre-sync/20261006-191450/feat/sso-first-login
pre-sync/20261006-191450/feat/sliding-sync
pre-sync/20261006-191450/feat/space-remove-room
pre-sync/20261006-191450/feat/room-banners
pre-sync/20261006-191450/feat/gradient-themes
pre-sync/20261006-191450/feat/telegram-sticker-import
pre-sync/20261006-191450/ci/flatpak
pre-sync/20261006-191450/chore/fork-settings
pre-sync/20261006-191450/ci/android-apk
pre-sync/20261006-191450/chore/branding
pre-sync/20261006-191450/ci/version-label
pre-sync/20261006-191450/feat/room-picker-search
pre-sync/20261006-165716/main
pre-sync/20261006-165716/fix/image-fullres-cache
pre-sync/20261006-165716/fix/sticker-picker-resolution
pre-sync/20261006-165716/testing
pre-sync/20261006-165716/feat/discover
pre-sync/20261006-165716/fix/voip-late-joiner-tiles
pre-sync/20261006-165716/ci/integration-tests
pre-sync/20261006-165716/fix/notification-fallback
pre-sync/20261006-165716/feat/sliding-sync
pre-sync/20261006-165716/feat/gradient-themes
pre-sync/20261006-165716/ci/flatpak
pre-sync/20261006-165716/feat/desktop-copy-selection
pre-sync/20261006-165716/ci/fork-invariants
pre-sync/20261006-165716/fix/own-push-gateway
pre-sync/20261006-165716/fix/linux-app-id
pre-sync/20261006-165716/feat/personal-packs
pre-sync/20261006-165716/feat/media-mosaic
pre-sync/20261006-165716/feat/voice-messages
pre-sync/20261006-165716/ci/android-apk
pre-sync/20261006-165716/feat/sso-first-login
pre-sync/20261006-165716/feat/space-remove-room
pre-sync/20261006-165716/feat/room-banners
pre-sync/20261006-165716/feat/room-picker-search
pre-sync/20261006-165716/feat/telegram-sticker-import
pre-sync/20261006-165716/chore/fork-settings
pre-sync/20261006-165716/chore/branding
pre-sync/20261006-165716/ci/version-label
pre-sync/20261006-150145/main
pre-sync/20261006-150145/fix/voip-late-joiner-tiles
pre-sync/20261006-150145/chore/branding
testing-2026-10-06
pre-sync/20261006-150145/testing
pre-sync/20261006-150145/feat/discover
pre-sync/20261006-150145/fix/notification-fallback
pre-sync/20261006-150145/feat/sliding-sync
pre-sync/20261006-150145/ci/flatpak
pre-sync/20261006-150145/feat/desktop-copy-selection
pre-sync/20261006-150145/ci/fork-invariants
pre-sync/20261006-150145/fix/own-push-gateway
pre-sync/20261006-150145/fix/linux-app-id
pre-sync/20261006-150145/feat/personal-packs
pre-sync/20261006-150145/feat/media-mosaic
pre-sync/20261006-150145/ci/integration-tests
pre-sync/20261006-150145/feat/voice-messages
pre-sync/20261006-150145/feat/sso-first-login
pre-sync/20261006-150145/feat/space-remove-room
pre-sync/20261006-150145/feat/room-banners
pre-sync/20261006-150145/feat/gradient-themes
pre-sync/20261006-150145/feat/room-picker-search
pre-sync/20261006-150145/feat/telegram-sticker-import
pre-sync/20261006-150145/chore/fork-settings
pre-sync/20261006-150145/ci/android-apk
pre-sync/20261006-150145/ci/version-label
pre-sync/20261006-060554/ci/flatpak
pre-sync/20261006-060554/main
pre-sync/20261006-060554/ci/integration-tests
pre-sync/20261006-060554/ci/android-apk
pre-sync/20261006-060554/feat/sliding-sync
pre-sync/20261006-032458/main
pre-sync/20261006-060554/feat/discover
pre-sync/20261006-032458/feat/discover
pre-sync/20261006-060554/feat/personal-packs
pre-sync/20261006-060554/fix/notification-fallback
pre-sync/20261006-032458/fix/notification-fallback
pre-sync/20261006-032458/ci/integration-tests
pre-sync/20261006-060554/chore/branding
pre-sync/20261006-032458/chore/branding
pre-sync/20261006-060554/chore/fork-settings
pre-sync/20261006-032458/feat/personal-packs
pre-sync/20261006-032458/chore/fork-settings
pre-sync/20261006-060554/testing
pre-sync/20261006-032458/testing
pre-sync/20261006-060554/feat/desktop-copy-selection
pre-sync/20261006-060554/ci/fork-invariants
pre-sync/20261006-060554/fix/own-push-gateway
pre-sync/20261006-060554/fix/linux-app-id
pre-sync/20261006-060554/feat/media-mosaic
pre-sync/20261006-060554/feat/voice-messages
pre-sync/20261006-060554/feat/sso-first-login
pre-sync/20261006-060554/feat/space-remove-room
pre-sync/20261006-060554/feat/room-banners
pre-sync/20261006-060554/feat/gradient-themes
pre-sync/20261006-060554/feat/room-picker-search
pre-sync/20261006-060554/feat/telegram-sticker-import
pre-sync/20261006-032458/ci/flatpak
pre-sync/20261006-032458/feat/desktop-copy-selection
pre-sync/20261006-032458/ci/fork-invariants
pre-sync/20261006-032458/fix/own-push-gateway
pre-sync/20261006-032458/fix/linux-app-id
pre-sync/20261006-032458/feat/media-mosaic
pre-sync/20261006-032458/feat/voice-messages
pre-sync/20261006-032458/ci/android-apk
pre-sync/20261006-032458/feat/sso-first-login
pre-sync/20261006-032458/feat/space-remove-room
pre-sync/20261006-032458/feat/room-banners
pre-sync/20261006-032458/feat/gradient-themes
pre-sync/20261006-032458/feat/room-picker-search
pre-sync/20261006-032458/feat/telegram-sticker-import
pre-sync/20261006-060554/ci/version-label
pre-sync/20261006-032458/ci/version-label
pre-sync/20261005-230516/main
testing-2026-10-05c
pre-sync/20261005-230516/feat/gradient-themes
pre-sync/20261005-230516/testing
pre-sync/20261005-230516/ci/flatpak
pre-sync/20261005-230516/feat/desktop-copy-selection
pre-sync/20261005-230516/ci/fork-invariants
pre-sync/20261005-230516/fix/own-push-gateway
pre-sync/20261005-230516/fix/linux-app-id
pre-sync/20261005-230516/feat/personal-packs
pre-sync/20261005-230516/feat/media-mosaic
pre-sync/20261005-230516/feat/voice-messages
pre-sync/20261005-230516/feat/sso-first-login
pre-sync/20261005-230516/feat/space-remove-room
pre-sync/20261005-230516/feat/room-banners
pre-sync/20261005-230516/feat/room-picker-search
pre-sync/20261005-230516/feat/telegram-sticker-import
pre-sync/20261005-230516/chore/fork-settings
pre-sync/20261005-230516/ci/android-apk
pre-sync/20261005-230516/chore/branding
pre-sync/20261005-230516/ci/version-label
pre-sync/20261005-210511/main
pre-sync/20261005-210511/ci/fork-invariants
pre-sync/20261005-210511/testing
pre-sync/20261005-210511/feat/voice-messages
pre-sync/20261005-210511/feat/sso-first-login
pre-sync/20261005-210511/fix/linux-app-id
pre-sync/20261005-210511/ci/flatpak
pre-sync/20261005-210511/fix/own-push-gateway
testing-2026-10-05b
pre-sync/20261005-210511/ci/version-label
pre-sync/20261005-210511/ci/android-apk
pre-sync/20261005-210511/feat/media-mosaic
pre-sync/20261005-210511/chore/branding
pre-restack/ci/version-label
pre-restack/ci/flatpak
pre-sync/20261005-210511/feat/personal-packs
pre-restack/chore/branding
pre-sync/20261005-210511/chore/fork-settings
testing-2026-10-05
pre-sync/20261005-210511/feat/space-remove-room
pre-restack/feat/media-mosaic
pre-sync/20261005-210511/feat/telegram-sticker-import
pre-sync/20261005-210511/feat/desktop-copy-selection
pre-sync/20261005-210511/feat/room-banners
pre-sync/20261005-210511/feat/room-picker-search
v0.5.0
v0.4.2+hotfix.2
v0.4.2+hotfix.1
v0.4.2
v0.4.1
v0.4.0
v0.4.0-prerelease+20251025
v0.4.0-prerelease+20250924
v0.3.1+hotfix.1
v0.3.1
v0.3.1-prerelease+20250316
v0.3.1-prerelease+952499f
v0.3.1-prerelease+ee5f1b6
v0.3.0
v0.3.0-prerelease+2973942
v0.3.0-prerelease+92b5735
v0.3.0-prerelease+dd1dadf
v0.3.0-prerelease+d89fea2
v0.3.0-prerelease+5c8379c
v0.2.1
v0.2.0
v0.1.4
v0.1.3
v0.1.2
v0.1.1
v0.1.0
Labels
Clear labels
bug
Something is broken
effort: large
Multi-week or multi-repo
effort: medium
A week or two
effort: small
Days
feature
New capability
infra
Proxy, CI, packaging, releases
needs-info
Blocked on logs, repro steps or a decision
upstream
Imported from Commet's GitHub tracker; drop our patch once upstream fixes it
ux
Papercuts and usability
voice
Calls, voice and screen share
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
nether/vommet#67
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Support MSC3949 power level tags: a room can give any power level number a name, colour and icon, for example 50 = "Moderator" in green, or 38 = "Bot" 🤖.
Scope: this labels power levels and nothing more. It is not an attempt to copy Discord roles. Real roles (several per user, allow/deny per permission) need MSC4056, which requires a new room version and has no implementation. Labelled power levels are useful without that.
Format
State event with an empty
state_key. The unstable type isin.cinny.room.power_level_tagsand the stable type will bem.room.power_level_tags; read both and prefer the stable one. The content maps a power level number (as a string) to a tag:nameis required.coloris a hex string.icon.keyis either an emoji or anmxc://URL.Cinny already implements this, so the format is shared with at least one other client. The MSC is open and marked
needs-implementation, so Vommet would count as another implementation.Where it hooks in
client/matrix/matrix_role.dart:MatrixRolealready takesnameOverrideandiconOverride. Add a colour, an image or emoji icon, and lookup from the tags event.ui/atoms/role_view.dart: render the colour and the emoji or mxc icon.Open questions
Upstream
Same request upstream: commetchat/commet#625 (open feature request, no PR or branch as of 2026-10-06). Related: #59 (moderation tools, permissions editor).