Exposer l'état de LiveKit dans le sérialiseur des paramètres du site

voice_enabled n’est pas accessible du tout via l’API JSON : /site.json ne contient aucune clé site_settings. Le seul signal public indiquant que la voix est active sur un site est donc la présence de voice_assets_path.

Ce que je demande, ce sont deux booléens publics, sans authentification, permettant à un client de déterminer s’il doit afficher la voix avant de récupérer les salles. Les deux sont dérivés de l’état existant et ne nécessitent pas de nouveau point d’entrée, dans plugins/voice/plugin.rb :

À la ligne 141, au-dessus de voice_public_access :

#Signaux publics, sans authentification, pour les clients API indiquant que la voix est activée.

add_to_serializer(:site, :voice_available) { SiteSetting.voice_enabled }

À la ligne 152, au-dessus de voice_livekit_per_room_available :

# Indique si les connexions peuvent utiliser LiveKit du tout. Une simple réponse oui/non : pas d'URL, de clé ou de valeur de politique. L'attribut par salle ci-dessous ne fait que contrôler la case à cocher SFU du formulaire de salle, et renvoie false sous la politique all_rooms.

  add_to_serializer(:site, :voice_livekit_available) do

    Voice::Livekit.configured? && SiteSetting.voice_livekit_room_policy != "disabled"

  end

Cela n’expose rien de nouveau : expected_transport est un attribut non restreint sur RoomSerializer (ligne 30, défini à la ligne 150) et rooms#index ignore la connexion (rooms_controller.rb:18), donc « livekit » / « mesh » est déjà lisible anonymement par salle. Cela répond simplement à cette question sans nécessiter de récupération de salle qui pourrait revenir vide.