diff --git a/src/auracast/server/multicast_frontend.py b/src/auracast/server/multicast_frontend.py index 0a839f0..0982a95 100644 --- a/src/auracast/server/multicast_frontend.py +++ b/src/auracast/server/multicast_frontend.py @@ -171,9 +171,9 @@ if audio_mode == "Demo": st.session_state['demo_stream_started'] = False col1, col2 = st.columns(2) with col1: - start_demo = st.button("Start Demo Stream") + start_demo = st.button("Start Demo Stream", disabled=is_streaming) with col2: - stop_demo = st.button("Stop Demo Stream") + stop_demo = st.button("Stop Demo Stream", disabled=not is_streaming) if start_demo: # Always stop any running stream for clean state try: @@ -386,17 +386,25 @@ else: # Send only the device name to backend input_device = option_name_map.get(selected_option) else: - # When streaming, do not call backend for device lists. Reuse persisted selection. + # When streaming, keep showing the current selection but lock editing. input_device = saved_settings.get('input_device') + current_label = input_device or "No device selected" + st.selectbox( + "Input Device", + [current_label], + index=0, + disabled=True, + help="Stop the stream to change the input device." + ) else: input_device = None # Buttons and status on a single row (4 columns: start, stop, spacer, status) c_start, c_stop, c_spacer, c_status = st.columns([1, 1, 1, 2], gap="small", vertical_alignment="center") with c_start: - start_stream = st.button("Start Auracast") + start_stream = st.button("Start Auracast", disabled=is_streaming) with c_stop: - stop_stream = st.button("Stop Auracast") + stop_stream = st.button("Stop Auracast", disabled=not is_streaming) # c_spacer intentionally left empty to push status to the far right with c_status: # Fetch current status from backend and render using Streamlit widgets (no HTML)