2626 */
2727
2828// Web Speech API type declarations
29+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30+ type SpeechRecognitionAny = any ;
2931declare global {
3032 interface Window {
31- SpeechRecognition : typeof SpeechRecognition ;
32- webkitSpeechRecognition : typeof SpeechRecognition ;
33+ SpeechRecognition : SpeechRecognitionAny ;
34+ webkitSpeechRecognition : SpeechRecognitionAny ;
3335 }
3436}
3537
@@ -414,7 +416,7 @@ export default function TrinityCanvas() {
414416
415417 // Emergent dot nav state
416418 const [ dotsVisible , setDotsVisible ] = useState ( false ) ;
417- const dotsTimerRef = useRef < ReturnType < typeof setTimeout > > ( ) ;
419+ const dotsTimerRef = useRef < ReturnType < typeof setTimeout > > ( undefined ) ;
418420
419421 // Chat state
420422 const [ messages , setMessages ] = useState < Message [ ] > ( [ ] ) ;
@@ -467,7 +469,7 @@ export default function TrinityCanvas() {
467469 const analyserRef = useRef < AnalyserNode | null > ( null ) ;
468470 const mediaStreamRef = useRef < MediaStream | null > ( null ) ;
469471 const voiceRafRef = useRef < number > ( 0 ) ;
470- const recognitionRef = useRef < SpeechRecognition | null > ( null ) ;
472+ const recognitionRef = useRef < SpeechRecognitionAny | null > ( null ) ;
471473
472474 // Mirror of Three Worlds state
473475 const [ mirrorStatus , setMirrorStatus ] = useState < MirrorStatus | null > ( null ) ;
@@ -492,7 +494,7 @@ export default function TrinityCanvas() {
492494 const [ mVisionResult , setMVisionResult ] = useState ( '' ) ;
493495 const [ mVoiceActive , setMVoiceActive ] = useState ( false ) ;
494496 const [ mVoiceText , setMVoiceText ] = useState ( '' ) ;
495- const mVoiceRecRef = useRef < SpeechRecognition | null > ( null ) ;
497+ const mVoiceRecRef = useRef < SpeechRecognitionAny | null > ( null ) ;
496498
497499 // Self-reflection state (v2.6)
498500 const [ selfReflection , setSelfReflection ] = useState < string | null > ( null ) ;
@@ -858,7 +860,7 @@ export default function TrinityCanvas() {
858860 if ( SpeechRecognition ) {
859861 const recognition = new SpeechRecognition ( ) ;
860862 recognition . continuous = true ; recognition . interimResults = true ; recognition . lang = 'ru-RU' ;
861- recognition . onresult = ( event : Event & { resultIndex : number ; results : SpeechRecognitionResultList } ) => {
863+ recognition . onresult = ( event : Event & { resultIndex : number ; results : any } ) => {
862864 let transcript = '' ;
863865 for ( let i = event . resultIndex ; i < event . results . length ; i ++ ) transcript += event . results [ i ] [ 0 ] . transcript ;
864866 setVoiceTranscript ( transcript ) ;
@@ -1018,7 +1020,7 @@ export default function TrinityCanvas() {
10181020 if ( ! SR ) { setMVoiceText ( 'Speech API not supported' ) ; return ; }
10191021 const rec = new SR ( ) ;
10201022 rec . continuous = false ; rec . interimResults = false ; rec . lang = 'en-US' ;
1021- rec . onresult = ( ev : Event & { results : SpeechRecognitionResultList } ) => {
1023+ rec . onresult = ( ev : Event & { results : any } ) => {
10221024 const text = ev . results [ 0 ] [ 0 ] . transcript ;
10231025 setMVoiceText ( text ) ;
10241026 // Auto-send voice transcript as chat
0 commit comments