Files
talemate/pyproject.toml
veguAI 42a8863e65 0.36.0 (#255)
Major Features

- API key encryption at rest using Fernet (OS keyring with file fallback)
- Prompt Manager: unified UI with template groups, priority ordering, override tracking, response extractors
- Scene context history review panel with token budgets and best-fit mode
- Multiple concurrent director chats with auto-generated titles
- Granular scene state reset dialog
- Time passage insert/edit/delete in scene view
- Image analysis via OpenAI-compatible and Talemate Client backends
- Volatile context placement after scene history for improved prompt caching

Improvements

- Configurable narrator generation length per narration type
- AI Aware conversation mode
- Summarizer: custom instructions, writing style inclusion, short line filtering
- Anthropic: adaptive thinking support, updated model list (opus-4-5/4-6, haiku-4-5)
- Google: gemini-3.1 support
- World editor: generate from topic, quick create state reinforcement, reorganized menus
- Node editor: promote scene modules to global
- Frontend: version mismatch detection, hideable bracket content, required scene name
- TTS: improved pause handling, audio tag support for vocal markers (ElevenLabs v3)
- Writing style template for AI-generated instructions
- Added Kimi.jinja2 LLM prompt template
- Option to disable character names in stopping strings
- Client response length enforcement options
- Graduated token count sliders
- Increased summarizer token threshold max

Bugfixes

- Fix bracket/paren/brace terminators stripped from message ends
- Fix colon in conversation causing content loss
- Fix "Use as reference" navigating to blank page
- Fix avatar regeneration and manual regenerate
- Fix conversation agent ignoring generation length
- Fix duplicate length instructions with reasoning enabled
- Fix trailing newline on message edits
- Fix summarize dialogue sending too much context with layered history
- Fix layered history inspection and construction issues
- Fix empty response handling in summarization
- Fix context ID dot notation with dotted character names
- Fix recursive retry in focal agent
- Fix leading whitespace causing duplicate prepared responses
- Fix summarization not stripping ANALYSIS OF lines
- Fix template group selection/removal in prompt manager
- Fix multiline text in parentheses/brackets parser
- Fix determine_character_name resolution
- Fix character activate/deactivate desyncing creative menu
- Fix character image generation missing context
- Fix LMStudio client not sending token limits
- Fix Recent Scene images on newer Chromium
- Fix sequential reinforcement messages cut off at first linebreak
- Fix reinforcement removal not clearing state
- Fixes #252, #256, #258

Deprecations

- Removed context investigations (replaced by AI-assisted RAG mixin)
- Removed deprecated prompt templates (fix-continuity-errors, fix-exposition, etc.)
- Removed conversation/edit.jinja2, auto break repetition, CLI reset layered history
---------

Co-authored-by: theDTV2 <47825738+theDTV2@users.noreply.github.com>
2026-03-15 12:00:57 +02:00

170 lines
3.4 KiB
TOML

[project]
name = "talemate"
version = "0.36.0"
description = "AI-backed roleplay and narrative tools"
authors = [{name = "VeguAITools"}]
license = {text = "GNU Affero General Public License v3.0"}
requires-python = ">=3.11,<3.14"
dependencies = [
"pip",
"astroid>=2.8",
"jedi>=0.18",
"black",
"rope>=0.22",
"isort>=5.10",
"jinja2>=3.0",
"openai>=1",
"mistralai>=0.1.8",
"cohere>=5.2.2",
"anthropic>=0.19.1",
"groq>=0.5.0",
"requests>=2.26",
"colorama>=0.4.6",
"Pillow>=9.5",
"httpx<1",
"piexif>=1.1",
"typing-inspect==0.8.0",
"typing_extensions>=4.5.0",
"uvicorn>=0.23",
"blinker>=1.6.2",
"pydantic<3",
"beautifulsoup4>=4.12.2",
"python-dotenv>=1.0.0",
"cryptography>=43.0",
"keyring>=25.0",
"structlog>=23.1.0",
"google-genai>=1.20.0",
"nest_asyncio>=1.5.7",
"isodate>=0.6.1",
"thefuzz>=0.20.0",
"tiktoken>=0.5.1",
"nltk>=3.8.1",
"huggingface-hub>=0.20.2",
"RestrictedPython>7.1",
"numpy>=2",
"aiofiles>=24.1.0",
"pyyaml>=6.0",
"limits>=5.0",
"diff-match-patch>=20241021",
"sseclient-py>=1.8.0",
"ollama>=0.5.1",
# ChromaDB
"chromadb>=1.0.12",
"torch>=2.7.1",
"torchaudio>=2.7.1",
"sentence_transformers>=2.7.0",
"transformers<5",
# TTS
"elevenlabs>=2.7.1",
# Local TTS
# Chatterbox TTS
# we cannot upgrade to 0.1.3 because it installs ancient pkuseg library
# "chatterbox-tts==0.1.2",
# tts_webui_chatterbox_tts is much faster without seeminly any quality loss
"tts_webui_chatterbox_tts==0.4.4",
"torchcodec>=0.9.0",
# kokoro TTS
"kokoro>=0.9.4",
"soundfile>=0.13.1",
# F5-TTS
"f5-tts>=1.1.7",
"deepdiff>=8.6.1",
"hf-xet>=1.2.0",
"pocket-tts>=1.0.1",
]
[project.optional-dependencies]
dev = [
"pytest>=6.2",
"pytest-asyncio>=0.25.3",
"pytest-cov>=4.0",
"mypy>=0.910",
"mkdocs-material>=9.5.27",
"mkdocs-awesome-pages-plugin>=2.9.2",
"mkdocs-glightbox>=0.4.0",
"pre-commit>=2.13",
]
[project.scripts]
talemate = "talemate:cli.main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.black]
line-length = 88
target-version = ['py38']
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| talemate_env
)/
'''
[tool.isort]
profile = "black"
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
line_length = 88
[tool.uv]
override-dependencies = [
# chatterbox wants torch 2.6.0, but is confirmed working with 2.7.1
"torchaudio>=2.7.1",
"torch>=2.7.1",
# numba needs numpy < 2.3
"numpy>=2,<2.3",
"pydantic>=2.11",
]
[tool.uv.sources]
torch = [
{ index = "pytorch-cu128" },
]
torchaudio = [
{ index = "pytorch-cu128" },
]
[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
[tool.coverage.run]
source = ["src/talemate"]
branch = true
omit = [
"*/tests/*",
"*/__pycache__/*",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise NotImplementedError",
"if TYPE_CHECKING:",
"if __name__ == .__main__.:",
]
show_missing = true