Skip to content

Releases: luksamuk/sprachspiel

v0.45.0 — Configurable Embedding Model + Matryoshka

Choose a tag to compare

@luksamuk luksamuk released this 19 Aug 17:44

See CHANGELOG.md for full details.

v0.44.0 — Responsive Chat Rebuild with Ratatui

Choose a tag to compare

@luksamuk luksamuk released this 25 May 05:37

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 — /compact now 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 rustyline dependency — CrosstermInput is the only input backend.
  • termimad dependency — Replaced by standalone monochrome renderer.
  • ~40 command shortcuts/aliases — Only /quit and /exit remain 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

Choose a tag to compare

@luksamuk luksamuk released this 11 May 05:22

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 from ask-ai.db.
  • 📊 Feedback Infrastructure (P5) — /feedback good|bad|correction:<text> command, LLM feedback_submit tool, 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 (or sprachspiel)
  • 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_subagent tool removed — replaced by 4 dedicated tools: spawn_ocr_agent, spawn_vision_agent, spawn_translate_agent, spawn_summarize_agent
  • sandbox parameter removed from file tools — sandbox is now always enforced
  • enable_sandbox = false removed 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

Choose a tag to compare

@luksamuk luksamuk released this 17 Apr 05:15

v0.40.0 — Verbosity System & Security Hardening

Added

  • Logging infrastructure with log crate and env_logger backend (Issues #60, #61, #87, #88)

    • Replace custom log_debug() / AtomicBool / eprintln! with industry-standard log crate
    • 4-level verbosity system: Quiet (-q), Normal (default), Verbose (-v), Trace (-vv)
    • Verbose flags available globally and in chat subcommand (ask chat -v)
    • RUST_LOG environment variable support for fine-grained control
    • /debug toggle in chat now syncs state and log::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_default config option replaced by verbosity (backwards compatible)
  • 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)
  • 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, and remember now 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
    • Priority enum: low, medium, high, critical
    • tags: Vec<String> on Task struct for grouping
    • DB migration v8→v9: added priority and tags columns
    • User commands: /todo get, /todo delete, /todo edit
  • Session Context Resume — Display recent conversation context when resuming a session

Changed

  • Simplified verbosity system to 4 levels (Issue #87)

    • Removed -vvv trace flag (replaced with second -v)
    • Removed debug_default config option
  • CRITICAL: Removed LLM-controllable sandbox bypass from file tools.

    • The sandbox parameter that allowed the LLM to pass sandbox=false to escape filesystem restrictions is removed.
    • Sandbox is now always enforced for all file operations.
    • file_sandbox config setting is also removed.
  • Removed enable_sandbox = false from tools.toml. Landlock sandbox for run_command is always enabled on Linux 5.13+.

  • Added /tmp and /var/tmp as allowed directories for file operations (tool interoperability).

  • UX: /forget confirmation required (Issue #85) — requires --yes flag to execute.

  • UX: /skill <name> subcommand replaces /<skill-name> wildcard (Issue #86)

    • Skills activated via /skill <name>, /skill (no args) lists available skills
  • 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_id column error in delete_conversation()
  • FOREIGN KEY constraint failure when saving todos
  • Remove /f shortcut collision between /forget and /search (find)
  • Add missing /todo shortcuts (/tg, /te, /td, /tcd, /tca)

Code Quality

  • Reduce parse_command complexity — extract sub-parsers, consolidate shortcuts, eliminate CommandResult enum (~462 lines net reduction)
  • registry.rs refactoring — extract 13 helper functions, create DRY macros
  • context_builder.rs refactoring — extract retrieval and message conversion helpers
  • query.rs refactoring — extract initialization logic into helpers

v0.39.5 - Document Import Tool Bugfix

Choose a tag to compare

@luksamuk luksamuk released this 03 Apr 18:34
7e6294f

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.sh

Linux (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.sh

Termux (Android)

tar -xzf ask-ai-0.39.5-termux-aarch64.tar.gz
cd ask-ai-0.39.5-termux-aarch64
./install.sh

Termux (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.sh

What's Changed

  • Fix import_document tool missing embedding/chunking by @luksamuk in #55

Full Changelog: v0.39.0...v0.39.5

v0.39.0 - Document Import Tool

Choose a tag to compare

@luksamuk luksamuk released this 30 Mar 02:07

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-tools feature)
    • 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_items table (ContentType::Document)
    • Retrieval: Integrated with remember() tool via hybrid search (BM25 + vector)
    • PDF/EPUB Processing: Uses builtin document-processing skill with pdftotext/epub2txt
  • Document Retrieval Integration - Documents now searchable via remember() tool

    • remember(id="doc:N") retrieves full document content (or preview for large docs)
    • remember(id="doc:N", chunk="M") retrieves specific chunk of large documents
    • remember(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.sh

v0.38.0 - Skills System

Choose a tag to compare

@luksamuk luksamuk released this 27 Mar 03:28

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)
  • 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-tools to enable Pokémon data tools
    • Reduces default binary size
  • pdf-processing Skill → document-processing Skill - Unified PDF and ePub processing

    • Replaced pdf-processing builtin skill with document-processing
    • Added ePub extraction via ebook-convert and epub2txt
    • Added metadata extraction, TOC parsing, page range support

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

Choose a tag to compare

@luksamuk luksamuk released this 23 Mar 00:07
5690ec0

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

Choose a tag to compare

@luksamuk luksamuk released this 21 Mar 03:58
9c7f899

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
  • 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 _threshold parameter from check_context_overflow()
    • Removed _system_prompt and _use_debug from auto_compact_if_needed()
    • Removed CoordinatorError enum (never used)
    • Removed CompactionStats and compaction_stats() (YAGNI)

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.sh

v0.36.0 - Notes System with Semantic Search

Choose a tag to compare

@luksamuk luksamuk released this 19 Mar 02:41

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.sh

Verification

  • cargo build --release
  • cargo clippy -- -D warnings
  • cargo test --all-features
  • Manual testing (all review comments resolved)