You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AVATAR.md
+44-43Lines changed: 44 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
# Dynamic Agent Avatar System
1
+
# Avatar And Character Expression System
2
2
3
-
Internal developer documentation for the OpenRoom / VibeApps avatar and character expression system.
3
+
Maintained developer documentation for OpenRoom / VibeApps avatar rendering, character expression media, and related app avatar usage.
4
4
5
5
> **Note:** There is no single file named `Avatar.tsx` or `avatar.ts`. Avatar rendering is distributed across multiple components and modules. This document maps the complete landscape.
6
6
@@ -44,7 +44,7 @@ The avatar system has two independent tracks:
44
44
│ │ (CharacterMetaInfo) │ │ or vibeContainerMock.ts │ │
- Persist via saveCharacterCollection() → /api/characters + localStorage
422
423
```
423
424
424
-
**Note:** The editor's single input field per emotion populates `emotionImages`. There is no separate UI for `emotion_videos` arrays; the editor treats the input as either an image or a single video URL. To configure multiple videos per emotion, external tooling or manual JSON editing is required.
425
+
**Note:** The editor supports one configured asset per emotion in the UI. Image assets are saved in `emotion_images`; video assets are saved as single-entry arrays in `emotion_videos`. The underlying `emotion_videos: Record<string, string[]>` model still supports multiple videos per emotion, but the editor does not expose multi-video configuration.
|`apps/webuiapps/src/lib/vibeInfo.ts`|`useVibeInfo()` hook wrapping container info queries |
525
+
|`apps/webuiapps/src/lib/vibeContainerMock.ts`| Mock `getUserInfo()` / `getCharacterInfo()` returning no avatars |
526
+
|`apps/webuiapps/src/lib/imageGenTools.ts`|`generate_image` tool — separate from avatars |
527
+
|`apps/webuiapps/src/lib/imageGenClient.ts`| Generic text-to-image API client |
528
+
|`packages/vibe-container/src/types/index.ts`| Real SDK types: `UserInfoResponse.avatarUrl`, `CharacterInfoResponse.avatarUrl`|
529
+
|`apps/webuiapps/src/pages/Twitter/index.tsx`| Twitter `Avatar` component using `avatarUrl`|
530
+
|`apps/webuiapps/src/pages/Chess/index.tsx`| Chess avatar using `characterInfo.avatarUrl`|
530
531
531
532
---
532
533
@@ -549,7 +550,7 @@ These were likely carried over from a different character system (Talkie export
549
550
550
551
## Important Implementation Notes
551
552
552
-
1.**No blob URLs or `URL.createObjectURL`** anywhere in the avatar or image generation codebase. All media is loaded via direct URL strings.
553
+
1.**No blob URLs or `URL.createObjectURL`** anywhere in the avatar or image generation codebase. External media is loaded via direct URL strings; local character uploads are loaded through `/api/session-data?path=...` URLs built by `diskStorage.buildFileUrl()`.
553
554
554
555
2.**Video loop behavior:** Idle/default videos loop (`loop={true}`); emotion videos play once and trigger `onEmotionEnd` when finished.
555
556
@@ -559,6 +560,6 @@ These were likely carried over from a different character system (Talkie export
559
560
560
561
5.**Mock vs Real SDK type mismatch:** Standalone mode mock uses `avatar?: string`; production SDK uses `avatarUrl: string`. Apps should be defensive when reading avatar fields from `useVibeInfo()`.
561
562
562
-
6.**CharacterPanel editor limitation:** The UI only allows one URL per emotion. The underlying data model (`emotion_videos: Record<string, string[]>`) supports arrays, but the editor does not expose multi-video configuration.
563
+
6.**CharacterPanel editor limitation:** The UI only allows one configured asset per emotion. The underlying data model (`emotion_videos: Record<string, string[]>`) supports arrays, but the editor does not expose multi-video configuration.
563
564
564
565
7.**All file operations** for character persistence use the `@/lib` unified file API (`/api/characters`), not direct IndexedDB access.
Copy file name to clipboardExpand all lines: TTS.md
+9-11Lines changed: 9 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,21 @@
1
-
# Text-to-Speech (TTS) Capability Analysis
1
+
# Text-to-Speech (TTS) Integration Notes
2
2
3
3
**Project:** OpenRoom / VibeApps
4
-
**Analysis Date:** 2026-05-12
5
-
**Scope:** Exhaustive codebase audit for TTS, speech synthesis, voice, and audio playback systems
6
-
**Analyst:** Automated codebase scan
4
+
**Scope:** Current TTS, speech synthesis, voice, and audio playback integration points
7
5
8
6
---
9
7
10
-
## Executive Summary
8
+
## Summary
11
9
12
-
**This codebase has ZERO TTS integration.**
10
+
OpenRoom / VibeApps does not currently include a TTS integration.
13
11
14
-
After reading every core file, there is absolutely no TTS, speech synthesis, audio output, or voice integration. The codebase is entirely text-and-image oriented for AI character interaction. All audio-related code is limited to:
12
+
The current AI character interaction flow is text-and-image oriented. Audio-related code is limited to:
15
13
16
14
1. A music player app that streams MP3s via `HTMLAudioElement`
17
15
2. Muted video elements for character avatars and live wallpaper
18
-
3. Generic binary file storage capable of holding arbitrary bytes (currently used only for images)
16
+
3. Generic binary file storage capable of holding arbitrary bytes, used today for generated images and uploaded character assets
19
17
20
-
The codebase is from MiniMax-AI (GitHub org, license, author fields). MiniMax as a company likely offers TTS APIs, but this open-source codebase does NOT integrate them. The MiniMax provider is configured only for text chat via the Anthropic-compatible endpoint.
18
+
MiniMax may offer TTS APIs separately, but this codebase does not integrate them. The MiniMax provider is configured only for text chat via the Anthropic-compatible endpoint.
21
19
22
20
---
23
21
@@ -217,7 +215,7 @@ export async function putBinaryFile(
217
215
}
218
216
```
219
217
220
-
**Current Usage:**Only called from `imageGenTools.ts` to save generated images.
218
+
**Current Usage:**Called from `imageGenTools.ts` to save generated images and from `characterAssetUpload.ts` to save uploaded character images/videos.
221
219
222
220
**Relevance to TTS:** This is the **exact storage mechanism** a TTS system would use to save generated audio files (e.g., `audio/mp3`, `audio/wav`). No code changes needed to the storage layer — it is already capable of persisting arbitrary binary data.
223
221
@@ -549,4 +547,4 @@ The absence of TTS is a deliberate product gap, not a technical limitation. All
549
547
550
548
---
551
549
552
-
*Document generated via exhaustive automated codebase analysis. All negative findings verified by direct file inspection and grep search.*
550
+
These notes should be updated when a TTS provider, character voice metadata, or chat audio playback UI is added.
0 commit comments