From baba106935997ac9caebbb54c80e26696d525584 Mon Sep 17 00:00:00 2001 From: huty Date: Sun, 28 Dec 2025 16:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=87=B3=20v0.10.0=5F2025122?= =?UTF-8?q?8=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ErrorBoundary.tsx | 11 +- releases/HTY1024-APP-SKR-0.10.0_20251228.zip | Bin 0 -> 98569 bytes services/geminiService.ts | 48 ++++++++- views/ChatView.tsx | 104 ++++++++++++------- 4 files changed, 119 insertions(+), 44 deletions(-) create mode 100644 releases/HTY1024-APP-SKR-0.10.0_20251228.zip diff --git a/components/ErrorBoundary.tsx b/components/ErrorBoundary.tsx index 98590f8..0e8c77a 100644 --- a/components/ErrorBoundary.tsx +++ b/components/ErrorBoundary.tsx @@ -11,10 +11,13 @@ interface State { } export class ErrorBoundary extends Component { - public state: State = { - hasError: false, - error: null - }; + constructor(props: Props) { + super(props); + this.state = { + hasError: false, + error: null + }; + } public static getDerivedStateFromError(error: Error): State { return { hasError: true, error }; diff --git a/releases/HTY1024-APP-SKR-0.10.0_20251228.zip b/releases/HTY1024-APP-SKR-0.10.0_20251228.zip new file mode 100644 index 0000000000000000000000000000000000000000..40168dcb69ff0a6f059b120daed53b8b63597905 GIT binary patch literal 98569 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ðUgE{N8#MG%pfv@2G*p2 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 { - const ai = this.getAi(); - + ) { // Ensure model name is clean let modelName = useThinking ? 'gemini-3-pro-preview' @@ -175,6 +172,21 @@ class GeminiService { config.thinkingConfig = { thinkingBudget: 32768 }; } + return { modelName, parts, config }; + } + + // 1. Text Chat Response - Returns { text, model } + async generateTextResponse( + prompt: string, + imageBase64?: string, + useThinking: boolean = false, + language: Language = 'en', + modelOverride?: string, + aiSpeakingLanguage: 'ja' | 'native' = 'native' + ): Promise<{ text: string, model: string }> { + const ai = this.getAi(); + const { modelName, parts, config } = this._getChatConfig(prompt, imageBase64, useThinking, language, modelOverride, aiSpeakingLanguage); + return this.retryOperation(async () => { const response = await ai.models.generateContent({ model: modelName, @@ -188,6 +200,32 @@ class GeminiService { }); } + // 1b. Text Chat Streaming Response + async *generateTextStream( + prompt: string, + imageBase64?: string, + useThinking: boolean = false, + language: Language = 'en', + modelOverride?: string, + aiSpeakingLanguage: 'ja' | 'native' = 'native' + ): AsyncGenerator<{ text: string, model: string }> { + const ai = this.getAi(); + const { modelName, parts, config } = this._getChatConfig(prompt, imageBase64, useThinking, language, modelOverride, aiSpeakingLanguage); + + // Initial stream connection with retry logic + const stream = await this.retryOperation(async () => { + return await ai.models.generateContentStream({ + model: modelName, + contents: { parts }, + config: config + }); + }); + + for await (const chunk of stream) { + yield { text: chunk.text || "", model: modelName }; + } + } + // Internal helper for single TTS chunk private async _generateSpeechChunk(text: string): Promise { const ai = this.getAi(); diff --git a/views/ChatView.tsx b/views/ChatView.tsx index dc5c2c9..a2d13f6 100644 --- a/views/ChatView.tsx +++ b/views/ChatView.tsx @@ -98,13 +98,27 @@ const ChatView: React.FC = ({ // IMPORTANT: Calculate new history locally to avoid stale closure issues after await const messagesWithUser = [...messages, userMsg]; - - // Update UI immediately with user message onUpdateSession(activeSessionId, messagesWithUser); try { - // 2. Get Response - const result = await geminiService.generateTextResponse( + // 2. Prepare AI Message Placeholder + const aiMsgId = (Date.now() + 1).toString(); + const initialAiMsg: ChatMessage = { + id: aiMsgId, + role: Role.MODEL, + type: MessageType.TEXT, + content: "", // Start empty + timestamp: Date.now(), + metadata: { isThinking: useThinking } + }; + + let currentMessages = [...messagesWithUser, initialAiMsg]; + onUpdateSession(activeSessionId, currentMessages); + + // 3. Start Stream + let fullText = ""; + let modelUsed = ""; + const stream = geminiService.generateTextStream( currentText || "Describe this image", currentImage || undefined, useThinking, @@ -113,25 +127,26 @@ const ChatView: React.FC = ({ aiSpeakingLanguage ); - // 3. TTS (if short and not thinking) - let ttsAudio: string | null = null; - if (!useThinking && result.text.length < 300) { - try { ttsAudio = await geminiService.generateSpeech(result.text); } catch (e) {} + for await (const chunk of stream) { + fullText += chunk.text; + modelUsed = chunk.model; + + // Update the last message (AI message) content + const updatedAiMsg = { ...initialAiMsg, content: fullText, model: modelUsed }; + currentMessages = [...messagesWithUser, updatedAiMsg]; + onUpdateSession(activeSessionId, currentMessages); } - const aiMsg: ChatMessage = { - id: (Date.now() + 1).toString(), - role: Role.MODEL, - type: MessageType.TEXT, - content: result.text, - model: result.model, - timestamp: Date.now(), - metadata: { isThinking: useThinking, audioUrl: ttsAudio || undefined } - }; - - // 4. Add AI Message to the LOCALLY calculated history (messagesWithUser) - // This ensures we don't lose the user message we just added - onUpdateSession(activeSessionId, [...messagesWithUser, aiMsg]); + // 4. TTS (if short and not thinking) + if (!useThinking && fullText.length < 300) { + try { + const ttsAudio = await geminiService.generateSpeech(fullText); + if (ttsAudio) { + const finalAiMsg = { ...initialAiMsg, content: fullText, model: modelUsed, metadata: { ...initialAiMsg.metadata, audioUrl: ttsAudio } }; + onUpdateSession(activeSessionId, [...messagesWithUser, finalAiMsg]); + } + } catch (e) {} + } } catch (error: any) { const errorMsg = error?.message || t.error; @@ -168,22 +183,41 @@ const ChatView: React.FC = ({ const messagesWithUser = [...messages, userMsg]; onUpdateSession(activeSessionId, messagesWithUser); - // 3. Generate AI Response - const result = await geminiService.generateTextResponse(transcription, undefined, false, language, selectedModel, aiSpeakingLanguage); - const ttsAudio = await geminiService.generateSpeech(result.text); - - const aiMsg: ChatMessage = { - id: (Date.now() + 1).toString(), + // 3. Prepare AI Message Placeholder + const aiMsgId = (Date.now() + 1).toString(); + const initialAiMsg: ChatMessage = { + id: aiMsgId, role: Role.MODEL, type: MessageType.TEXT, - content: result.text, - model: result.model, + content: "", timestamp: Date.now(), - metadata: { audioUrl: ttsAudio || undefined } }; + + let currentMessages = [...messagesWithUser, initialAiMsg]; + onUpdateSession(activeSessionId, currentMessages); - // 4. Update UI with AI Message using local history - onUpdateSession(activeSessionId, [...messagesWithUser, aiMsg]); + // 4. Stream Response + let fullText = ""; + let modelUsed = ""; + const stream = geminiService.generateTextStream(transcription, undefined, false, language, selectedModel, aiSpeakingLanguage); + + for await (const chunk of stream) { + fullText += chunk.text; + modelUsed = chunk.model; + + const updatedAiMsg = { ...initialAiMsg, content: fullText, model: modelUsed }; + currentMessages = [...messagesWithUser, updatedAiMsg]; + onUpdateSession(activeSessionId, currentMessages); + } + + // 5. Generate TTS + try { + const ttsAudio = await geminiService.generateSpeech(fullText); + if (ttsAudio) { + const finalAiMsg = { ...initialAiMsg, content: fullText, model: modelUsed, metadata: { audioUrl: ttsAudio } }; + onUpdateSession(activeSessionId, [...messagesWithUser, finalAiMsg]); + } + } catch(e) {} } catch (e) { console.error(e); @@ -438,7 +472,7 @@ const ChatView: React.FC = ({ onError={(errorMsg) => addToast('error', errorMsg)} /> ))} - {isLoading && ( + {isLoading && !messages[messages.length - 1]?.content && (
@@ -496,7 +530,7 @@ const ChatView: React.FC = ({ disabled={!inputValue.trim() && !attachedImage || isLoading} className="sm:hidden p-3 bg-indigo-600 hover:bg-indigo-700 text-white rounded-xl disabled:opacity-50 disabled:scale-95 transition-all shadow-md shadow-indigo-200" > - {isLoading ? : } + {isLoading && messages[messages.length - 1]?.content ? : isLoading ? : }
@@ -516,7 +550,7 @@ const ChatView: React.FC = ({ disabled={!inputValue.trim() && !attachedImage || isLoading} className="hidden sm:flex p-3.5 bg-indigo-600 hover:bg-indigo-700 text-white rounded-xl disabled:opacity-50 transition-all shadow-lg shadow-indigo-200 hover:scale-105 active:scale-95" > - {isLoading ? : } + {isLoading && messages[messages.length - 1]?.content ? : isLoading ? : }