- AI generation now keeps a local history: previous results can be opened from History AI, reused, or cleared.
- History AI now opens directly below the AI panel header and shows its active state on the button.
- OpenRouter settings now save one connection for both AI generation and OpenRouter TTS, including the selected TTS model and voices.
- OpenRouter can now keep up to 5 saved model profiles, with quick switching, editing, and deletion from AI settings.
- AI settings now open wider with a flatter layout, and OpenRouter records can be selected, saved, created, and deleted directly from the LLM model row.
- Added regression coverage for OpenRouter model-profile persistence and native Keychain hydration for provider secrets.
- Packaged runtime smoke now checks temporary Keychain roundtrips for OpenRouter, OpenRouter TTS, Google TTS, and ElevenLabs secret keys.
- OpenRouter key verification now explains rejected keys separately from OpenRouter service availability.
- Added an AI/TTS quality baseline for beta smoke checks across LLM profiles, voices, and de/en/ru sample material.
- Added a release-notes check so product changes are less likely to ship without a short in-app change-log note.
- Study-set prompts were updated so ordinary language, term, and Q&A requests generate useful cards instead of refusing the task.
- The packaged macOS app startup path was tightened: the desktop build now includes the runtime pieces needed by the installed app.
- Packaged startup now waits for a real backend HTTP response and clears a stale unresponsive desktop backend before loading the window.
- DMG rebuild now handles stale mounted build images more reliably before creating a new macOS installer.
- OpenRouter TTS cache and diagnostics were clarified so repeated speech generation can reuse saved audio where possible.
· Build 42
AI generation, OpenRouter, and desktop build fixes
AI generation now keeps a local history: previous results can be opened from History AI, reused, or cleared.