erio
9ba42aa556
feat(channels): gate available channels behind feature switch (backend)
Add a DB-backed soft switch "available_channels_enabled" controlling
the user-facing /channels/available endpoint and sidebar entry. Default
to false (opt-in) — the feature stays invisible until an admin enables
it under Admin Settings > Features.
- domain_constants: SettingKeyAvailableChannelsEnabled
- settings_view: AllSettings/PublicSettings + AvailableChannelsEnabled
- setting_service: public+all read/write, seed default "false",
GetAvailableChannelsRuntime helper (fail-closed on read error)
- admin setting_handler: UpdateSettingsRequest *bool + update branch
+ audit diff entry
- public setting_handler: expose via GET /api/v1/settings
- available_channel_handler: featureEnabled() guard — returns empty
list after auth when disabled (401 precedes the feature check to
preserve existing behavior)
2026-04-21 17:23:20 +08:00
..
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-03-14 12:45:10 +08:00
2026-03-01 14:25:16 +08:00
2026-02-28 20:38:35 +08:00
2026-04-14 17:35:27 +08:00
2026-03-04 15:22:46 +08:00
2026-04-21 17:34:18 +08:00
2026-02-12 14:20:14 +08:00
2026-04-21 17:34:18 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-02-11 01:23:21 +08:00
2026-02-28 20:18:14 +08:00
2026-02-28 20:18:14 +08:00
2026-03-16 20:22:10 +08:00
2026-02-28 20:38:35 +08:00
2026-04-21 11:31:54 +08:00
2026-04-21 11:31:54 +08:00
2026-04-21 14:14:49 +08:00
2026-04-21 14:39:19 +08:00
2026-03-11 16:46:58 +08:00
2026-03-17 19:26:30 +08:00
2026-03-17 19:26:30 +08:00
2026-04-04 11:13:58 +08:00
2026-03-17 19:26:11 +08:00
2026-03-17 19:26:11 +08:00
2026-02-28 15:01:20 +08:00
2026-02-28 15:05:54 +08:00
2026-02-10 11:42:39 +08:00
2026-02-24 20:04:05 +08:00
2026-04-09 21:35:48 +08:00
2026-03-04 15:22:46 +08:00
2026-03-04 13:45:49 +08:00
2026-02-23 12:45:37 +08:00
2026-02-23 12:45:37 +08:00
2026-04-05 17:11:01 +08:00
2026-03-10 11:29:31 +08:00
2026-02-12 14:20:14 +08:00
2026-02-07 12:31:10 +08:00
2026-02-12 16:27:29 +08:00
2026-02-12 16:27:29 +08:00
2026-03-04 13:45:49 +08:00
2026-02-12 16:25:44 +08:00
2026-02-12 16:27:29 +08:00
2026-02-28 15:01:20 +08:00
2026-04-21 12:41:27 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-04-03 01:50:26 +08:00
2026-04-09 18:14:28 +08:00
2026-03-08 06:59:53 +08:00
2026-02-07 19:46:42 +08:00
2026-04-22 14:56:56 +08:00
2026-04-21 17:23:20 +08:00
2026-03-11 16:46:58 +08:00
2026-03-11 16:46:58 +08:00
2026-03-18 09:23:19 +08:00
2026-02-23 12:45:37 +08:00
2026-03-27 14:33:05 +08:00
2026-02-28 15:01:20 +08:00
2026-04-09 19:25:08 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-03-04 13:45:49 +08:00
2026-04-21 17:34:18 +08:00
2026-04-21 17:34:18 +08:00