Le changement majeur : la conversation devient l’objet principal de RoomKit. La voix, le texte, les images et le partage visuel enrichissent le même échange.
Ce que je retiens de ta référence Gemini
L’espace, une invitation simple au centre, le modèle accessible en haut, puis un compositeur unique avec ajout de contexte, dictée et conversation vocale. J’adapte ce principe au bureau, avec un historique latéral et des images qu’on peut examiner à côté du fil.
Référence consultée dans Luge : « Identification de l’écran Gemini Flash sur téléphone », conversation bd171a6b-6fce-44fd-a4c0-bdc86e96b54d. La capture personnelle n’est pas embarquée dans cet artefact.
Les décisions structurantes
- Écrire sans démarrer un appel. L’entrée principale devient le compositeur. Le microphone de dictée remplit le brouillon ; Go Live démarre un échange vocal continu.
- Un fil persistant. Terminer le vocal, reconnecter ou changer de vue conserve messages, images et brouillon. « Nouvelle conversation » devient une action explicite.
- L’image fait partie du message. Aperçu avant envoi, retrait possible, image dans le fil, agrandissement et réponse visuelle. Une capture ponctuelle reste distincte d’un partage continu.
- Le Live accompagne le fil. Un panneau léger rend visibles écoute, réflexion, parole et pause. Le texte reste accessible ; interrompre la réponse et couper le micro sont deux actions distinctes.
- Le contexte se voit. La source partagée est nommée et son arrêt reste à portée. Les détails d’outils sont repliés, les résultats utiles restent dans le fil.
- Les capacités guident les actions. Un modèle sans vision explique l’indisponibilité. Changer de modèle ne jette jamais une image ou un brouillon en silence.
Ce que le prototype permet d’essayer
Les scénarios en haut montrent accueil, texte + image, Live, partage et reconnexion. Le compositeur accepte une image locale, un collage ou un glisser-déposer. Les réponses sont écrites à l’avance ; le micro, la caméra et l’écran sont simulés. Le clair/sombre et la navigation fonctionnent. Les échanges et brouillons de la démonstration restent disponibles tant que cette page est ouverte.
Du socle existant à l’expérience proposée
| Besoin | Vérifié dans le code | Travail UI / orchestration |
|---|
| Texte + image | RoomKit 0.97 : TextContent, MediaContent, CompositeContent ; vision selon le provider. | Compositeur, ingestion locale, messages à plusieurs contenus et rendu des images. |
| Conversation Live | RealtimeVoiceChannel.inject_text() et inject_image(). Le support image dépend du provider. | Relier les entrées au contexte de la session ; afficher les capacités et les erreurs. |
| Caméra / écran | Backends vidéo local et ScreenCaptureBackend présents dans RoomKit ; dépendances spécifiques. | Sélection et permissions système, aperçu, cadence d’images et arrêt explicite. |
| Historique visible | Une mémoire SQLite existe déjà dans une room partagée. La fenêtre reste fixée à 420 px et réinitialise le fil visible à l’arrêt. | Réutiliser SQLite, identifier chaque conversation et restaurer le fil visible indépendamment du cycle audio. |
| Réponse visuelle | Types de contenus média et composants MCP Apps existants. | Rendu unifié des résultats. Génération d’images à raccorder à un provider/outil compatible. |
Un ordre d’intégration vérifiable
01Le nouveau fil
Fenêtre redimensionnable, conversations distinctes sur le stockage existant, saisie de texte et images. D’abord un parcours complet avec Gemini.
02Le Live dans le fil
Session vocale, dictée distincte, interruption, reprise et erreurs. Conserver le contexte entre les modes.
03Regarder ensemble
Caméra, partage d’écran, capacités par configuration et résultats visuels des outils.
Pour chaque lot : captures natives face à cet artefact, clair/sombre et largeur minimale, puis suppression des widgets remplacés. L’ancienne barre d’appel, le grand indicateur audio et le voile bloquant disparaissent lorsque leurs remplaçants sont intégrés.
Audit local : widgets/main_window.py, engine.py, memory.py et sources installées de RoomKit 0.97. Aucun comportement de ce prototype n’est encore raccordé au moteur.