mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
feat(voice): add typed AI chat beside voice
Chat sits next to the mic in the command dock. Replies are silent and never request the microphone; the first message connects with the selected provider and runs the same map actions as voice through each provider's text API (OpenAI OPENAI_CHAT_MODEL, Gemini GEMINI_CHAT_MODEL via generateContent, which never starts Live). Only one mode runs at a time. - Chat panel rendered by the voice control presenter: conversation, recent and quick-command suggestions, Up/Down history, attachments (map-layer references or small UTF-8 text files, sent only with the message) - Chat and voice panels sit above the dock or dock into the right rail's column; minimized bars sit centred above the dock, and height animates on swaps - A centred panel steps down to its bar for the Location and Visual Presets trays without moving focus, rests above an open tray, and docks right while expanded over one; it returns to the centre once the trays close - Minimized voice previews the last sentence from each side; the empty Voice Preview suggests things to say - Settings opened from chat keep chat's frame and show the shared AI provider and quick commands; voice Settings show Back to voice - Closing chat ends a typed session; the voice panel's close turns voice off - The dock widens its voice control for the chat button and restyles its wings, which show icons only at 900px and below; assistant panels share the left panels' glass, and Cyber keeps its own surfaces - Server text-chat handlers with body, time and per-IP limits (GEV_RATELIMIT_*_CHAT_PER_MIN), documented in SECURITY.md; tests and all eleven locales Co-authored-by: Darren Dignam <[email protected]>
This commit is contained in:
1 parent
720260af58
commit
af461febae
57 files changed
+6500
-63
No files matched your search
@@ -61,6 +61,12 @@ CESIUM_ION_TOKEN=
|
||||
# ChatGPT/Codex OAuth session; the browser still receives only a short-lived
|
||||
# Realtime client secret. Do not prefix with VITE_.
|
||||
OPENAI_API_KEY=
|
||||
# Typed chat uses Chat Completions, independently of the voice model. It always
|
||||
# bills OPENAI_API_KEY; GEV_PREFER_CODEX_OAUTH below applies to voice only.
|
||||
OPENAI_CHAT_MODEL=gpt-4.1-mini
|
||||
# Typed chat requests (/api/openai/chat) per IP per minute, separate from the
|
||||
# voice throttle; 0 disables it. Not a billing cap.
|
||||
# GEV_RATELIMIT_OPENAI_CHAT_PER_MIN=60 # the default
|
||||
# Optional: forbid API-key voice sessions. Select ChatGPT OAuth in Provider
|
||||
# Settings; missing or expired Codex sign-in then fails closed.
|
||||
# GEV_PREFER_CODEX_OAUTH=true
|
||||
@@ -269,3 +275,8 @@ OVERPASS_UPSTREAMS=
|
||||
# frame-ancestors sources such as "https://example.com", or * for any page.
|
||||
# Unset, no page may frame it. Other pages of the app can never be framed.
|
||||
# GEV_EMBED_FRAME_ANCESTORS=
|
||||
|
||||
# Gemini typed chat uses generateContent; voice continues to use Gemini Live.
|
||||
GEMINI_CHAT_MODEL=gemini-3.5-flash-lite
|
||||
# Typed chat requests (/api/gemini/chat) per IP per minute; 0 disables it.
|
||||
# GEV_RATELIMIT_GEMINI_CHAT_PER_MIN=60 # the default
|
||||
Reference in new issue
Block a user