| Age | Commit message (Collapse) | Author |
|
|
|
re-export
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
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>
|
|
- 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
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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>
|
|
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>
|
|
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>
|
|
- 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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
veo.go
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- 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>
|
|
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>
|
|
- 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>
|
|
- 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>
|
|
- 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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
- 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>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|
|
|
|
- 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
|
|
|
|
|
|
- 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>
|
|
- Fixed background image generation race conditions
- Fixed UI updates when navigating between cards
- Improved file sync and error handling
|
|
- 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>
|
|
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.
|
|
- 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>
|
|
- 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>
|
|
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- 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>
|
|
- 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>
|
|
- 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>
|
|
- 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>
|
|
- 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>
|
|
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
- 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>
|
|
- 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>
|
|
|