summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-04-01z7: wire Nano Banana CLI configPaul Buetow
2026-04-01z6: ignore whitespace translation inputPaul Buetow
2026-04-01z6: fix Nano Banana metadata handlingPaul Buetow
2026-04-01z6: strengthen Nano Banana provider testsPaul Buetow
2026-04-01z6: fix Nano Banana prompt and normalization pathsPaul Buetow
2026-04-01z6: add Nano Banana image providerPaul Buetow
2026-04-01fix(z5): encapsulate artistic styles poolPaul Buetow
2026-04-01refactor(z5): extract shared artistic stylesPaul Buetow
2026-04-01Address zm review feedback on Gemini testsPaul Buetow
2026-04-01Add Gemini audio tests for zmPaul Buetow
2026-04-01zi: add Gemini audio attribution helperPaul Buetow
2026-04-01zt: align GUI translation defaults with shared translatorPaul Buetow
2026-04-01zt: route GUI translations through shared translatorPaul Buetow
2026-04-01zu: switch GUI phonetics to shared fetcherPaul Buetow
2026-04-01zf: align Gemini TTS default modelPaul Buetow
2026-04-01zf: fix Gemini provider routing and output validationPaul Buetow
2026-04-01zf: add Gemini TTS providerPaul Buetow
2026-04-01zs: preserve OpenAI default for phoneticsPaul Buetow
2026-04-01zs: add Gemini-backed phonetic fetchingPaul Buetow
2026-04-01zr: preserve Gemini init errors and docsPaul Buetow
2026-04-01zr: restore OpenAI default translation providerPaul Buetow
2026-04-01zr: add Gemini-backed translation providerPaul Buetow
2026-04-01z4: anchor genai dependencyPaul Buetow
2026-04-01z4: add google genai dependencyPaul Buetow
2026-03-08chore: bump version to v0.8.3v0.8.3Paul Buetow
2026-03-08refactor(task-376): share audio attribution builderPaul Buetow
2026-03-08test(task-374): fix errcheck issues in tests and support codePaul Buetow
2026-03-08fix(task-373): handle runtime cleanup errors in production pathsPaul Buetow
2026-03-08chore: bump version to v0.8.2v0.8.2Paul Buetow
2026-03-08fix: complete code-quality task queue (373-378)Paul Buetow
2026-03-05chore: remove REVIEW-COMMENTS.mdPaul Buetow
2026-03-05chore: release v0.8.1v0.8.1Paul Buetow
2026-01-21cleanupPaul Buetow
2026-01-21Fix: Auto-play only regenerated audio (front or back, not both) for bg-bg cardsv0.8.0Paul Buetow
- Removed duplicate fyne.KeyA handler that was triggering both front and back audio - Added SetAudioFileNoAutoPlay() method for controlled playback - Front audio (a key) now auto-plays only front audio - Back audio (A key) now auto-plays only back audio - Refactored startPlayback to use startPlaybackForFile for better control - Fixed icon reset when playback finishes for each audio type separately
2026-01-21docs: add troubleshooting guide for audio regeneration issuePaul Buetow
Created TROUBLESHOOTING.md with detailed investigation of the reported issue where A (regenerate back audio) may be regenerating the wrong side for Bulgarian-Bulgarian cards. Includes: - Issue description and expected behavior - Current implementation details - Data flow analysis - Debugging steps to reproduce and verify - List of potential root causes - Related code files - Test case for reproducibility
2026-01-21cleanup: remove temporary debug codePaul Buetow
2026-01-21debug: add debug output to audio regeneration functionsPaul Buetow
Add console debug output to understand which side (front/back) is being regenerated for audio A and P key presses.
2026-01-21simplify: remove Space key, use P/Shift+P for audio playbackPaul Buetow
- Remove Space key handler from handleShortcutKey Space is not needed - use P/Shift+P instead - Clarify hotkeys help text p/п = play front audio P/П = play back audio (bg-bg only) The SetOnTypedRune handler already correctly handles case-sensitive keys (p vs P, a vs A) for both playback and regeneration.
2026-01-21improve: Space hotkey for back audio and consistent button iconsPaul Buetow
- Add Space key as primary hotkey to play back audio (bg-bg cards only) More intuitive than Shift+P for playing the second audio - Change back audio button icon from MediaSkipNextIcon to MediaPlayIcon Both front and back buttons now use the same play icon for consistency - Update hotkeys help dialog to document Space key Mark P/П as legacy (kept for backward compatibility) This makes the UI more consistent and the Space key is more natural for playing the back audio without using Shift.
2026-01-21cleanup: remove debug logging from GUI navigationPaul Buetow
Now that the root cause is fixed in the processor, remove the debug logging that was added for troubleshooting.
2026-01-21fix: bg-bg cards generating audio in separate directoriesPaul Buetow
- Fix critical bug where generateAudioBgBg() was creating two separate card directories (one for front audio, one for back audio) - Root cause: generateAudioWithVoiceAndFilename() calls findOrCreateWordDirectory() with both the front word AND the back word, creating separate directories - Solution: Pass wordDir to both audio generation calls - Create new generateAudioWithVoiceAndFilenameInDir() function - Refactor generateAudioWithVoiceAndFilename() to use new function - generateAudioBgBg() now finds directory ONCE and passes it to both calls This fixes the issue where opening a bg-bg card showed 'no audio loaded' because audio_front.mp3 and audio_back.mp3 were in different directories.
2026-01-21improve: better audio player UI and debugging for bg-bg cardsPaul Buetow
- Add debug logging to navigation.go to diagnose audio file loading issues Prints paths being checked and whether files are found - Improve AudioPlayer UI for Bulgarian-Bulgarian cards: - Add labels showing 'Front' and 'Back' for bg-bg audio buttons - Labels only show when audio files are actually loaded - Better visual distinction between the two playable audios - Reorganized button layout with VBox for cleaner appearance - Track bg-bg state in AudioPlayer (isBgBg field) - Automatically set when back audio file is loaded - Used to determine when to show labels This makes it clearer that Bulgarian-Bulgarian cards have two independently playable audio outputs, and helps debug why audio isn't being loaded.
2026-01-21fix: detect and load bg-bg audio files in GUIPaul Buetow
- Fix scanExistingWords() to detect cards with audio_front/audio_back files Previously only checked for audio.mp3, missing Bulgarian-Bulgarian cards - Fix checkForMissingFiles() to also look for bg-bg audio files Now checks both audio.mp3 (en-bg) and audio_front.mp3 (bg-bg) - Add check for back audio file in checkForMissingFiles() Ensures SetBackAudioFile is called when audio_back is loaded later This fixes the issue where opening an existing Bulgarian-Bulgarian card would not load the audio files, leaving the play buttons non-functional.
2026-01-21docs: document Bulgarian-Bulgarian batch file format (double equals ==)Paul Buetow
- Update README.md with complete batch file format documentation - Expanded from 3 to 5 supported formats - Added Format 4: Bulgarian-Bulgarian (monolingual) using double equals - Clarified Format 2 as English→Bulgarian with single equals - Noted that bg-bg cards generate two separate audio files - Update CLI help text to show batch file format examples - Added example of double equals syntax - Clarified single equals creates English→Bulgarian cards This closes the documentation gap for the Bulgarian-Bulgarian flashcard feature that was already implemented in the codebase.
2026-01-21Convert Taskfile.yaml to Magefile.goPaul Buetow
Replace task runner with mage for build automation. All existing targets preserved: build, run, test variants, install, clean. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-08-02add timestamps to .apkg exports and num of cardsv0.7.5Paul Buetow
2025-08-02add ankidroid screenshotPaul Buetow
2025-08-02bump version...v0.7.4Paul Buetow
2025-08-02also export reverse cards via apkgPaul Buetow
2025-07-22Fix race conditions in background processing and prevent deletion of active ↵Paul Buetow
cards - Fix race condition where images, audio, and phonetic info could be saved to wrong flashcard when navigating quickly between cards - Add pre-determined card directory that's passed to all background operations - Track active operations per word to prevent deletion during generation - Block deletion of cards that are queued or being processed - Show appropriate error messages when deletion is blocked This ensures files are always saved to the correct card directory and prevents data loss from deleting cards with active operations. 🤖 Generated with [opencode](https://opencode.ai) Co-Authored-By: opencode <noreply@opencode.ai>