From c77cf64b4e258bda6a9bf6a39dca81248bc5c2d5 Mon Sep 17 00:00:00 2001 From: Pabloader Date: Fri, 29 Nov 2024 21:16:42 +0000 Subject: [PATCH] AIStory: fix scrolls --- src/games/ai-story/components/chat.tsx | 7 ++----- .../ai-story/components/header/connectionEditor.tsx | 6 +++++- src/games/ai-story/components/message/message.tsx | 9 ++------- src/games/ai-story/tools/connection.ts | 9 ++++++++- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/games/ai-story/components/chat.tsx b/src/games/ai-story/components/chat.tsx index aee10c8..6bd3ec7 100644 --- a/src/games/ai-story/components/chat.tsx +++ b/src/games/ai-story/components/chat.tsx @@ -1,4 +1,4 @@ -import { useCallback, useContext, useEffect, useRef } from "preact/hooks"; +import { useContext, useEffect, useRef } from "preact/hooks"; import { StateContext } from "../contexts/state"; import { Message } from "./message/message"; import { MessageTools } from "../tools/messages"; @@ -18,16 +18,13 @@ export const Chat = () => { DOMTools.scrollDown(chatRef.current); }, [messages.length, lastMessageContent]); - const handleScroll = useCallback(() => DOMTools.scrollDown(chatRef.current, false), []); - return (
- {messages.map((m, i, ms) => ( + {messages.map((m, i) => ( ))}
diff --git a/src/games/ai-story/components/header/connectionEditor.tsx b/src/games/ai-story/components/header/connectionEditor.tsx index 81b3592..d69cd2e 100644 --- a/src/games/ai-story/components/header/connectionEditor.tsx +++ b/src/games/ai-story/components/header/connectionEditor.tsx @@ -73,6 +73,10 @@ export const ConnectionEditor = ({ connection, setConnection }: IProps) => { } }, [setConnection, connectionUrl, apiKey, modelName, instruct]); + const handleSetInstruct = useInputCallback((instruct: string) => { + setConnection({...connection, instruct}); + }, [setConnection, connection]); + const handleBlurUrl = useCallback(() => { const regex = /^(?:http(s?):\/\/)?(.*?)\/?$/i; const url = connectionUrl.replace(regex, 'http$1://$2'); @@ -97,7 +101,7 @@ export const ConnectionEditor = ({ connection, setConnection }: IProps) => { - {modelName && modelTemplate && } diff --git a/src/games/ai-story/components/message/message.tsx b/src/games/ai-story/components/message/message.tsx index fee63b7..0ea7615 100644 --- a/src/games/ai-story/components/message/message.tsx +++ b/src/games/ai-story/components/message/message.tsx @@ -12,10 +12,9 @@ interface IProps { index: number; isLastUser: boolean; isLastAssistant: boolean; - onNeedScroll?: () => void; } -export const Message = ({ message, index, isLastUser, isLastAssistant, onNeedScroll }: IProps) => { +export const Message = ({ message, index, isLastUser, isLastAssistant }: IProps) => { const { messages, editMessage, editSummary, deleteMessage, setCurrentSwipe, setMessages, continueMessage } = useContext(StateContext); const [editing, setEditing] = useState(false); const [editedMessage, setEditedMessage] = useInputState(''); @@ -27,14 +26,10 @@ export const Message = ({ message, index, isLastUser, isLastAssistant, onNeedScr const summary = swipe?.summary; const htmlContent = useMemo(() => MessageTools.format(content ?? ''), [content]); - useEffect(() => { - setTimeout(() => onNeedScroll?.(), 50); - }, [editedMessage, editing]); - const handleEnableEdit = useCallback(() => { setEditing(true); setEditedMessage(content ?? ''); - }, [content, onNeedScroll]); + }, [content]); const handleSaveEdit = useCallback(() => { editMessage(index, editedMessage.trim()); diff --git a/src/games/ai-story/tools/connection.ts b/src/games/ai-story/tools/connection.ts index 7b8b571..0e80dc1 100644 --- a/src/games/ai-story/tools/connection.ts +++ b/src/games/ai-story/tools/connection.ts @@ -216,13 +216,20 @@ export namespace Connection { text = await request(); if (text) { + for (const sequence of requestData.params.stop_sequence) { + const stopIdx = text.indexOf(sequence); + if (stopIdx >= 0) { + text = text.slice(0, stopIdx); + } + } + const locaseText = text.toLowerCase(); let unsloppedText = text; for (const ban of bannedTokens) { const slopIdx = locaseText.indexOf(ban.toLowerCase()); if (slopIdx >= 0) { console.log(`[horde] slop '${ban}' detected at ${slopIdx}`); - unsloppedText = unsloppedText.slice(0, slopIdx); + unsloppedText = unsloppedText.slice(0, slopIdx).trimEnd(); } }