TTS fixes, Inworld improvements, footer redesign, episodes 15-25, invoice script fix
- Fix TTS text pipeline: new caps handling (spell out unknown acronyms, lowercase emphasis words), action-word lookahead for parenthetical stripping, abbreviation expansions (US→United States, NM→New Mexico), pronunciation fixes - Inworld TTS: camelCase API fields, speakingRate per-voice overrides, retry logic with exponential backoff (3 attempts) - Footer redesign: SVG icons for social/podcast links across all pages - Stats page: show "Rate us on Spotify" instead of "not public" placeholder - New voices, expanded caller prompts and problem scenarios - Social posting via Postiz, YouTube upload in publish pipeline - Episode transcripts 15-25, terms page, sitemap updates - Fix invoice script: match Timing totals using merged Task+App intervals Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -684,7 +684,13 @@ async function loadMusic() {
|
||||
genreOrder.forEach(genre => {
|
||||
const group = document.createElement('optgroup');
|
||||
group.label = genre;
|
||||
genres[genre].forEach(track => {
|
||||
// Shuffle within each genre group
|
||||
const genreTracks = genres[genre];
|
||||
for (let i = genreTracks.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[genreTracks[i], genreTracks[j]] = [genreTracks[j], genreTracks[i]];
|
||||
}
|
||||
genreTracks.forEach(track => {
|
||||
const option = document.createElement('option');
|
||||
option.value = track.file;
|
||||
option.textContent = track.name;
|
||||
|
||||
Reference in New Issue
Block a user