From bd6ba4b5a62ff9adc3f461a60c5357bb036f64d5 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosecki Date: Thu, 17 Sep 2026 17:41:22 +0200 Subject: [PATCH 1/3] feat: update Gemini model to 3.8 --- .../packages/backend/src/agent/gemini/session.ts | 8 ++------ deep-sea-stories/packages/backend/src/config.ts | 2 +- deep-sea-stories/packages/backend/src/game/room.ts | 1 - 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/deep-sea-stories/packages/backend/src/agent/gemini/session.ts b/deep-sea-stories/packages/backend/src/agent/gemini/session.ts index 5823d82..33fb701 100644 --- a/deep-sea-stories/packages/backend/src/agent/gemini/session.ts +++ b/deep-sea-stories/packages/backend/src/agent/gemini/session.ts @@ -1,4 +1,5 @@ import { + Behavior, type GoogleGenAI, type LiveConnectParameters, type LiveServerMessage, @@ -98,13 +99,11 @@ export class GeminiSession implements VoiceAgentSession { systemInstruction: getInstructionsForStory(this.config.story), outputAudioTranscription: {}, temperature: 0.5, - thinkingConfig: { - thinkingBudget: -1, - }, tools: [ { functionDeclarations: [ { + behavior: Behavior.BLOCKING, name: 'endGame', description: 'Call this function to end the game session. You MUST call this when: 1) The players have correctly solved the riddle, 2) The game time has expired, 3) You are saying goodbye or ending the conversation. Always call this function after delivering your final message to players.', @@ -112,9 +111,6 @@ export class GeminiSession implements VoiceAgentSession { ], }, ], - proactivity: { - proactiveAudio: true, - }, sessionResumption: { handle: this.previousHandle }, }, callbacks: { diff --git a/deep-sea-stories/packages/backend/src/config.ts b/deep-sea-stories/packages/backend/src/config.ts index 7482781..8976133 100644 --- a/deep-sea-stories/packages/backend/src/config.ts +++ b/deep-sea-stories/packages/backend/src/config.ts @@ -24,7 +24,7 @@ export const configSchema = z.object({ GOOGLE_CLOUD_LOCATION: z.string().optional(), }); -export const GEMINI_MODEL = 'gemini-2.5-flash-native-audio-preview-12-2025'; +export const GEMINI_MODEL = 'gemini-3.8-live'; export const stories: Story[] = JSON.parse( fs.readFileSync(join(__dirname, 'prompts', 'stories.json'), 'utf8'), diff --git a/deep-sea-stories/packages/backend/src/game/room.ts b/deep-sea-stories/packages/backend/src/game/room.ts index c27dd29..dd5c581 100644 --- a/deep-sea-stories/packages/backend/src/game/room.ts +++ b/deep-sea-stories/packages/backend/src/game/room.ts @@ -49,7 +49,6 @@ export class GameRoom { vertexai: CONFIG.GOOGLE_GENAI_USE_VERTEXAI, project: CONFIG.GOOGLE_CLOUD_PROJECT, location: CONFIG.GOOGLE_CLOUD_LOCATION, - httpOptions: { apiVersion: 'v1alpha' }, }); } From 14afe8b1a46911ffad399c240f9e915c28fcbeaf Mon Sep 17 00:00:00 2001 From: Krzysztof Kosecki Date: Fri, 18 Sep 2026 13:02:19 +0200 Subject: [PATCH 2/3] feat: add announcement banner to the home page --- .../web/src/components/AnnouncementBanner.tsx | 24 +++++++++++++++++++ .../packages/web/src/views/HomeView.tsx | 13 ++++++++++ 2 files changed, 37 insertions(+) create mode 100644 deep-sea-stories/packages/web/src/components/AnnouncementBanner.tsx diff --git a/deep-sea-stories/packages/web/src/components/AnnouncementBanner.tsx b/deep-sea-stories/packages/web/src/components/AnnouncementBanner.tsx new file mode 100644 index 0000000..4f57d56 --- /dev/null +++ b/deep-sea-stories/packages/web/src/components/AnnouncementBanner.tsx @@ -0,0 +1,24 @@ +import { X } from 'lucide-react'; +import { type PropsWithChildren, useState } from 'react'; + +export function AnnouncementBanner({ children }: PropsWithChildren) { + const [isVisible, setIsVisible] = useState(true); + + if (!isVisible) return null; + + return ( + + ); +} diff --git a/deep-sea-stories/packages/web/src/views/HomeView.tsx b/deep-sea-stories/packages/web/src/views/HomeView.tsx index a25ea28..e463186 100644 --- a/deep-sea-stories/packages/web/src/views/HomeView.tsx +++ b/deep-sea-stories/packages/web/src/views/HomeView.tsx @@ -1,5 +1,6 @@ import { useState } from 'react'; import { useNavigate } from 'react-router'; +import { AnnouncementBanner } from '@/components/AnnouncementBanner'; import Footer from '@/components/Footer'; import TitleBar from '@/components/TitleBar'; import { Button } from '@/components/ui/button'; @@ -27,6 +28,18 @@ export default function HomeView() { return (
+ + Deep Sea Stories is now powered by{' '} + + Gemini 3.8 Live + + . +
diff --git a/deep-sea-stories/packages/web/src/components/RoomControls.tsx b/deep-sea-stories/packages/web/src/components/RoomControls.tsx index 017c3cb..a1b82b7 100644 --- a/deep-sea-stories/packages/web/src/components/RoomControls.tsx +++ b/deep-sea-stories/packages/web/src/components/RoomControls.tsx @@ -70,13 +70,13 @@ const RoomControls: FC = ({ roomId, userName }) => { }; return ( -
+
{!isStorySelected ? (
-
- - + + toast('Gameroom link copied to clipboard', Check)} value={url} >