summaryrefslogtreecommitdiff
path: root/internal/version.go
AgeCommit message (Collapse)Author
2026-04-21Release v0.29.2v0.29.2Paul Buetow
2026-04-17Release v0.29.1: stable deck/model IDs to prevent duplicate notetypes on ↵v0.29.1Paul Buetow
re-export Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13Release v0.29.0: display card counter (Card X / N) in the GUI status barv0.29.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10Release 0.28.2v0.28.2Paul Buetow
2026-04-09Release v0.28.1: convert Gemini TTS mono audio to stereov0.28.1Paul Buetow
Duplicate each 16-bit PCM sample into both L/R channels so all audio output uses both speakers, and retroactively converted the 88 existing card MP3s to stereo via ffmpeg. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08Release v0.28.0: story gallery aggregation and stronger ultra-realistic promptsv0.28.0Paul Buetow
- Copy *_gallery_*.png into comics/gallery after each --story run - Expand ultra-realistic rendering instructions in image prompts - Add gallery copy test; document comics/ in gitignore; sample vocab batch asset Made-with: Cursor
2026-04-06chore: bump version to 0.27.0v0.27.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06feat: mandatory speech bubbles in story panels, v0.26.0v0.26.0Paul Buetow
Two-part fix for missing dialogue bubbles: 1. Panel script prompt: each panel description must include quoted Bulgarian dialogue for the character to speak/think. At least 3 of 4 panels per page must have speech or thought text in the description. 2. Image prompt: added MANDATORY SPEECH BUBBLES block requiring at least 3 of 4 panels to contain a bubble, describing exact white-background/black-outline style for speech and cloud-shape for thought bubbles, all text Bulgarian Cyrillic. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06feat: Gemini panel script drives comic panels in narrative order, v0.25.0v0.25.0Paul Buetow
Previously story text was split mechanically into 5 sections and each panel was guessed from raw prose — causing repeated compositions and incoherent plots. Now GenerateFull requests a 20-entry panel visual script (P1-A…P5-D) from Gemini in the same API call as the story and bible. Each panel gets an explicit 1-2 sentence description of WHO/WHAT/WHERE/expression, written in chronological story order. buildStoryPagePrompt now uses these descriptions to drive the image model directly ("Draw each panel EXACTLY as described") instead of "scene N from the excerpt". Falls back to excerpt-driven prompts when the script is absent or incomplete. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06feat: add --ultra-realistic flag to force photorealistic rendering, v0.24.0v0.24.0Paul Buetow
Previously only --no-ultra-realistic existed (to force standard comic style). --ultra-realistic now forces photorealistic panels instead of the random 50/50 pick. storyUltraRealistic() updated to handle three states: forced-on, forced-off, random. README updated with --ultra-realistic example. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06feat: --narrate opt-in narration, panel variety mandate, v0.23.0v0.23.0Paul Buetow
- Add --narrate flag (default false); narration is now opt-in to save TTS quota - Add VARIETY MANDATE to story page prompts: each panel must differ in camera angle, pose, location, lighting, and foreground — prevents repeated compositions - Wire NarrateEnabled through RunnerConfig and main.go - Update README: --narrate flag, updated output file table, narrator voice examples Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06chore: bump version to 0.22.0v0.22.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06chore: bump version to 0.21.0, add maxPollAttempts constant and comments to ↵Paul Buetow
veo.go Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06chore: bump version to 0.20.0v0.20.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04chore: bump version to 0.19.0v0.19.0Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: skip existing pages on re-run, add --story-slug for targeted repairv0.18.0Paul Buetow
- loadOrGenerate() in artist.go skips API calls for pages already on disk, loading bytes for the reference chain. Re-runs now only generate missing pages instead of regenerating the whole comic. - --story-slug flag forces the output directory slug so a repair run writes to the same directory as the original (e.g. --story-slug ai-jungle-quest). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: use photography-only style pool for ultra-realistic mode, update READMEv0.17.0Paul Buetow
Ultra-realistic mode now picks from a dedicated realisticStyles pool (DSLR photography, cinematic stills, hyper-realistic) instead of the comicStyles pool. This prevents "comic strip" language from dominating the model's output when photorealistic rendering is requested. README updated: 12-page comic count (5 gallery pages), rendering mode description clarified to show both pools and the 50/50 random default. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04fix: enforce per-page location from story excerpt, bump to 0.16.0v0.16.0Paul Buetow
- Add explicit LOCATION rule to story page prompt: all panels must show only the location described in that page's excerpt, not any other story location - Strengthen excerpt label so model illustrates only the current excerpt - Bump version to 0.16.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04fix: gender-neutral gallery/cover prompts, support multiple main charactersv0.15.0Paul Buetow
- Replace all "heroine/her" references in gallery poses with gender-neutral "main character/them" - Explicitly instruct model to preserve character gender, not invent new characters - Support multiple main characters in gallery page instruction - Fix cover and back cover orientation: remove "portrait orientation" (canvas is 16:9 landscape) - Bump version to 0.15.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: 5 gallery pages with distinct poses, fix single-image layoutv0.14.0Paul Buetow
- Increase galleryPageCount from 3 to 5 (12 total pages per comic) - Add 2 new gallery poses: profile close-up and power stance full-body - Fix gallery prompt: explicitly state single 16:9 landscape image, no grid/panels Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: random ultra-realistic/comic style, --no-ultra-realistic flag, updated ↵v0.13.0Paul Buetow
README - Random 50/50 rendering mode per run (ultra-realistic or standard comic style) - --no-ultra-realistic flag forces standard comic style when set - renderingRequirement const centralised and applied to all image prompts via DRY renderReq() method - Log rendering mode chosen at generation time - Update README: correct page count (10), output filenames, all --story flags documented - Bump version to 0.13.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: photorealistic rendering requirement in all image prompts, ↵v0.12.0Paul Buetow
vocabulary/theme files - Add renderingRequirement const applied to all prompts (cover, story pages, back cover, gallery) - Write <slug>_comic_vocabulary.txt with vocabulary words and story text for learning - Write <slug>_theme.txt recording the --story-theme used for easy reproduction - Enforce adult (18+) characters in generator to avoid content policy blocks on revealing clothing - Add cover/back cover retry logic (same pageMaxRetries as story pages) - Bump version to 0.12.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04feat: 5 story pages, 3 gallery pages, cover retry, adult characters, shorter ↵v0.11.0Paul Buetow
TTS chunks - Increase story pages from 3 to 5 (10 total with cover/gallery/back) - Add 3 text-free gallery pages with close-up heroine poses before back cover - Add retry logic to cover and back cover generation (same as story pages) - Enforce adult (18+) characters in generator prompt to avoid content policy blocks - Reduce TTS chunk size from 200 to 100 words to stay under 1-minute quality threshold - Increase TTS timeout from 2 to 3 minutes to avoid spurious deadline exceeded errors Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03feat: comic pipeline v0.10.0 — iterative chaining, title slugs, comics ↵Paul Buetow
subfolder, 16:9 - Iterative image chaining: each page receives cover + prev page as pixel-level reference (multimodal) so the model copies appearance directly, not from text alone - --story-theme flag overrides random genre pick per run - Gemini now generates a short comic title (---COMIC TITLE--- separator) used as the output slug; all files named <slug>_cover.png, <slug>_page_1.png, etc. - All comic output stored under comics/<slug>/ subdirectory - Aspect ratio changed to 16:9 (ThinkPad X1 Gen 9 screen fit; 16:10 not supported) - Bulgarian language rule moved to top of every prompt for stronger compliance - Dynamic story-specific cover masthead + publisher logo badge matching story genre - --story-theme "a thrilling space..." forces genre without touching random pool Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03feat: add --story cinematic narration and comic strip generationPaul Buetow
- Generates a ~500-word Bulgarian vocabulary story from a batch file - Produces 3 comic pages via NanoBanana (90% ultra-realistic style) - Art style chosen randomly per run; override with --story-style - Cinematic Gemini TTS narration saved as story_narration.mp3 - Random voice from curated pool (Charon, Fenrir, Enceladus, Algieba, Aoede, Schedar) - Override narrator voice with --narrator-voice - Falls back to story_tts_todo.txt if narration fails - No new API key required — reuses existing GOOGLE_API_KEY - Bump version to 0.9.4 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03chore: bump version to 0.9.2Paul Buetow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02Release v0.9.1v0.9.1Paul Buetow
2026-04-02Release v0.9.0v0.9.0Paul Buetow
2026-03-08chore: bump version to v0.8.3v0.8.3Paul Buetow
2026-03-08chore: bump version to v0.8.2v0.8.2Paul Buetow
2026-03-05chore: release v0.8.1v0.8.1Paul 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
2025-08-02add timestamps to .apkg exports and num of cardsv0.7.5Paul Buetow
2025-08-02bump version...v0.7.4Paul Buetow
2025-07-22Reorganize assets and bump version to 0.7.3v0.7.3Paul Buetow
- Move totalrecall.desktop, install-icon.sh, and config.yaml.example to assets/ directory - Update all references in README.md and install-icon.sh - Add file organization guidelines to AGENTS.md - Clean up root directory structure 🤖 Generated with [opencode](https://opencode.ai) Co-Authored-By: opencode <noreply@opencode.ai>
2025-07-22Bump version to 0.7.2v0.7.2Paul Buetow
- Fixed background image generation race conditions - Fixed UI updates when navigating between cards - Improved file sync and error handling
2025-07-21fix(gui): Display phonetic info immediately when fetchedv0.7.1Paul Buetow
- Update phonetic display as soon as data is available, not after image generation - Apply fix to both single word and batch processing modes - Improves user experience by showing IPA transcription without delay - Bump version to 0.7.1 🤖 Generated with [opencode](https://opencode.ai) Co-Authored-By: opencode <noreply@opencode.ai>
2025-07-21Release v0.7.0: Add auto-play feature and improve keyboard navigationv0.7.0Paul Buetow
New Features: - Added auto-play feature for audio with 'u'/'у' hotkey toggle - Auto-play is enabled by default on app startup - Automatically plays audio when new files are generated - Automatically plays audio when navigating between cards - Added Escape key support to unfocus all input fields - Works for Bulgarian word input - Works for English translation input - Works for image prompt multi-line input Improvements: - Increased default window size by 10% (800x700 → 880x770) - Fixed duplicate hotkey handling for 'u', 'h', and 'l' keys - Fixed tooltip initialization error by deferring audio player tooltips Bug Fixes: - Fixed Fyne threading errors in audio playback - Fixed tooltip layer initialization order issue - Removed duplicate keyboard shortcut handlers The auto-play feature enhances the learning experience by automatically playing pronunciation audio when cards are generated or when navigating through existing cards. Users can toggle this feature on/off at any time using the 'u' or 'у' hotkey.
2025-07-20feat: make GUI default mode and always use random voicev0.6.1Paul Buetow
- GUI mode now launches by default when no arguments provided - Updated .desktop file to remove unnecessary --gui flag - Updated README to reflect GUI as default mode - Audio generation always uses random voice and speed (0.90-1.00) - No more defaulting to "alloy" voice for first generation - Bump version to 0.6.1 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19feat: improve flashcard storage and audio regenerationv0.6.0Paul Buetow
- Change default card storage from ~/Downloads to ~/.local/state/totalrecall/cards/ - Keep .apkg exports in ~/Downloads for user convenience - Fix audio regeneration to use random voice and speed (0.9-1.0) - Fix GNOME dock icon by updating StartupWMClass to "Totalrecall" - Fix navigation to properly find cards in new XDG state directory - Ensure config defaults are properly filled when using GUI mode - Bump version to 0.6.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19chore: bump version to 0.5.2v0.5.2Paul Buetow
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19feat: add app icon and change default output directoryPaul Buetow
- Add custom app icon with memory/brain theme - Icon now displays in GNOME app menu, window title bar, and process list - Change default output directory to ~/.local/state/totalrecall/ - Make output directory configurable via CLI flag, config file, or env var - Add desktop entry file for GNOME integration - Add install script for easy icon installation - Update README with icon display and default directory information - Bump version to 0.5.1 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-19feat: improve GUI layout and add Cyrillic keyboard supportv0.5.0Paul Buetow
- Move navigation buttons to top toolbar - Increase window height (600→700px) and phonetic info area (100→180px) - Fix file check ticker race condition - Remove File menu, add export/help icons to toolbar - Add comprehensive Cyrillic keyboard support for all hotkeys - Support Cyrillic keys in all dialogs (help, export, delete confirmation) - Add project page link to help dialog - Bump version to 0.5.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18chore: bump version to 0.4.2Paul Buetow
- Fix Fyne tooltip layer error by deferring tooltip setup after layer creation - Add phonetic information generation to batch mode processing - Fix GUI not displaying phonetic info for batch-generated cards - Add debug logging for phonetic file loading - Fix checkForMissingFiles to handle placeholder text in phonetic display 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18chore: bump version to 0.4.1Paul Buetow
- Fixed timestamp+hash naming for directories in CLI to match GUI - Fixed multiple directories being created for same word - Added phonetic alphabet fetching to processing counter - Limited image generation prompts to 1000 characters - Fixed Anki export to use unique filenames by prefixing with card ID 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18fix: improve APKG export functionalityv0.4.0Paul Buetow
- Fix Anki import errors by adding missing deck fields (newToday, revToday, etc.) - Fix media files not displaying/playing by using original filenames in cards - Add phonetic information to notes field with proper line breaks - Add 'e' hotkey for quick APKG export - Increment version to 0.4.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18chore: bump version to 0.3.0v0.3.0Paul Buetow
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17feat: add contextual scene generation for flashcard imagesv0.2.0Paul Buetow
- Generate meaningful scenes for each Bulgarian word using OpenAI - Scene descriptions use English words for DALL-E compatibility - Creates more engaging and memorable flashcards with context - Bump version to v0.2.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15feat: add OpenAI DALL-E image generation and make OpenAI defaultv0.1.0Paul Buetow
- Implement OpenAI DALL-E provider for generating educational flashcard images - Add support for DALL-E 2 and DALL-E 3 with configurable size, quality, and style - Implement intelligent caching to minimize API costs - Make OpenAI the default provider for both audio (TTS) and images (DALL-E) - Add automatic fallback to free alternatives (espeak/pixabay) when OpenAI unavailable - Fix bug where cached images couldn't be copied to output directory - Update documentation with OpenAI setup instructions and examples - Add comprehensive unit tests for OpenAI image provider - Bump version to 0.1.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14initial commitPaul Buetow