Skip to content

2.4.0

Choose a tag to compare

@csebold csebold released this 01 Apr 06:51
· 2568 commits to main since this release
2.4.0

Release 2.4

New Features

  • Provider model caching + persistence
    • New provider models database caching system (chat/image/embedding models cached per endpoint, with modelType support and updated indexes)
    • Provider models added to backup/restore, including manifest counts, archive export (data/provider-models.json), restore warnings/error handling, and restore summary tracking
  • NPC system upgrades
    • New ad-hoc NPC character system (npc flag, quick-create NPC dialog from chat picker, Settings → NPCs management tab, characters list filtering, and ?npc=true|false API filtering)
    • New “Convert to NPC / Convert to Character” toggle on character view
  • System prompts & templates
    • Multiple system prompts per character (new edit/view tabs, default prompt selection, prompt templates, sample prompts, and new API endpoints)
    • Per-user post-login migration to move legacy system prompt data to the new structure
    • Enhanced template display (TemplateDisplay with highlighting for {{char}} / {{user}}, plus warnings for hard-coded names)
    • Pseudo-tool support for models without native function calling (memory search / image generation / web search via text markers)
  • Chat & turn-system functionality
    • Persisted turn state for multi-character chats (+ new PATCH endpoint)
    • Stop streaming response button (desktop + mobile) with clean abort handling
    • OpenRouter custom model ID support (toggle + custom input + saved preference)
  • UI / navigation
    • Mobile-responsive upgrades across chat conversation UI, chat footer/tool palette, participant controls, and dashboard
    • Navbar restructuring (controls consolidated into user menu + content-width toggle + responsive collapse behavior)
    • New About page with project links/tech stack and a simplified footer

Improved Features

  • Documentation
    • Major refresh across development docs and API docs (expanded to v2.4; new endpoints; all 8 LLM providers; removed outdated JSON-storage references; updated About page notes)
  • Streaming, tooling, and provider behavior
    • SSE error handling now produces clearer, fuller client-visible errors; reduced noisy logs; better continue-mode handling
    • Anthropic streaming now detects tool-use blocks correctly; prompt caching expanded (tool caching, cache strategies, TTL options, cache usage stats surfaced to client)
    • OpenAI plugin updated with newer GPT-Image models and deprecation guidance for older ones
    • Capabilities report now prefers cached provider models and reads plugin versions from package.json
  • Backup/restore completeness
    • Cloud backup/restore now includes user-created prompt templates and roleplay templates, with backward compatibility and correct remapping in new-account restores
  • Theming & UI consistency
    • Significant enhancements to Earl Grey and Rains themes with broad qt-* utility coverage and improved tab styling
    • Tab styling consolidated into qt-tab utility classes; text styling consolidated into qt-text utility classes; reduced redundant button flex utilities
    • Avatars refactored into reusable components (Avatar / AvatarStack) and now respect the global avatar style preference
  • Codebase maintainability & test coverage
    • Major component breakup and TSX refactors to reduce duplication, introduce reusable hooks/components, standardize patterns, and improve logging/error utilities
    • Expanded unit + integration test coverage for templates and pseudo-tools (with the suite remaining green)

Bugs Fixed

  • Chat streaming / SSE
    • Cleaner SSE error handling (including Zod validation formatting) and suppressed benign parse-noise
    • Fixed OpenRouter streaming failures involving tool calls (SDK patch for null tool-call IDs)
    • Reduced SSE parse errors further (filter empty chunks, skip [DONE] markers for OpenAI-compatible streams)
  • Avatar styling
    • Avatar style changes now apply immediately without refresh (context sync)
    • Avatar display style now consistently applies across all chat avatars and uses a CSS variable for radius
    • Removed duplicate avatar display during “waiting for response”
  • Settings / pages / navigation
    • Fixed Physical Descriptions tab infinite API loop
    • Fixed empty default Connection Profile dropdown on character edit page (mapping corrected)
    • Fixed setState-during-render character editing error
    • Added missing “Back to NPCs” breadcrumb behavior and correct Settings → NPCs navigation
    • Settings page now supports ?tab= URL parameter
    • Fixed user menu mobile responsiveness issues (layout, truncation, submenu placement)
  • Chat composer & message rendering
    • Restored sendMessage behavior after refactor (enter key / send button)
    • Textarea auto-resize now shrinks correctly when deleting
    • Roleplay bracket segments now render correctly with markdown inside
    • Removed duplicate attach-file button
    • Fixed desktop ToolPalette toggle behavior (no immediate reopen) and centered toolbar icons
    • Balanced desktop composer padding
  • Multi-character & persona correctness
    • Participant sidebar now highlights the correct character during streaming
    • Skip button now advances turn correctly and resets the cycle
    • Fixed duplicate name prefixes in multi-character messages
    • Chat gradual renaming now replaces generic titles correctly
    • Persona display-name disambiguation now works with the API’s actual response shape
  • System prompts / templates
    • Template variables ({{char}}, {{user}}) now reliably process in LLM context building
    • SystemPromptsEditor buttons no longer accidentally submit parent forms
  • Export / cleanup
    • SillyTavern chat export now produces proper JSONL format (and importer can auto-detect JSON vs JSONL)
    • Removed obsolete Prisma/PostgreSQL artifacts (project is MongoDB-native)