@@ -72,16 +72,8 @@ export function NativeBridgeGate({
7272 }
7373 } ;
7474
75- // If already connected and running, auto-proceed
76- useEffect ( ( ) => {
77- if ( isConnected && isRunning ) {
78- // Small delay to show the success state
79- const timer = setTimeout ( ( ) => {
80- onJoinAsPerformer ( ) ;
81- } , 500 ) ;
82- return ( ) => clearTimeout ( timer ) ;
83- }
84- } , [ isConnected , isRunning , onJoinAsPerformer ] ) ;
75+ // Note: We don't auto-proceed anymore - user should explicitly click "Join as Performer"
76+ // Audio starts AFTER joining, so isRunning will be false on this screen
8577
8678 return (
8779 < div className = "min-h-screen bg-gradient-to-br from-slate-900 via-indigo-950 to-slate-900 flex items-center justify-center p-4" >
@@ -229,21 +221,21 @@ export function NativeBridgeGate({
229221
230222 { /* Join Options */ }
231223 < div className = "space-y-3 pt-2" >
232- { /* Performer option */ }
224+ { /* Performer option - only requires connection, audio starts after joining */ }
233225 < Button
234226 size = "lg"
235- disabled = { ! isConnected || ! isRunning }
227+ disabled = { ! isConnected }
236228 onClick = { onJoinAsPerformer }
237229 className = { cn (
238230 "w-full h-14 text-base" ,
239- isConnected && isRunning
231+ isConnected
240232 ? "bg-gradient-to-r from-indigo-600 to-purple-600 hover:from-indigo-500 hover:to-purple-500"
241233 : "bg-slate-700 text-slate-400"
242234 ) }
243235 >
244236 < Mic className = "w-5 h-5 mr-2" />
245237 Join as Performer
246- { isConnected && isRunning && (
238+ { isConnected && latency . total > 0 && (
247239 < span className = "ml-2 text-xs bg-white/20 px-2 py-0.5 rounded-full" >
248240 { latency . total . toFixed ( 0 ) } ms
249241 </ span >
0 commit comments