- **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.
14 KiB
Asset Meta And Selection Nodes
Asset metadata and selection: search assets, build selection contexts, and construct attachment contexts for passing assets into generation requests.
6 nodes.
| Node | Registry path |
|---|---|
| Make Asset Attachment Context | assets/MakeAssetAttachmentContext |
| Make Asset Meta | assets/MakeAssetMeta |
| Search Assets | assets/SearchAssets |
| Select Assets | assets/SelectAssets |
| Unpack Asset Meta | assets/UnpackAssetMeta |
| Unpack Asset Selection Context | assets/UnpackAssetSelectionContext |
Make Asset Attachment Context
assets/MakeAssetAttachmentContext
Create an asset attachment context object.
This controls how assets are automatically attached to messages when created.
Note:
- When message_ids is empty, assets will be attached to the most recent appropriate message
- When message_ids is provided, assets will only be attached to those specific messages
- Use allow_override=true to replace existing message assets, false to skip messages that already have assets
- Use delete_old=true to delete the old asset when replacing (requires allow_override=true)
Inputs
| Input | Type | Description |
|---|---|---|
asset_name |
str |
(optional) name to save the asset under |
tags |
list |
(optional) list of tags to add to the asset |
allow_auto_attach |
bool |
(optional) whether to allow automatic attachment of assets to messages |
allow_override |
bool |
(optional) whether to allow overriding existing message assets |
delete_old |
bool |
(optional) whether to delete the old asset when replacing a message's asset |
message_ids |
list |
(optional) list of specific message IDs to attach to (empty = auto-detect last message) |
scene_cover |
bool |
(optional) whether to set the scene cover image |
character_cover |
bool |
(optional) whether to set the character cover image |
override_scene_cover |
bool |
(optional) whether to override an existing scene cover image (requires scene_cover=true) |
override_character_cover |
bool |
(optional) whether to override an existing character cover image (requires character_cover=true) |
default_avatar |
bool |
(optional) whether to set the default avatar image |
current_avatar |
bool |
(optional) whether to set the current avatar image |
override_default_avatar |
bool |
(optional) whether to override the default avatar image (requires default_avatar=true) |
override_current_avatar |
bool |
(optional) whether to override the current avatar image (requires current_avatar=true) |
Outputs
| Output | Type | Description |
|---|---|---|
context |
asset_attachment_context |
the asset attachment context object |
asset_name |
str |
the asset name (passed through) |
tags |
list |
list of tags (passed through) |
allow_auto_attach |
bool |
whether to allow automatic attachment (passed through) |
allow_override |
bool |
whether to allow overriding existing assets (passed through) |
delete_old |
bool |
whether to delete old assets (passed through) |
message_ids |
list |
list of message IDs (passed through) |
scene_cover |
bool |
scene cover flag (passed through) |
character_cover |
bool |
character cover flag (passed through) |
override_scene_cover |
bool |
scene cover override flag (passed through) |
override_character_cover |
bool |
character cover override flag (passed through) |
default_avatar |
bool |
default avatar flag (passed through) |
current_avatar |
bool |
current avatar flag (passed through) |
override_default_avatar |
bool |
default avatar override flag (passed through) |
override_current_avatar |
bool |
current avatar override flag (passed through) |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
asset_name |
str |
"" |
Name of the asset to save |
tags |
list |
[] |
List of tags to add to the asset |
allow_auto_attach |
bool |
False |
Allow automatic attachment of assets to messages |
allow_override |
bool |
False |
Allow overriding existing message assets |
delete_old |
bool |
False |
Delete old asset when replacing (requires allow_override=true) |
message_ids |
list |
[] |
List of message IDs to attach to (empty = auto-detect) |
scene_cover |
bool |
False |
Whether to set the scene cover image |
character_cover |
bool |
False |
Whether to set the character cover image |
override_scene_cover |
bool |
False |
Whether to override the scene cover image (requires scene_cover=true) |
override_character_cover |
bool |
False |
Whether to override the character cover image (requires character_cover=true) |
default_avatar |
bool |
False |
Whether to set the default avatar image |
current_avatar |
bool |
False |
Whether to set the current avatar image |
override_default_avatar |
bool |
False |
Whether to override the default avatar image (requires default_avatar=true) |
override_current_avatar |
bool |
False |
Whether to override the current avatar image (requires current_avatar=true) |
Make Asset Meta
assets/MakeAssetMeta
Create an asset metadata object.
Inputs
| Input | Type | Description |
|---|---|---|
name |
str |
(optional) asset name |
vis_type |
any |
(optional) visual type |
gen_type |
any |
(optional) generation type |
character_name |
str |
(optional) character name |
prompt |
str |
(optional) prompt text |
negative_prompt |
str |
(optional) negative prompt text |
sampler_settings |
any |
(optional) sampler settings object |
reference_assets |
list |
(optional) list of reference asset IDs |
tags |
list |
(optional) list of tags |
analysis |
str |
(optional) analysis prompt text |
reference |
list |
(optional) list of vis_types that this asset may be used as a reference for |
Outputs
| Output | Type | Description |
|---|---|---|
meta |
asset_meta |
the asset metadata object |
name |
str |
asset name (passed through) |
vis_type |
any |
visual type (passed through) |
gen_type |
any |
generation type (passed through) |
format |
any |
recommended format based on vis_type (PORTRAIT, LANDSCAPE, or SQUARE) |
character_name |
str |
character name (passed through) |
prompt |
str |
prompt text (passed through) |
negative_prompt |
str |
negative prompt text (passed through) |
sampler_settings |
any |
sampler settings object (passed through) |
reference_assets |
list |
list of reference asset IDs (passed through) |
tags |
list |
list of tags (passed through) |
analysis |
str |
analysis prompt text (passed through) |
reference |
list |
list of vis_types that this asset may be used as a reference for (passed through) |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
name |
str |
"" |
Asset name |
vis_type |
str |
"" |
Visual type. Choices: UNSPECIFIED, CHARACTER_CARD, CHARACTER_PORTRAIT, SCENE_CARD, SCENE_BACKGROUND, SCENE_ILLUSTRATION, OBJECT_ILLUSTRATION. |
gen_type |
str |
"" |
Generation type. Choices: TEXT_TO_IMAGE, IMAGE_EDIT, UPLOAD. |
character_name |
str |
"" |
Character name |
prompt |
text |
"" |
Prompt text |
negative_prompt |
text |
"" |
Negative prompt text |
reference_assets |
list |
[] |
List of reference asset IDs |
tags |
list |
[] |
List of tags |
analysis |
text |
"" |
Analysis prompt |
reference |
list |
[] |
List of vis_types that this asset may be used as a reference for |
Search Assets
assets/SearchAssets
Search assets by vis_type, character_name, tags, or reference vis_types.
Inputs
| Input | Type | Description |
|---|---|---|
vis_type |
any |
(optional) visual type to filter by (can be a single value or a list of values) |
character_name |
str |
(optional) character name to filter by (case insensitive) |
tags |
list |
(optional) list of tags to filter by (case insensitive) |
reference_vis_types |
list |
(optional) list of vis_types to filter by. Only return assets that have at least one matching vis_type in their reference list |
Outputs
| Output | Type | Description |
|---|---|---|
asset_ids |
list |
list of matching asset IDs |
asset_count |
int |
number of matching assets |
vis_type |
any |
visual type filter (passed through) |
character_name |
str |
character name filter (passed through) |
tags |
list |
tags filter (passed through) |
reference_vis_types |
list |
reference vis_types filter (passed through) |
tag_match_mode |
str |
tag match mode (passed through) |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
vis_type |
str |
"" |
Visual type to filter by. Choices: UNSPECIFIED, CHARACTER_CARD, CHARACTER_PORTRAIT, SCENE_CARD, SCENE_BACKGROUND, SCENE_ILLUSTRATION, OBJECT_ILLUSTRATION, ANY. |
character_name |
str |
"" |
Character name to filter by (case insensitive) |
tags |
list |
[] |
List of tags to filter by (case insensitive) |
reference_vis_types |
list |
[] |
List of vis_types to filter by. Only return assets that have at least one matching vis_type in their reference list |
tag_match_mode |
str |
"all" |
How to match tags: 'all' (must have all), 'any' (must have at least one), 'none' (must not have any). Choices: all, any, none. |
Select Assets
assets/SelectAssets
Select assets from a list of asset IDs by filtering on vis_type and/or reference_vis_types.
This node is designed to be chained with other SelectAssets nodes to implement priority-based selection.
Modes:
- noop: Once a selection is made, subsequent nodes pass through the previous selection
- prioritize: All nodes contribute, results sorted by priority (earlier selections first)
Example usage (noop mode - fallback):
- SearchAssets (CHARACTER_PORTRAIT, CHARACTER_CARD) -> asset_ids
- SelectAssets (vis_types=CHARACTER_PORTRAIT) -> tries to select portraits first
- SelectAssets (vis_types=CHARACTER_CARD) -> falls back to cards if no portraits
Example usage (prioritize mode - sorting):
- SearchAssets (CHARACTER_PORTRAIT, CHARACTER_CARD) -> asset_ids
- SelectAssets (mode=prioritize, vis_types=CHARACTER_PORTRAIT) -> portraits first
- SelectAssets (vis_types=CHARACTER_CARD) -> cards added after portraits
Inputs
| Input | Type | Description |
|---|---|---|
asset_ids |
list |
list of asset IDs to filter from (only used on first node in chain) |
selection_context |
asset_selection_context |
optional context from previous SelectAssets node |
vis_types |
list |
(optional) list of vis_types to match (asset must match any) |
reference_vis_types |
list |
(optional) list of reference vis_types to match (asset must have any in its reference list) |
Outputs
| Output | Type | Description |
|---|---|---|
asset_ids |
list |
list of selected asset IDs |
asset_count |
int |
number of selected assets |
selection_context |
asset_selection_context |
updated context to pass to next SelectAssets node (includes original_asset_ids) |
selected |
bool |
whether this node made a selection |
Properties
| Property | Type | Default | Description |
|---|---|---|---|
mode |
str |
"noop" |
Selection mode: 'noop' (stop after first match) or 'prioritize' (accumulate and sort by priority). Choices: noop, prioritize. |
vis_types |
list |
[] |
List of vis_types to match (asset must match any) |
reference_vis_types |
list |
[] |
List of reference vis_types to match (asset must have any in its reference list) |
Unpack Asset Meta
assets/UnpackAssetMeta
Unpack an asset metadata object into its properties.
Inputs
| Input | Type | Description |
|---|---|---|
meta |
asset_meta |
the asset metadata object |
Outputs
| Output | Type | Description |
|---|---|---|
meta |
asset_meta |
the asset metadata object (passed through) |
name |
str |
asset name |
vis_type |
any |
visual type |
gen_type |
any |
generation type |
character_name |
str |
character name |
prompt |
str |
prompt text |
negative_prompt |
str |
negative prompt text |
format |
any |
format type |
width |
int |
image width |
height |
int |
image height |
sampler_settings |
any |
sampler settings object |
reference_assets |
list |
list of reference asset IDs |
tags |
list |
list of tags |
analysis |
str |
analysis prompt text |
reference |
list |
list of vis_types that this asset may be used as a reference for |
Unpack Asset Selection Context
assets/UnpackAssetSelectionContext
Unpack an asset selection context into its properties.
Inputs
| Input | Type | Description |
|---|---|---|
selection_context |
asset_selection_context |
the asset selection context object |
Outputs
| Output | Type | Description |
|---|---|---|
selection_context |
asset_selection_context |
the context object (passed through) |
mode |
str |
selection mode ("noop" or "prioritize") |
selected |
bool |
whether any selection has been made |
asset_ids |
list |
list of selected asset IDs |
asset_count |
int |
number of selected assets |
original_asset_ids |
list |
list of original asset IDs passed to first SelectAssets node |
assets |
list |
list of asset objects (only computed if connected) |
first |
asset |
first asset object (only set if asset_ids is not empty) |
last |
asset |
last asset object (only set if asset_ids is not empty) |