@@ -71,6 +71,7 @@ const LEVELS_ROOM_SETTINGS_WITH_ROOM = [
71
71
const LEVELS_ACCOUNT_SETTINGS = [ SettingLevel . DEVICE , SettingLevel . ACCOUNT , SettingLevel . CONFIG ] ;
72
72
const LEVELS_DEVICE_ONLY_SETTINGS = [ SettingLevel . DEVICE ] ;
73
73
const LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = [ SettingLevel . DEVICE , SettingLevel . CONFIG ] ;
74
+ const LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED = [ SettingLevel . CONFIG , SettingLevel . DEVICE ] ;
74
75
const LEVELS_UI_FEATURE = [
75
76
SettingLevel . CONFIG ,
76
77
// in future we might have a .well-known level or something
@@ -133,17 +134,6 @@ export type SettingValueType =
133
134
export interface IBaseSetting < T extends SettingValueType = SettingValueType > {
134
135
isFeature ?: false | undefined ;
135
136
136
- /**
137
- * If true, then the presence of this setting in `config.json` will disable the option in the UI.
138
- *
139
- * In other words, we prevent the user overriding the setting if an explicit value is given in `config.json`.
140
- * XXX: note that users who have already set a non-default value before `config.json` is update will continue
141
- * to use that value (and, indeed, won't be able to change it!): https://github.com/element-hq/element-web/issues/26877
142
- *
143
- * Obviously, this only really makes sense if `supportedLevels` includes {@link SettingLevel.CONFIG}.
144
- */
145
- configDisablesSetting ?: true ;
146
-
147
137
// Display names are strongly recommended for clarity.
148
138
// Display name can also be an object for different levels.
149
139
displayName ?:
@@ -268,70 +258,70 @@ export const SETTINGS: { [setting: string]: ISetting } = {
268
258
"feature_msc3531_hide_messages_pending_moderation" : {
269
259
isFeature : true ,
270
260
labsGroup : LabGroup . Moderation ,
271
- configDisablesSetting : true ,
272
261
// Requires a reload since this setting is cached in EventUtils
273
262
controller : new ReloadOnChangeController ( ) ,
274
263
displayName : _td ( "labs|msc3531_hide_messages_pending_moderation" ) ,
275
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
264
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
265
+ supportedLevelsAreOrdered : true ,
276
266
default : false ,
277
267
} ,
278
268
"feature_report_to_moderators" : {
279
269
isFeature : true ,
280
270
labsGroup : LabGroup . Moderation ,
281
- configDisablesSetting : true ,
282
271
displayName : _td ( "labs|report_to_moderators" ) ,
283
272
description : _td ( "labs|report_to_moderators_description" ) ,
284
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
273
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
274
+ supportedLevelsAreOrdered : true ,
285
275
default : false ,
286
276
} ,
287
277
"feature_latex_maths" : {
288
278
isFeature : true ,
289
279
labsGroup : LabGroup . Messaging ,
290
- configDisablesSetting : true ,
291
280
displayName : _td ( "labs|latex_maths" ) ,
292
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
281
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
282
+ supportedLevelsAreOrdered : true ,
293
283
default : false ,
294
284
} ,
295
285
"feature_pinning" : {
296
286
isFeature : true ,
297
287
labsGroup : LabGroup . Messaging ,
298
- configDisablesSetting : true ,
299
288
displayName : _td ( "labs|pinning" ) ,
300
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
289
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
290
+ supportedLevelsAreOrdered : true ,
301
291
default : false ,
302
292
} ,
303
293
"feature_wysiwyg_composer" : {
304
294
isFeature : true ,
305
295
labsGroup : LabGroup . Messaging ,
306
- configDisablesSetting : true ,
307
296
displayName : _td ( "labs|wysiwyg_composer" ) ,
308
297
description : _td ( "labs|feature_wysiwyg_composer_description" ) ,
309
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
298
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
299
+ supportedLevelsAreOrdered : true ,
310
300
default : false ,
311
301
} ,
312
302
"feature_mjolnir" : {
313
303
isFeature : true ,
314
304
labsGroup : LabGroup . Moderation ,
315
- configDisablesSetting : true ,
316
305
displayName : _td ( "labs|mjolnir" ) ,
317
306
description : _td ( "labs|currently_experimental" ) ,
318
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
307
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
308
+ supportedLevelsAreOrdered : true ,
319
309
default : false ,
320
310
} ,
321
311
"feature_custom_themes" : {
322
312
isFeature : true ,
323
313
labsGroup : LabGroup . Themes ,
324
- configDisablesSetting : true ,
325
314
displayName : _td ( "labs|custom_themes" ) ,
326
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
315
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
316
+ supportedLevelsAreOrdered : true ,
327
317
default : false ,
328
318
} ,
329
319
"feature_dehydration" : {
330
320
isFeature : true ,
331
321
labsGroup : LabGroup . Encryption ,
332
- configDisablesSetting : true ,
333
322
displayName : _td ( "labs|dehydration" ) ,
334
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
323
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
324
+ supportedLevelsAreOrdered : true ,
335
325
default : false ,
336
326
} ,
337
327
"useOnlyCurrentProfiles" : {
@@ -350,25 +340,25 @@ export const SETTINGS: { [setting: string]: ISetting } = {
350
340
"feature_html_topic" : {
351
341
isFeature : true ,
352
342
labsGroup : LabGroup . Rooms ,
353
- configDisablesSetting : true ,
354
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
343
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
344
+ supportedLevelsAreOrdered : true ,
355
345
displayName : _td ( "labs|html_topic" ) ,
356
346
default : false ,
357
347
} ,
358
348
"feature_bridge_state" : {
359
349
isFeature : true ,
360
350
labsGroup : LabGroup . Rooms ,
361
- configDisablesSetting : true ,
362
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
351
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
352
+ supportedLevelsAreOrdered : true ,
363
353
displayName : _td ( "labs|bridge_state" ) ,
364
354
default : false ,
365
355
} ,
366
356
"feature_jump_to_date" : {
367
357
isFeature : true ,
368
358
labsGroup : LabGroup . Messaging ,
369
- configDisablesSetting : true ,
370
359
displayName : _td ( "labs|jump_to_date" ) ,
371
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
360
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
361
+ supportedLevelsAreOrdered : true ,
372
362
default : false ,
373
363
controller : new ServerSupportUnstableFeatureController (
374
364
"feature_jump_to_date" ,
@@ -398,8 +388,8 @@ export const SETTINGS: { [setting: string]: ISetting } = {
398
388
"feature_sliding_sync" : {
399
389
isFeature : true ,
400
390
labsGroup : LabGroup . Developer ,
401
- configDisablesSetting : true ,
402
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
391
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
392
+ supportedLevelsAreOrdered : true ,
403
393
displayName : _td ( "labs|sliding_sync" ) ,
404
394
description : _td ( "labs|sliding_sync_description" ) ,
405
395
shouldWarn : true ,
@@ -414,34 +404,34 @@ export const SETTINGS: { [setting: string]: ISetting } = {
414
404
"feature_element_call_video_rooms" : {
415
405
isFeature : true ,
416
406
labsGroup : LabGroup . VoiceAndVideo ,
417
- configDisablesSetting : true ,
418
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
407
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
408
+ supportedLevelsAreOrdered : true ,
419
409
displayName : _td ( "labs|element_call_video_rooms" ) ,
420
410
controller : new ReloadOnChangeController ( ) ,
421
411
default : false ,
422
412
} ,
423
413
"feature_group_calls" : {
424
414
isFeature : true ,
425
415
labsGroup : LabGroup . VoiceAndVideo ,
426
- configDisablesSetting : true ,
427
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
416
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
417
+ supportedLevelsAreOrdered : true ,
428
418
displayName : _td ( "labs|group_calls" ) ,
429
419
controller : new ReloadOnChangeController ( ) ,
430
420
default : false ,
431
421
} ,
432
422
"feature_disable_call_per_sender_encryption" : {
433
423
isFeature : true ,
434
424
labsGroup : LabGroup . VoiceAndVideo ,
435
- configDisablesSetting : true ,
436
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
425
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
426
+ supportedLevelsAreOrdered : true ,
437
427
displayName : _td ( "labs|feature_disable_call_per_sender_encryption" ) ,
438
428
default : false ,
439
429
} ,
440
430
"feature_allow_screen_share_only_mode" : {
441
431
isFeature : true ,
442
432
labsGroup : LabGroup . VoiceAndVideo ,
443
- configDisablesSetting : true ,
444
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
433
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
434
+ supportedLevelsAreOrdered : true ,
445
435
description : _td ( "labs|under_active_development" ) ,
446
436
displayName : _td ( "labs|allow_screen_share_only_mode" ) ,
447
437
controller : new ReloadOnChangeController ( ) ,
@@ -450,8 +440,8 @@ export const SETTINGS: { [setting: string]: ISetting } = {
450
440
"feature_location_share_live" : {
451
441
isFeature : true ,
452
442
labsGroup : LabGroup . Messaging ,
453
- configDisablesSetting : true ,
454
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
443
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
444
+ supportedLevelsAreOrdered : true ,
455
445
displayName : _td ( "labs|location_share_live" ) ,
456
446
description : _td ( "labs|location_share_live_description" ) ,
457
447
shouldWarn : true ,
@@ -460,8 +450,8 @@ export const SETTINGS: { [setting: string]: ISetting } = {
460
450
"feature_dynamic_room_predecessors" : {
461
451
isFeature : true ,
462
452
labsGroup : LabGroup . Rooms ,
463
- configDisablesSetting : true ,
464
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
453
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
454
+ supportedLevelsAreOrdered : true ,
465
455
displayName : _td ( "labs|dynamic_room_predecessors" ) ,
466
456
description : _td ( "labs|dynamic_room_predecessors_description" ) ,
467
457
shouldWarn : true ,
@@ -470,8 +460,8 @@ export const SETTINGS: { [setting: string]: ISetting } = {
470
460
[ Features . VoiceBroadcast ] : {
471
461
isFeature : true ,
472
462
labsGroup : LabGroup . Messaging ,
473
- configDisablesSetting : true ,
474
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
463
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
464
+ supportedLevelsAreOrdered : true ,
475
465
displayName : _td ( "labs|voice_broadcast" ) ,
476
466
default : false ,
477
467
} ,
@@ -483,8 +473,8 @@ export const SETTINGS: { [setting: string]: ISetting } = {
483
473
[ Features . OidcNativeFlow ] : {
484
474
isFeature : true ,
485
475
labsGroup : LabGroup . Developer ,
486
- configDisablesSetting : true ,
487
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
476
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
477
+ supportedLevelsAreOrdered : true ,
488
478
displayName : _td ( "labs|oidc_native_flow" ) ,
489
479
description : _td ( "labs|oidc_native_flow_description" ) ,
490
480
default : false ,
@@ -493,7 +483,6 @@ export const SETTINGS: { [setting: string]: ISetting } = {
493
483
// use the rust matrix-sdk-crypto-wasm for crypto.
494
484
isFeature : true ,
495
485
labsGroup : LabGroup . Developer ,
496
- // unlike most features, `configDisablesSetting` is false here.
497
486
supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
498
487
displayName : _td ( "labs|rust_crypto" ) ,
499
488
description : ( ) => {
@@ -527,10 +516,10 @@ export const SETTINGS: { [setting: string]: ISetting } = {
527
516
"feature_render_reaction_images" : {
528
517
isFeature : true ,
529
518
labsGroup : LabGroup . Messaging ,
530
- configDisablesSetting : true ,
531
519
displayName : _td ( "labs|render_reaction_images" ) ,
532
520
description : _td ( "labs|render_reaction_images_description" ) ,
533
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
521
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
522
+ supportedLevelsAreOrdered : true ,
534
523
default : false ,
535
524
} ,
536
525
/**
@@ -609,28 +598,28 @@ export const SETTINGS: { [setting: string]: ISetting } = {
609
598
"feature_ask_to_join" : {
610
599
isFeature : true ,
611
600
labsGroup : LabGroup . Rooms ,
612
- configDisablesSetting : true ,
613
601
default : false ,
614
602
displayName : _td ( "labs|ask_to_join" ) ,
615
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
603
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
604
+ supportedLevelsAreOrdered : true ,
616
605
} ,
617
606
"feature_new_room_decoration_ui" : {
618
607
isFeature : true ,
619
608
labsGroup : LabGroup . Rooms ,
620
- configDisablesSetting : true ,
621
609
displayName : _td ( "labs|new_room_decoration_ui" ) ,
622
610
description : _td ( "labs|under_active_development" ) ,
623
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
611
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
612
+ supportedLevelsAreOrdered : true ,
624
613
default : false ,
625
614
controller : new ReloadOnChangeController ( ) ,
626
615
} ,
627
616
"feature_notifications" : {
628
617
isFeature : true ,
629
618
labsGroup : LabGroup . Messaging ,
630
- configDisablesSetting : true ,
631
619
displayName : _td ( "labs|notifications" ) ,
632
620
description : _td ( "labs|unrealiable_e2e" ) ,
633
- supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG ,
621
+ supportedLevels : LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED ,
622
+ supportedLevelsAreOrdered : true ,
634
623
default : false ,
635
624
} ,
636
625
"useCompactLayout" : {
0 commit comments