mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-06-30 13:37:02 +08:00
Real ATIS broadcasts run continuously; tuning in mid-broadcast should drop the pilot into the current spoken position, then loop. The frontend now generates the full announcement once via TTS, plays it as a looping HTMLAudioElement, and seeks to ((Date.now() - lastUpdated) / duration) on metadata-load so all clients tuned to the same ATIS hear it phase- synced. The loop starts/stops automatically with frequency tuning and restarts on info-letter change. say.post.ts now caches tag=atis like tag=flightlab to avoid re-synthesizing identical announcements. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>