Spaces:
Sleeping
Sleeping
Émo — PRD
Pricing (final)
- Gratuit : 10 messages / jour (reset à minuit UTC), illimité dans le temps
- Lifetime : 20 € one-shot via Stripe → messages illimités
- Admin lifetime auto : emails dans
EMO_ADMIN_EMAILSenv (CSV) —hugo@example.com+huglostalatac@gmail.compar défaut
Architecture
- LLM : Claude Sonnet 4.5 (function calling) via Emergent LLM Key
- Backend : FastAPI + Motor + Stripe + SSE + agent long-polling + BeautifulSoup pour web
- Agent natif Go : 5 binaires cross-compilés +
--installnatif (registre Windows / LaunchAgent macOS / systemd user Linux) - Frontend : React 19 + Monaco + Tailwind + Shadcn
Tools de Claude
Locaux (via agent)
exec_shell,read_file,write_file,list_dir
Web (backend, pas besoin d'agent)
web_search(query, limit)— DuckDuckGo HTML, retourne title/url/snippetweb_fetch(url, max_chars)— texte propre + liens + URLs d'images
Itération 7 — Freeze fix + Tech-by-default + Mobile (Feb 2026)
- BUG CRITIQUE FIXÉ : freeze d'Emo causé par stdout massif (
dir /ssur tout un disque) qui saturait le SSE.- Backend
agent_relay.py: truncation 64 KB max sur stdout/stderr/content (defense-in-depth, marche même avec vieux binaires agent) - Go agent
main.go: truncation 64 KB côté agent (garde la fin où les erreurs sont) - Tous les binaires rebuild (5 plateformes) — l'utilisateur doit télécharger la nouvelle version
- Backend
- 4 modes retirés du header : plus de top-bar ModeSelector
- Sélecteur de mode déplacé dans le composer (style DeepSeek) — bouton subtil avec icône + menu dropdown
- Tech = défaut + intégré dans la persona de base : plus de mode "normal", Tech est toujours actif. Modes restants : Tech / Créatif / Brutal (Créatif et Brutal sont des overrides).
- Persona : "Hugo" only (jamais "hugo catala"). Suppression des références spontanées à "je suis l'IA de Hugo / je viens de DeskBuddy" — Emo répond au sujet pas à son lore.
- Debug console : admin only (UI cache le bouton Bug pour les non-admins)
- Mobile responsive : hamburger menu + sidebar drawer + composer/header compacts
- Light theme contrast : header utilise
var(--emo-glass-bg), dropdown sidebar utilisevar(--emo-surface) - Suppression de
ModeSelector.jsx(obsolète) - Migration legacy :
mode == "normal"en DB → traité comme "tech" côté backend
Itération 6 — Webhook Stripe + UI simplifiée (Feb 2026)
- Webhook Stripe vérifié via curl simulation :
checkout.session.completedavecclient_reference_id→ user.paid=true OK - Fix webhook bug :
licenses.update_oneajoutéupsert=Truepour gérer les users qui paient avant d'avoir un doc license initialisé - Webhook fallback email : si
client_reference_idabsent, recherche parcustomer_email→ user upgrade OK - UI custom simplifiée : suppression de density / reduce-motion / grain-toggle / accent colors
- Thème dark/light/system : seul choix UI restant. Détection
prefers-color-schemepour "system", persistance localStorage + backend (theme_mode) - CSS light theme : palette claire avec glass-panels translucides white, grain réduit, gradients atténués
- Téléchargement code source : déjà admin-only (403 pour non-admin, 200 + tarball pour admin) — confirmé
- Logs webhook : warning si paiement sans user_id matchable
Itération 5 — Polish + Web tools
- Quota daily 10 msg/jour (au lieu de trial 7j) — reset minuit UTC via
daily_dayfield - Pill "X / 10 aujourd'hui" remplace l'ancien essai
- Paywall réécrit pour "Quota du jour atteint"
- Compte admin
huglostalatac@gmail.comajouté en lifetime auto - Web tools :
web_search(DDG) +web_fetch(BS4) intégrés à Émo - Persona enrichi : Émo sait chercher modèles 3D (Sketchfab, OpenGameArt, free3d, Poly Haven), docs, code, etc.
- UI customizable++ :
- Densité de texte : Compact / Normal / Grand
- Animations réduites (toggle)
- Grain en fond (toggle)
- Couleur d'accent (5 thèmes)
- Instructions perso pour Émo
- Fix download : passage de
<a href download>àfetch + blob(résout les pbs cross-domain etdownloadignoré) - ToolCallCard supporte les nouveaux tools (icônes Search vert, Globe bleu) + résultats formatés (titres/URLs pour search, text+liens+images pour fetch)
Tests
- 14/14 pytest backend ✅
- Web search testé live : "pygame documentation" → 3 résultats valides incluant pygame.org
- Web fetch testé live : titre + 25 liens extraits
- Émo end-to-end :
web_search "raylib official documentation"→ synthèse propre avec vraies URLs - Admin lifetime auto :
huglostalatac@gmail.comsignup → statusadmin_grant, paid=true
Comptes
hugo@example.com/emo-test-2026(admin lifetime)huglostalatac@gmail.com/emo2026(admin lifetime)- Tout autre signup → 10 msg/jour gratuits → paiement €20 → lifetime payé
Backlog
P1
- Tool
web_screenshot(capture visuelle de page) — nécessite Playwright headless - Installateur Windows graphique (.exe Inno Setup) avec UAC
- macOS notarization + .dmg
- Streaming live des sorties shell
- Tool
apply_diff+ vue diff Monaco - Refactor
server.py(>1200 lignes) en routers FastAPI (routes/auth.py,routes/chat.py,routes/admin.py, etc.) - Test paiement Stripe live de bout en bout (mode test puis mode live)
P2
- Voice in/out (Whisper + TTS)
- Bridge DeskBuddy (OLED SSD1306)
- Ollama provider
- CDN binaires
- Multi-projets / workspaces