Changelog
Unreleased
Section titled “Unreleased”- Publish the complete documentation site at https://anki-llm.raine.dev and bundle
its LLM-readable reference for offline access through
anki-llm docs.
v2.0.19 (2026-07-28)
Section titled “v2.0.19 (2026-07-28)”- Generate multiple fields in one
process-fileorprocess-deckrequest, with validation and all-or-nothing updates that preserve existing data when a response fails. - Build or run
anki-llmreproducibly on Linux and macOS with the new Nix flake.
v2.0.18 (2026-05-10)
Section titled “v2.0.18 (2026-05-10)”- Add Microsoft Edge TTS support, including bundled Edge voices and no required API key. (#6)
v2.0.17 (2026-05-03)
Section titled “v2.0.17 (2026-05-03)”- Stream LLM thinking content in real-time during card generation in the TUI
- Add
gemini_thinking_enabledconfig option to disable thinking for Gemini models - Verify duplicate search candidates match exactly before flagging duplicates (#5)
- Fix model picker selection resetting after filtering with keyboard input
v2.0.16 (2026-05-01)
Section titled “v2.0.16 (2026-05-01)”- Add xAI as a provider with Grok 4.3 model
v2.0.15 (2026-04-26)
Section titled “v2.0.15 (2026-04-26)”- Add
doctorcommand to diagnose configuration, API keys, AnkiConnect connectivity, and workspace setup. - Add support for DeepSeek V4 models.
- Treat empty
DEEPSEEK_API_KEYandGEMINI_API_KEYenvironment variables as unset, so they fall back to other configured providers.
v2.0.14 (2026-04-26)
Section titled “v2.0.14 (2026-04-26)”- Add
anki_connect_urlconfig key to customize the AnkiConnect endpoint (defaults tohttp://localhost:8765). tts: fall back to annotation-stripped text when furigana parsing fails, so audio still gets generated for notes with malformed ruby markup.
v2.0.13 (2026-04-25)
Section titled “v2.0.13 (2026-04-25)”- Add
note-typecommand - pull Anki note type templates and CSS into local files, edit them in any editor, then push changes back to Anki.note-type statusshows a live diff of what has drifted. - Add workspace support - a directory with a
prompts/folder is now a workspace. Runworkspace initto set one up. Prompts and settings are resolved from the current workspace automatically. - Add
workspace initandworkspace infosubcommands - Breaking:
prompts_dirconfig setting is replaced bydefault_workspace. Set it to your workspace directory and all commands resolve prompts, note types, and default model from there regardless of your working directory. process-decknow skips notes that already have content in the target field by default - use--forceto re-process and overwrite existing values.
v2.0.12 (2026-04-23)
Section titled “v2.0.12 (2026-04-23)”-
Breaking:
process-deckandprocess-fileprompts now require a YAML frontmatter block declaring the target field. The--field,--json, and--require-result-tagCLI flags are removed. Add a frontmatter block to each prompt file:---output:field: Translationrequire_result_tag: true # optional--- -
Breaking: JSON-merge output (
--json) is no longer supported forprocess-*. Prompts now always write a single field. -
Add
--previewflag toprocess-deckandprocess-file- process a small sample of cards with the LLM and show a diff-like summary of what would change, then prompt for confirmation before running the full batch.
v2.0.11 (2026-04-23)
Section titled “v2.0.11 (2026-04-23)”- Add
updatecommand - self-update to the latest release from GitHub - Add
docscommand - show bundled documentation in the terminal
v2.0.10 (2026-04-22)
Section titled “v2.0.10 (2026-04-22)”- Add
zkey in the generate TUI to skip post-select processing - useful when you want to bypass quality checks or other post-processing steps configured in a prompt - Fix large deck exports failing due to HTTP response buffer limit (#3)
v2.0.9 (2026-04-21)
Section titled “v2.0.9 (2026-04-21)”tts-voicesbrowser now copies voice YAML to clipboard on Enter and stays open so you can keep exploring voices, instead of exiting immediatelygeneratesummary screen now lets you replay imported audio withp- Furigana parser now accepts katakana loanwords with reading annotations (e.g.
スパイク[すぱいく]), fixing TTS preparation for those cards
v2.0.8 (2026-04-14)
Section titled “v2.0.8 (2026-04-14)”TTS (text-to-speech)
Section titled “TTS (text-to-speech)”- Added
ttscommand - synthesize audio for Anki card fields and upload to Anki as media - Added support for multiple TTS providers: OpenAI, Azure Neural, Google Cloud, and Amazon Polly
- Added
tts-voicessubcommand - browse, filter, and preview voices from all providers in an interactive TUI - TTS is now integrated into the
generatepipeline - audio is synthesized automatically as a pipeline step before cards are added to Anki - Added TTS preview hotkey in the generate selection screen - press P to preview audio before committing
- Added utterance IR with furigana parsing for better Japanese pronunciation
generate improvements
Section titled “generate improvements”- Post-select processing now shows per-card field diffs, making it easy to see what each processing step changed
- Added per-step cost reporting after post-select processing
- Added Summary step in the sidebar for run completion view
- Legacy (non-TUI) mode now correctly fails on import errors instead of silently exiting successfully
v2.0.7 (2026-04-12)
Section titled “v2.0.7 (2026-04-12)”- Added interactive batch TUI for
process-deck- same live progress, row previews, and summary screen asprocess-file
v2.0.6 (2026-04-11)
Section titled “v2.0.6 (2026-04-11)”- Added interactive batch TUI for
process-file- live progress with elapsed time, row previews, and a summary screen when done - Added
--queryflag toprocess-deckandexportto filter which notes are processed or exported - Added snapshot/rollback system for
process-deck- usehistoryto view past runs androllbackto undo changes - Added support for any OpenAI-compatible LLM provider - configure a custom endpoint and use any model
v2.0.5 (2026-04-11)
Section titled “v2.0.5 (2026-04-11)”generate
Section titled “generate”- Added batch/multi-term input - paste multiple terms or press Tab to queue them, then process all at once into a single selection view
- Added single-card regeneration with feedback - press R on a card to regenerate it with custom guidance (e.g. “make the definition simpler”)
- Added duplicate diffing - duplicate cards now show a field-by-field diff against the existing Anki note, and pressing F force-selects them when the new version is better
- Added $EDITOR integration - press E in the selection screen to edit a card’s fields in your editor
- Added inline term input - press N in the selection screen to generate cards for a new term without leaving the view
- Added card removal - press X to remove unwanted cards from the selection
- Model picker now supports type-to-filter and Ctrl-N/Ctrl-P navigation
- Model changes in the selection screen are now deferred, showing which model generated each card
v2.0.4 (2026-04-10)
Section titled “v2.0.4 (2026-04-10)”- Added prompt picker - prompts in the prompts directory are auto-discovered,
and a picker appears when
--promptis omitted. Use Ctrl+P to switch prompts during a session. Last used prompt is remembered. - Added model pricing display in the model picker
- Model can now be switched from the card selection, done, and error screens (Ctrl+O)
- Done screen now shows the final generated cards, allows copying card text, and deleting imported cards
- Added step history browsing on done and error screens - review what each processing step produced
- Breaking:
post_processandquality_checkprompt template keys have been replaced with a unifiedprocessingpipeline. See the README for the new configuration format. - All LLM queries are now automatically logged to
~/.local/state/anki-llm/logs/ - LLM errors are now logged to the session log file
generate-initnow outputs to the prompts directory by default- Added gemini-3.1-flash-lite-preview model, removed gpt-5.4-pro
- Nerd Font checkbox glyphs are now configurable
- Fixed CJK characters bleeding into the sidebar
- Fixed cross-provider model overrides not applying in processing steps
- Fixed Ctrl+P not opening the picker when a prompt was already remembered
v2.0.3 (2026-04-07)
Section titled “v2.0.3 (2026-04-07)”- Added interactive TUI for the
generatecommand - full-screen terminal interface with sidebar progress, card preview, and keyboard-driven workflow - Added
post_processsupport in prompt templates - delegate individual field generation to separate focused LLM calls for higher quality results - Breaking: prompt template YAML keys switched from camelCase to snake_case
(
noteType→note_type,fieldMap→field_map,qualityCheck→quality_check). Old keys will produce a clear error prompting you to update.
v2.0.2 (2026-04-06)
Section titled “v2.0.2 (2026-04-06)”- Improved terminal output with colors and better-styled progress bars
- Card selector now shows full field content without truncation
v2.0.0 (2026-04-06)
Section titled “v2.0.0 (2026-04-06)”- Rewrote the entire tool in Rust - single self-contained binary, no Node.js runtime required
v1.6.0 (2026-02-28)
Section titled “v1.6.0 (2026-02-28)”- Added gemini-3-flash-preview and gemini-3.1-pro-preview model support
- Added gpt-4.1-mini, gpt-4.1-nano, gpt-5.1, and gpt-5.2 models
- Temperature parameter is now omitted for GPT-5 models (not supported by the API)
v1.5.1 (2025-11-09)
Section titled “v1.5.1 (2025-11-09)”- Arrays in LLM responses are now converted to HTML lists in
generate - Added progress spinners during prompt generation and card generation
v1.5.0 (2025-11-09)
Section titled “v1.5.0 (2025-11-09)”- Added optional quality check step in
generate- the LLM reviews generated cards before presenting them for selection generate-initnow shows which model was selected and improves the model selection flow- Gemini is automatically used when only
GEMINI_API_KEYis set, even if no OpenAI key is present
v1.4.0 (2025-11-02)
Section titled “v1.4.0 (2025-11-02)”- Added copy mode in
generate- generated card fields can be copied to an existing note instead of creating a new one
v1.3.0 (2025-11-02)
Section titled “v1.3.0 (2025-11-02)”- LLM cost is now reported after
generateandgenerate-initcomplete - Card selector shows all fields of the selected card for easier review
- Fixed missing whitespace between HTML elements in card display
- Markdown is always converted to HTML in
generateoutput - Vim-style hotkeys enabled in interactive selection prompts
v1.2.0 (2025-10-29)
Section titled “v1.2.0 (2025-10-29)”- Added
generatecommand - interactively generate multiple contextual flashcard examples for a term and add selected cards to your Anki deck - Added
generate-initwizard - uses an LLM to analyze your existing cards and produce a tailored prompt template file for thegeneratecommand generatenow supports YAML output and can append to existing YAML/CSV files with schema validation- Import command now auto-detects the key field from column names
- Added gpt-5 and gpt-5-mini model support
- Cards are validated concurrently during generation for faster feedback
- Model can be set in config and overridden per-command
v1.1.0 (2025-10-25)
Section titled “v1.1.0 (2025-10-25)”- Added
querycommand for direct AnkiConnect access from the CLI or AI agents
v1.0.1 (2025-10-25)
Section titled “v1.0.1 (2025-10-25)”- Initial release
export- export an Anki deck to CSV or YAMLimport- import a CSV or YAML file back into Ankiprocess-file- file-based batch workflow: export, process with LLM, import (supports resume)process-deck- direct in-place batch processing of deck notes with an LLM- OpenAI and Google Gemini model support
- Template-based prompt files with field substitution
- Concurrent processing with retry logic and cost tracking