8a20e679f60cc1c887ad4aeaba88bf89f4cc9dab
Setting a show theme after the caller lineup was loaded caused every caller button to keep its pre-theme label while the LLM dialog used the post-theme bg names — host says "Hi Phil", caller replies "it's Cody, actually". Three underlying bugs, all fixed here: - _regenerate_backgrounds_for_keys ignored its keys parameter and replaced the entire caller_backgrounds dict, clobbering used slots along with unused ones. Now only the listed slots are touched. - set_show_theme's used_keys detection compared record.caller_name (the slim bg name) against CALLER_BASES[k]["name"] (the randomized fallback name) — two different namespaces that never match, so every slot was flagged unused. Now it matches against session.caller_backgrounds[k]["name"]. - set_show_theme fired the regeneration as a detached asyncio task, so the POST returned before bg was consistent. Even if the frontend did reload /api/callers, it would race the regen. Now awaited. Frontend setShowTheme/clearShowTheme now call loadCallers() after the theme POST resolves so the button list actually refreshes, with a "Regenerating..." button state during the ~30-60s wait. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Languages
HTML
78.2%
Python
17.3%
JavaScript
2%
CSS
1.3%
Lua
1%
Other
0.2%