mirror of
https://github.com/vegu-ai/talemate.git
synced 2026-08-29 10:08:58 +02:00
440 lines
94 KiB
YAML
440 lines
94 KiB
YAML
0.39.0.dev:
|
||
features:
|
||
- "Node Reference: The documentation gained a complete node glossary covering every node available in the node editor - 400+ nodes across the engine, agent integrations and shipped node modules - organized into categorized reference pages listing each node's registry path, input/output sockets and properties. The Help Agent can search and read these pages, so asking it what a node does or how to use it now returns grounded answers. The pages are rendered from the live node registry by a new `glossary` subcommand on the node tools CLI (`python -m talemate.game.engine.nodes.tools glossary --write`), with a `--check` mode that detects when the committed reference has drifted from the code."
|
||
- "Pi Bridge Client: New client type that drives generations through the pi coding agent's headless RPC mode instead of a direct LLM API. pi owns provider authentication (environment API keys, pi's auth file including subscription auth) and model resolution — including custom providers and models defined in pi's models.json — so any model pi can reach becomes usable in Talemate. Provider and model are free-form fields with suggestions pulled from pi's model catalog, reasoning maps to pi's thinking levels with thinking output captured for the reasoning display, and concurrent inference runs one isolated pi instance per request. Sampling parameters stay on the pi side by design."
|
||
- "Environment Variable Store: Application settings gained an Environment Variables page for named values that are encrypted at rest and passed as environment variables to processes Talemate spawns — currently the Pi Bridge client's pi instances, so pi's models.json can reference secrets as $NAME instead of keeping plaintext keys in environment files."
|
||
- "Timeline: A new timeline dialog provides a single home for a scene's version history. Drag a slider across the scene's automatic version history to preview the message history at any revision, then fork that revision to a new save — the scene you are playing is never modified, and browsing the history changes nothing on disk. Opened from the scene tools Save menu, from the Fork button on any changelog-backed message (which positions the timeline at that message's revision), or from the Quick Load card menu on the main screen, where it replaces the old Restore from Backup dialog. Forking is the only action the timeline applies in this release, see below."
|
||
- "Character Creation Example Dialogue: AI-assisted character creation (World Editor → Characters → Create and the scene tools creative menu) gained a 'Generate example dialogue' option that generates a few example dialogue lines for the new character, with an optional guidance field to steer how the examples are written (tone, speech patterns, quirks). Off by default."
|
||
- "Scene Visual Manager: World Editor → Scene gained a Visuals tab mirroring the character visual manager, with Background Illustration, Scene Illustration and Scene Card sub-tabs to browse, upload, generate (new or as a variation of a reference image, single or batch), view, and delete scene images — plus per-image actions to set the scene cover image and set or unset the scene backdrop (the Scene Card sub-tab is portrait and offers no Set as Scene Backdrop action). A Prompt Finalization sub-tab edits the Visualizer agent's per-scene Prompt Finalization overrides directly from the world editor, creating the scene's agent-settings file with the default name when none is linked yet. The scene backdrop can now also be fully unset (not just toggled off), keeping the image in the scene assets."
|
||
- "Help Agent: A new Help agent provides an interactive help chat that answers questions about Talemate itself — settings, agents, clients, the world editor and more — grounded in the bundled documentation, which it can search and read before answering. Opened via the help icon in the app bar, it works with or without a loaded scene, supports multiple persistent multi-turn chats, and runs in the background so it never blocks the main Talemate loop. A per-chat Scene Aware toggle lets a conversation see (or stay unaware of) the currently loaded scene, and each question carries a small snapshot of what you are looking at in the interface so contextual questions like 'what does this setting do?' can be answered. The most recent answer can be regenerated via a button right on the message, matching the director chat. Beyond answering questions, the help agent can read your actual configuration — any agent's settings, application settings, and a read-only view of your clients (API keys are never exposed) — and, when asked, change agent settings (globally or as a per-scene override) and application settings directly from the chat, recording exactly what changed. It cannot change scene content — scene changes remain the director chat's job."
|
||
- "Scene Backdrop: Any scene illustration can now be set as the scene backdrop — an image that fills the whole scene view behind the messages instead of rendering inline. The backdrop belongs to the scene and is saved with it, so it survives reloads and history edits. Set it via 'Set as scene backdrop' on any illustration's image menu, the 'Set backdrop' button in the Visual Library, or enable 'Auto Backdrop' per visual type (Settings → Appearance → Message Visuals) to have newly generated Scene Backgrounds ('Visualize Scene (Background)') and/or Scene Illustrations ('Visualize Moment') promoted automatically. An 'Immersive' quick-toggle chip in the scene tools turns the backdrop on and off without forgetting the chosen image. Message text sits on translucent panels with a drop shadow for legibility — panel opacity and the text shadow are configurable — and a small marker icon shows which message's image is the current backdrop (click it for the image menu, which stays reachable via an Illustration chip on the message hover toolbar)."
|
||
- "Visual Prompt Finalization: The Visualizer agent gained a Prompt Finalization settings tab defining post-processing actions (exact, fuzzy or regex match and replace, or an AI instruction) that rewrite image prompts right before they are sent to the image generation backend. Actions can target positive and/or negative prompts, be restricted to specific visual types, and be overridden per scene. Characters can define their own actions under World Editor → Characters → Visuals → Prompt Finalization, which run after the agent's. Reusable action sets are managed as a new 'Visual prompt finalizer' template type, including a shipped Ideogram JSON preset that converts the positive prompt into an Ideogram 4.0 structured JSON prompt. Prompt-only generation output is finalized as well, and a new FinalizePrompt node exposes the step to custom node graphs."
|
||
- "Client Auto Retry: Clients can now automatically retry on response issues before you are notified — separate 0–5 retry sliders for empty responses, API rate limiting (HTTP 429, with progressively longer waits between attempts), and reasoning models that skip their reasoning tokens. A notification shows the retry progress with an abort option, and when retries run out (or a slider is at 0, the default) the usual generation error dialog appears."
|
||
- "New Node Graph Events: Node graphs can now hook into more of this release's features. `agent.visual.prompt_finalize.before` / `.after` fire around visual prompt finalization (mutable prompts, and the `.before` finalizer list can be modified — they fire even with the agent setting disabled, so a graph can act as its own finalizer). `agent.creator.dialogue_examples.before` / `.after` fire around character example dialogue generation (inject instructions, or rewrite the generated examples - not emitted when a Fast-mode consolidated one-shot produces the examples itself). `agent.help.chat.before` / `.after` fire around help chat responses. Scene asset mutations gained `asset_deleted`, `scene.backdrop_changed`, `scene.cover_image_changed` and `character.cover_image_changed` alongside the existing `asset_saved`. All are documented in the node editor's Events reference."
|
||
- "Simplified Character Card Import: The character card import dialog gained an AI Generation section with individual toggles for each generation step — content context, description rewrite, attribute extraction, dialogue instructions, example dialogue, and story intent — plus Full/Minimal preset buttons to flip them all at once. Disabled steps fall back to the card's original data (the description imports verbatim, example dialogue as-is with typographic quotes converted), so a minimal import needs no text generation at all and completes in a fraction of the time."
|
||
- "Scene Browser Landing Page: The home screen was rebuilt into a full-page landing view, replacing the sidebar load panel. A file-tree Scene Library lists scene projects with cover thumbnails, save counts and per-save metadata, plus an asset and node-module summary row per expanded project; long save lists collapse behind a 'Show all' row and the list is filterable with click-to-load. Individual scene files and character cards can be deleted from the tree, and an entire scene project (saves, assets, nodes, history) can be deleted behind a type-the-project-name confirmation. Character cards display their card image and only actual card files are listed. Scene and character card import moved to a prominent drag-and-drop dropzone next to a Create-new-scene card, with the quick-load recent scene cards kept on top."
|
||
- "Fast Character Creation: The Creator agent's settings gained a Character Creation section with a Fast mode that consolidates AI character generation into a single prompt instead of one prompt per aspect, covering the selected aspects in a single request. A Consolidate multi-select picks which aspects (name, description, attributes, dialogue instructions, example dialogue) the one-shot covers - unselected aspects keep their individual prompts - an 'Attribute templates' entry in the same list folds selected attribute world-state templates into the one-shot as per-attribute instructions instead of one prompt per template, a One-shot token budget slider (1024-8192, default 4096) controls the shared response budget, and a Fill in misses toggle re-runs an aspect's individual request when the consolidated response missed it, while a completely unparseable response is always a hard error. The consolidated prompt also applies the scene's writing style template when one is configured. All AI-assisted character creation paths (world editor, scene tools character introduction, character card import and node graphs) route through this single flow, with the split per-aspect flow remaining the default for older or smaller models. Off by default."
|
||
- "Generate Character Node: Node graphs gained a Generate Character node (`agents/creator/GenerateCharacter`) that generates character data (name, description, attributes, dialogue instructions and/or example dialogue) following the creator agent's Character Creation settings. Which aspects to generate can be wired in, alongside the character name, guiding instructions, an existing description and generation options. The node only generates data - wire its outputs into the director Persist Character node, which now accepts pre-generated dialogue instructions and example dialogue, to add the character to the scene without generating twice. The `Create Character` module, which now builds its character through this node, gained matching `generate_dialogue_instructions` (default on - existing graphs calling the module now generate dialogue instructions, an extra prompt when Fast mode is off) and `generate_example_dialogue` (default off) inputs; the simulation suite enables both, so its add-character action now also generates example dialogue."
|
||
improvements:
|
||
- "Per-Scene Agent Overrides: Every agent action that can be switched off globally can now also be switched off for a single scene. Previously only the Visualizer's Prompt Finalization could — a scene could retune how Auto Narration, Revision, Scene Analysis or Long Term Memory behave, but not turn any of them off. The quick-toggle chips in the agent panel follow the same rule: a chip shows the value the loaded scene is actually running on and toggles exactly that value — the scene's override when one is active (marked with a small scene icon, the global value shown in the chip's tooltip), the global setting otherwise."
|
||
- "Application Settings Redesign: The application settings moved out of their cramped modal into the main view as an always-available Settings tab, matching the World Editor and Templates. The nested tabs-within-tabs layout is replaced by a single sidebar navigation grouped by topic (Game, Appearance, Connections, Presets, Storytelling), with a settings search that finds any setting by name — including individual API-key providers — and jumps straight to it, highlighting the target. All API keys now live on one scrollable page instead of ten separate per-provider pages. Edits are tracked against the stored configuration: an Unsaved-changes indicator with Save and Discard appears in the toolbar, unsaved edits survive switching to other tabs, and configuration changed elsewhere (another window, the help agent) while you are editing is flagged instead of silently overwriting or being overwritten. Existing deep links — for example the 'Set API key' action on a misconfigured client — land on the correct page as before."
|
||
- "Application Settings: The Settings tab in the top navigation now shows a warning badge with a tooltip while there are unsaved changes, so the state stays visible after switching away. The settings toolbar is also capped to the content width and groups Save / Discard next to the page title on the left instead of the far viewport edge."
|
||
- "Application Settings: Switching away from the Settings tab while there are unsaved changes now asks what to do with them — Ignore keeps them pending, Save writes them, Discard Changes reverts them — since the warning badge alone was too easy to miss."
|
||
- "Help Agent: The documentation index is no longer embedded in the chat prompt - the prompt now carries only a compact section overview (~15k fewer tokens per message), and a new find_docs lookup locates the right documentation pages on demand, so the help chat works with small context windows typical of local models."
|
||
- "Uniform Settings Framework: Agent settings and client settings now share one field-definition schema on the backend and one field renderer on the frontend. Client-specific settings gain the full widget set previously exclusive to agents (sliders, autocompletes, selects with rich choices, per-value notes) plus conditional visibility, and choice lists are delivered to the frontend in a single normalized shape."
|
||
- "MistralAI Client: Added a Concurrent Inference toggle so batch operations can dispatch multiple requests in parallel. Off by default."
|
||
- "Text-Generation-WebUI Client: Added an 'API handles prompt template' toggle. When enabled, requests go to the chat/completions API and text-generation-webui applies the model's prompt template; response pre-filling (coercion) keeps working via the API's continue_ mechanism, and reasoning-model thinking is captured automatically without needing a reasoning pattern. Off by default."
|
||
- "llama.cpp Client: Added an 'API handles prompt template' toggle. When enabled, prompts are rendered through the server's /apply-template endpoint using the model's built-in chat template; response pre-filling (coercion) and reasoning keep working, and thinking-capable templates are asked not to think when reasoning is disabled. Off by default."
|
||
- "Track State: The World State scene tool menu's two separate 'Add tracked world state' and 'Add tracked character state' actions are now a single 'Track state' action. The modal itself lets you choose the target — the world or a specific character — before describing what to track, and the context attachment default and 'Require character active' option adapt to the choice."
|
||
- "OpenRouter Client: Added a Parameters config tab with individual toggles for `temperature`, `top_p`, `top_k`, `min_p`, `frequency_penalty`, `presence_penalty`, and `repetition_penalty`. Toggling a parameter off omits it from the request entirely, for model providers that hard-error on parameters they don't support for the selected model — some, for example, only accept a `frequency_penalty` of exactly 0 for certain models. All default to on."
|
||
- "Pi Bridge Client: The Docker image now ships with pi preinstalled, and pi's configuration directory (models.json, auth.json) is mounted from ./pi next to the compose file, so the client works in Docker out of the box."
|
||
- "Scene Browser Landing Page: The Quick Load recent-scene cards are smaller and scale with the viewport width, so a full row of recents no longer pushes the Scene Library far down the page."
|
||
- "Scene Browser Landing Page: The Quick Load card menu trigger moved below each card, so it no longer crowds the card title. Scene save files in the Scene Library gained the same context menu — Timeline, Remove from Quick Load (shown when the save is in Quick Load), and Delete — replacing the bare delete button."
|
||
- "Scene Browser Landing Page: The Quick Load cards now pop out slightly on mouse hover, without shifting the cards around them."
|
||
- "Prompt Finalization: UX polish for the post-processing actions editor — action fields lay out on a single balanced row with per-mode visibility (flags only show for exact and regex modes), each action card gained a compact header showing its mode and target plus tooltips on all controls, disabled actions dim their fields, an empty action list shows a hint instead of blank space."
|
||
changes:
|
||
- "Timeline: Forking a revision to a new save is the only action the timeline applies in this release. Rolling a scene back in place and opening a revision directly are disabled in this version — their websocket routes are gone, so no timeline action can write over an existing scene file. Browsing and previewing revisions are unaffected, and forking now refuses a save name that already exists instead of writing over it."
|
||
- "Dependencies: Refreshed the dependency lock across the board, including a setuptools bump to 83.0.0 which carries a fix for a source-distribution file-exclusion vulnerability (GHSA-h35f-9h28-mq5c). No dependency required code migrations."
|
||
- "OpenRouter Client: The default model for newly created OpenRouter clients is now google/gemini-3.6-flash."
|
||
- "OpenRouter Client: New OpenRouter clients now have reasoning enabled by default, with a budget of 2048 reasoning tokens, so the default model works out of the box. With reasoning off Talemate pre-fills the start of the response to steer it, and some providers — Google and Anthropic among them — reject requests that do that."
|
||
fixes:
|
||
- "Docker: `docker compose up` now requires an NVIDIA GPU and the NVIDIA Container Toolkit and exposes all host NVIDIA GPUs to Talemate, restoring CUDA detection for PyTorch. Hosts without an NVIDIA GPU must use `docker compose -f docker-compose.cpu.yml up`; the standalone manual-build command remains a complete CPU configuration."
|
||
- "Scene Forking: Forking from a message now refuses a save name that is not a valid filename or that an existing save already uses, instead of writing over that save or outside the scene directory. The timeline fork already refused both."
|
||
- "Prompt Finalization: The fuzzy match threshold slider's always-visible value bubble no longer overlaps the note above it."
|
||
- "Frontend: A backend websocket URL configured with the host 0.0.0.0 now connects — the URL was used literally, which most browsers refuse, so the app stayed on 'backend not connected'. The host is resolved to the hostname the UI itself was loaded from."
|
||
- "Help Chat: The warning shown while the Help agent has no configured client no longer stretches to fill the entire help panel — it renders as a compact notice above the chat."
|
||
- "Character Card Import: A failed description or example dialogue generation no longer wipes the card's own text. Both steps clear the field before regenerating it so the card's version doesn't bias the rewrite, but a generation that errored out or came back empty left the character with nothing at all — an empty description then also blinded the attribute extraction that runs right after it. The card's original description and example dialogue are now restored whenever generation fails, returns nothing, or is cancelled, matching what the import already does when those generation steps are switched off."
|
||
- "Character Card Import: A failed attribute extraction no longer overwrites the card's attributes. A generation that errored out or came back empty was still written to the character — as a sheet containing nothing but the character's own name — which dropped whatever attributes the card supplied (its gender, for example) and shadowed the character description in every prompt that renders the character sheet. An extraction that produces nothing now keeps the card's attributes, matching what the import already does when the attribute step is switched off."
|
||
- "Character Card Import: The director's 'Limit character attributes' setting now applies to character card import. The setting governs every other character creation path the director manages, but import ignored it entirely — importing a card with a limit of 5 configured still produced an unbounded sheet, with nothing indicating why. Both import paths (the per-aspect flow and the Creator's Fast one-shot) now generate at most the configured number of attributes. Attributes the card itself supplies are untouched when attribute extraction is switched off."
|
||
- "Pocket TTS: Pasting a Hugging Face token into the agent settings now enables the gated voice-cloning model download without restarting Talemate — previously a generation attempted before the token was set cached the fallback model without voice cloning, so following the in-app 'paste token and try again' instructions kept failing until a restart. While voice cloning is unavailable the agent card now also shows a warning."
|
||
- "Prompt Templates: The `system_time` template function crashed with 'Invalid format string' on Windows — it used strftime codes only available on Linux/macOS. The time is now formatted platform-independently with identical output."
|
||
- "Director Chat: Images created through the director chat's image generation action never appeared in the chat — the generation completed and the image was saved to the scene's assets, but the 'Image Generated' message was inserted into a newly created orphan chat instead of the conversation that requested it. The message is now inserted into the initiating chat."
|
||
- "Node Editor: The Build Prompt node's `memory_prompt` input socket and the Generate Response node's `action_type` input socket were silently ignored — only the node property ever took effect, so a graph computing either value dynamically and wiring it in had no effect. Non-empty wired values now win over the property (the property still applies when the socket is unconnected or resolves empty). Note: graphs that already had something connected to these sockets will start honoring the connection."
|
||
- "Scene Library: Deleting the save file of the currently loaded scene is now refused with an error - previously the file (and its version history) was deleted but silently recreated by the next save or autosave, making the delete appear to not work. Load a different scene first."
|
||
- "Pi Bridge Client: On Windows every generation hung at the very end — the response streamed in fully (visible as tokens-per-second slowly decaying to zero) but was never delivered, leaving the client busy until cancelled. pi is spawned through npm's pi.cmd shim there, and terminating that shim after the response orphaned the underlying node process, which kept the stdio pipes open and blocked the cleanup forever. The client now asks pi to shut down by closing its stdin (pi exits cleanly on stdin EOF on all platforms), force-kills the whole process tree if it doesn't exit within a grace period — so cancelling a generation no longer leaks a node process that keeps the provider request running — and no longer lets cleanup block response delivery."
|
||
- "Pi Bridge Client: On Windows the client could not launch pi at all — the startup model fetch logged an unhelpful '[WinError 2] The system cannot find the file specified' and generations failed the same way, because pi installed via npm is a pi.cmd shim that Windows only executes by its full path. The pi executable is now resolved to its full path before spawning, and if a launch still fails the error names the executable that could not be run. A missing pi install is also no longer reported at startup — it only surfaces on a configured Pi Bridge client."
|
||
- "Client Status: A single failed status check (e.g. a brief connection timeout to a busy local KoboldCpp) no longer flaps a connected client to 'Could not connect' for a few seconds — the client is only marked disconnected after consecutive status failures."
|
||
- "Agent Settings Dialog: Closing the dialog without changing anything no longer re-saves its settings — previously the untouched dialog pushed the copy it was opened with back to the backend, silently reverting any setting changed elsewhere while it was open (such as by the help agent). The help agent likewise refuses to change settings of an agent whose dialog is currently open, asking to close it first."
|
||
- "OpenRouter Client: A failed model/provider list fetch at startup no longer sticks until the server is restarted — later config saves and client status refreshes now retry it. Setting the API key for the first time during initial setup also correctly triggers the provider fetch."
|
||
- "Generation Error Dialog: When several generations failed at the same time (e.g. an API throttle hitting both a summarization and a background task), only the most recent error could be answered — the earlier generation was never resumed and its result (such as a scene summary) was silently lost. Error dialogs are now queued and answered one after another, and pending dialogs are cancelled cleanly when the scene is unloaded or the frontend disconnects."
|
||
- "Timeline: Previewing a revision could fail with an 'unhashable type' error when the scene's changelog contained deltas that diverged from the base snapshot — reconstruction now repairs the affected message history (and other list data) instead of crashing the timeline."
|
||
- "Scene Export: Exporting a scene with 'Reset Progress' checked wiped the loaded scene's message history and world state and could break subsequent saves — the reset now applies only to the exported file, leaving the current session untouched."
|
||
- "Client Editor: The Context Length input is now shown for every client type — previously clients without a self-hosted API URL (e.g. OpenRouter and the remote API clients) were missing it from the edit dialog, leaving the client-list slider as the only way to change their context token budget."
|
||
- "Node Editor: The Apply Style node crashed on any real style template id — it fed the id string into a code path expecting a visual type enum, so only the literal 'UNSPECIFIED' survived. The node now resolves the given template id directly and applies the full template. Note: passing 'UNSPECIFIED' as the template id no longer applies the configured art style — use the Apply Styles node for configuration-driven styles."
|
||
- "Client Sliders: Adjusting the context or reasoning token budget sliders in the client list no longer jitters back and forth between values — stale client status echoes from the backend could snap the slider back to a previous value shortly after dragging. Saving a client also no longer triggers redundant status round-trips to the inference API, and quickly editing two clients back to back no longer drops the first client's pending change."
|
||
- "Help & Director Chat: Long answers no longer read as one solid block of text. Headings, paragraphs, lists, quotes and horizontal rules had no spacing of their own, and lists had lost the indent their markers live in — so bullets were invisible and numbered steps showed a bare '.' with the number clipped off. All of it now renders with proper structure and spacing."
|
||
- "Node Editor: The Clean Up Narration node crashed with an AttributeError whenever it ran, and the raise/Stop node errored with 'Unknown exception' when its StageExit choice was selected."
|
||
- "Node Editor: The Compress Context ID Part node emitted the compressed value on its `uncompressed` output instead of the original part, and the As Bool node's error path itself crashed with a TypeError when a value could not be cast to a boolean."
|
||
- "Node Editor: Fixed two registry typos — `agents/editor/CleanUoCharacterMessage` is now `agents/editor/CleanUpCharacterMessage`, and the shipped director module `agernts/director/chat/instructGamestateUpdates` is now `agents/director/chat/instructGamestateUpdates`. Saved graphs referencing the old names keep loading via legacy aliases."
|
||
- "Node Editor: Socket fixes — Generate Response and State Counter no longer show a duplicate output socket; Generate Scene Types gained a `scene_types` output, Apply Styles and Apply Style gained a `state` passthrough output, and State Reinforcement's declared `reinforcement` output is now actually set. The Focal node's `template` input is correctly typed as `str`, and the Generation Options `spices` input and Spices node output are both typed `spices` so they can be wired directly."
|
||
- "Node Editor: Property metadata fixes — declared property defaults now match effective defaults on Context History and As Number; Set Scene Phase now actually defaults to the `roleplay` scene type (its effective default was an empty string, which made a freshly placed node error with 'Invalid scene type' until configured); the unused `asset_type` property was removed from Update Message Assets; the Sum node's `numbers` property is now properly typed in the editor UI."
|
||
- "Scene Types: Applying a scene type template never actually registered the scene type on the scene's intent state — the template wrote to a non-existent attribute, so template-picked scene types were silently lost."
|
||
- "Character Creation: A description typed into the world editor's character creator was silently discarded when AI generation was enabled, leaving the new character with no description. Provided descriptions are now kept."
|
||
- "Agent Settings Dialog: Scene mode now honors each setting's visibility conditions. Conditional settings - such as the Creator agent's Fast Character Creation fields, which only apply while Fast mode is on - no longer show up as scene overrides while their gate is off, and a section (along with its tab) whose settings are all currently hidden is dropped from Scene mode instead of rendering empty. Conditions are evaluated against the scene's effective values, so overriding the gating setting for a scene reveals the settings it gates. A setting that already carries an override stays visible even while its gate is off, so it can still be seen in the override count and cleared."
|
||
- "Character Card Import: Cancelling an import now actually aborts it — the split-mode per-aspect extractions, content-context determination, and story-intent generation each swallowed the cancellation as a warning, so the import completed anyway (and a cancel during story-intent generation leaked into the next unrelated generation)."
|
||
- "Character Card Import: Attribute extraction no longer runs blind in the default (non-Fast) import mode — the character being profiled was missing from its own extraction prompt, so attributes were generated from the greeting and character book alone, without the character's description. Imported attributes now reflect the description."
|
||
- "Character Creation: The director's 'Limit character attributes' setting now delivers the number of attributes it promises. The character's own name is written into the generated character sheet as a `Name` line, and it was counted against the limit — so every value delivered one attribute fewer than configured, and a limit of 1 produced no attributes at all. The name no longer costs a slot, in generated sheets as well as in sheets supplied to the Persist Character node."
|
||
- "Fast Character Creation: The one-shot generation prompt no longer repeats the character's name as an attribute — the name is already generated as its own aspect, so a `Name` entry in the character sheet was duplication, and under a configured attribute limit it consumed one of the allowed lines. This applies at every value of the director's 'Limit character attributes' setting, including the default of 0: Fast mode no longer asks for a `Name` attribute, and one written anyway does not cost a slot."
|
||
- "Agent Settings: An agent setting that has no on/off switch is no longer left switched off by a stored configuration. Sections like the Summarizer's Summarization, the Conversation and Narrator Generation sections or the World State's Character Portraits are always on by design, so the settings screen shows their options without an Enable checkbox — but a `false` recorded in the configuration file was still applied on startup, switching the section off in the background while its options stayed on display, with no control anywhere to turn it back on. The declaration now wins: such a setting is always loaded as on, and a `false` left in the configuration file — or in a scene's per-scene overrides — is ignored. A node graph that tries to toggle one now reports an error instead of appearing to succeed."
|
||
- "Agent Settings: Newly added agent settings no longer arrive switched off on an existing installation. Any setting that did not yet exist when the configuration file was last written was loaded as off rather than in the state it ships with, and then recorded as off — so a feature added in a release could be silently inactive for everyone upgrading into it while a fresh installation got it working. It is also what wrote the stale `false` the fix above corrects. Settings absent from the stored configuration now keep the state they ship with; a setting you switched off yourself stays off."
|
||
- "Example Dialogue: Character example dialogue no longer keeps typographic quotes (“ ” „ ‘ ’ ‚). Talemate delimits spoken words with the straight quote, so an example line carrying fancy quotes rendered as narration instead of dialogue and was mis-chunked by dialogue parsing and text-to-speech. Typographic quotes are now replaced with their plain equivalents wherever example dialogue is written outside a generation — character card import, manual entry and edits in the world editor, examples supplied directly to the Persist Character node, and the creator's example dialogue generation. Generated text was already normalized at the client level, and now also covers the German-style low-9 opening quotes, so a `„…“` pair no longer collapses into a single unbalanced straight quote. Characters already saved with fancy quotes keep them until the affected line is saved again."
|
||
- "Help Agent: Documentation lookups now find the page that actually answers the question. Every word counted the same, so asking about 'koboldcpp settings' returned five different agent settings pages and no KoboldCpp page at all — the common word decided the match and the rest were ties broken alphabetically. Distinctive words now count for far more than ubiquitous ones. Page length also buys far less rank: a longer description of a page used to be a strictly better one, every extra word another free chance to match, so describing a page more thoroughly made it surface for topics it only mentions in passing. Those matches are now diluted by how much the description covers, so a page that mentions a topic in passing no longer outranks the page about it."
|
||
- "Story Introduction: Setting the introduction through the director or through the Set Introduction node now updates the scene view and the World Editor right away instead of only after a scene reload."
|
||
- "Drawer Widths: The director console and help chat drawers no longer stay locked to the window size measured when the page was loaded — they now follow the current window size."
|
||
- "Dependencies: Excluded nltk 3.10.1 from the accepted version range — that release ships a CWD-import security hook that breaks Talemate's standard install layout (virtualenv inside the project directory), crashing startup on any install not using the committed lock. The lock now resolves nltk 3.10.2, where the hook was removed upstream."
|
||
- "Docker: Loading a scene no longer fails with a Memory Agent database error. The image installed an FFmpeg build that had moved past the versions torchcodec supports, so the embedding model could not be imported. The FFmpeg version is now pinned, and a mismatch fails the image build instead of shipping."
|
||
- "Docker: Building the image from a working copy that had already run the frontend outside Docker no longer fails at `pnpm build` with `ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY`. The repository had no `.dockerignore`, so the build context carried the host's `talemate_frontend/node_modules` into the image on top of the one the build had just installed; pnpm read the host's own paths out of it, judged the dependencies stale, and tried to reinstall them mid-build, which needs a terminal to confirm. A `.dockerignore` now keeps host build output, virtual environments, caches, `config.yaml` and `secrets/` out of the build context, and the frontend stage runs pnpm in CI mode. The corepack and uv versions the image installs are pinned as well, so neither can drift into the next broken build."
|
||
- "Docker: The Help agent can now read the documentation in the container. The image never carried the bundled `docs/` directory the agent reads at runtime, so in Docker it answered without any grounding in the manual - it could neither search nor open a page. The image now ships the documentation markdown (the screenshots stay out, the agent only ever reads the text)."
|
||
|
||
0.38.0:
|
||
features:
|
||
- "Event Module Auto-Register: Event Modules gained an `auto_register` toggle so a module subscribes to its event as soon as it's registered with the scene, without having to be placed in the scene loop graph."
|
||
- "Per-Scene Agent Overrides: Agent configuration can now be overridden per scene without changing the global config. The Agent Modal gains a Global / Scene mode switch for toggling and editing overrides; choose, swap, or opt out of the override file under World Editor → Scene → Settings."
|
||
- "Player Character Toggle: Added a Make Player Character / Unmark as Player action to the character editor. Promoting a character makes them the player and demotes the previous player to an AI actor; unmarking flips the current player to AI."
|
||
- "Message Revision History: Regenerated AI messages now show a paginator above the message body to browse previous regenerations. The version you're viewing becomes the one the AI continues from."
|
||
- "Scene Perspective Overrides: The scene outline perspective now supports per-speaker overrides for the player, NPCs, and narrator, each falling back to the default when empty. Presets are managed under Settings → Creator → Perspective Presets."
|
||
- "Per-Action Reasoning Override: Force reasoning off for specific agent actions without changing the client's global setting, via the brain icon in the prompt log."
|
||
- "Entity Highlights: Notable characters, items, and places in the most recent scene message are now highlighted as clickable entities — click for a short description of each."
|
||
- "Visualize Context Investigations: Context-investigation messages (entity look-ups, Look at Scene / Character) gained a Visualize action that generates an image into the message, matched to the subject."
|
||
improvements:
|
||
- "Settings UX: Renamed the Creator sub-tab from 'Content Context' to 'Content Classification' to match the field label used in the scene outline editor."
|
||
- "Message Revision History: Continuing a character or narrator message now creates a navigable revision entry tagged 'Continued'. Narrator messages also gain the Continue action on the hover toolbar."
|
||
- "Pydantic Migration: Internal data models across the codebase converted to pydantic for stricter validation. No user-visible behavior changes."
|
||
- "Character Sheet: Removed the read-only Character Sheet dialog and its button from the World State panel — the Manage character button already covers viewing and editing character details."
|
||
- "Message Toolbar: The revision chip on the message hover toolbar now shows the editor's configured revision method (e.g. Dedupe, Unslop, or Targeted Rewrite) instead of the generic 'Editor Revision' label."
|
||
- "Editor Revision Feedback: Triggering a revision from a message now shows a 'Revising' spinner, which clears whether the revision changes the text, produces no changes, fails, or is cancelled."
|
||
- "Editor Revision: Added a Repetition handling setting (Remove / Attempt rewrite) for AI-assisted revision. Remove (default) deletes flagged repetitions; Attempt rewrite asks the model to substitute genuinely different content, falling back to removal only when no meaningful rewrite is possible."
|
||
- "Editor Revision: Context-investigation messages (Look at, Investigate, Query) now support revision, both automatically via a new opt-in target (off by default) and manually via the Revise chip. They also contribute to the repetition corpus so nearby messages dedupe against them."
|
||
- "Frontend Tooling: Migrated the frontend from npm to pnpm for supply-chain hardening, provisioned automatically through Corepack. A 7-day minimum-release-age cooldown blocks brand-new dependency versions, and dependency install/build scripts are blocked unless allowlisted. pnpm 11 requires Node.js 22, now provisioned automatically by the install, update, and Docker build scripts."
|
||
- "Scene Message List: Long scenes render more smoothly when the message history changes. Operations that remove or rearrange messages now re-render only the affected slot instead of every message after the change point."
|
||
- "OpenAI Compatible Client: Added a Parameters config tab with individual toggles for `temperature`, `top_p`, and `presence_penalty`. Toggling a parameter off omits it from the request entirely, for backends that hard-error on unsupported parameters. All three default to on."
|
||
- "llama.cpp Client: Added a Concurrent Inference toggle so batch operations can dispatch multiple requests in parallel against a single `llama-server`. Off by default."
|
||
- "Autocomplete Hints: Autocomplete now accepts a free-form `{...}` hint block at the end of the input to steer the continuation (tone, beats, sensory detail, etc.); the brace block is stripped from the field when the suggestion is accepted. Toggle via the new `Enable Hints` setting on the Creator agent's Autocomplete config (default on)."
|
||
- "Autocomplete Redo/Undo: After an autocomplete suggestion is applied, a chip appears beside the field with Redo and Undo actions. Redo re-runs autocomplete from your original input (including any hint) so you can iterate without retyping; Undo restores the original input."
|
||
- "Contextual Generation Instructions: Instructions you provide when generating field content (character attributes, world entries, history entries, etc.) are now presented to the model as user-given instruction or seed material that must be reflected in the result, so they're followed more reliably. Static history entries in particular now treat your instruction as the seed for the entry, expanding on it instead of occasionally ignoring it."
|
||
- "Node Editor Log: Log entries now show a right-aligned `HH:MM:SS.mmm` timestamp, making it easier to correlate them with scene activity."
|
||
- "World State Snapshot: The Entity Highlights prompt now sees the full scene context rather than just the last 10 dialogue lines, and the analyzed 'current moment' is tightened to the most recent lines so highlights stay anchored to the active beat."
|
||
- "Durable World State Snapshot: The world state snapshot now carries entities forward across refreshes instead of regenerating wholesale, updating what changed and dropping entities that are no longer relevant. Stale entries are auto-evicted after several untouched updates. Ctrl/Cmd-click the refresh button to wipe on demand, or disable durability in the world state agent config."
|
||
- "World State Snapshot Context Pinning: The world state snapshot can now be pinned into the conversation, narrator, and scene-analysis prompts so its tracked entities inform dialogue, narration, and planning. Off by default."
|
||
- "World State Snapshot Custom Instructions: Added a Custom instructions field to the world state agent config to steer what the snapshot focuses on. Empty by default."
|
||
- "World State Snapshot Memory Recall: The world state agent now pulls relevant long-term memory into snapshot generation, so the snapshot can build on established lore and earlier scene history. Semantic recall is on by default."
|
||
- "World State Snapshot Background Generation: When the world state agent's client supports concurrent inference, the snapshot now generates in the background instead of locking the scene input. Manual refreshes work the same way and can be cancelled mid-generation."
|
||
- "HuggingFace Token: Added a HuggingFace access token to the application settings for downloading gated model weights such as the Pocket TTS voice-cloning model. It can also be set directly in the Pocket TTS agent config."
|
||
- "Inference Presets: Added an 'Apply to all' action to the inference parameter editor that copies the current preset's values to every other preset in the group. The Reset action now asks for confirmation as well."
|
||
- "Inference Presets: Widened the adjustable range and refined the step increments on several inference parameter sliders so presets can be tuned more precisely."
|
||
- "More Autocomplete Fields: The character actor's Add Dialogue Example field and the world editor's World information field now support autocomplete (Ctrl+Enter), with the same hint and Redo/Undo affordances as other generated fields."
|
||
- "Response Length Enforcement: Added an Adaptive option to the client's response-length setting, now the default. When reasoning is enabled it relies on length instructions alone, which reasoning models follow well, and drops the token cap that could otherwise cut a response off while the model is still thinking. With reasoning off it falls back to capping tokens and sending instructions."
|
||
- "Reasoning Validation Pattern: Clients can now define a pattern marking the start of a model's reasoning, alongside the existing strip pattern. When a model doesn't actually reason (as can happen with abliterated variants), its response is accepted as-is instead of erroring out. Built-in templates for Qwen, Gemma, GPT-OSS, and Seed set it automatically."
|
||
- "Reasoning Template Defaults Indicator: When a model's prompt template supplies a default strip or validation pattern (as the built-in Qwen, Gemma, GPT-OSS, and Seed templates do), the client's Reasoning tab now shows a 'Template default' chip beneath the field — with a tooltip naming the template — so it's clear the value is template-provided rather than only hinted at by the field placeholder. The chip disappears once you enter a custom value."
|
||
changes:
|
||
- "World State Snapshot Cadence: The snapshot now refreshes per individual character turn rather than per full scene round. The default interval was raised from 5 to 10 to keep the effective cadence comparable."
|
||
fixes:
|
||
- "Google Client: Fixed the 'Setup incomplete' status leaking into the client's model name. Removing then re-adding the API key could persist 'Setup incomplete' as the model, leaving the client looking configured while every request failed with HTTP 400. The incomplete-setup state is now reported as an error message without overwriting the model, and a client that already has the bad value persisted is healed to report 'No model loaded' instead of sending the invalid model to Google."
|
||
- "Anthropic / OpenRouter Clients: Fixed the 'Optimize for Prompt Caching' toggle not actually enabling caching on Anthropic — the required `cache_control` parameter was never sent. It is now sent when the toggle is on, and the OpenRouter client does the same for `anthropic/*` models. Note: enabling caching for Anthropic via OpenRouter forces routing to direct Anthropic."
|
||
- "Game Loop Event: Fixed an internal scene-loop event being constructed with the wrong scene reference, surfaced by the pydantic migration."
|
||
- "Conversation Agent: Stopped injecting `#` into the LLM stop-sequence list on every conversation turn."
|
||
- "Scene-Group Templates: Templates created via the prompt manager under the `scene` agent prefix are now resolvable from Jinja `{% include %}` calls regardless of the active agent type."
|
||
- "Intro Message TTS: Fixed the scene tools audio control not activating when TTS was manually triggered for the intro message."
|
||
- "Create Pin: Fixed the Create Pin action on narrator messages staying clickable while the UI was locked during generation; it now respects the lock."
|
||
- "Message Toolbar: Fixed the message hover-toolbar actions and double-click editing staying available while a background agent operation was running. They now disable for the duration, with the hint reading 'Editing locked'."
|
||
- "Create Pin: World entries created via the Create Pin message action are now marked Include only when pinned, so they surface only through the pin and aren't retrieved as ambient memory."
|
||
- "Status Snackbar: Fixed an empty grey toast flashing after operations that completed without a visible change. Cancellation toasts that were previously swallowed now display."
|
||
- "Node Editor Module Properties: Fixed boolean property checkboxes appearing unresponsive — clicks updated the value but the checkbox didn't repaint until focus moved elsewhere. They now commit on change."
|
||
- "Onboarding Wizard: Fixed the long-term memory setup step being non-scrollable on shorter viewports, which could push the 'Apply & finish' button below the fold. The step content now scrolls while the footer actions stay in view."
|
||
- "Scene Forking: Fixed forks and rollbacks created from the changelog UI sometimes failing to load with a 'message Field required' error. Affected history entries are now repaired during reconstruction so the scene loads."
|
||
- "Message Toolbar Actions: Fixed deletes, edits, and revision swaps made from the message toolbar not being persisted to the changelog right away — they only landed at the next scene turn or manual save. With autosave on, they now write through immediately, so forking or rolling back from the changelog UI reflects those changes without the user having to save first."
|
||
- "GPU VRAM: Switching scenes now releases the GPU memory that local CUDA work (embeddings, TTS) leaves reserved, instead of holding it for the rest of the session where it could leave too little VRAM to load another scene. Can be turned off under Settings → Game → General."
|
||
- "Autocomplete: Fixed contextual autocomplete (character attributes, world entries, scene intros, and similar fields) sometimes repeating the text you had already typed instead of only continuing from where you left off."
|
||
- "HuggingFace Prompt Template Lookup: Fixed automatic prompt-template detection hanging indefinitely when HuggingFace can't be reached (e.g. network or IPv6 routing issues). The lookup now times out, logs a warning, and lets startup continue instead of stalling silently."
|
||
0.37.1:
|
||
fixes:
|
||
- "Scene History: Fixed a crash when generating dialogue in long scenes that combine layered history with pre-established (static) history entries. The affected scene could become unplayable until its layered history was manually edited."
|
||
0.37.0:
|
||
features:
|
||
- "System Prompt Template Variable: Added {{ system_prompt }} template variable for system prompt overrides. Use it to include the default system prompt within a custom override, at both the app and client level."
|
||
- "Gamestate Path Template Helper: Added a `{{ render_game_state(\"path/to/var\") }}` Jinja global usable in prompt template overrides. Renders a targeted slice of the gamestate using the same data-block formatting as the full GAMESTATE block, with optional `title` and `max_gamestate_tokens` arguments. Renders empty when the path does not resolve. Backed by a new shared `get_path_value` helper in `talemate.util.path`."
|
||
- "Manual Scene Direction Turn: Added a button to the director scene tools menu to manually trigger a scene direction turn. Useful when scene direction is enabled but auto progression is off. Supports optional one-off instructions via Ctrl+click."
|
||
- "Auto Narration: Replaces the old Narrate after Dialogue toggle with a unified auto-narration action on the Narrator agent. A master chance slider gates whether anything fires per actor turn, and a weighted action mix decides which narration runs (Progress Story, Narrate Scene, or Narrate Environment). Suppresses itself while scene direction is active by default."
|
||
- "Visual Scene Tools: Organized the visual tools menu into per-character submenus, matching the world scene tools pattern."
|
||
- "Section Format: Per-client setting to control how prompt sections are formatted. Choose between Markdown (## headings) and XML (<SECTION>...</SECTION> tags). Found in the client configuration next to the data format setting."
|
||
- "Director Planning: The director can now build and track task lists. In normal director chat modes (Normal / Decisive / No Spoilers) the director can autonomously spin up a short todo list for multi-step work and tick tasks off as it completes them. A new Generate long progress dialog on the scene tool bar kicks off the other flow, creating a multi-beat scene arc from a short seed and executing every beat sequentially in a dedicated Generate Arc chat — with outline creation, critique, and beat-by-beat execution, and configurable dialogue ratio and pacing. Both flows share the same plan schema and Plan banner in the Director Console."
|
||
- "OpenAI Compatible TTS: Now supports multiple backends. Each has its own base URL, API key, model, and voice list. Voices auto-fetch from servers that expose a listing endpoint, and can be added manually for those that don't."
|
||
- "KoboldCpp TTS Auto-Setup: KoboldCpp clients with a TTS model loaded are automatically registered as a TTS backend. The backend's config persists across restarts; it's auto-enabled when the model is loaded and auto-disabled when it isn't."
|
||
- "Scene Perspective: Added a perspective field to the scene outline editor, allowing users to view and set the narrative perspective and tense (e.g., 'Third person limited, past tense'). Also exposed as a context ID (story_configuration:perspective)."
|
||
- "Prompt Logging: Set TALEMATE_LOG_PROMPTS=1 to write full prompt+response data to logs/prompt_log.jsonl for debugging and analysis."
|
||
- "Asset Exists Node: Added an allow_partial option that enables startswith matching instead of exact asset ID matching."
|
||
- "Prompt From Template Node: Added a dedupe property (default on) to control prompt deduplication. Useful for templates with structured repeated content like beat listings that should not be deduplicated."
|
||
- "Dict Get (Path) Node: Retrieves a value from a nested dict (or list-of-dicts) using a dotted path such as `modes.generate_arc.close_arc` or `items.0.name`. Returns a `found` flag so falsy values can be distinguished from missing keys, and accepts a `default` input for when the path does not resolve."
|
||
- "As Number Node: Added a `default` input socket that substitutes when the primary `value` is None or unresolved. The two sockets are grouped so either alone satisfies the input requirement, and the default is coerced to the configured number_type (int/float)."
|
||
- "Gemma 4 Prompt Template: Added a prompt template for Google's Gemma 4 model family, with support for toggling thinking mode via the reasoning tokens setting."
|
||
- "Advance Time: Moved time tools into a dedicated sub-component with grouped presets (Minutes, Hours, Days, Weeks, Months, Years) and a custom time dialog for arbitrary durations."
|
||
- "LLM Prompt Templates Manager: Added a dedicated UI tab for viewing, creating, editing, and deleting LLM prompt templates. Built-in templates are read-only and can be copied to user templates. User templates are stored in std/user/ and gitignored. GGUF/llama.cpp chat templates can be used directly."
|
||
- "Character Folders: Optionally organize the World State Manager character list into collapsible folders. Assign from the character editor; rename from the sidebar. Folder assignments sync across scenes linked to the same shared world context."
|
||
- "Model Testing Harness: Added a new bundled scene that runs a suite of minimum-viability tests against a connected language model client"
|
||
fixes:
|
||
- "Message Regeneration: Fixed a bug where regenerating a message that fails (e.g., missing agent or function) would permanently remove the original message from the scene. The original message is now restored to both history and UI on failure, and unhandled exceptions during regeneration are caught."
|
||
- "Anthropic Client: Fixed generation error caused by missing required max_tokens parameter when response length capping is disabled. Now defaults to the model's API output token limit."
|
||
- "Anthropic Client: Cleaned up supported models list, removing outdated dated model IDs."
|
||
- "Reasoning Pattern: Fixed client reasoning pattern round-tripping through the default fallback. Blanking the pattern in the client config no longer silently re-saves as `.*?</think>`, and the template-derived pattern (e.g. Gemma 4's `<channel|>`) is now correctly adopted when the stored pattern is empty. The Client Config placeholder also shows the actual template-derived default instead of a hard-coded value."
|
||
- Fixed crash in voice library character manager when a character was deactivated.
|
||
- Fixed blank page on some Windows 10 systems where JavaScript files were served with incorrect MIME type (text/plain), causing Chromium-based browsers to reject module scripts.
|
||
- Fixed "No episodes available" placeholder being selectable in the episode list.
|
||
- Fixed response extraction failing when only a closing anchor tag was present in the LLM response (e.g., `</PHASE_INTENT>` without `<PHASE_INTENT>`).
|
||
- "Text-Generation-WebUI / KoboldCpp: Fixed SSE streaming crash caused by unhandled [DONE] sentinel event, which resulted in a JSONDecodeError that discarded the entire generated response."
|
||
- "TabbyAPI: Fixed empty responses caused by the streaming parser only appending content on chunks that contained a usage block. Since usage is only sent on the final chunk (and only when explicitly requested), all content chunks were silently discarded. Content is now appended on every chunk, and the completions endpoint also requests `stream_options.include_usage` so token counters are populated."
|
||
- "Director actions: Removed redundant fix_instructions LLM call from direct_scene actor path. The FOCAL callback metadata already prevents verbatim dialogue in director instructions."
|
||
- "Introduce Character: Fixed the advanced introduce dialog (Ctrl+click) sending scene context as instructions to the determine-character-name template instead of the actual user instructions. The instructions textarea is now always visible in the advanced dialog."
|
||
- "Unslop: Fixed a bug where the unslop revision could hallucinate extra content, adding duplication and redundancy from previous entries. Fixes that are substantially longer than the original text are now discarded."
|
||
- "Encryption: Fixed API keys in agent action configs (e.g., OpenAI-compatible TTS, visual backends) being stored in plaintext. The encryption walker now handles the nested AgentActionConfig structure where the key is wrapped in a {value: ...} dict."
|
||
- "Agent Config: Stopped persisting unified_api_key fields to config.yaml. These are static reference pointers (e.g., 'openai.api_key') defined in code and never change, so saving them was unnecessary."
|
||
- "Contextual Generate: Fixed list-type generation prefilling an empty line after '1.', which caused some LLMs to produce empty lists."
|
||
- "Contextual Generate: Added a Cancel button to the generate dialog and moved generation to a background task so the interrupt signal is actually processed mid-generation (previously the websocket receive loop was blocked until the generation finished, defeating the purpose of any cancel)."
|
||
- "Autocomplete: Moved autocomplete (dialogue, narrative, and contextual generate variants) to a background task so the websocket receive loop is no longer blocked during typeahead generation. The status snackbar now shows a cancel button while autocomplete is running. Also fixes a deadlock where an empty model response during autocomplete would freeze the UI: the empty-response dialog (Retry/Cancel/Ignore) couldn't be processed because the receive loop was blocked, leaving the scene input permanently disabled regardless of which option was clicked."
|
||
- "UI Lock on Cancel: Fixed the scene input staying disabled after cancelling any background generation (autocomplete, narrator action, conversation turn, character progression, etc.). The set_loading wrapper now always clears the busy status on GenerationCancelled, not just when set_error is enabled, so the frontend's busy lock resolves and the input becomes usable immediately."
|
||
- "World State Manager / Editor: Fixed a deadlock when cancelling an LLM connection error dialog (Retry/Cancel/Ignore) raised during Refresh/Reset State (character and world reinforcements), Apply Template(s), Generate Dialogue Instructions, Regenerate History Entry, or Revise Message. These handlers ran the generation inline on the websocket receive loop, so the cancel response had nowhere to go and the operation hung until the underlying connection eventually timed out — leaving the World State card busy indefinitely. They now run as background tasks with a cancellable status snackbar, and the affected components clear their local busy state on cancel/error too."
|
||
- "Narrate Progress: Fixed narration sometimes generating screenplay-style dialogue entries instead of continuous narrative prose."
|
||
- "Advance Time: Fixed toolbar time advancement being completely non-functional due to a missing websocket handler. Also fixed invalid ISO 8601 duration strings for the 1 week and 2 weeks options."
|
||
- "Prompts UI: Fixed the template preview CodeMirror editor being clipped at the bottom across the Active, group, and LLM prompt template tabs, so the bottom scrollbar is fully visible."
|
||
- "Node Graph: Fixed `data/MakeDict` and `data/MakeList` leaking their initial value as a shared mutable reference across graph executions. Downstream in-place mutations (e.g., writing into a dict fed into SetState) would persist on the node and appear on the next run as stale data. Both nodes now deep-copy their configured default before emitting it."
|
||
- "Function Argument Node: Fixed a `TypeError` when a function callback (e.g., `roll_dice`) was invoked with a `None` argument value and the argument was typed as `int` or `float`. `None` is now passed through unchanged for numeric argument types instead of attempting `int(None)`/`float(None)`. The `str` and `bool` coercion paths are unchanged (`None` continues to surface as `\"None\"` and `False` respectively)."
|
||
- "Character Visuals: Fixed an infinite loop in the cover image and portrait tabs that spammed `scene_assets/search` requests at the backend whenever a character had no scene assets to fall back on as references. The reference-asset search now runs at most once per character, breaking the watcher feedback loop that previously kept firing throughout the time the Generate dialog was open."
|
||
- "macOS Modifiers: Ctrl+click affordances throughout the UI now also accept Cmd (Meta) on macOS, where the OS reserves Ctrl+click for the system context menu. Tooltips, hints, and docs label the modifier as Cmd on Mac and Ctrl elsewhere. Affects regenerate, scene tools (narrator/director/actor/creative), world state manager, contextual generate, message asset image, autocomplete (Ctrl+Enter), and history navigation. (#261)"
|
||
- "Game Loop Actor Iter: Fixed a bug where the `game_loop_actor_iter` event was only firing for player turns, so agents that listen for actor iteration (like passive narration) silently skipped AI turns."
|
||
- "OpenRouter: Fixed redundant provider/model list fetches when multiple OpenRouter clients are configured. Concurrent `status()` calls all saw the fetched-flag as still false and each kicked off its own HTTP request; the fetches are now serialized with an asyncio lock and double-checked locking so only one request runs."
|
||
- "Character Prompts: Fixed duplicated character description in prompts. When the LLM-generated character sheet contained a `description` attribute (common — the extractor often emits one), it was rendered alongside the standalone description field, repeating the same text twice. Templates that render both now filter `description` out of the sheet (case-insensitive). Affects the dialogue, narrator, director (voice assignment), and creator (dialogue examples, dialogue instructions, character goals, contextual generate) prompt paths."
|
||
- "RAG Query Generation: Fixed the analyze-text-and-generate-rag-queries template (used by the long-term memory retrieval flow) ignoring the volatile context placement setting. Dynamic instructions and the passed-in RAG context were always pinned at the top of the prompt, defeating prompt caching even when it was enabled on the client/agent. Volatile pieces are now split out and positioned via volatile_context_placement, matching the rest of the prompt set."
|
||
- "Character Memory: Fixed Character.commit_to_memory fragmenting a character's description into one vectordb entry per line. Multi-line descriptions are now stored as a single entry, matching how every other base attribute is committed."
|
||
- "Toggle Message Visibility: Fixed the unhide path in the `ToggleMessageContextVisibility` node and the Game API's `show_message` calling a non-existent `message.show()` method, which crashed instead of unhiding the message. Both now correctly call `message.unhide()`."
|
||
- "Node Definitions Export: Fixed `validate_registry_path` running the expensive `export_node_definitions()` walk before checking cheap argument validity. Empty or single-segment paths now raise immediately, and the export — which transitively crashed serializing `GetWebsocketRouter` when no frontend was attached — is no longer reached on bad input."
|
||
- "Get Websocket Router Node: Fixed the router choice list crashing with `'NoneType' has no attribute 'routes'` when no frontend websocket handler was attached (CLI usage, tests, startup). The choice list now returns empty in that case, allowing graph serialization and validation to proceed."
|
||
- "Client Repetition Break: Fixed `ClientBase.jiggle_enabled_for` crashing with AttributeError when called outside an `ActiveAgent` context (the `active_agent` ContextVar default is None). Now returns False for that case, matching the no-agent-attached behavior."
|
||
- "Scene Character Lookup: Fixed `Scene.character_is_active` crashing with AttributeError when passed a name that's not in `character_data`. Now returns False for unknown names instead."
|
||
- "World State Templates: Fixed `Group.sanitize_data` raising `KeyError` when loading a group YAML containing a template with no `template_type` field. The missing-type branch now correctly skips the invalid-type branch instead of trying to delete the same key twice."
|
||
- "Async Tools — debounce: Fixed the `debounce` decorator never actually cancelling prior calls. The `asyncio.create_task` return value was not assigned back to the `task` nonlocal, so every debounced call eventually ran. Only the most recent call now survives, as intended. (No in-tree callers; this is a defensive fix for the helper itself.)"
|
||
- "Async Tools — shared_debounce: Fixed `shared_debounce` treating an empty dict (`{}`) passed as `tasks=` as a request to use the global `TASKS` registry. The check now correctly distinguishes `None` (use global) from an empty caller-supplied dict (use it as-is)."
|
||
- "Message Regeneration: Fixed `regenerate_message` crashing with AttributeError or TypeError when the underlying CharacterMessage had a missing character or was a static player line. The character path now returns `None` cleanly in those cases and the caller short-circuits — matching how the outer `regenerate()` already handled the no-result path."
|
||
- "Client Auto-Disable: Fixed `ClientBase.toggle_disabled_if_remote` raising AttributeError when called against a remote-host client. The disable assignment now writes through to `client_config.enabled` (the underlying field) instead of the read-only `enabled` property."
|
||
- "Character Card Import — Gender Field: Fixed character cards with a `gender` field crashing the importer with AttributeError. `Character.gender` is a read-only property backed by `base_attributes['gender']`; the loader now writes through to the underlying base attribute."
|
||
- "Character Card Import — V0 JSON: Fixed V0-shape JSON character cards being recognised by `identify_import_spec` but rejected by `load_character_from_json` with `UnknownDataSpec`. V0 cards now load via the same top-level path as V1, matching the existing image-metadata loader."
|
||
- "Pin Active Check: Fixed `WorldStateManager.is_pin_active` returning whether the pin *exists* instead of whether it's *active* (the `.active`-flag check was unreachable behind a containment-check return). The Is Pin Active node now correctly reflects the pin's actual active state, so inactive pins no longer appear active to graphs branching on this output."
|
||
- "Summarizer Previous Summaries: Fixed the non-layered-history branch of `SummarizeAgent.previous_summaries` crashing with AttributeError. `archived_history` stores dicts (via `model_dump`), and the code accessed `entry.text` instead of `entry[\"text\"]`. Now reads via dict subscript, matching the rest of the module."
|
||
- "Changelog `latest_revision_at`: Fixed the helper returning the wrong revision (or None) for a given timestamp. The iteration overwrote the best match with progressively smaller revs and broke early on a non-matching first entry, so it returned either None or the *least* qualifying rev — never the greatest as documented. Now correctly returns the greatest rev whose timestamp is ≤ the cutoff. (No in-tree callers; defensive fix for the helper itself.)"
|
||
- "Update Config: Removed the dead Config-object branch in `update_config`. The branch had been broken since the pydantic v1→v2 migration (iterated `Config.model_fields` expecting FieldInfo objects with `.name`, but v2 returns a `dict[str, FieldInfo]`) but never surfaced because all callers pass dicts. The signature is now `dict` only; removing the dead path simplifies the helper instead of papering over the bug."
|
||
improvements:
|
||
- "System Prompt Override Indicators: The system prompt override list now shows a pencil icon next to entries that have an active override, making it easy to see which prompts have been customized."
|
||
- "Search Strictness: The distance_mod embedding preset value is now a float (was int) with a range of 0.1–2.0, allowing both tighter and looser similarity matching. A 'Search Strictness' slider is now available in the Context Database UI, letting users tune search sensitivity on the fly. Changes persist to the active embedding preset immediately."
|
||
- "Embeddings Device Switching: Changing the embeddings device (e.g., CPU to CUDA) no longer requires a restart. The old model is properly released from ChromaDB's class-level cache and GPU memory is freed before loading the new model."
|
||
- "Context Formatting: The |condensed template filter no longer permanently compacts multi-line context (e.g., world info, memories, pins) into a single line when sending prompts to the LLM. Formatting is now only compacted temporarily for deduplication comparison and restored to its original multi-line structure afterwards."
|
||
- "Client Config UX: Moved advanced settings (Inference Presets, Structured Data Format, Section Format, Response Length Enforcement, Prompt Caching, Rate Limit) into a dedicated Advanced tab to declutter the general view. A convenient link in the general tab provides quick access. Toggling Simple View on now resets to the General tab, and switching clients always starts on General."
|
||
- "Prompts Tab Alert: The top-level Prompts tab now shows a warning icon when any active template overrides are outdated, so you can spot them without opening the tab."
|
||
- "Action Confirm Timeout: The director chat action confirmation timeout is now configurable (0–60 minutes, default 3). Set to 0 to wait indefinitely. Found in the Director Chat settings under Action Confirmation."
|
||
- "Rewrite Revision: Collapsed the targeted rewrite method from two prompts into one. The analysis and rewrite are now produced in a single LLM call with the final revision extracted from a <REVISION> tag, halving latency and token cost. Added a length guardrail that discards rewrites substantially longer than the original (mirroring the unslop safeguard), and a dynamic response length budget sized to the draft."
|
||
- "Host and Port Configuration: The frontend default port is now 8082 (was 8080) to avoid conflicting with llama.cpp. Both the backend and frontend host/port can now be configured via `TALEMATE_BACKEND_HOST`, `TALEMATE_BACKEND_PORT`, `TALEMATE_FRONTEND_HOST`, and `TALEMATE_FRONTEND_PORT` environment variables, in addition to the existing CLI flags. (#254)"
|
||
- "Template Preview Shortcuts: The Active Templates preview now has an Override in… menu to create or edit an override in the user, scene, or any custom group, plus a Go to source button that jumps to the resolved template's group."
|
||
- "Scene Direction Node: The default scene loop's Scene Direction node now sets `max_actions` to 0 (use agent default) instead of hardcoding 10, so the director agent's configured `max_actions_per_turn` takes effect without node-level override."
|
||
- "Player Direction Input: Type `#text` in the main input box to insert a player-authored director message into the scene and append it to the scene-direction history as a user instruction, without taking a conversation turn. Use `##text` to do the same while keeping your turn. Requires Scene Direction to be enabled on the Director agent."
|
||
- "Scene Direction Instruction Templates: The general director instructions and per-scene-type instructions now accept an Instruction template field — a Jinja2 template basename from the scene's template directory that is rendered alongside the raw instruction text (addon, not override). Useful for keeping shared rules in one file and including them across multiple scenes or scene types. Selectable via dropdown in the World State Manager scene direction UI."
|
||
- "Anthropic: Added claude-opus-4-7. The model rejects temperature/top_p/top_k entirely and only accepts adaptive thinking (budget mode is forced to adaptive when reasoning is enabled). The effort selector also gains an 'xhigh' option that sits between 'high' and 'max'."
|
||
- "Pocket TTS v2: Upgraded to pocket-tts v2 with a new int8 quantize toggle for ~30% faster CPU inference. Existing configs auto-migrate on next load."
|
||
- "Prompt Deduplication: Now opt-in per client and off by default. Added a `Deduplicate Prompts` toggle to the client Advanced tab. Dedupe was originally added when context windows were a few thousand tokens and every token mattered; with modern 16k–1M context windows the savings rarely justify the rewrites, which break prompt caching. Enable only when RAG injection is producing substantial duplication and the context window is tight."
|
||
migrations:
|
||
- "Default frontend port changed from 8080 to 8082. Update any bookmarks or reverse-proxy configs that pointed at `localhost:8080`. To keep the old port, set `TALEMATE_FRONTEND_PORT=8080` before launching."
|
||
- "Docker compose variable `FRONTEND_PORT` renamed to `TALEMATE_FRONTEND_PORT`. If you had `FRONTEND_PORT` set in a `.env` file or your shell, rename it. The new variable controls both the published host port and the port uvicorn binds inside the container."
|
||
- "Docker compose variable `BACKEND_PORT` renamed to `TALEMATE_BACKEND_PORT`. Same migration as above — rename in any `.env` files or shell environments. The new variable controls both the published host port and the port uvicorn binds inside the container."
|
||
0.36.1:
|
||
features:
|
||
- "Gemma 4 Support: Added prompt template for Gemma 4 models."
|
||
fixes:
|
||
- "Contextual Generate: Fixed white space issues that caused problems with list creation tasks."
|
||
- "Text-Generation-WebUI: Fixed SSE event termination when receiving the [DONE] signal."
|
||
- "Narrator: Prompt tweaks for narrator progress."
|
||
0.36.0:
|
||
features:
|
||
- "Prompt Manager: The prompt template system has been rebuilt into a unified Prompt Manager accessible from the main UI. Templates are organized into groups with a configurable priority order controlling which overrides take effect. The resolved template tree is color-coded by source group, and recently rendered templates and sent prompts can be inspected with direct navigation to the source for editing."
|
||
- "Context History Review: A new context review panel visualizes how scene history is rendered into context for AI prompts, broken into sections with per-section token counts and budget allocation. A new best-fit mode automatically distributes budget across layers to cover the full timeline with a detail gradient — compressed at the start, detailed at the end."
|
||
- "Multiple Director Chats: The director chat now supports multiple concurrent conversations, each with its own message history and mode settings. Titles are auto-generated after the first exchange."
|
||
- "Scene State Reset: A new dialog provides granular control over resetting scene data — context DB, history, intent state, per-agent cached states, and reinforcements can be selected individually. Replaces the previous scattered reset commands with a single unified interface."
|
||
- "Time Passage Management: Time passage messages can now be inserted, edited, and deleted directly through the scene view. Layered history statistics including compression rate are now displayed in the history tools menu."
|
||
- "Image Analysis via Local Clients: Image analysis now supports two new backends: OpenAI Compatible for any OpenAI-compatible vision endpoint, and Talemate Client which uses any vision-capable Talemate LLM client."
|
||
- "API Key Encryption: API keys stored in config.yaml are now encrypted at rest. The encryption key is stored in the OS keyring when available, with a file-based fallback for Docker and headless environments. Existing plaintext keys are encrypted automatically on next save."
|
||
- "Volatile Context Placement: Volatile content — such as long-term memory, dynamic notes, and other frequently changing context — can now be placed after the scene history instead of before it. Improves prompt caching hit rates on API backends that support it. Disabled by default."
|
||
improvements:
|
||
- "Narrator: Generation length is now configurable per narration type."
|
||
- "Conversation: Added AI Aware mode where characters know they are AI personas."
|
||
- "Anthropic: Adaptive thinking support with configurable effort level."
|
||
- "Anthropic: Added claude-opus-4-5, claude-opus-4-6, and claude-haiku-4-5."
|
||
- "Google: Added support for gemini-3.1 models."
|
||
- "TTS: Audio tag support for vocal markers (e.g., [laughing]) with ElevenLabs v3."
|
||
- "World Editor: Generate from Topic for creating world entries from a prompt."
|
||
- "Frontend: Version mismatch detection between frontend and backend."
|
||
- "Summarizer: Custom instructions and writing style included during summarization."
|
||
fixes:
|
||
- "Fixed `)`, `]`, and `}` terminators being stripped from the end of messages."
|
||
- "Fixed `:` in conversation generation causing content loss."
|
||
- "Fixed conversation agent not respecting generation length."
|
||
- "Fixed duplicate length instructions when reasoning was enabled."
|
||
- "Fixed summarize dialogue sending too much context with layered history."
|
||
- "Fixed layered history construction and summary-to-dialogue crossover."
|
||
- "Fixed context ID dot notation when character names contained dots."
|
||
- "Fixed recursive retry bug in focal agent."
|
||
- "Fixed leading whitespace causing duplicate prepared responses."
|
||
- "Fixed multiline text handling in parentheses and brackets."
|
||
0.35.0:
|
||
features:
|
||
- "Autonomous Scene Direction: Allows autonomous scene progression through the director agent, using the same actions available in director chat. The Direction tab shows actions taken during the director's turn. A strong LLM (100B+) with reasoning capabilities is recommended. New director actions can be added via Director Action Nodes in the node editor. Disabled by default."
|
||
- "Character Visuals & Avatars: New Visuals tab in the character editor for managing portraits and cover images with generation support. Character messages now display portraits. The world state manager can re-evaluate which portrait to use based on scene context and commission new portraits via the director."
|
||
- "Inline Visuals: Images created through scene tools or director actions now appear inline in the scene feed. Size and display options can be configured in appearance settings."
|
||
- "llama.cpp Client: Added official llama.cpp client support for llama-server."
|
||
- "Pocket TTS: Added Pocket TTS support for local CPU-based text-to-speech with voice cloning using audio prompts."
|
||
improvements:
|
||
- "Setup wizard on initial launch for LLM, Memory, and Visual agent configuration."
|
||
- "Message appearance overhaul with configurable markdown display."
|
||
- "KoboldCpp: adaptive-p, min-p, presence/frequency penalty support."
|
||
- "Pin conditions can now target game state variables."
|
||
- "Visual: resolution presets, prompt revision, auto analysis, and prompt length config."
|
||
- "Visual Library: image crop regions for cover images."
|
||
- "Experimental concurrent requests for hosted clients (visual prompts)."
|
||
- "Agent activity stack visible above scene tools."
|
||
- "Node editor shortcuts: X for staging/alignment, Y for vertical alignment."
|
||
0.34.1:
|
||
fixes:
|
||
- "OpenRouter: Fixed empty responses from reasoning models."
|
||
- "OpenRouter: Fixed reasoning token not found errors."
|
||
- "OpenRouter: Let OpenRouter handle reasoning token collection."
|
||
- "OpenRouter: Configure reasoning effort correctly."
|
||
0.34.0:
|
||
features:
|
||
- "Visual Agent Refactor: Adds image editing with reference images and image analysis capabilities. Image editing allows modifying existing images using reference images. Image analysis extracts information from images for use in generation. Supported backends: ComfyUI, Automatic1111, SD.Next, OpenAI, Google, OpenRouter. Visual prompt instruction can now be customized through new Visual Style templates in the Templates editor. Nodes for image generation have been added to the node editor."
|
||
- "Visual Library: Visual library system for managing generated images and scene assets. Includes character portraits, scene covers, and other generated images. The image queue allows generating new images, regenerating existing ones, and iterating on generated images with modifications. Nodes for asset management have been added to the node editor."
|
||
- "Character Card Support: Character card import system completely refactored. Director agent analyzes greeting texts to detect multiple characters present in the card, allowing selective import of detected characters. Alternate greetings can be imported as episodes with optional AI-generated titles. Character books (lore books) are imported as world state entries. Character generation now uses card description, greeting texts, and character book entries together to determine character descriptions, attributes, and dialogue examples. Player character can be set using a default template, selected from detected characters in the card, or imported from another scene."
|
||
improvements:
|
||
- "Templates editor moved out of the World Editor — now available from the main navigation and no longer requires a scene to be loaded."
|
||
- "Scene assets are now managed in a separate file that all scenes in the same project share (assets/library.json)."
|
||
- "Prompt for unified API key configuration during client setup."
|
||
- "Improved token/s calculation."
|
||
- "Add Reset shortcut to Save menu."
|
||
- "Add save required indicator to save menu."
|
||
- "Client selection in agent config now only shows enabled clients."
|
||
- "App now properly locks inputs when client configuration is missing."
|
||
- "Improvements to director chat."
|
||
- "Shared world: button to share/unshare all characters."
|
||
- "Shared world: button to share/unshare all world entries."
|
||
- "Shared world: added episodes — Talemate's version of alternate introductions."
|
||
- "Narrator: Story progress now respects the generation length setting in the narrator agent config."
|
||
- "Character state reinforcements: added require_active setting that requires the character to be active for the state to be reprocessed (defaults to true)."
|
||
fixes:
|
||
- "Fixed issue where narrator would use wrong preset / system message."
|
||
- "Fixed `'_SceneRef' object has no attribute '_changelog'` error."
|
||
- "Fixed character image generation missing information if the targeted character is inactive."
|
||
0.33.0:
|
||
features:
|
||
- "Director Chat: A chat interface for conversing with the Director agent about the current scene. The Director can execute actions through 25+ specialized node modules covering scene queries, character/world state updates, game state management, narrative direction, and history modifications. Minimum recommended parameters: 12k+ context, 32B+ model with reasoning enabled. Ideally 100B+ models for best results. Accessible through the director console once a scene is loaded."
|
||
- "Scene Changelog and Restoration: Tracks all scene changes over time using delta compression. Stores incremental changes between revisions in segmented changelog files. Allows scenes to be reconstructed fully to a specific point in history and will be used for restoring scenes as well as true forking of scenes."
|
||
- "Shared World Context: Allows marking characters, world entries, and static history entries as `shared` to synchronize them across multiple scenes in the same project. Shared elements are exported to a dedicated context file that other scenes can reference. For characters, supports granular sharing at the attribute and detail level. Shared context files can be created and managed in World Editor → Scene → Shared Context."
|
||
improvements:
|
||
- "Agent persona (only for director currently)."
|
||
- "Pin decay — pin will stay active for N turns without having to be re-evaluated."
|
||
- "Improvements to data structure handling in LLM responses."
|
||
- "Game state variable editor."
|
||
- "ContextID system for unified management of context."
|
||
- "Pressing Ctrl+Up/Down arrow cycles through previous messages in the scene chat input."
|
||
- "Added summarizer / editor / director message access to scene toolbar."
|
||
- "Scene forking function now uses the new changelog system to reconstruct the scene to the specified revision."
|
||
- "World Editor → Context DB has been made read only (other than pin management)."
|
||
- "Memory agent semantic retrieval improvements."
|
||
- "Node Editor: Many new nodes added."
|
||
- "Node Editor: Module library overhaul to treeview display in sidebar."
|
||
- "Node Editor: Show when required inputs are not connected (red links)."
|
||
- "Node Editor: Certain nodes can now be Alt+Shift+dragged to spawn a counterpart."
|
||
- "Node Editor: Collector nodes for easier collection of values into lists or dicts."
|
||
- "Node Editor: Clicking outside of node property editor no longer discards changes automatically."
|
||
- "Node Editor: Auto resize new nodes to fit their title and inputs."
|
||
- "Node Editor: Property choice fields are now sorted alphabetically."
|
||
- "Node Editor: Added group presets."
|
||
- "Node Editor: Node search improvements."
|
||
fixes:
|
||
- "Fixed issue where drag-and-drop scene / character cover images would no longer work."
|
||
- "Fixed some layout issues in world editor."
|
||
- "Enforce Context DB clean up on scene load."
|
||
- "OpenRouter API key going from unset to set will now immediately fetch models."
|
||
- "Fixed remaining `World state manager` references in the UX to `World Editor`."
|
||
- "Scenes that no longer exist are automatically removed from recent scenes list."
|
||
- "Contextual generate now defaults to the scene writing style if it is set."
|
||
- "Fixed AI function argument conversion that would cast everything to string."
|
||
- "Node Editor: Errors in event nodes can no longer cause infinite loops of failures."
|
||
- "Node Editor: Deleting a module while it is loaded no longer results in an error."
|
||
- "Node Editor: Fixed issue where argument nodes would not convert to their type correctly."
|
||
- "Node Editor: Switching from node editor to world editor no longer causes graph changes to be lost."
|
||
- "Node Editor: Get node can now properly access tuple and set items."
|
||
- "Node Editor: Contextual Generate node now errors nicely when the required context_name is not set."
|
||
- "Node Editor: Fixed issue where Ctrl+Enter to submit in text editor nodes would cause extra new lines to be added."
|
||
0.32.3:
|
||
fixes:
|
||
- "Node Editor: Fixed LiteGraph context menu positioning issue."
|
||
0.32.2:
|
||
fixes:
|
||
- "Fixed KoboldCpp connection issues."
|
||
0.32.1:
|
||
fixes:
|
||
- "Fixed LMStudio connection (#212)."
|
||
- "Fixed Windows setup failure when any parent folder path contains spaces (#211)."
|
||
- "Fixed character creation issues."
|
||
- "Tweaked scene analysis and director guidance prompts for conversation."
|
||
- "Added GLM 4.5 templates."
|
||
0.32.0:
|
||
features:
|
||
- "TTS Agent Refactor: The Text-to-Speech agent has been completely refactored, adding support for additional APIs, per-character voice assignment, and speaker separation. Voices can now be managed through the new voice library. Local backends: F5-TTS (zero shot voice cloning), Chatterbox (zero shot voice cloning), Kokoro (predefined voice models). Remote backends: ElevenLabs, Google Gemini-TTS, OpenAI. The director agent can automatically assign voices to new characters based on voice library tags. XTTS2 support has been removed."
|
||
- "Reasoning / Thinking Models: Support for reasoning / thinking models has been added across all client types. Activate it via the new Reasoning tab in the client configuration UI. Disabled by default."
|
||
- "Scene Export / Import Packages: Scenes can now be exported as complete packages — including nodes, assets, and info files — and imported through the home view. Stand-alone JSON scene files remain supported for backward compatibility."
|
||
improvements:
|
||
- "Simulation suite: fixed inactive characters."
|
||
- "OpenRouter: provider selection and generation quality fixes."
|
||
- "KoboldCpp client default template added."
|
||
- "Agents can be Ctrl+clicked to toggle enabled state."
|
||
- "Visual agent: prevent scene cover image overwrite."
|
||
- "Disable scene analysis / guidance when building image generation prompts."
|
||
- "Migration from vue-cli to Vite (thanks @pax-co)."
|
||
- "Underlying config handling refactor improving stability."
|
||
- "Node Editor: Added As String node, Generate TTS node, Get Narrator Voice node, Get Voice node, TTS Agent settings node, and Unpack Voice node."
|
||
fixes:
|
||
- "Fixed Jinja2 error during auto direction generation."
|
||
migrations:
|
||
- "XTTS2 TTS support has been removed. Switch to one of the new local backends (F5-TTS, Chatterbox, Kokoro) or a remote backend (ElevenLabs, Google Gemini-TTS, OpenAI) via the voice library."
|
||
0.31.0:
|
||
features:
|
||
- "Installable Node Modules: Added a rudimentary way to register node modules as packages so they can be installed into a scene. A mods tab becomes available once a scene is loaded and allows installing / uninstalling such modules. The Dynamic Story node module ships with a package, so manual node-editor setup is no longer required."
|
||
- "History Management: Can now add, edit, remove, and regenerate entries in the History tab of the World Editor. Entries based on summarization can be inspected to show their source messages."
|
||
improvements:
|
||
- "Instructor Embeddings are once again functional."
|
||
- "OpenRouter support added."
|
||
- "Ollama support added."
|
||
- "KoboldCpp Embeddings support added."
|
||
- "Visual agent can now generate prompts only — available even if the visual agent is not fully configured for image generation."
|
||
- "Memory Agent: memory retrieval has been improved."
|
||
- "Summarization Agent: summarization improvements."
|
||
- "Node Editor: Jinja2 templates existing in templates/modules can now be properly loaded."
|
||
- "Node Editor: Added Emit System Message node — allows for communication of messages to the user outside of the context history."
|
||
fixes:
|
||
- "chara_card_v3 spec character card import fixed."
|
||
- "Node Editor: Fixed issue where errors inside custom node graphs could hang Talemate."
|
||
- "Node Editor: Fixed issues with several math nodes that would run even though their wires were inactive."
|
||
- "Node Editor: Fixed issue with DynamicInstruction node that would run even though its wires were inactive."
|
||
- "Node Editor: Fixed issue where editor revision events were missing the `template_vars` value."
|
||
0.30.0:
|
||
features:
|
||
- "Node Editor: The backend was refactored to a node-based architecture, allowing for more complex and dynamic scenes and customizable / reusable modules. This is the first iteration — accessible from creative mode once a scene is loaded."
|
||
- "Revisions: Revision action added to the Editor agent. When toggled on, it analyzes text for repetition or unwanted prose and revises it accordingly. Unwanted prose is defined through the writing style template assigned in the scene settings. Disabled by default."
|
||
- "Auto-Direction: The Director agent can now automatically direct the scene based on the current state and intention of the scene. Experimental and a work in progress — the goal is to test the waters towards giving the reins to the Director agent to direct the scene as it sees fit. Disabled by default."
|
||
improvements:
|
||
- "Inference preset groups."
|
||
- "AI function calling improvements."
|
||
- "Client rate limiting."
|
||
- "Clients can now configure data communication to be in YAML or JSON format."
|
||
- "Simulation Suite V2 — remade using the new node editor (v1 still exists)."
|
||
- "Director guidance cache."
|
||
0.29.0:
|
||
features:
|
||
- "Scene Analysis: Added scene analysis capabilities, providing analytical summaries that other agents can use to enhance their output. Disabled by default."
|
||
- "Director Guidance: The director agent now offers conversation and narration guidance based on the summarizer's scene analysis. Disabled by default."
|
||
- "Character Progress: The world state agent can now automatically track character progress and provide proposals of updates to the character description and attributes. Disabled by default."
|