fixed advanced introduce dialog behavior and removed unnecessary scene snapshot logic in websocket handler.

This commit is contained in:
vegu-ai-tools
2026-04-05 23:02:49 +03:00
parent 4316cfe9c6
commit b53c8eaaf0
3 changed files with 3 additions and 6 deletions

View File

@@ -23,6 +23,7 @@
- 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."
- "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."

View File

@@ -139,10 +139,6 @@ class DirectorWebsocketHandler(DirectorChatWebsocketMixin, Plugin):
async def handle_persist_character(self, data: dict):
payload = PersistCharacterPayload(**data)
scene: "Scene" = self.scene
if not payload.content:
payload.content = scene.snapshot(lines=15)
# add as asyncio task
task = asyncio.create_task(

View File

@@ -97,9 +97,9 @@
<v-checkbox v-model="newIntroduction.narrate_entry" label="Narrate entry" color="primary" hint="Narrate the character's entry into the scene."></v-checkbox>
</v-col>
</v-row>
<v-row v-if="!newIntroduction.name">
<v-row>
<v-col cols="12">
<v-textarea v-model="newIntroduction.content" label="Instructions for the new character. If you have a name in mind, mention it here." rows="4" auto-grow hide-details></v-textarea>
<v-textarea v-model="newIntroduction.content" :label="newIntroduction.name ? 'Instructions for the new character.' : 'Instructions for the new character. If you have a name in mind, mention it here.'" rows="4" auto-grow hide-details></v-textarea>
</v-col>
</v-row>
<v-row v-if="newIntroduction.narrate_entry && newIntroduction.active">