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:
2026-03-02 12:38:58 -07:00
parent 08a35bddeb
commit 6eeab58464
34 changed files with 6545 additions and 512 deletions

View File

@@ -173,9 +173,10 @@ a:hover {
/* Subscribe — compact inline text links */
.subscribe-row {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0.5rem;
gap: 0.25rem;
margin-top: 1rem;
}
@@ -573,21 +574,68 @@ a:hover {
border-top: 1px solid #2a2015;
}
.footer-links {
.footer-nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 1.5rem;
margin-bottom: 0.75rem;
gap: 0.5rem 1.5rem;
margin-bottom: 1rem;
}
.footer-links a {
.footer-nav a {
color: var(--text-muted);
}
.footer-links a:hover {
.footer-nav a:hover {
color: var(--text);
}
.footer-icons {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
}
.footer-icons-label {
display: block;
font-size: 0.7rem;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--text-muted);
}
.footer-icons-row {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.5rem;
}
.footer-icon-link {
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 36px;
border-radius: var(--radius-sm);
background: rgba(255, 255, 255, 0.05);
color: var(--accent);
transition: color 0.2s, background 0.2s, transform 0.2s;
}
.footer-icon-link:hover {
color: var(--accent-hover);
background: rgba(255, 255, 255, 0.1);
transform: translateY(-2px);
}
.footer-icon-link svg {
width: 18px;
height: 18px;
}
.footer-projects {
margin: 1.25rem 0;
padding: 1rem 0;
@@ -1252,7 +1300,10 @@ a:hover {
}
.subscribe-row {
flex-direction: row;
align-items: center;
justify-content: flex-start;
gap: 0.5rem;
}
.secondary-links {