Repository navigation
Releases: luksamuk/sprachspiel
Release list
v0.45.0 — Configurable Embedding Model + Matryoshka
v0.44.0 — Responsive Chat Rebuild with Ratatui
v0.44.0 — Responsive Chat Rebuild with Ratatui
Highlights
- 🎨 Responsive Chat Rebuild (W6) — Complete replacement of println+ANSI rendering with Ratatui. Chat now renders correctly at any terminal width, with declarative layout that adapts on resize. 4 PRs delivered: CommandResult decoupling (PR #152), Ratatui infrastructure (PR #153), CrosstermInput + event loop (PR #154), Final transition (PR #155).
- ⌨️ ratatui-textarea integration — Full-featured text editing: multi-line input (Shift+Enter), selection, kill-ring (Ctrl+W/Ctrl+Y), undo/redo, word movement, Emacs-style navigation.
- 🌊 Streaming compaction —
/compactnow streams the compaction summary in real time instead of blocking the TUI. - 🖱️ Mouse support — Text selection with visual highlight, scroll with mouse wheel.
- 📋 Ctrl+C context-dependent — 4 priority levels: copy chat selection → copy textarea → select+copy+clear → cancel/exit.
- 🧩 Mermaid diagram rendering — ```mermaid code blocks rendered as Unicode box-drawing diagrams.
- 📊 Intelligent table reflow — Tables adapt to terminal width with rigid/elastic columns.
- 🎨 Catppuccin palette — Code blocks styled with Catppuccin Mocha/Latte/Mono themes.
- 🔧 Provider-agnostic error strings — "Ollama" references → "LLM server" phrasing for multi-backend preparation.
Removed
- TerminalView (println-based rendering) — Ratatui is the only chat rendering mode.
- RustylineInput and
rustylinedependency — CrosstermInput is the only input backend. - termimad dependency — Replaced by standalone monochrome renderer.
- ~40 command shortcuts/aliases — Only
/quitand/exitremain as synonyms.
Fixed
- Flaky tests fixed with
#[serial_test::serial](15 tests, ~10-20% failure rate eliminated) - Plain mode ANSI leak — output is pipe-safe
- Tool message ordering regression
- Streaming thinking block fragmentation
- Mouse selection offset with wrapped lines
- Embedding hang on exit
- Android cross-compilation — clipboard ops gracefully degrade to no-ops on Termux
Migration
- Clipboard operations are no-ops on Termux/Android (clipboard crate not available).
- If you relied on single-letter command shortcuts, use the full command name instead (e.g.,
/q→/quit).
v0.43.0 — Rename to Sprachspiel & Feedback Infrastructure
v0.43.0 — Rename to Sprachspiel & Feedback Infrastructure
Highlights
- 🔧 Rename from ask-ai to Sprachspiel — Complete project rename: binary (
ask-ai→sprach), config dir (~/.config/ask-ai/→~/.config/sprachspiel/), data dir, database, internal modules. Auto-migration fromask-ai.db. - 📊 Feedback Infrastructure (P5) —
/feedback good|bad|correction:<text>command, LLMfeedback_submittool, content decay (Ebbinghaus), RRF boost/suppress,/content prune, 9 ADRs. - 🔍 Auto Fact Extraction (P6.1) — Post-response heuristic extraction of preferences and facts from conversation content.
- 🧠 Fact Embeddings & Semantic Dedup (P6.7) — Layer 3.5 semantic contradiction detection, schema v11–v12, centralized dedup pipeline.
- 🤖 Specialized Agent Architecture (SF5) — 4 dedicated spawning tools replacing generic
spawn_subagent. - 📝 Logging Overhaul (SF4) — Custom MultiLogger (warn default, dual stderr+file output), PII truncation, log rotation.
- 🔒 Security — Sandbox always enforced (LLM bypass removed), tilde expansion with blocklist.
- 🐛 Critical Bug Fixes — sqlite-vec L2/cosine metric mismatch (root cause of S42.4/S43.1), fact dedup pipeline, PT normalization, accumulative predicates.
Breaking Changes
- Binary renamed
ask-ai→sprach(orsprachspiel) - Config directory
~/.config/ask-ai/→~/.config/sprachspiel/ - Data directory
~/.local/share/ask-ai/→~/.local/share/sprachspiel/ - Database
ask-ai.db→sprachspiel.db(auto-migration chain) spawn_subagenttool removed — replaced by 4 dedicated tools:spawn_ocr_agent,spawn_vision_agent,spawn_translate_agent,spawn_summarize_agentsandboxparameter removed from file tools — sandbox is now always enforcedenable_sandbox = falseremoved from tools.toml — Landlock sandbox always enabled on Linux 5.13+- Default model changed
llama3.1→qwen3.5:4b
Full Changelog
See CHANGELOG.md for complete details.
v0.40.0 — Verbosity System & Security Hardening
v0.40.0 — Verbosity System & Security Hardening
Added
-
Logging infrastructure with
logcrate andenv_loggerbackend (Issues #60, #61, #87, #88)- Replace custom
log_debug()/AtomicBool/eprintln!with industry-standardlogcrate - 4-level verbosity system: Quiet (
-q), Normal (default), Verbose (-v), Trace (-vv) - Verbose flags available globally and in chat subcommand (
ask chat -v) RUST_LOGenvironment variable support for fine-grained control/debugtoggle in chat now syncs state andlog::set_max_level()- Tool calls displayed as
🔧 name(args)in DIM gray - Tool result visibility is tiered: hidden in Normal, truncated in Verbose, full in Trace
- Chat interactive mode ignores quiet flag (allows user input display)
- Spinner suppressed in quiet mode
- Rustyline debug output always suppressed
debug_defaultconfig option replaced byverbosity(backwards compatible)
- Replace custom
-
Pre-tool thinking and content visible in chat
- Chat now shows the LLM's thinking process and text before tool calls
- Previously only visible in query mode; now consistent across both modes
-
Chat output fixed at 80 columns (
CHAT_TERMINAL_WIDTH)- All chat markdown rendering uses
print_markdown_chat()at 80 columns - Thinking blocks wrap at 80 columns
- Recent context display truncated to 80 visual columns (ANSI-aware)
- All chat markdown rendering uses
-
Memory Staleness Warnings in Facts Prompt (Issue #70)
- Facts show age-based staleness labels when outdated
(stale)when decay score < 0.3,(N days ago)when last accessed > 30 days,(unused)when never retrieved
-
Truncation Warnings in Tool Outputs (Issue #71)
read_file,search_files, andremembernow show standardized[TRUNCATED: ...]format- Unicode-safe truncation using
.chars().take()pattern
-
Enhanced Todo Tools — CRUD Gaps, Priority, and Tags (Issue #66)
- New
todo_get(id),todo_delete(id),todo_edit(id)tools Priorityenum: low, medium, high, criticaltags: Vec<String>on Task struct for grouping- DB migration v8→v9: added
priorityandtagscolumns - User commands:
/todo get,/todo delete,/todo edit
- New
-
Session Context Resume — Display recent conversation context when resuming a session
Changed
-
Simplified verbosity system to 4 levels (Issue #87)
- Removed
-vvvtrace flag (replaced with second-v) - Removed
debug_defaultconfig option
- Removed
-
CRITICAL: Removed LLM-controllable sandbox bypass from file tools.
- The
sandboxparameter that allowed the LLM to passsandbox=falseto escape filesystem restrictions is removed. - Sandbox is now always enforced for all file operations.
file_sandboxconfig setting is also removed.
- The
-
Removed
enable_sandbox = falsefrom tools.toml. Landlock sandbox forrun_commandis always enabled on Linux 5.13+. -
Added
/tmpand/var/tmpas allowed directories for file operations (tool interoperability). -
UX:
/forgetconfirmation required (Issue #85) — requires--yesflag to execute. -
UX:
/skill <name>subcommand replaces/<skill-name>wildcard (Issue #86)- Skills activated via
/skill <name>,/skill(no args) lists available skills
- Skills activated via
-
todo-tools is now built-in — no longer requires feature flag (Issue #31, PR #62)
-
Welcome banner: "Ollama" label renamed to "Server" — future-proof for non-Ollama backends
Fixed
- FTS5
conversation_idcolumn error indelete_conversation() - FOREIGN KEY constraint failure when saving todos
- Remove
/fshortcut collision between/forgetand/search (find) - Add missing
/todoshortcuts (/tg,/te,/td,/tcd,/tca)
Code Quality
- Reduce
parse_commandcomplexity — extract sub-parsers, consolidate shortcuts, eliminateCommandResultenum (~462 lines net reduction) registry.rsrefactoring — extract 13 helper functions, create DRY macroscontext_builder.rsrefactoring — extract retrieval and message conversion helpersquery.rsrefactoring — extract initialization logic into helpers
v0.39.5 - Document Import Tool Bugfix
Bug Fixes
- import_document tool - Now generates embeddings/chunks synchronously after import
- remember tool - Protected against large unchunked documents (returns error instead of exploding context)
- run_command - Error messages no longer show "Some(1)" generic output
Model Updates
- Default model changed from llama3.1 to qwen3.5:4b
- Added DEFAULT_CODE_MODEL = qwen2.5-coder:7b for code mode
Documentation
- New tool-calling model recommendations (gemma4:e4b, qwen2.5-coder:7b)
- Multi-Provider Support roadmap with detailed architecture
- Manual test template for PR process
Technical Changes
- MAX_DOCUMENT_SIZE reduced from 5MB to 2.5MB for safety
- Document import now synchronous (blocking until embeddings complete)
Installation
Linux (x86_64)
tar -xzf ask-ai-0.39.5-linux-x86_64.tar.gz
cd ask-ai-0.39.5-linux-x86_64
./install.shLinux (x86_64) - All Tools
tar -xzf ask-ai-0.39.5-linux-x86_64-all-tools.tar.gz
cd ask-ai-0.39.5-linux-x86_64-all-tools
./install.shTermux (Android)
tar -xzf ask-ai-0.39.5-termux-aarch64.tar.gz
cd ask-ai-0.39.5-termux-aarch64
./install.shTermux (Android) - All Tools
tar -xzf ask-ai-0.39.5-termux-aarch64-linux-android-all-tools.tar.gz
cd ask-ai-0.39.5-termux-aarch64-linux-android-all-tools
./install.shWhat's Changed
Full Changelog: v0.39.0...v0.39.5
v0.39.0 - Document Import Tool
Document Import Tool
This release adds document import functionality with semantic search and retrieval.
Added
-
Document Import Tool - Import documents for semantic search and retrieval
- File Formats: TXT, MD, ORG (builtin), PDF, EPUB (requires
skills-toolsfeature) - File Size Limit: 5MB for uploaded files; larger files rejected with helpful error
- Commands:
/doc import,/doc list,/doc show,/doc delete(shortcuts:/di,/dl,/ds,/dd) - LLM Tool:
import_document(path, scope?)for autonomous document import - Chunking: Uses same system as notes/messages (~512 tokens)
- Scope: Project-scoped by default, optional global scope
- Storage: Documents stored in
content_itemstable (ContentType::Document) - Retrieval: Integrated with
remember()tool via hybrid search (BM25 + vector) - PDF/EPUB Processing: Uses builtin
document-processingskill withpdftotext/epub2txt
- File Formats: TXT, MD, ORG (builtin), PDF, EPUB (requires
-
Document Retrieval Integration - Documents now searchable via
remember()toolremember(id="doc:N")retrieves full document content (or preview for large docs)remember(id="doc:N", chunk="M")retrieves specific chunk of large documentsremember(query="...")searches across messages, notes, AND documents
-
Parameter Validation for remember() Tool - Clear error messages for invalid parameter combinations
-
Synchronous Embedding for Document Import - Documents indexed immediately by default
-
Embedding Flush on Exit - Pending embeddings completed before shutdown
Fixed
- Tilde (~) Expansion in File Paths - File paths with
~now correctly expand to home directory - Document ID Format Flexibility - Multiple ID formats now accepted (
#N,doc:N, numeric) - Org-Mode Title Extraction -
#+TITLE:directive now correctly parsed
Downloads
| Platform | Default Features | All Tools |
|---|---|---|
| Linux x86_64 | ask-ai-0.39.0-linux-x86_64.tar.gz |
ask-ai-0.39.0-linux-x86_64-all-tools.tar.gz |
| Termux (Android) | ask-ai-0.39.0-termux-aarch64-linux-android.tar.gz |
ask-ai-0.39.0-termux-aarch64-linux-android-all-tools.tar.gz |
Installation
# Linux (default features)
tar -xzf ask-ai-0.39.0-linux-x86_64.tar.gz
cd ask-ai-0.39.0-linux-x86_64
./install.sh
# Linux (all tools + sandbox)
tar -xzf ask-ai-0.39.0-linux-x86_64-all-tools.tar.gz
cd ask-ai-0.39.0-linux-x86_64-all-tools
./install.shv0.38.0 - Skills System
Changes
Added
-
Skills System Implementation - Full implementation of on-demand skill loading
- Core Module:
src/skills/with types, loader, sanitize, and builtin skills - Tools:
skill_list()for listing available skills,skill_view(name)for loading skill content - Slash Commands: Activate skills via
/skill-name(e.g.,/document-processing) - Session Integration: Active skills injected into system prompt
- 4 Builtin Skills: document-processing, ocr-images, code-analysis, web-scraping
- System Prompt Integration: SKILLS INDEX section shows available skills with descriptions
- Tool Registration: skills-tools feature (enabled by default)
- Security: Injection pattern detection, invisible unicode removal, file size limits (256KB)
- Core Module:
-
Document Processing Skill - Unified PDF and ePub processing
- PDF Tools: pdftotext, pdfinfo, pdftoppm, tesseract (OCR fallback)
- ePub Tools: ebook-convert (Calibre), epub2txt (lightweight fallback)
- Features: Full extraction, page range, metadata, TOC, internal search
- Multi-distro: Installation instructions for Arch, Debian, Void, Alpine, Fedora
- External Tool Defaults: ebook-convert and epub2txt added to default tools.toml
Changed
-
pokemon-tools: Removed from default features - Now opt-in
- Build with
--features pokemon-toolsto enable Pokémon data tools - Reduces default binary size
- Build with
-
pdf-processing Skill → document-processing Skill - Unified PDF and ePub processing
- Replaced
pdf-processingbuiltin skill withdocument-processing - Added ePub extraction via ebook-convert and epub2txt
- Added metadata extraction, TOC parsing, page range support
- Replaced
Downloads
| Platform | Features | Size |
|---|---|---|
| Linux x86_64 | Default | ~6.2 MB |
| Linux x86_64 | All tools + sandbox | ~7.3 MB |
| Termux (Android) | Default (no sandbox) | ~5.8 MB |
| Termux (Android) | All tools (no sandbox) | ~6.9 MB |
Note: Termux builds don't include sandbox features since Android provides process isolation.
v0.37.2
Changes
Fixed
-
Embedding Fallback for Oversized Content (Complete Rewrite) - Fixed PRIMARY KEY constraint violation
- Atomic transactions for chunk creation and embeddings
- Protection limits to prevent database explosion
-
CRITICAL: Multiple Token Calculation Bugs - Fixed three separate double-counting bugs
- Fixed context metrics calculation
- Fixed pre-tool warning remaining tokens
Changed
- Startup Output Reorder - Improved visual flow for chat startup
Added
-
Status Bar Above Prompt - Dynamic status bar showing context information (#47)
- Displays model name, context usage (XX.XK/YYYK), progress bar with percentage, and think/tools indicators
- Fixed width of 77 visual characters to prevent overflow
- Colored progress bar: green (< 50%), yellow (50-75%), red (> 75%)
- Clean prompt:
>>>with all context moved to status bar - Terminal width detection for proper ANSI clear codes
-
Inter-Tool Compaction with Automatic Continuation - Automatic context compaction during multi-tool execution
-
Percentage-Based Context Thresholds - Scales correctly with different context window sizes
Downloads
| Platform | Features | Size |
|---|---|---|
| Linux x86_64 | Default | ~6.3 MB |
| Linux x86_64 | All tools + sandbox | ~7.2 MB |
| Termux (Android) | Default (no sandbox) | ~5.8 MB |
| Termux (Android) | All tools (no sandbox) | ~6.8 MB |
Note: Termux builds don't include sandbox features since Android provides process isolation.
v0.37.0 - Context Overflow Token Calculation Fix
Summary
Critical fixes for token calculation and context overflow detection.
Fixed
-
Multiple Token Calculation Bugs - Fixed three separate double-counting bugs
- Double-counting system + tools in
calculate_context_metrics() - Double-counting system_tokens in
needs_inter_tool_compaction() - Missing system + tools in pre-tool warning remaining tokens
- Double-counting system + tools in
-
Pre-Tool Warning Message - Fixed warning saying "Auto-compacting" when it only warned
- Now correctly shows warning at 75%, auto-compacts at 88%
-
Duplicate Context Warnings - Fixed two warnings shown for same condition
- Only shows warning when tools are disabled
-
Percentage-Based Context Thresholds - Replaced fixed buffers with percentages
- Scales correctly with context window size (32K, 128K, 200K)
MODERATE_USAGE_PERCENT = 0.75- Warning at 75%CRITICAL_USAGE_PERCENT = 0.88- Auto-compact at 88%INTER_TOOL_USAGE_PERCENT = 0.94- Inter-tool warning at 94%EMERGENCY_USAGE_PERCENT = 0.97- Emergency truncation at 97%
Changed
- Function Simplifications
- Removed
_thresholdparameter fromcheck_context_overflow() - Removed
_system_promptand_use_debugfromauto_compact_if_needed() - Removed
CoordinatorErrorenum (never used) - Removed
CompactionStatsandcompaction_stats()(YAGNI)
- Removed
Downloads
| Platform | Default Tools | All Tools |
|---|---|---|
| Linux x86_64 | ask-ai-0.37.0-linux-x86_64.tar.gz | ask-ai-0.37.0-linux-x86_64-all-tools.tar.gz |
| Termux (Android) | ask-ai-0.37.0-termux-aarch64.tar.gz | ask-ai-0.37.0-termux-aarch64-all-tools.tar.gz |
Installation
# Linux
tar -xzf ask-ai-0.37.0-linux-x86_64.tar.gz
cd ask-ai-0.37.0-linux-x86_64
./install.sh
# Termux
tar -xzf ask-ai-0.37.0-termux-aarch64.tar.gz
cd ask-ai-0.37.0-termux-aarch64
./install.shv0.36.0 - Notes System with Semantic Search
Summary
Notes System - Persistent notes with semantic search, Extended Mind ASCII art banner, and prompt emoji indicators.
Changes
| Category | Change |
|---|---|
| New Feature | Notes System with /note add, /note list, /note show, /note edit, /note delete, /note search |
| New Feature | note_add tool for LLMs to create notes autonomously |
| New Feature | Semantic search across messages AND notes via remember() |
| New Feature | Welcome banner with Extended Mind ASCII art |
| Changed | Prompt indicators now use 🧠🔧 emojis instead of [t][T] |
| Changed | /clear renamed to /new - creates new session instead of clearing |
| Changed | /load now auto-saves current session before switching |
| Changed | Session auto-loads most recent session on startup |
| Added | /session command group (/session new, /session load, /session list, /session save, /session forget) |
| Fixed | Schema migration v6→v7 UNIQUE constraint error |
| Fixed | SQLite-vec parameter mismatch in semantic search |
| Fixed | /note add parsing for complex arguments |
| Fixed | /session load by name |
| Refactor | Unified content table (content_items) for messages, notes, and future documents |
| Refactor | YAGNI code removal in DynamicChunkConfig and regenerate.rs |
| Refactor | Role strings centralized in src/consts/roles.rs |
| Assets | assets/extended-mind-* for ASCII art reproducibility |
Installation
# Linux x86_64 (default features)
tar -xzf ask-ai-0.36.0-linux-x86_64.tar.gz
cd ask-ai-0.36.0-linux-x86_64
./install.sh
# Linux x86_64 (all tools)
tar -xzf ask-ai-0.36.0-linux-x86_64-all-tools.tar.gz
cd ask-ai-0.36.0-linux-x86_64-all-tools
./install.sh
# Termux/Android (no sandbox)
tar -xzf ask-ai-0.36.0-termux-aarch64-linux-android.tar.gz
cd ask-ai-0.36.0-termux-aarch64-linux-android
./install.shVerification
-
cargo build --release -
cargo clippy -- -D warnings -
cargo test --all-features - Manual testing (all review comments resolved)