- Une alternative à PowerPoint qui regroupe document/éditeur/visionneuse/outil de présentation dans un seul fichier
.bento.html, ouvrable, modifiable et présentable avec un simple navigateur - Un unique fichier d’environ 570 Ko fonctionne comme une application complète, avec sauvegarde et partage par e-mail ou AirDrop, sans compte, cloud ni programme d’installation
- Les données des diapositives sont stockées dans le fichier sous forme de JSON lisible, ce qui permet à des agents IA comme Claude Code/Codex/Gemini/ChatGPT de modifier directement le fichier
- En fournissant aussi un
.pptxexistant à l’IA, celle-ci peut réécrire les diapositives en exploitant les fonctionnalités de Bento, comme Morph ou les graphiques en temps réel, plutôt que de se contenter d’une conversion simple - Prend en charge les transitions Morph, graphiques, vidéos, audio et collaboration chiffrée en temps réel ; après Slides, Docs et Sheets sont aussi prévus selon le même modèle de fichier unique
Un seul fichier, à la fois document et application
.bento.htmlcontient à la fois les diapositives et l’éditeur complet- Lorsque le fichier est ouvert dans le navigateur, l’éditeur se lance immédiatement ; à l’enregistrement, les données du document sont réécrites dans le fichier lui-même
- Polices, images et graphiques sont également inclus, ce qui permet d’ouvrir et de présenter une copie du fichier de manière autonome
- En mode hors ligne, les mises à jour et la collaboration sont bloquées afin que tout le travail soit traité localement
- Vous pouvez l’exécuter directement dans le navigateur depuis Bento/Slides ou télécharger le fichier applicatif unique
Un format de document pensé pour les agents IA
- Les données du document sont stockées en JSON en clair dans le bloc
<script type="application/bento+json" id="bento-doc">en haut du fichier - Il est possible de lire le document courant avec
window.bento.docet de charger un document modifié avecwindow.bento.loadDoc(json) - Les agents IA peuvent ajouter des diapositives, graphiques, notes de présentateur, etc. en modifiant uniquement le JSON, sans toucher au code de l’application
- Utilisable avec des agents de code comme Claude Code/Cursor/Aider, mais aussi avec des chatbots généralistes prenant en charge les pièces jointes
- Avec les chatbots ne prenant pas en charge les fichiers, on peut copier le JSON, le faire modifier, puis le recoller
- Avec Ollama/llama.cpp/LM Studio, l’édition par IA peut aussi s’exécuter entièrement en local
- Un fichier agents.md est fourni pour aider les agents IA à exploiter correctement Bento
Des fonctionnalités de présentation plus proches du Web que de PowerPoint
- Prend en charge les transitions Morph, qui déplacent naturellement entre les diapositives les éléments ayant le même
id- En dupliquant une diapositive existante puis en déplaçant des éléments ou en changeant leur style, la transition se construit sans créer de timeline séparée
- Dessine des graphiques en barres, en lignes, en secteurs et en nuage de points grâce à un moteur de graphiques sans dépendance propre
- Les graphiques en barres/lignes/secteurs/nuage de points restent interactifs pendant la présentation, avec infobulles, zoom et changement de données
- Les vidéos et l’audio peuvent être intégrés dans les diapositives ou liés sous forme de fichiers externes
- Les fichiers PowerPoint existants ne sont pas importés tels quels : l’IA les recompose en documents Bento
- Prend aussi en charge l’écran présentateur, les commentaires, les mises en page, l’export PDF, plusieurs formats de page et 8 langues d’interface
- L’édition est principalement pensée pour le desktop, mais la consultation et la présentation sont possibles aussi sur smartphone
Collaboration local-first
- Lorsqu’une session live est lancée depuis le fichier, les utilisateurs ayant ouvert une copie du même fichier rejoignent l’espace de collaboration
- Les données de collaboration sont chiffrées de bout en bout avec AES-GCM, et le serveur relais ne traite que du texte chiffré
- Un CRDT maison gère l’édition en temps réel et la fusion des modifications hors ligne
- La clé de collaboration étant contenue dans le fichier lui-même, le partage du fichier sert de mécanisme d’invitation
- Les modifications qui divergent hors ligne sont fusionnées dans les deux sens lors de la reconnexion
Feuille de route et licence de Bento/Suite
- Bento/Slides, actuellement distribué, est la première application de Bento/Suite
- Bento/Docs et Bento/Sheets sont prévus comme fichiers
.bento.htmlautonomes et indépendants - Le logiciel Bento lui-même est publié sous licence MIT
1 commentaires
Avis sur Hacker News
Je suis le créateur de Bento. En haut du fichier, il y a un bloc JSON ordinaire qui contient les données des diapositives, ce qui permet de le lire, de faire des grep dessus ou de le traiter avec des outils d’automatisation. L’app est un blob base64 chargé via un petit loader ; elle est décompressée avec
DecompressionStreamdans le navigateur afin de garder le paquet compact et de ne récupérer aucun fichier externe à l’exécution.Avec la File System Access API, le JSON est réécrit dans le même fichier ; si elle n’est pas prise en charge, l’app bascule vers un téléchargement classique, et toutes les mises à jour sont signées avec ECDSA. Je suis parti de reveal.js, en y ajoutant GSAP/Flip et echarts, puis j’ai réimplémenté moi-même toutes les fonctionnalités d’animation et de graphiques à cause de problèmes de taille et de comportement.
Je suis particulièrement satisfait du bon fonctionnement de la collaboration CRDT. Un petit relais aveugle exécuté sur Cloudflare Durable Objects ne voit que les données chiffrées des clients, et la collaboration reste désactivée tant qu’un fichier d’invitation n’a pas été partagé pour démarrer une session. Les droits d’accès sont gérés avec des clés utilisateur, ce qui permet d’avoir des utilisateurs en lecture seule, et les autorisations de collaboration en temps réel peuvent aussi être révoquées par utilisateur.
Je me demande aussi s’il n’y a pas un risque de voir le trafic affluer sur le compte Cloudflare si la fonction de collaboration est fournie par défaut à tous les utilisateurs.
En essayant de le faire ressembler à PowerPoint, cette fonction semble avoir été retirée, mais c’est celle que je préfère dans Reveal.js, donc j’espère qu’elle ne sera pas oubliée.
J’ai créé un outil similaire, centré sur la création de petites apps React plutôt que de présentations. Le HTML de base avec une app d’exemple est ici, et la documentation est ici ; ce n’est pas encore parfaitement peaufiné, mais c’est déjà largement utilisable.
Il intègre un transformateur JSX et un éditeur de code, prend en charge l’enregistrement dans un fichier ou dans
localStorage, et peut aussi exporter séparément le JSX et les données JSON depuis le shell chargé de l’enregistrement, de la transformation et de l’édition.J’ai aussi créé une app iOS pour stocker des mini-apps. Elle ne dépend pas uniquement de
localStorageet conserve durablement les changements de données et de code, ce qui rend le flux enregistrement/rafraîchissement fluide. Le sandbox bloque les appels réseau des apps enregistrées, mais ils peuvent être autorisés app par app, et j’aimerais ajouter à l’avenir des fonctionnalités pratiques comme un éditeur natif.Je pense que ce type de forme va devenir plus courant. Beaucoup de logiciels peuvent être fournis entièrement en local avec HTML, TypeScript, React, etc., et conserver aussi leur état localement, mais jusqu’ici l’incitation économique manquait.
Personnellement, j’utilise Kimi K3 pour créer un jeu mobile-friendly couvrant des sujets allant de l’algèbre linéaire à la physique quantique. L’objectif est de tenir compte des utilisateurs neurodivergents, de stocker tout l’état en local et de le servir depuis GitHub Pages afin de susciter l’intérêt pour ce domaine. C’est un projet qui exige des compétences variées et du temps, et qui n’aurait pas été économiquement viable sans LLM ; je compte y jouer moi-même, l’améliorer, éliminer les bugs, puis le publier sur HN.
J’ai pris plaisir à utiliser le livre d’or en temps réel, mais mon Mac M1 a fini par se figer et j’ai dû le redémarrer de force. Tant que tout HN ne modifie pas la page en même temps, cela devrait bien fonctionner dans la plupart des cas, mais il semble y avoir une raison pour laquelle Figma utilise WASM et un moteur de rendu personnalisé.
Le focus de saisie actuel ne devrait pas être réinitialisé quand un autre utilisateur modifie du contenu sans rapport. De plus, le texte de la landing page et du deck d’exemple sonne beaucoup trop comme du LLM, alors que la soumission HN est bien plus agréable à lire. Le fait de l’avoir publié comme logiciel libre et open source est excellent.
Je suis aussi d’accord sur le problème du texte, mais je ne suis pas très sûr de moi à l’écrit et je manque de temps entre le travail et les enfants, donc je compte l’améliorer progressivement.
Je fais connaître le concept de web apps en fichier unique, et il serait pertinent d’ajouter Bento au brouillon Wikipedia proposé.
.htmlqui incluait images, icônes et styles en inline et fonctionnait hors ligne, au point que je plaisantais en l’appelant la première vraie single-page app.you. Wikipedia doit être une source tertiaire, pas un endroit où promouvoir un concept que l’on veut établir, donc cela ne me semble pas être le bon endroit.C’est chouette qu’il suffise d’indiquer à Claude la technologie Bento pour pouvoir l’utiliser.
En créant des diagrammes avec draw.io depuis longtemps, j’ai trouvé astucieuse la façon de sauvegarder le document comme une sorte de blob iframe contenant à la fois l’éditeur et le fichier. Cela dit, avec draw.io, l’éditeur lui-même n’est pas inclus dans le fichier, il faut donc charger le code via une connexion web
J’espérais pouvoir faire de cette approche le principal cas d’usage, et Bento correspond presque exactement à ce que j’imaginais
Cela répond à un besoin très courant en entreprise. Dans certaines équipes de l’entreprise, les bugs des logiciels de présentation et de visualisation existants ne sont pas corrigés et les fonctionnalités sur mesure ne sont pas ajoutées, si bien qu’elles ont abandonné les produits cloud ou desktop pour passer à des outils basés sur HTML et JavaScript
Les petits détenteurs de pouvoir des organisations IT internes devraient sans doute s’inquiéter
J’envisage un outil de présentation autonome qui installerait un Bento vide en PWA via la fonction du navigateur « installer le site comme application », remplirait automatiquement le nom de l’auteur, etc., puis le rendrait en lecture seule pour que l’utilisateur puisse faire « Enregistrer sous »
Ce serait bien que le projet inclue une fonction permettant d’installer comme PWA un document de base vide, en lecture seule à l’exception des informations d’auteur
Je compte étudier davantage les fonctionnalités que les utilisateurs voudront dans une version hébergée et la façon de préserver les principes particuliers de Bento
Quand on crée des présentations HTML avec des agents de code, le résultat est plutôt bon. Selon l’objectif, on peut utiliser Slidev, basé sur Markdown, ou demander à un agent de créer des slides Typst, notamment très beaux pour les expressions mathématiques
Cela dit, en voyant le titre, j’ai pensé qu’il s’agissait d’un outil directement lié à PowerPoint, alors qu’en réalité PowerPoint est utilisé comme synonyme de « présentation ». C’est assez ironique, étant donné que beaucoup de gens détestent PowerPoint