Files

240 lines
9.6 KiB
Markdown
Raw Permalink Normal View History

0.39.0 (#274) - **Help Agent** — A new agent that answers questions about Talemate itself — settings, agents, clients, the world editor — grounded in the bundled documentation, and able to change agent and application settings on request. - **Timeline Rollback** — Scrub a slider across a scene's automatic version history, preview the message history at any revision, then roll the scene back in place or fork the revision into a new save. - **Pi Bridge Client** — A new client type that drives generations through the pi coding agent's headless RPC mode, making any model pi can reach usable in Talemate. - **Application Settings** — Settings move out of their modal into an always-available Settings tab, with a single topic-grouped sidebar, a settings search, all API keys on one page, and unsaved-change tracking. - **Scene Library** — The home screen is rebuilt as a full-page landing view with a file-tree scene library, cover thumbnails and per-save metadata, scene and save deletion, and a drag-and-drop import dropzone. - **Fast Character Creation** — Generate a character in a single request instead of one prompt per aspect, with a Consolidate multi-select, a token budget, and a Fill in misses pass. Off by default. - **Scene Backdrop** — Set any scene illustration as a backdrop filling the scene view behind the messages, saved with the scene, with configurable text legibility and an Immersive quick-toggle. - **Scene Visual Manager** — World Editor → Scene gains a Visuals tab to browse, upload, generate and delete the scene's backgrounds and illustrations, and set the cover image and backdrop. - **Visual Prompt Finalization** — Post-processing actions — match and replace, or a free-form AI instruction — rewrite image prompts right before they reach the image backend, with per-scene and per-character overrides and reusable template sets. - fixes #271 - fixes #275 Plus 25 improvements and 39 bug fixes — see [CHANGELOG.md](https://github.com/vegu-ai/talemate/blob/prep-0.39.0/CHANGELOG.md#0390) for the full list.
2026-08-29 13:21:22 +03:00
# Visualizer Agent Prompt Nodes
Build visual prompts: assemble prompt parts, apply styles, finalize prompts and unpack them into compiled positive/negative prompt strings. Generation itself happens through the [generation nodes](agents-visual-generation.md), and ready-made flows live in [Visualizer Agent Modules](agents-visual-modules.md).
!!! note "Apply Style behavior change in 0.39.0"
[Apply Style](#apply-style) now resolves its `template_id` directly to a style template. Passing the literal `UNSPECIFIED` as the template id no longer applies the configured art style — it applies nothing. For configuration-driven styles (the active art style, plus the subject style for a `vis_type`), use [Apply Styles](#apply-styles) instead.
<!-- glossary:generated - everything below this line is generated by `python -m talemate.game.engine.nodes.tools glossary --write` - do not edit -->
_8 nodes._
| Node | Registry path |
| --- | --- |
| [Apply Style](#apply-style) | `agents/visual/ApplyStyle` |
| [Apply Styles](#apply-styles) | `agents/visual/ApplyStyles` |
| [Visual Enum Values](#visual-enum-values) | `agents/visual/EnumValues` |
| [Finalize Prompt](#finalize-prompt) | `agents/visual/FinalizePrompt` |
| [Visual Prompt](#visual-prompt) | `agents/visual/Prompt` |
| [Visual Prompt Part](#visual-prompt-part) | `agents/visual/PromptPart` |
| [Visual Settings](#visual-settings) | `agents/visual/Settings` |
| [Unpack Visual Prompt](#unpack-visual-prompt) | `agents/visual/UnpackPrompt` |
## Apply Style
`agents/visual/ApplyStyle`
Applies a specific style template (by template id) to a visual prompt,
inserting it at the front of the prompt's part list and modifying the
prompt in place.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The graph state |
| `prompt` | `visual/prompt` | The visual prompt to apply the style to |
| `template_id` | `str` | The id of the style template to apply |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The graph state, passed through |
| `prompt` | `visual/prompt` | The prompt with the style applied |
| `template_id` | `str` | The template id, passed through |
| `prompt_part` | `visual/prompt_part` | The prompt part created from the style template (None if the template was not found) |
## Apply Styles
`agents/visual/ApplyStyles`
Applies the configured style templates to a visual prompt: the active
art style plus the subject style matching the given vis_type. Matching
styles are inserted at the front of the prompt's part list, modifying
the prompt in place.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | The graph state |
| `prompt` | `visual/prompt` | The visual prompt to apply styles to |
| `vis_type` | `str` | The type of visual to apply styles for (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | The graph state, passed through |
| `prompt` | `visual/prompt` | The prompt with the styles applied |
| `vis_type` | `str` | The vis_type, passed through |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `vis_type` | `str` | `"UNSPECIFIED"` | The type of visual to apply styles to. Choices: `UNSPECIFIED`, `CHARACTER_CARD`, `CHARACTER_PORTRAIT`, `SCENE_CARD`, `SCENE_BACKGROUND`, `SCENE_ILLUSTRATION`, `OBJECT_ILLUSTRATION`. |
## Visual Enum Values
`agents/visual/EnumValues`
Returns the possible values of one of the visual agent's enums
(VIS_TYPE, GEN_TYPE, FORMAT_TYPE or PROMPT_TYPE), selected via the
enum property.
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `values` | `list` | The list of the enum's values |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `enum` | `str` | `"VIS_TYPE"` | The enum to get the values of. Choices: `VIS_TYPE`, `GEN_TYPE`, `FORMAT_TYPE`, `PROMPT_TYPE`. |
## Finalize Prompt
`agents/visual/FinalizePrompt`
Applies the visualizer's prompt finalization (post-processing actions)
to a positive / negative prompt string pair.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `state` | `any` | graph state (required — wire through any gating switch so the node is skipped when its output would be discarded) |
| `positive_prompt` | `str` | positive prompt string (required) |
| `negative_prompt` | `str` | negative prompt string (optional) |
| `vis_type` | `str` | type of visual the prompts are for (optional) |
| `character_name` | `str` | character the prompts involve, enables character level finalizers (optional) |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `state` | `any` | graph state (passed through) |
| `positive_prompt` | `str` | finalized positive prompt |
| `negative_prompt` | `str` | finalized negative prompt |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `vis_type` | `str` | `"UNSPECIFIED"` | The type of visual the prompts are for. Choices: `UNSPECIFIED`, `CHARACTER_CARD`, `CHARACTER_PORTRAIT`, `SCENE_CARD`, `SCENE_BACKGROUND`, `SCENE_ILLUSTRATION`, `OBJECT_ILLUSTRATION`. |
## Visual Prompt
`agents/visual/Prompt`
Creates a visual prompt from a list of prompt parts. The prompt_type
controls how the parts are compiled into the final positive / negative
prompt strings (comma-separated keywords or descriptive prose).
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `prompt_type` | `str` | (optional) The type of prompt to create (KEYWORDS or DESCRIPTIVE) |
| `parts` | `list` | (optional) List of visual prompt parts to combine |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `prompt` | `visual/prompt` | The created visual prompt |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `prompt_type` | `str` | `"KEYWORDS"` | The type of prompt to create. Choices: `KEYWORDS`, `DESCRIPTIVE`. |
## Visual Prompt Part
`agents/visual/PromptPart`
Creates a visual prompt part from instructions, keyword lists and
descriptive text. Prompt parts are combined into a visual prompt (via the
Prompt node), which compiles the final positive / negative prompts from
them. Keyword inputs given as a single string are split on ", ", and
positive keywords prefixed with "no " (e.g. "no glasses") are treated as
implied negative keywords.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `instructions` | `str` | (optional) Free-form instructions for the prompt part |
| `positive_keywords_raw` | `list,str` | (optional) Positive keywords as a list or comma-separated string |
| `negative_keywords_raw` | `list,str` | (optional) Negative keywords as a list or comma-separated string |
| `positive_descriptive` | `str` | (optional) Descriptive (prose) positive prompt text |
| `negative_descriptive` | `str` | (optional) Descriptive (prose) negative prompt text |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `prompt_part` | `visual/prompt_part` | The created visual prompt part |
| `instructions` | `str` | The instructions (passed through) |
| `positive_keywords_raw` | `list` | Raw positive keywords, including any "no ..." entries |
| `negative_keywords_raw` | `list` | Raw negative keywords (passed through) |
| `implied_negative_keywords` | `list` | Keywords derived from "no ..." positive keywords |
| `positive_keywords` | `list` | Positive keywords with "no ..." entries removed |
| `negative_keywords` | `list` | Raw negative keywords plus the implied negative keywords |
| `positive_descriptive` | `str` | Descriptive positive text (passed through) |
| `negative_descriptive` | `str` | Descriptive negative text (passed through) |
**Properties**
| Property | Type | Default | Description |
| --- | --- | --- | --- |
| `instructions` | `text` | `""` | The instructions for the prompt part |
| `positive_keywords_raw` | `list` | `[]` | The positive keywords for the prompt part |
| `negative_keywords_raw` | `list` | `[]` | The negative keywords for the prompt part |
| `positive_descriptive` | `text` | `""` | The positive descriptive for the prompt part |
| `negative_descriptive` | `text` | `""` | The negative descriptive for the prompt part |
## Visual Settings
`agents/visual/Settings`
Base node to render visual agent settings.
Every setting of the visual agent is exposed as an output socket named after the setting - see the agent's documentation under [Agents](../../../agents/index.md) for what each setting does.
## Unpack Visual Prompt
`agents/visual/UnpackPrompt`
Unpacks a visual prompt into its parts and the compiled prompt strings.
Use this to access the final positive / negative prompts (built according
to the prompt's prompt_type) or the keyword-only / descriptive-only
variants regardless of the prompt type.
**Inputs**
| Input | Type | Description |
| --- | --- | --- |
| `prompt` | `visual/prompt` | The visual prompt to unpack |
**Outputs**
| Output | Type | Description |
| --- | --- | --- |
| `prompt` | `visual/prompt` | The visual prompt (passed through) |
| `parts` | `list` | The prompt's list of prompt parts |
| `prompt_type` | `str` | The prompt type (KEYWORDS or DESCRIPTIVE) |
| `instructions` | `str` | Combined instructions from all parts |
| `positive_prompt` | `str` | Positive prompt compiled according to prompt_type |
| `negative_prompt` | `str` | Negative prompt compiled according to prompt_type |
| `positive_prompt_keywords` | `str` | Positive prompt compiled as comma-separated keywords |
| `negative_prompt_keywords` | `str` | Negative prompt compiled as comma-separated keywords |
| `positive_prompt_descriptive` | `str` | Positive prompt compiled as descriptive text |
| `negative_prompt_descriptive` | `str` | Negative prompt compiled as descriptive text |