Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Aide
Ce que Gilbert a appris récemment, version après version.
Dernière mise à jour : 22 juillet 2026
Ajouté. En mode « Choisir » du menu « Connecteurs » de la conversation, chaque serveur en OAuth par membre affiche désormais votre statut de connexion perso (« Connecté » ou « Pas connecté ») à la place de son identifiant technique. « Pas connecté » est un lien direct vers la page de connexion (ouverte dans un nouvel onglet, pour ne pas perdre la conversation en cours).
Corrigé (revue avant mise en production).Une revue adversariale a trouvé et corrigé, avant déploiement : le statut ne se rafraîchissait jamais après un clic sur « Pas connecté » suivi d'un retour sur l'onglet d'origine sans refermer le menu ; deux connecteurs affichés sous le même nom (le nom n'est pas unique en base, seul l'identifiant technique l'est) redevenaient indistinguables pour un lecteur d'écran.
Ajouté. Cette page était en retard sur Custom Tools (MCP) (authentification OAuth par membre, connecteurs choisis par conversation), Bridge MCP (« Changer de compte » sur l'écran de consentement), la marque blanche (l'assistant reconnaît maintenant son propre nom) et Forward-to-Gilbert (rotation de l'adresse quand vous renommez l'assistant). Elle a aussi retrouvé 21 versions manquantes juste en dessous.
Corrigé.La recherche Cmd-K pouvait faire remonter cette page de changelog au-dessus de la page de référence pour une recherche générique, simplement parce qu'elle grossit d'une entrée à chaque version et finit par mentionner presque tous les mots plus souvent que n'importe quelle autre page. Le classement tient désormais compte de la taille de la page, pas seulement du nombre de mentions.
Corrigé.La rédaction automatique de brouillons de réponse (Daily Draft) supprimait parfois, sans aucun signal visible, le brouillon Gmail qu'elle venait tout juste d'écrire : elle confondait sa propre écriture avec un nouveau message arrivé sur le fil. Certains mails classés « réponse rapide possible » ne recevaient donc jamais de brouillon. Sur un lot de mails observé en production, environ quatre brouillons sur dix disparaissaient ainsi silencieusement.
Corrigé (revue avant mise en production).Une revue approfondie, menée avant la mise en production de ce correctif, a trouvé et corrigé un effet de bord : Daily Draft pouvait écrire un second brouillon par-dessus une réponse que vous aviez déjà commencé à rédiger vous-même sur le même fil. Un garde-fou vérifie désormais qu'aucun brouillon n'existe déjà avant d'en écrire un, y compris dans la courte fenêtre entre la détection et l'écriture.
Corrigé.Sur un moniteur grand format à densité d'affichage normale (par exemple un écran externe QHD ou 4K réglé à 100 % côté système), tout le texte de l'application s'affichait minuscule, ce qui obligeait à zoomer le navigateur manuellement à 125 % pour lire confortablement. Le site zoome désormais automatiquement au-delà de 2048 pixels de largeur sur ce type d'écran (les moniteurs déjà mis à l'échelle par le système restent inchangés, pour ne jamais empiler deux zooms). L'embed en iframe (marque blanche) n'est jamais affecté, quelle que soit la largeur de la page qui l'héberge.
Corrigé (effet de bord du zoom).Trouvé et corrigé avant mise en production : ce zoom automatique désalignait certains éléments positionnés dynamiquement en JavaScript. Le menu d'une conversation s'affichait détaché de son bouton, et la position de l'avatar flottant dérivait pendant le défilement du chat. Les deux sont recalés.
Ajouté. Quand une conversation a explicitement limité ses connecteurs MCP et que votre message a manifestement besoin d'un connecteur exclu mais toujours actif au niveau du workspace, un chip apparaît directement dans le fil pour proposer de le réactiver en un clic, sans rouvrir le menu des connecteurs. Un refus explicite (« Ignorer ») est mémorisé : ce connecteur n'est plus jamais reproposé dans cette conversation.
Corrigé.Activer une suggestion pendant qu'un autre onglet avait entre-temps remis la sélection de connecteurs sur « tous inclus » pouvait désactiver silencieusement tous les autres connecteurs de la conversation, au lieu de simplement confirmer que celui-là était déjà actif. La détection de suggestion ne se déclenche plus non plus sur un simple « ok » ou « annule » qui confirme une action déjà proposée.
Ajouté.Gilbert peut désormais s'authentifier comme client OAuth auprès de serveurs MCP externes qui exigent un consentement par personne (type Notion, Linear, Google Drive), en plus des connecteurs déjà pris en charge (sans authentification, ou par clé partagée). Chaque membre connecte son propre compte : les identifiants restent strictement personnels, jamais partagés au niveau du workspace, et chacun ne voit que les outils que sa propre connexion autorise. Une nouvelle interface Console permet à un admin comme à un membre de connecter ou déconnecter un serveur de ce type et de suivre l'état de sa propre connexion. Détail sur Custom Tools (MCP).
Ajouté (découverte).Un signal « des collègues utilisent déjà ce connecteur » s'affiche, avec un seuil minimal de 3 personnes avant tout affichage : en dessous, rien n'est montré, pour ne jamais laisser deviner l'identité d'un collègue à partir d'un compte trop précis.
Sécurité.Un audit indépendant mené avant la mise en production a trouvé et corrigé plusieurs failles sur ce nouveau flow OAuth : un contournement possible de la vérification de fraîcheur de configuration, un vecteur de vol de secret entre deux workspaces différents via usurpation d'émetteur OAuth, une CSRF de connexion qui aurait pu lier les accès d'une victime de phishing au compte Gilbert d'un attaquant, une course entre déconnexion et renouvellement de token pouvant ressusciter silencieusement une connexion désactivée, et une fuite de comptage dans le signal « collègues » qui pouvait inclure d'anciens membres du workspace.
Corrigé.L'interrupteur global de la nouvelle version du routage des réponses n'était en réalité jamais activé en production : chaque workspace retombait sur l'ancien chemin, qui se contente d'étiqueter un mail « à répondre » sans jamais rédiger de brouillon dès que la réponse demande un jugement ou une source externe. Corrigé en production.
Corrigé.Un thread déjà étiqueté « à répondre » restait par ailleurs bloqué indéfiniment, y compris après l'activation du nouveau routage, car le mécanisme de rattrapage prévu pour lui l'excluait par construction. Contournement ponctuel appliqué pour le compte concerné ; un correctif de fond reste à venir.
Ajouté. Un seul mécanisme de notification, notify_canal, remplace désormais l'ancien outil dédié à Telegram (notify_telegram) : il choisit automatiquement votre canal connecté préféré (Telegram si vous l'avez apparié, sinon votre email vérifié), que la demande vienne du chat, d'une routine planifiée ou d'un client MCP externe (Claude Code, ChatGPT…). Une notification qui échoue sur Telegram bascule désormais automatiquement vers votre email au lieu d'échouer purement et simplement.
Corrigé.Une routine planifiée (ou le traitement d'un mail transféré) ne peut plus router une notification vers un canal partagé du workspace sans confirmation humaine : seul un vrai tour de chat interactif conserve cette capacité. La réponse indique aussi clairement quand une demande de routage vers un canal partagé n'a pas pu aboutir, au lieu d'annoncer un succès trompeur.
Compatibilité. L'ancien nom notify_telegram reste temporairement utilisable en MCP pour les intégrations déjà configurées ; il sera retiré dans une prochaine version.
Corrigé.Changer de workspace via le sélecteur restait affiché sur la conversation de l'ANCIEN workspace, alors que le serveur renvoyait déjà la bonne conversation du nouveau workspace. Le composant du chat ne se réinitialisait pas correctement au changement de workspace côté navigateur : son état interne (conversation active, messages) restait figé sur les valeurs de la toute première visite de la page. Corrigé.
Corrigé.Sur un workspace marque blanche (par exemple rebrandé « Maia »), demander à l'assistant de « te configurer » ou de se présenter par son propre nom pouvait le faire traiter ce nom comme une entité externe à chercher dans les mails ou l'agenda, au lieu de se reconnaître lui-même. Le chat web, Telegram et l'email entrant reconnaissent désormais tous leur propre nom de marque blanche, les quatre points d'entrée partageant le même moteur de conversation.
Corrigé.Un membre de plusieurs workspaces pouvait voir, dans le chat d'un workspace, la liste et le contenu des conversations (historique, renommage, suppression, résumé) d'un AUTRE workspace, ainsi que ses résumés de mémoire personnelle. Un cookie de session partagé entre onglets, non revérifié par workspace, pouvait pointer vers le mauvais dossier. La liste des conversations et l'historique des messages sont désormais systématiquement vérifiés contre le workspace réellement affiché à l'écran, avec un refus d'accès si vous n'en êtes pas membre.
Corrigé (effet de bord).Ce correctif ne doit plus écraser silencieusement le cookie partagé entre onglets à chaque simple consultation, ce qui aurait pu faire basculer d'autres fonctionnalités (aperçu de livrable, connexion GitHub) sur le mauvais workspace après un changement d'onglet.
Corrigé (suivi de consommation).Le suivi de consommation IA par workspace attribuait aussi parfois, à tort, les appels d'extraction de mémoire personnelle au fournisseur central Anthropic, même pour un workspace configuré exclusivement sur un autre fournisseur (Google, OpenAI). L'appel réel partait bien vers le bon fournisseur : seul le tableau de bord de consommation affichait la mauvaise attribution.
Corrigé.Le menu « ⋮ » d'une conversation utilise désormais la même fenêtre de confirmation que la majorité des suppressions ailleurs dans l'app, au lieu d'un prompt codé à part avec ses propres couleurs. Même agencement de suppression, mais avec Échap et clic en dehors pour annuler, un focus clavier posé sur « Annuler » à l'ouverture, et un affichage plein écran sur mobile. Fermer la confirmation sans supprimer replace désormais correctement le focus clavier ou lecteur d'écran sur le titre de la conversation.
Changé.Ajustement interne de l'outillage de tests automatisés pour éviter une surcharge machine quand plusieurs vérifications tournent en parallèle sur la même machine de développement. Aucun changement visible côté produit.
Ajouté.L'écran d'autorisation d'un connecteur MCP externe (Claude Code, ChatGPT, Cursor…) propose désormais des cases à cocher, au lieu d'un choix unique, pour sélectionner un ou plusieurs workspaces au moment d'autoriser la connexion. Cette sélection est une vraie limite appliquée côté serveur : un accès limité à certains workspaces ne peut jamais atteindre un autre workspace dont vous êtes membre, même par un accès direct à son identifiant. Ce périmètre ne s'élargit jamais tout seul ; il ne peut être étendu qu'en ré-autorisant le connecteur. Voir Permissions et allowlist.
Corrigé.Plusieurs angles morts où ce périmètre n'était pas encore appliqué sont fermés : la liste des routines, la création d'un connecteur admin, le lancement direct d'une routine par identifiant, l'énumération des workspaces dès la connexion du client MCP, et les outils de lecture de dépôt GitHub pouvaient encore révéler ou atteindre un workspace hors du périmètre choisi. Décocher toutes les cases à l'autorisation (une action désormais possible) est rejeté avec une erreur explicite au lieu d'accorder silencieusement un accès non restreint, et un workspace tout juste créé est exclu d'un connecteur dont le périmètre est déjà restreint, puisqu'il n'a par construction pas pu être coché avant sa création.
Corrigé.Gmail et l'Agenda renouvellent désormais automatiquement un accès rejeté par Google avant son échéance prévue, puis rejouent la requête une seule fois : plus besoin de reconnecter manuellement l'intégration pour retrouver ses mails ou son agenda. Plusieurs requêtes simultanées ne peuvent plus se marcher dessus et échanger ou révoquer le mauvais accès entre deux instances du serveur. Un renouvellement lent ne peut plus non plus écraser une déconnexion ou reconnexion Google plus récente : les pannes réseau ou erreurs temporaires de Google libèrent la connexion sans vous déconnecter, seul un refus permanent de Google révoque réellement l'intégration.
Corrigé.Ouvrir le chat pour la première fois sur un workspace depuis deux onglets en même temps (ou en rechargeant vite deux fois) pouvait créer deux dossiers en double pour vous sur ce workspace, à quelques millisecondes d'écart. La création du dossier passe désormais par une opération unique et verrouillée côté base de données, avec une contrainte qui garantit qu'un seul dossier actif existe par personne et par workspace. Les doublons déjà existants ont été nettoyés sans perte de données.
Corrigé.Le bouton « Connecteurs » du composer disparaissait silencieusement dès qu'un workspace n'avait encore aucun connecteur MCP configuré, rendant la fonctionnalité invisible. Il affiche désormais un lien vers la page de configuration des connecteurs du workspace, pour en lier un premier directement depuis le chat. Ce même bouton pouvait aussi afficher brièvement les connecteurs de l'ancien workspace lors d'un changement de workspace sans rechargement complet ; il se réinitialise désormais immédiatement.
Corrigé.L'annulation d'une routine atteint désormais réellement les requêtes Gmail, Agenda, MCP, web et GitHub en cours, au lieu de seulement abandonner la promesse côté modèle. Un job planifié dont le temps alloué expire après avoir réservé son créneau restaure correctement son prochain passage, sans rester coincé « en cours » pour toujours.
Corrigé (accessibilité).Les fenêtres tiroir (drawer), de création de routine et de confirmation piègent désormais correctement le focus clavier, gèrent Échap uniquement quand elles sont au premier plan, bloquent le défilement de la page en arrière-plan, et rendent le focus à l'endroit d'où elles ont été ouvertes.
Corrigé (interne).Un durcissement du découpage entre code serveur et code navigateur évite qu'une bibliothèque de chiffrement réservée au serveur se retrouve embarquée par erreur dans le bundle envoyé au navigateur.
Corrigé.L'avatar flottant de l'assistant s'affichait légèrement plus bas que la bulle à trois points « en train d'écrire », pendant l'attente du premier mot de la réponse. Les deux éléments sont désormais parfaitement alignés.
Ajouté.L'écran de consentement d'un connecteur MCP (OAuth 2.1 PKCE) propose désormais un bouton « Changer de compte », et pour les clients publics comme Claude ou ChatGPT, un vrai sélecteur de workspace au lieu d'une résolution automatique du « workspace actif ». Le workspace choisi est revérifié par appartenance au moment de la validation, ce qui garantit que le workspace affiché à l'écran est bien celui réellement lié à l'accès accordé. Les connecteurs déjà liés à un seul workspace (Gemini Enterprise) ne sont pas concernés : ils gardent leur propre workspace, sans sélecteur affiché.
Corrigé.Trouvé par une revue avant mise en production : le sélecteur de workspace ne se soumettait en réalité jamais dans un vrai navigateur à cause d'un problème de structure du formulaire, ce qui le rendait purement décoratif ; chaque autorisation retombait silencieusement sur l'ancienne résolution automatique. Le bouton « Refuser » pouvait aussi rester bloqué si aucun workspace n'était présélectionné ; il fonctionne désormais dans tous les cas. « Changer de compte » vide désormais aussi le cache local avant la déconnexion, pour qu'un compte qui se connecte ensuite dans le même onglet ne voie jamais les workspaces de la personne précédente.
Corrigé.Les chips de suggestion de l'écran vide (« Qu'est-ce que tu sais faire ? », etc.) sont désormais centrés sous le message d'accueil au lieu d'être alignés à gauche. Le texte d'exemple du composer (« Envoie un message à... ») est centré verticalement au lieu de rester collé en haut du champ. Le menu « ⋮ » d'une conversation (Résumer/Supprimer) laissait apparaître par transparence le texte des lignes voisines ; il s'affiche désormais dans une couche dédiée, hors de la liste défilante, et reste correctement synchronisé et navigable au clavier si la liste se rafraîchit pendant qu'il est ouvert.
Ajouté.Chaque conversation du chat peut désormais restreindre quels connecteurs MCP externes du workspace elle expose à l'assistant, via un menu « Connecteurs » dans le composer (bascule « Tous » / « Choisir »). Par défaut, une conversation expose tous les connecteurs du workspace ; une sélection vide n'en expose aucun ; une sélection explicite s'y limite. Détail sur Custom Tools (MCP).
Corrigé.Une action MCP en attente de confirmation, validée après que vous ayez restreint la sélection de connecteurs de la conversation, pouvait encore s'exécuter contre un connecteur qui n'était plus dans le périmètre choisi. La revérification au moment de la confirmation regarde désormais la sélection actuelle de la conversation, pas seulement le workspace.
Corrigé.Le bouton « compact » de la barre latérale déclenchait un résumé de conversation (donc un appel au modèle) sur un simple mauvais clic, sans aucune confirmation. Un menu « ⋮ » propose désormais « Résumer » ou « Supprimer », chacun derrière une fenêtre de confirmation ; la suppression est aussi accessible directement depuis la liste des conversations, plus seulement depuis la conversation ouverte. Le chip de suggestion par défaut (« Aide-moi à configurer Gilbert ») affichait le nom de marque générique au lieu du nom réel de l'assistant sur un workspace marque blanche. Les boutons joindre/envoyer du composer étaient mal alignés verticalement contre le champ de texte plus haut ; ils sont désormais centrés.
Corrigé.La routine « Réponses du matin » examine de nouveau tous les threads Gmail récents éligibles, indépendamment des règles et libellés de tri. Un mail déjà rangé n'est donc plus retiré par erreur du pipeline de réponse. Quand le mail ou son thread suffit, Gilbert crée automatiquement un brouillon dans Gmail ; les cas qui exigent votre jugement restent marqués « À répondre ».
Changé. Le routage distingue maintenant quatre cas : aucune réponse attendue, décision humaine, réponse possible depuis le thread seul, ou recherche externe nécessaire. Le mode Deep est réservé à cette dernière catégorie : Drive, Airtable, CRM ou autre source MCP autorisée. Le détail est décrit dans la documentation des routines.
Sécurité.Une recherche Deep respecte la sélection de serveurs de la routine et n'expose que les tools explicitement autorisés par un admin, déclarés en lecture seule et non destructifs. Les désactivations personnelles restent prioritaires ; les retries ne rejouent pas un appel MCP ni un libellé Gmail déjà appliqué. Voir les permissions des Custom Tools.
Changé.L'adresse de forward-to-Gilbert d'un workspace reflète désormais le nom que le workspace donne à Gilbert plutôt qu'un préfixe gilbert- figé pour tout le monde (par exemple maia-<slug>@solveholding.com pour un workspace rebrandé « Maia »), y compris pour les workspaces qui n'ont jamais personnalisé ce nom, qui basculent sur le préfixe par défaut de la plateforme au lieu de l'ancien. Rien n'est supprimé : l'ancienne adresse continue de fonctionner, la nouvelle apparaît automatiquement à la prochaine visite d'un admin sur la page Forward-to-Gilbert.
Corrigé.Le webhook email entrant rejetait silencieusement tout mail transféré vers une adresse marque blanche avant même d'interroger la base : la fonctionnalité était non opérationnelle en production jusqu'à ce correctif. Un risque de collision entre deux workspaces qui auraient pu calculer la même adresse (séparateur ambigu entre le préfixe et le slug) est aussi fermé par un séparateur -- non-ambigu.
Ajouté (personnalisation visuelle). À la création, choisissez la palette de couleurs et le logo de votre espace de travail (/docs/white-label), avec génération d'un logo animé assorti à la marque.
Ajouté (identité MCP).Un client MCP externe (Claude, Cursor, ChatGPT…) voit désormais le nom de votre assistant dans le handshake de connexion plutôt qu'un nom générique, quand votre espace a une identité distincte.
Ajouté (comptes multi-espaces). Les tools Gmail, Agenda, Slack et Telegram acceptent désormais un espace explicite, pour les comptes qui en gèrent plusieurs.
Sécurité (identité MCP).Une fuite cross-tenant dans le handshake MCP, trouvée en review avant mise en production et jamais exploitée, est fermée : la liste des espaces accessibles n'est plus renvoyée à une connexion qui n'a pas les droits nécessaires pour la voir.
Amélioré (rédaction de brouillons).Avant de confirmer une date, une heure ou un lieu de rendez-vous par écrit, la rédaction automatique de brouillons vérifie désormais votre agenda réel plutôt que de se fier au seul texte d'un mail plus ancien qui a pu changer entretemps.
Sécurité (rédaction de brouillons).Trouvé en review avant mise en production et jamais exploité : le worker de rédaction automatique, qui tourne sans relecture humaine, avait accès à un outil de récupération d'URL externe qui n'était jamais requis pour son fonctionnement. Retiré entièrement.
Ajouté (catégories & packs).Le catalogue de routines d'un workspace se range en catégories (Gmail, Veille, Agenda, Espace de travail, Code…). Sur Console → Routines, les routines s'affichent groupées, avec un filtre latéral et une section « Non classées ». Un admin gère les catégories (créer, renommer, réordonner, marquer « Recommandé »). Sur une catégorie recommandée, Adopter ce packvous abonne à toutes ses routines en une action ; l'opération est idempotente : une routine déjà suivie est ignorée, jamais dupliquée. Détail sur /docs/routines. Côté MCP, le tool adopt_category fait de même, et list_workspace_routines expose la catégorie de chaque routine.
Ajouté (lancer pour tous / pour moi). « Run now » sur une routine partagée demande désormais un choix, pour éviter une diffusion involontaire : Lancer pour tous diffuse le résultat à tout le workspace, Pour moi uniquement l'exécute et vous en réserve le résultat, sans notifier les autres membres. Le tool MCP run_routine gagne le même paramètre scope.
Sécurité (routines).Une garde anti-exfiltration encadre les routines : dès qu'un run a lu une donnée sensible (Gmail, agenda, repo privé), les sorties vers le web et les serveurs MCP externes sont bloquées, pour qu'un prompt injecté ne puisse pas faire fuiter ces données par un canal de sortie.
Corrigé (PDF en production). La livraison de documents par une routine (tool deliver_artifact, sorties html / docx / pdf) rend désormais le PDF de façon fiable en production. Les messages qui accompagnent un document livré sur un canal sont plus clairs et actionnables. Voir la table des outils sur Bridge MCP.
Ajouté (préversion, déployé par workspace). Après le tri des mails Gmail, le résidu (ce qui reste après classement) peut être routé automatiquement : ce qui demande votre attention d'un côté, ce qui alimente une routine de l'autre, avec un brouillon rédigé en profondeur quand c'est pertinent. La capacité s'active workspace par workspace ; elle n'est jamais déclenchée automatiquement sur un compte sans mise en place préalable.
Ajouté (canaux de notification). Nouvelle page Canaux de notification : où Gilbert vous joint (Telegram, email, WhatsApp, Slack, webhook signé), l'ordre de priorité, la vérification d'un email par code, les heures calmes, et comment une routine cible un canal.
Ajouté (navigation console). La page Console documente enfin le switcher de workspace, l'accès rapide aux outils, le tableau de bord ciblé sur le dernier workspace et la vue lecture seule des membres.
Corrigé (doc à jour).Quelques passages périmés remis d'équerre : la récupération d'une confirmation MCP not_found (ré-invoquer le tool, plus recall_actions), l'étape 3 du wizard Premiers pas (les deux apprentissages, style et tri), et la marque blanche de l'API headless.
Changé (performance).La page de chat se charge plusieurs fois plus vite : les lectures nécessaires au premier rendu (conversation, intégrations, routines, briefing, agenda) partent désormais en parallèle au lieu de s'enchaîner. La console profite du même traitement.
Changé (connexion).Après connexion sans destination précise, vous arrivez sur la console (vue d'ensemble) : repères immédiats, chargement instantané. Le chat reste à un clic.
Changé.Les trois niveaux d'intelligence côté Google passent sur des identifiants Gemini à jour (fast, smart, premium). Déclencheur : la surveillance des modèles a détecté que gemini-2.5-pro n'était plus disponible pour les nouveaux comptes. Les trois remplaçants ont été vérifiés (listing plus probe réel) avant la bascule. Aucune action de votre côté.
Ajouté (mode sombre).Toute l'interface passe en sombre d'un clic : landing, chat, docs, console et admin. Le toggle lune/soleil vit dans la barre de navigation, le choix est mémorisé par navigateur et le défaut suit la préférence système, sans flash au chargement.
Note (embed).L'embed iframe reste volontairement en clair : le thème d'un site hôte appartient au site hôte.
Ajouté (récap pour les membres).Un membre non-admin voit désormais la description, le nom d'assistant et les liens contextuels du workspace en lecture seule sur la Vue d'ensemble, dans une section « À propos du workspace ». Avant, ces réglages étaient simplement invisibles pour lui.
Changé (textes selon le rôle).Le sous-titre de la section Modèles d'IA et les bannières de fallback s'adressent correctement aux membres : renvoi vers un admin du workspace au lieu d'instructions qu'ils ne peuvent pas suivre. Les actions (clés, invitations, rôles, suppression) restent réservées aux admins, côté interface comme côté serveur.
Changé (boutons d'action).Les boutons remplis de la console (Ajouter une clé LLM, réglages du workspace, démarrer un live) adoptent le noir des autres actions principales. Le vert foncé isolé qui subsistait sur ces boutons disparaît de l'interface. Les confirmations de succès (heures calmes, clé LLM validée) s'affichent en pastille sur fond violet léger, comme les autres statuts, et les liens de la page Intégrations des docs passent au violet, la couleur de lien du reste de la documentation.
Ajouté (accès rapide sur le tableau de bord).La grille d'outils de la Vue d'ensemble workspace arrive sur le tableau de bord de la console, ciblée sur le dernier workspace que vous avez consulté (et sinon un workspace où vous êtes admin, sinon le premier). Routines, Canaux, Assistant email, Intégrations et les autres outils sont à un clic de la page d'arrivée. Les outils réservés aux admins (Agents, Live, Suivi béta) y sont regroupés sous « Seulement pour les administrateurs », visibles des seuls admins du workspace ciblé.
Changé (déconnexion). La déconnexion oublie le dernier workspace consulté : sur un navigateur partagé, le compte suivant repart de zéro.
Ajouté (serveurs MCP liés par routine). Chaque routine choisit désormais quels serveurs MCP du workspace elle utilise : tous (défaut, y compris ceux connectés plus tard), aucun, ou une sélection explicite. Le picker apparaît dans le wizard de création et la page d'édition dès que le workspace a au moins un serveur connecté. Les routines partagées restent sans outils MCP, comme avant.
Ajouté (niveau d'intelligence). Le tier du modèle (rapide, équilibré, maximal) se choisit à la création et se modifie après coup dans la console. Côté MCP, le tool create_routine accepte model_tier et mcp_server_slugs, et list_workspace_routines expose le tier de chaque routine.
Changé (wizard de création).Le formulaire demande un nom lisible : fini le slug technique qui servait de nom de routine jusque dans l'objet des emails.
Ajouté (switcher de workspace).Le header de la console affiche désormais le workspace actif, partout, avec un menu pour changer d'espace en un clic. Le switch conserve l'outil ouvert : les Routines d'un workspace mènent aux Routines de l'autre. La Vue d'ensemble de chaque workspace ouvre sur une grille d'accès rapide vers ses outils (Routines, Canaux, Assistant email, Intégrations et les autres), chacun à un clic de la page d'arrivée.
Changé (pages admin).Agents, Live et Suivi béta sont réservés aux admins du workspace : masqués de la navigation pour les membres et protégés côté serveur. Le header en contexte connecté se concentre sur l'essentiel : tableau de bord, Chat, Docs et menu compte.
Corrigé (navigation). Focus clavier visible sur toute la navigation, cibles tactiles agrandies sur mobile, le menu mobile affiche le nom de la page courante, et la liste des workspaces est purgée à la déconnexion.
Ajouté (tri des mails).La carte « Former mon Gilbert » a désormais deux onglets : Brouillons (apprendre votre style pour drafter) et Tri des mails (apprendre votre classement pour ranger la boîte). L'onglet Tri observe quel expéditeur va sous quel libellé Gmail, en tire des règles fiables calculées en code (expéditeur ou domaine → libellé, sans consommer de tokens), et le modèle ne sert qu'à nommer les patterns restants.
Comment ça marche.Vous lancez l'apprentissage, vous confirmezles libellés où Gilbert a le droit de classer, puis vous vous abonnez à la routine « Tri des mails du matin ». Chaque matin, elle range les mails récents sous vos libellés et vous renvoie un récap. Dans le doute, un mail est laissé de côté et re-proposé le lendemain plutôt que classé au hasard. Le tri ajoute des libellés : il ne déplace, n'archive ni ne supprime aucun mail.
Confidentialité.L'apprentissage lit uniquement les expéditeurs et les libellés, jamais le contenu des mails. Le profil de tri est chiffré au repos et visible de vous seul. Détail sur Tri des mails Gmail.
Ajouté (routine commune et capture d'idées). Chaque workspace peut activer sa routine commune d'activation : un email hebdomadaire aux membres (ce que l'assistant a fait cette semaine, les routines à essayer, les idées des collègues), auquel on répond directement pour soumettre une idée ou un irritant. Gilbert capture la réponse, renvoie un accusé de réception dans le même fil, et réinjecte les idées déjà soumises dans l'email suivant. Les admins suivent tout dans la nouvelle page Suivi béta(navigation du workspace) : activation des membres, runs et livraisons des 7 derniers jours, cas d'usage soumis. Métadonnées uniquement, jamais le contenu des runs.
Ajouté (Premiers pas).Wizard d'onboarding par workspace en 4 étapes : connecter Google, choisir son email de livraison, former mon Gilbert, s'abonner à la routine commune (création en 1 clic par un admin si elle n'existe pas). Détail sur /docs/workspaces.
Changé (emails de routine).Les emails de routine partent désormais de l'adresse du workspace (gilbert-<workspace>@solveholding.com, nom du workspace en expéditeur) au lieu d'une adresse Gilbert générique, portent le nom de la routine en sujet, et le corps est rendu en HTML propre (titres, gras, listes, liens interprétés au lieu du markdown brut). Les tirets cadratins sont bannis de toutes les sorties générées.
Ajouté (informations légales).Tous les emails envoyés par Gilbert portent désormais un pied de mail d'identification de l'éditeur avec lien vers les mentions légales. Les emails de routine y ajoutent la raison de l'envoi et un lien de désinscription visible, en plus du bouton natif de votre client mail.
Ajouté (répondre à tous). gmail_create_draft accepte reply_mode='all': les destinataires d'une réponse de groupe sont calculés côté serveur depuis les headers du mail source (jamais par le modèle), votre propre adresse exclue des copies. La routine « Drafts quotidiens Gmail » choisit automatiquement entre réponse individuelle et réponse de groupe. Détail dans /docs/routines.
Corrigé.Nuit de QA prod complète sur la boucle : la suppression d'un workspace (Zone dangereuse) fonctionne à nouveau, une routine créée depuis un preset hérite du nom et des canaux de livraison du preset, et le badge des cartes du wizard est aligné.
Ajouté. Les brouillons et envois Gmail utilisent votre vraie signature Gmail, images incluses. La routine « Drafts quotidiens Gmail » ne re-traite plus les mails pour lesquels un brouillon existe déjà : plus de doublons d'un run à l'autre.
Corrigé. Sujets accentués enfin lisibles dans Gmail (encodage RFC 2047), et les brouillons sont de vraies réponses dans le filde la conversation au lieu de messages isolés. « Former mon Gilbert » est fiabilisé : le scan des 30 derniers Sent ne s'écroule plus sur les limites de débit Gmail (concurrence bornée, retentatives, message honnête si Gmail sature). Si une routine ne résout aucun canal de livraison, elle retombe sur votre email de login au lieu de ne rien livrer.
Ajouté. Le GET web public fetch_url et les outils de lecture de dépôt GitHub (repo_list_files, repo_read_file, repo_search) sont désormais exposés sur le serveur MCP. Disponibles jusqu'ici seulement dans le chat et les routines, ils sont maintenant appelables par un client MCP externe (Claude, Cursor, ChatGPT). Détail dans la table des outils MCP.
Corrigé. fetch_url est fiabilisé : un bug de résolution réseau côté serveur le faisait échouer sur tous les hôtes. La garde SSRF reste stricte (hôtes privés, métadonnées cloud et redirections vers adresse privée bloqués).
Ajouté.La mémoire personnelle de Gilbert (faits retenus, messages, actions, résumés de session, fiche d'identité) est chiffrée AES-256-GCM au repos en base, avec versioning de clé natif et déduplication des faits par empreinte HMAC plutôt que par contenu en clair. Ce que ça protège et ne protège pas est documenté honnêtement sur /docs/security et /docs/memory : la fuite de base ou de backup, oui ; l'opérateur du service qui déchiffre à l'usage, non. Position produit inchangée : pas d'outil de surveillance salarié, données strictement per-user.
Ajouté (Claude). Gilbert sert maintenant les métadonnées de découverte OAuth en path-suffixé (/.well-known/oauth-protected-resource/api/mcp) : la forme que Claude construit selon la RFC 9728. Le connecteur custom claude.ai se connecte enfin. Ajoute simplement https://gilbert.solveholding.com/api/mcp comme connecteur personnalisé.
Ajouté (Gemini Enterprise). Onboarding self-serve : un admin workspace génère un client OAuth confidentiel depuis Console → Workspaces → Connecteurs IA (secret affiché une fois, copier-coller des URLs, révocation), puis le service IT le colle dans le connecteur « Custom MCP Server » d'Agentspace. Voir le guide Bridge MCP.
Ajouté (sessions durables).Refresh tokens avec rotation à l'usage et détection de réutilisation (rejouer un token tourné révoque la famille), émis pour les clients confidentiels ou sur le scope offline_access. Les connexions tiennent au-delà d'une heure sans re-consentement. Les tokens sont liés à leur ressource (RFC 8707).
Corrigé (sécurité / consentement). Le CSP form-actiondu flow OAuth autorise désormais les callbacks de claude.ai et de Gemini Enterprise (vertexaisearch), sans quoi la redirection après le consentement était bloquée par le navigateur. Plus un scoping tenant strict : un connecteur confidentiel est lié à son workspace et l'utilisateur qui consent doit en être membre.
Accessibilité (console). Passe console-wide : contraste des textes secondaires remonté au niveau WCAG AA et anneaux de focus clavier visibles sur les champs et boutons.
Ajouté (téléphone).Le numéro de téléphone est un canal comme les autres : la page de réglages vit désormais sous Mes canaux → Téléphone. Côté infra, un dispatcher webhook Vapi unifié vérifie la signature une fois et route par message.type, avec trois modes d'auth fail-closed (HMAC canonique, HMAC raw-body Vapi, x-vapi-secret). Fiabilité : les fins d'appel sont lues depuis message.statuset un échec d'écriture durable renvoie un 503 retryable : Vapi retente au lieu de perdre l'événement.
Ajouté (heures calmes). /console/me/quiet-hours devient le hub unique : la page explique et édite les deux réglages distincts : heures calmes des appels (bloque les appels sortants) et des notifications (bloque les canaux de notification).
Corrigé (chat web).Le chat web atteint enfin la mémoire opérationnelle (workspace envoyé à l'API, tours web journalisés dans l'Activité comme Telegram). Nouvelle conversation visible sans recharger, indicateur de chargement au changement de conversation, titre propre, heure courante connue de Gilbert, action « Voir l'agenda » dédupliquée. Tu peux aussi relire et éditer le style personnel que Gilbert a appris de toi.
Corrigé (console).Horodatages en heure de Paris partout (fini le 07:00 UTC pour un run de 09:00), page routines globale réparée, état pause cohérent entre les vues, badge du sélecteur de workspace = ton rôle (admin/membre). La page Activité ne renvoie plus d'erreur en fin de pagination et ses libellés sont humanisés.
Sécurité. Open redirect fermé sur le paramètre next de /login et /auth/callback : validation par origine, les URLs externes type //evil.com sont rejetées.
Ajouté (mémoire opérationnelle). Gilbert se souvient maintenant cross-canal de ce qu'il a fait, actions proposées et exécutées, grâce à un trace_id propagé bout-en-bout sur personal_pending_actions, personal_messages et personal_events. Un bloc [Ce que tu as fait recemment] (7 derniers jours) est injecté dans le system prompt, et un outil read-only recall_actions (filtres query/status/days) couvre l'historique au-delà. Nouvelle page /personal/activity : ton journal d'events groupés par trace, RLS strictement user-scoped. Gaté par le flag workspace operational_memory. Détail sur /docs/memory.
Ajouté (façade REST OpenAPI). /openapi.jsonpublie une spec OpenAPI 3.1 OAuth2 pour les clients qui préfèrent REST à MCP : lister les workspaces accessibles, lister les routines d'un workspace, chercher dans le contexte non sensible, et lancer une routine avec un token user. Les endpoints vivent sous /api/gilbert/*et gardent les mêmes scopes que MCP : workspace:read pour discovery/search et routines:run pour exécuter une routine.
Ajouté (Assistant Email). La page /console/workspaces/[id]/mails provisionne maintenant une vraie row gilbert.forward_addresses pour l'adresse gilbert-<workspace>@solveholding.com. Le webhook Postmark ne dépend plus d'une adresse seulement affichée dans l'UI.
Corrigé.L'Assistant Email distingue Gmail connecté, OAuth expiré/scopes incomplets et Gmail absent, pour éviter de promettre un brouillon Gmail quand le membre doit d'abord reconnecter Google. Le flow de reconnexion ChatGPT MCP a aussi été validé : token expiré → consent OAuth Gilbert → callback ChatGPT → reprise automatique du tool.
Ajouté (OAuth MCP). Le bridge /api/mcp parle maintenant OAuth 2.1 authorization code + PKCE : discovery metadata /.well-known/oauth-protected-resource et /.well-known/oauth-authorization-server, dynamic client registration, consent screen Gilbert, échange /api/oauth/token, puis appels MCP avec Authorization: Bearer <access_token>. Les tokens sont liés au user Gilbert + workspace actif et expirent après 1h.
Ajouté (scopes MCP). mcp:read gate tools/list, mcp:write gate tools/call, workspace:read gate la découverte workspace, et routines:run est publié dans la metadata OAuth. Les tools sans scope requis sont masqués de tools/list.
Ajouté (discovery workspace).Les clients MCP n'ont plus à déduire les workspaces depuis les routines : list_workspaces, get_workspace, list_workspace_routines, list_workspace_channels et list_workspace_members exposent les concepts racine de Gilbert, filtrés par membership et sans fuite de secrets, API keys, tokens OAuth, adresses webhook sensibles ou prompts internes. Détail sur /docs/mcp.
Changé. L'ancienne auth ?key=glb_… reste temporairement disponible uniquement derrière le feature flag mcp_legacy_key_auth. list_workspace_routines.enabled signifie désormais routine active + abonnement user non pausé, pas simple template active.
Corrigé.Fini les brouillons Gmail en double : un membre ne peut plus être abonné à la même routine perso dans deux workspaces (le token Google est par personne, deux abonnements = deux passages sur la même boîte), et un « Lancer » manuel qui chevauche le tick automatique est refusé. Les runs qui n'ont pas pu accéder à Gmail finissent en partielavec leur résultat, au lieu de rester « en cours » pour toujours.
Ajouté.Le widget Intégrations ne ment plus : « Gmail connecté » alors que les runs échouent en authentification devient un lien « Vérifier les permissions ». Et après avoir validé une action destructive (un envoi de mail), Gilbert confirme l'envoi ou annonce l'échec au lieu du silence radio.
Corrigé (routines à l'heure locale).Une routine programmée à 9h00 tournait en fait à 11h00 l'été (10h00 l'hiver) : le calcul de la prochaine occurrence se faisait en UTC alors que l'UI annonçait « heure locale Europe/Paris ». Désormais les expressions cron sont interprétées en heure locale Europe/Pariset DST-aware : 9h reste 9h à Paris, été (CEST) comme hiver (CET). Plus de conversion UTC à faire de tête. Voir la syntaxe cron.
Corrigé (invitation + login Google).Un invité qui se connectait via « Continuer avec Google » au lieu de cliquer le magic link d'invitation n'était jamais rattaché au workspace cible et se retrouvait avec un workspace perso isolé. Le chemin OAuth consomme maintenant l'invitation en attente comme le magic link : tu arrives dans le bon workspace quel que soit ton mode de connexion. Zéro effet sur les connexions normales sans invitation.
Trois axes en parallèle : durcissement sécurité pour conserver le scope Gmail, refonte de la couche LLM pour que chaque appel respecte la config BYOLLM du workspace, et premier wedge production où Gilbert traite des emails forwardés par une Directrice via Postmark.
Ajouté (forward-to-Gilbert). Tu transfères un email à gilbert-<workspace>@solveholding.comavec ton intent en haut, Gilbert te répond avec un draft pro polish via Postmark. Le workspace porte le contexte (alias, signature, mode de sortie, rate cap), le membre porte l'exécution (identité, tokens OAuth perso, historique). Whitelist par membership : workspace_members.forward_alias_email. Les 3 colonnes sensibles de forward_runs (sujet, intent, draft) sont chiffrées AES-256-GCM côté DB.
Ajouté (« Former mon Gilbert »). Carte violet sur /console/workspaces/[id]/mails qui scanne tes 30 derniers Sent Gmail et entraîne un user_style_profile per-user global. Le polish d'email inbound réutilise ce profil pour drafter dans ton style à travers tous les workspaces où tu es membre. Privacy stricte : visible et utilisé uniquement par toi, aucun autre membre du workspace n'y accède.
Ajouté (invitations workspace).Le bouton grisé devient un vrai flow : l'admin saisit l'email, Supabase mint un magic link, Postmark envoie un email transactionnel d'invite (même si le user existe déjà), le callback auth attache la membership depuis user_metadata.pending_workspace_*. RBAC enforced server-side via workspaceMemberGuard ; supprimer le dernier admin est bloqué.
Ajouté (ModelTier). Chaque appel LLM passe par un tier abstrait fast / smart / premiumau lieu d'un nom de modèle hardcodé. Le mapping concret par provider (Haiku/Flash-Lite/mini, Sonnet/Flash/4o, Opus/Pro/4o) vit dans un seul endroit : quand un nouveau modèle sort, un seul fichier à toucher. Les routines gagnent une colonne model_tier (default smart).
Ajouté (BYOLLM complet).Les widgets embed B2B (Gerimalp, NAZ, Bayard) ne court-circuitent plus la config BYOLLM : le chatStream legacy passe par le SDK AI Vercel + getLLMClient(tier) comme tous les autres call sites. Un workspace qui pointe sur Google ou OpenAI ne paie plus silencieusement Anthropic via notre clé centrale.
Ajouté (multi-clés BYOLLM + fallback toggle). workspace_llm_config accepte désormais plusieurs entrées par provider, chacune avec un label (prod vs dev, clé par projet). Un nouveau flag workspaces.allow_central_fallbackpermet de désactiver le fallback silencieux vers la clé Anthropic centrale : le call fail-fast au lieu de transiter par notre infra, mode privacy strict pour les clients payants.
Ajouté (MCP Solve Learn). 19 tools learn_*permettent d'opérer Solve Learn end-to-end depuis n'importe quel client MCP : tenants, formations, sessions, membres. Détail sur /docs/mcp/solve-learn.
Corrigé (SSRF DNS rebinding, HIGH). safeFetch pré-checkait l'host avec dns.lookup mais undiciré-resolvait au moment du fetch, TOCTOU exploitable pour voler des credentials IAM via le metadata AWS sur Vercel Lambda. Fix : un safeDispatchermodule-level qui valide l'IP au connect step. Six nouveaux tests de régression couvrent les bypass (trailing dot, IPv4 décimal/hex, userinfo trick).
Sécurité (CASA Tier 2).Le dossier evidence pour l'App Defense Alliance est complet : Sprint 1 (CodeQL, Semgrep, Dependabot, premier scan), Sprint 2 (ASVS L2, OAuth scope justification, STRIDE 46 menaces / 9 composants), Sprint 3 (les 8 findings Semgrep clos, audit auth 121 routes : 0 missing). Verdict courant : 64 / 86 contrôles ASVS validés, 0 ❌. Soumission portail = dernière étape.
Ajouté. Gilbert passe et reçoit de vrais appels téléphoniquesvia Vapi. Il t'appelle quand une routine a besoin d'une décision, et tu peux rappeler le numéro Vapi pour parler des actions en attente. La feature démarre désactivée globalement (kill-switch admin). Tu actives ton numéro depuis /console/me/channels/phone : OTP, puis PIN 4 chiffres, puis cap quotidien. Numéros chiffrés AES-256-GCM avec index aveugle HMAC, PIN bcrypt. Transcripts purgés à 30 jours par défaut (pg_cron). Détail complet sur /docs/phone-calls.
Ajouté (Custom Tools MCP). Tu peux maintenant connecter des serveurs MCP externes (Notion, Linear, self-hosted, tout ce qui parle JSON-RPC 2.0) à un workspace. Gilbert découvre les tools automatiquement via tools/list et les expose comme mcp_<slug>__<tool>. Les admins configurent depuis la Console. Les membres peuvent forker un serveur du workspace pour override le token ou restreindre la liste de tools, via /console/me/mcp-servers. Détail sur /docs/custom-tools.
Ajouté. Slash command /runtool <slug>__<tool> [json]qui exécute un tool MCP directement, sans passer par le LLM. La carte "Runs récents" sur l'edit du serveur affiche durée, statut et déclencheur.
Ajouté. Table gilbert.feature_flags et une petite lib typée pour les kill-switches. Premier flag : phone_calls_globally_enabled(off par défaut). L'admin route PATCH /api/admin/phone-calls/flag le bascule sans redeploy.
Changé. ToolCallCardaffiche les tool calls MCP avec le slug du serveur et le nom du tool namespacé. Sidebar docs et palette Cmd-K gagnent "Appels téléphoniques" et "Custom Tools (MCP)".
Corrigé."Test connection" MCP ne dump plus le body HTML upstream quand le serveur renvoie une page d'erreur (ex. 405 sur example.com). Les réponses HTML deviennent (HTML body omitted, N bytes). JSON et texte passent inchangés.
Ajouté. Layout chat 3 colonnes (conversations, chat, panneau preview). Une carte briefing du jour s'affiche en haut avec un résumé inbox, agenda, routines, et un CTA "rédiger une réponse" branché sur Gilbert. Nouvelle table briefings_history, briefing dismissible via PATCH /api/personal/briefings/[id]/dismiss.
Ajouté. Sidebar conversations (desktop) plus drawer mobile : tes threads sont à un clic. Carte mémoire: Gilbert te montre ce qu'il a retenu de toi, suppression avec undo optimiste. Quick actions context-aware avec cache stale-while-revalidate. QuickRoutineModal pour créer une routine inline (focus-trap, gated admin).
Ajouté. Tools MCP Solve Learn : lecture plus écritures whitelistées plus undo. Gilbert peut lire formations et sessions, et appliquer des edits scopés.
Ajouté. Widgets du panneau preview personal : briefing, routines, agenda, intégrations (vrais logos via react-icons). Header de conversation avec menu Renommer / Supprimer.
Ajouté. Page /admin/cron-health pour observer les jobs et débloquer les routines coincées. Scaffold env stability cross-projet avec helper backup-then-mutate et détection des scopes combinés Vercel.
Corrigé.Watchdog stream chat à 8s plus bouton retry quand Anthropic stalle. Carte intégrations "scopes incomplets" devient actionable (rerun OAuth avec prompt=consent). Suggestion chips ne doublonnent plus les quick actions. Leak de dossier guest tué (clear du token au claim plus nettoyage des zombies). PayPal webhook fail closed si PAYPAL_WEBHOOK_ID manque.
Ajouté. README interne à la racine avec le piège des deux projets Supabase et le quickstart port 3100. Route publique /docs/changelog (cette page). Fichier CHANGELOG.md. Page 404 en français avec trois portes de sortie vers les docs.
Ajouté. Cinq nouvelles pages docs orientées IT B2B : /docs/workspaces, /docs/agents, /docs/integrations, /docs/routines, /docs/mcp. Plus un tutoriel end-to-end pour les équipes IT. Sidebar restructurée en 6 sections (Démarrer, Concepts, Workspace, Intégrer, Étendre, Aide).
Ajouté. Palette de recherche Cmd-K sur toutes les pages docs (index statique titre plus ancre). Widget "C'était utile ?" en bas de chaque page docs avec capture docs_feedback dans PostHog.
Ajouté. Flow de confirmation 5 minutes pour publish_linkedin_post avec commande Telegram /cancel-linkedin <action_id>. Worker pg_cron chaque minute pour exécuter les pending actions. Status row dans le chat (tools / model / workspace inline), sous-titre dynamique selon les providers connectés, suggestions anchored aux tools.
Changé. Quickstart étape 1 : servir hello-gilbert.html via python3 -m http.serverau lieu d'ouvrir le fichier en double-clic. Ouvrir en file:// était bloqué par le frame-ancestors CSP de Gilbert. /docs/api documente le mode guest honnêtement. /docs/embed-iframe retire theme=auto qui était documenté mais pas implémenté. Une quarantaine de commits design-fix sur landing, console, chat, docs, routines, workspace (DESIGN.md voice, button variants, copy, accents français restaurés).
Corrigé. /embed/playground blank en prod : le bootstrap matchait le catch-all frame-ancestors 'none'. Le playground forge maintenant le JWT côté serveur et pointe l'iframe directement sur /embed?token=…. /api/chat ne leak plus le schema Anthropic interne sur un curl anonyme (STATIC_TOOLS projeté à { name, description, input_schema }). Erreurs upstream sanitisées avant le stream. runEmbedExchange splitté pour ne plus appeler cookies().set() depuis un Server Component (ISSUE-001 QA).
Sécurité. publish_linkedin_post retiré de la surface MCP (CSO P0), puis ré-exposé avec le confirm plus délai 5 minutes ci-dessus. Rate limit IP sur le TTS OpenAI anonyme et défense prompt-injection sur /api/improv.
Ajouté. Tracking PostHog Cloud EU branché sur les quatre apps produit, avec des points de mesure dans les flows Gilbert. Bridge MCP multi-provider : registry unifié, scopes user/workspace, précurseur des Custom Tools workspace-scoped du 25 mai.
Changé. Formule ROI de la landing publique retravaillée avec un modèle plus conservateur et défendable.
Corrigé. Le ignoreCommand Vercel survit aux SHA absents des clones shallow et tombe en repli sur VERCEL_GIT_PREVIOUS_SHA.
Ajouté. Parité CRUD Telegram entre groupe workspace et DM utilisateur. Tool slack_post_to_channel avec auto-mapping ; couplage broadcast / workspace channel avec warning privacy ; dérivation du scope des delivery_channels et toolset gating. Skeletons loading.tsx sur /chat, /console, /adminet l'arbre dossiers. Workflow CI build-check ; previews Vercel coupées.
Changé. Sprint 1 Wave 6 : intégrations splittées en user-strict vs workspace-shared, informé par le plan-design Wave 5. Wave 7 : helper resolveIntegrationet UI des canaux de sortie d'une routine.
Corrigé. Toolset des agents embed restreint pour privacy. Token --color-coral défini pour que bg-coral / text-coral rendent réellement.
Sécurité.Audit RLS sur le split routines : policies durcies et tests d'isolation ajoutés (T21).
Ajouté. Schema routines splitté en routines plus subscriptions plus runs. Auto-subscribe fanout et UI catalogue routines 2 tabs. Scaffolding Inngest (client plus worker stub plus handler Next.js) pour la queue durable. Dépendances Stripe / Resend / Inngest ajoutées. Checklist wipe d'état externe Sprint 0. Nav mobile responsive : burger sur la landing, avatar plus workspace compacts sur la top bar chat.
Changé. Pages console et APIs serveur adaptées au nouveau split routines.
Corrigé. package-lock.json re-synchronisé avec les deps optionnelles cross-platform.
Le produit bascule de "Gilbert personal avec workspaces en option" vers "le workspace est l'unité" : agents, repos, intégrations, routines et contexte Live OBS vivent sous un workspace, avec un switcher actif persisté.
Ajouté. Refonte workspace-primary, phases 2/3 (CRUD, agents, repos, intégrations). Routines de retour dans la sidebar avec CreateRoutineForm et bibliothèque de presets. Switcher workspace actif persisté (phase 6). Mode Live OBS avec contexte workspace.
Changé. /docs refondues pour le modèle workspace-primary plus cleanup typographie. Nav chat : boutons icônes Accueil/Console, panneau droit passe en full-width.
Corrigé. /api/cron/tick migré de Vercel cron vers pg_cron (contrainte plan Hobby). RLS enfin active sur personal_routines et personal_routine_runs. padding-right sur les <strong> dans Section et Callout.
Le produit se sépare proprement entre le consumer (/chat) et le B2B (/console), avec workspaces, routines et intégrations en first-class.
Ajouté. BYOLLM(Bring Your Own LLM) via une abstraction de provider : un workspace branche Anthropic, OpenAI, Gemini ou n'importe quel provider AI-SDK dont il a la clé. Site docs publiques avec Quickstart, Concepts, Troubleshooting (Phase 1+). Surface /console B2B pour admins workspace : agents, intégrations, routines, settings.
Ajouté. Multi-workspace avec intégrations scopées au workspace, email masqué dans le greeting pour éviter de leak de la PII. Wizard routines pour scheduled tasks : cron plus run LLM avec watchlog, actions par run et page globale.
Ajouté. /embed/playground : iframe sandbox publique plus token de test pour que les intégrateurs voient Gilbert avant de signer. /personal/pair et /personal/connect-google : flows pairing consumer. /embed vitrine quand chargé sans params (au lieu de casser).
Changé. Intégrations migrées sous /console/integrations. IntentSwitcher ne gère plus /chat (Phase 4). Landing CTAs polis (Phase 5). Prompts user-agnostiques et petit parser cron pour supporter les routines par workspace ; code Telegram splitté.
Corrigé. Queries /console/workspaces cassées par le nouveau schéma.
Ajouté. Intégration LinkedIn multi-tenant, branchée via MCP. Le flow de pairing inclut déconnexion, inspection du profil et un hint UX quand des scopes manquent.
Corrigé. Parsing des scopes LinkedIn, UX refresh_token, et timezone forcée à Europe/Paris sur les dates rendues.
Cette semaine branche Gilbert à Claude Code comme companion Telegram et web.
Ajouté. Install one-liner via curl … | bash depuis gilbert.solveholding.com (évite le rate limit raw-content de GitHub) qui pose le plugin dans Claude Code et déroule les credentials dans le vrai terminal du user. Endpoint MCP streamable HTTP: Claude Code, Cursor, ChatGPT ou n'importe quel client remote parle à Gilbert sans plugin stdio local.
Ajouté. Wizards /connect-claude (MCP basique) et /connect-cowork (bridge complet), splittés pour garder le flow simple simple. Tool LLM send_to_claudeavec une bulle "tool status" persistante. Commande Telegram /schedule pour drafts schedulés one-shot. Bridge multi-user Claude ↔ Gilbert avec clés API par user et création auto de topics Telegram. Reply-watcher qui persiste le feedback dans le repo (seed ibg-prisca).
Changé. Wizard unifié autour du connector HTTP ; le plugin stdio est retiré. Watcher code paths supprimés après la migration vers Routine fire.
Corrigé. Garde-fous anti-hallucination sur le reply path cowork-notify et sur /schedule. Messages de groupe Telegram pris en compte quand le bot est mentionné ou quoté, plus uniquement en DM. Désambiguïsation send_to_claude vs create_scheduled_draft. Classifier biaisé vers "complex" et Tier D self-aware pour ne pas sur-tooler les intents simples.
Sécurité. Fallback legacy COWORK_NOTIFY_SECRET supprimé.
Ajouté. Bridge bidirectionnel cowork ↔ Telegram avec routage par contexte (/api/cowork/notify). UX tool status bidirectionnelle : les users Telegram voient quand un tool tourne.
Ajouté. Pass SEO complet sur gilbert.solveholding.com : robots.txt, sitemap, manifest, metadataBase, cartes OG et Twitter (Couche A). Metadata par page avec OG / Twitter / canonical (Couche B). opengraph-image dynamique via next/og (Couche C). JSON-LD Organization plus SoftwareApplication (Couche D). Favicons multi-résolution (192 / 512) et application-name plus appleWebApp pour les sitelinks SERP cross-produits.
Corrigé. /billing/return wrappé en Suspense pour débloquer le prerender prod. OG image switchée sur un screenshot statique du hero (la version dynamique cassait au cold build Vercel). Safe-browsing : patterns CGU et anti-phishing centralisés sur les pages avec formulaire.
Sécurité. Hardening RLS et SHA-pinning CI cross écosystème.
Le pipeline personal grandit. Les pages bougent sous /chat, la mémoire conversationnelle arrive, le billing ship, et l'UX s'adapte à l'intent.
Ajouté. Mémoire conversationnelle (L1 plus L2 plus L3) : résumé court-terme, recap mid-terme, recall long-terme. Gilbert retient ce que vous avez discuté à travers les threads. Pipeline billing avec PayPal checkout, webhook et paywall. UX adaptative par intent, axe orthogonal au product_context: l'UI bouge (suggestions, surface de tools, copy) selon que tu drafts, schedule, ou debug.
Ajouté. 5 nouveaux tools Gmail/Calendar : drafts, read, search, range, create_event. Indicateur typing et streaming sur Telegram. product_contextpersonal avec route dossier dédiée. Signout server-side robuste plus middleware plus isolation du token guest pour qu'un user déconnecté ne réutilise pas par accident une session authentifiée.
Corrigé. Re-pair Telegram depuis le même chat_id sans hitter 23505 (duplicate-key). OAuth Google : force le consent screen quand les scopes sont incomplets ; préserve les scopes Google dans /save-token pour qu'un "linked then unlinked" ne se produise pas silencieusement.
Ajouté. Fondations du pipeline personal : migrations schema, flow OAuth Google, pairing Telegram. MVP personal (PR5-9) : tools Gmail/Cal, briefing journalier, cron, endpoints admin, 63 tests.
Ajouté. Inbound chat routé dans la boucle LLM avec un gate pending_action pour que les tools destructifs demandent confirmation. Design-review UI sur les pages personal.
Corrigé. Callback OAuth Google. Cron briefing déplacé de Vercel cron vers Supabase pg_cron pour débloquer le deploy sur le plan Hobby.
Premiers commits du service standalone solve-gilbert. Projet sorti du monorepo pour vivre à gilbert.solveholding.comet s'embarquer en iframe dans n'importe quel produit Solve.
Ajouté. Agent multi-tenant embarquable : /chat, /login, /embed, avec frame-ancestors CSP enforced partout sauf sur la surface embed. Exchange JWT SSO pour les sessions embed et dispatch webhook outbound signé HMAC.
Ajouté. Nav landing auth-aware et écran /login signed-in. Callback auth robuste qui supporte le flow Supabase token_hashet expose la raison d'une erreur. Rate limit chat (10/min plus cooldown 4s) avec countdown front-end. Favicon gilbert.png et UI login alignée sur la DA Gilbert.