summaryrefslogtreecommitdiff
path: root/internal
AgeCommit message (Collapse)Author
2026-04-02task 009/00i: remove internal translation from image clients; consolidate ↵Paul Buetow
provider normalization - task 009: remove translateBulgarianToEnglish from OpenAIClient and NanoBananaClient. Image clients no longer make internal translation API calls; callers must supply SearchOptions.Translation (processor and GUI already do). When translation is absent, opts.Query (the Bulgarian word) is used as fallback subject so image generation still proceeds. Update tests to pass translation via SearchOptions rather than relying on the removed fallback. - task 00i: consolidate duplicate ProviderGemini/ProviderOpenAI constants and normalizeProvider() functions from internal/translation and internal/phonetic into a shared config.NormalizeProvider(string) string in internal/config/provider.go. Both packages now delegate to the shared function so the normalization rule (lowercase, trim, default "gemini") has one authoritative home. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 00p: add -race to default test task; add t.Parallel() to safe unit testsPaul Buetow
- Enable -race flag on the default 'task test' command so race conditions are caught by default, not only when running 'task test-race' - Add t.Parallel() to all tests in internal/image/prompt_test.go (pure function tests with no shared state) - Add t.Parallel() to TestReadBatchFile and its subtests in batch package (file I/O with t.TempDir(), no global state) - Add t.Parallel() to TestValidateBulgarianText and its subtests in audio package (pure string validation, no shared state) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 00c/00f: thread context through processor audio/image calls; per-word ↵Paul Buetow
batch timeout - Thread ctx context.Context through generateAudio, generateAudioBgBg, generateAudioWithVoice, generateAudioWithVoiceAndFilename, generateAudioWithVoiceAndFilenameInDir, and downloadImagesWithTranslation. Also add ctx to ProcessWordWithTranslationAndType so callers can control the deadline for the full word-processing pipeline. - In ProcessBatch, create a context.WithTimeout(5 * time.Minute) per word so a single hung TTS or image API call cannot block the whole batch run. Previously both functions created context.Background() internally, making cancellation impossible. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 00g/00k/00h/008: gofmt, remove ProviderWithFallback, stdlib helpers, ↵Paul Buetow
shared prompt - task 00g: fix gofmt violations (trailing whitespace, missing newlines, indentation) in 8 files; all pass gofmt -l now - task 00k: remove unused ProviderWithFallback and its tests (YAGNI — no production caller existed; voice-level fallback via RunWithVoiceFallbacks already covers the real use case) - task 00h: replace private splitLines/trimSpace/isSpace helpers in internal/batch/processor.go with strings.Split+ReplaceAll and strings.TrimSpace from the stdlib; remove the now-redundant tests - task 008: extract buildEducationalPrompt into internal/image/prompt.go so the prompt-assembly policy (scene truncation cascade, char limit) lives in one place; both OpenAIClient and NanoBananaClient delegate to it Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 00m/00n/00b: remove dead stub, add interface assertions, fix HTTP timeoutPaul Buetow
- Remove dead DownloadImage stub from image/search.go (always returned nil, real implementation lives in Downloader.DownloadImage in download.go) - Add compile-time interface assertions for OpenAIProvider, ProviderWithFallback, and OpenAIClient to catch interface drift at compile time - Replace http.DefaultClient (no timeout) with a shared imageHTTPClient (60s timeout) in both OpenAIClient and NanoBananaClient Download methods; prevents goroutine hangs on slow/unresponsive image servers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 005: use strings.Builder for string concatenation in loopsPaul Buetow
Replace per-rune += string(r) heap allocations with strings.Builder in SanitizeFilename (internal/utils.go) and splitLines (internal/batch/processor.go). Both now call Grow/Reset appropriately to pre-allocate capacity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02task 003: handle home-dir and APKG marshal errorsPaul Buetow
2026-04-02task 002: restore Gemini warning outputPaul Buetow
2026-04-02task 002: restore Gemini fallback output and add failure coveragePaul Buetow
2026-04-02task 002: centralize Gemini voice fallbacksPaul Buetow
2026-04-02task 001: remove committed debug printf tracesPaul Buetow
2026-04-02Release v0.9.1v0.9.1Paul Buetow
2026-04-02Release v0.9.0v0.9.0Paul Buetow
2026-04-02Fix verification gate lint and test issuesPaul Buetow
2026-04-02Add Gemini model listing supportPaul Buetow
2026-04-02Fix processor audio metadata instruction gatingPaul Buetow
2026-04-02Align processor attribution with provider semanticsPaul Buetow
2026-04-02Fix processor Gemini/OpenAI voice wiringPaul Buetow
2026-04-02Fix Gemini voice selection in processorPaul Buetow
2026-04-02Centralize audio sidecar generationPaul Buetow
2026-04-02Fix processor GUI parity gapsPaul Buetow
2026-04-02Align GUI and CLI provider wiringPaul Buetow
2026-04-02Fix GUI selector sync and audio metadata modelPaul Buetow
2026-04-02Fix GUI audio reload and bg-bg session statePaul Buetow
2026-04-02Fix GUI voice-suffixed audio discoveryPaul Buetow
2026-04-02Harden GUI audio loading for GeminiPaul Buetow
2026-04-01Wire Gemini audio into GUIPaul Buetow
2026-04-01Fix multi-voice audio path resolutionPaul Buetow
2026-04-01Honor config audio format for OpenAIPaul Buetow
2026-04-01Fix Gemini audio format handlingPaul Buetow
2026-04-01Add Gemini audio CLI flagsPaul Buetow
2026-04-01Align Gemini audio defaults with TTS APIPaul Buetow
2026-04-01Fix Gemini audio provider defaultsPaul Buetow
2026-04-01Strengthen Nano Banana metadata assertionPaul Buetow
2026-04-01Restore Nano Banana integration gatePaul Buetow
2026-04-01Add Nano Banana download testsPaul Buetow
2026-04-01zg: add gui front-back voice coveragePaul Buetow
2026-04-01zg: add bg-bg consumer coveragePaul Buetow
2026-04-01zg: add consumer coverage for shared voice listsPaul Buetow
2026-04-01zg: derive openai voice help from shared listPaul Buetow
2026-04-01zg: extract shared audio voice listsPaul Buetow
2026-04-01z8: preserve Nano Banana CLI precedencePaul Buetow
2026-04-01z8: finish Nano Banana CLI wiringPaul Buetow
2026-04-01z8: wire Nano Banana into processorPaul Buetow
2026-04-01z9: clarify GUI provider matrixPaul Buetow
2026-04-01z9: update GUI Nano Banana guidancePaul Buetow
2026-04-01z9: fix GUI launch provider propagationPaul Buetow
2026-04-01z9: wire Nano Banana into GUIPaul Buetow
2026-04-01z7: make Nano Banana help additivePaul Buetow
2026-04-01z7: keep Nano Banana CLI additivePaul Buetow