Exposing LiveKit status in site settings serializer

voice_enabled isn’t reachable from the JSON API at all: /site.json carries no site_settings key. So the only public signal that voice is running on a site is the presence of voice_assets_path.

What I’m asking for is two public, credential-free booleans so a client can decide whether to surface voice before fetching any rooms. Both are derived from existing state and need no new endpoint, in plugins/voice/plugin.rb:

At line 141, above voice_public_access:

#Public, credential-free signals for API clients that voice is enabled.

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

At line 152, above voice_livekit_per_room_available:

# Whether joins can use LiveKit at all. A bare yes/no: no URL, key or
# policy value. The per-room attribute below only gates the room form's
# SFU checkbox, and reads false under the all_rooms policy.

  add_to_serializer(:site, :voice_livekit_available) do

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

  end

This exposes nothing new: expected_transport is an ungated attribute on RoomSerializer (line 30, defined at 150) and rooms#index skips login (rooms_controller.rb:18), so “livekit” / “mesh” is already anonymously readable per room. This just answers it without a room fetch that may come back empty.