Le projet
VizMail est un client email desktop construit avec MAUI .NET 10. L'objectif de départ était simple : un client mail local qui lit la boîte de réception, affiche les threads, gère les labels. L'objectif qui a émergé en cours de route était plus intéressant : exposer tout ça via une API HTTP pour que des agents IA puissent lire et traiter les mails sans passer par un navigateur.
Sans API, un agent est aveugle : il ne peut ni lire un mail entrant, ni archiver, ni répondre, ni déclencher une action. Avec une API propre, un agent peut faire tout ça de manière programmatique — et une application comme Lain peut orchestrer ces flux sans intervention humaine.
Stack technique
- UI : MAUI .NET 10 (Windows desktop natif)
- Base de données : SQLite via EF Core (messages, threads, labels, état de synchronisation)
- Protocoles email : IMAP (MailKit) + Outlook via Microsoft Graph API
- API HTTP : HttpListener .NET embarqué dans le processus MAUI, documenté via un skill Markdown servi par l'API elle-même
- Tests : xUnit, 659 tests couvrant services, handlers et endpoints API
Fonctionnalités
38 fonctionnalités livrées, organisées en huit domaines :
Lecture et navigation
- Boîte de réception unifiée avec pagination et tri
- Vue thread (conversations groupées) avec actions bulk
- Recherche full-text avec scoring de pertinence et filtres combinables
- Contexte de navigation en temps réel (
/api/context) - Détection d'emails similaires (patterns récurrents)
Gestion des messages
- Marquer lu/non-lu — individuel et en masse (jusqu'à 500)
- Archiver et supprimer définitivement — individuel et en masse
- Labels custom : ajout, retrait, renommage global, suppression globale
- Pièces jointes : liste, téléchargement, backfill automatique
- Étoiler (starred), marquer important, marquer priorité — individuel et en masse
- Reporter (snooze) avec réveil automatique — individuel et en masse
- Suivi agent (processed/unprocessed) — individuel et en masse
Rédaction et envoi
- Rédiger un nouveau mail (compose multi-comptes)
- Répondre à un mail (reply simple et reply-all)
- Transférer un mail (forward)
- Brouillons de composition : sauvegarde et envoi différé
- Brouillons de réponse : sauvegarde, envoi, génération IA (individuel et en masse)
- Dossier envoyés avec recherche et filtres
Bulles sémantiques
- Création et gestion des bulles (CRUD)
- Classification IA automatique des mails par bulle
- Override manuel de bulle — par mail, par thread, en masse
- Reclassification incrémentale ou forcée avec progression en temps réel
Désinscription et nettoyage
- Désinscription aux newsletters (suivi du lien unsubscribe) — individuel et en masse
- Nettoyage des emails Exchange bogueux
Analyse et statistiques
- Statistiques globales (total, non-lus, étoilés, top senders, par domaine)
- Timeline d'activité email (granularité jour ou semaine)
- Annuaire des contacts dérivé des emails reçus
- Agrégation par expéditeur
API HTTP pour agents IA
- Endpoints REST complets sur l'ensemble des opérations
- Authentification par token locale (pas d'OAuth externe à configurer)
- Documentation Markdown auto-servie par l'API (
/api/skill), toujours à jour - Réponse structurée JSON, conçue pour être consommée par un agent sans parsing fragile
- Diagnostic santé et état de sync (
/api/health,/api/imap_debug)
Synchronisation
- Sync IMAP incrémentale (IDLE + polling fallback)
- Sync Outlook via Microsoft Graph (delta queries)
- Gestion des conflits et des états locaux hors-ligne
- Sync manuelle bloquante et déclencheur non-bloquant
- Support multi-comptes (filtrage par compte, envoi par compte)
Méthode de développement
VizMail a été développé entièrement via agent-driven development avec KittyClaw comme orchestrateur. Chaque fonctionnalité était un ticket assigné à un agent programmer. L'agent écrivait le code, un agent qa-tester vérifiait, un agent committer poussait. Aucun code n'a été écrit à la main.
Ce mode de travail a permis de livrer 38 fonctionnalités avec 659 tests et 0 régression — sans aucune journée de debug en cascade, parce que chaque changement était testé avant d'être committé.
Le retex complet de la construction de l'API HTTP est disponible dans l'article Comment j'ai construit l'API VizMail avec des agents IA.
Résultats
| Métrique | Valeur |
|---|---|
| Fonctionnalités livrées | 38 |
| Tests automatisés | 659 |
| Régressions | 0 |
| Statut | En usage actif ✓ |
Ce que ça démontre
VizMail n'est pas un projet "pour apprendre MAUI". C'est une preuve que l'agent-driven development fonctionne sur un domaine métier complexe (mail, synchronisation, protocoles réseau) avec une contrainte de qualité forte (0 régression, 659 tests). L'API HTTP n'était pas dans le cahier des charges initial — elle a émergé parce que l'outillage (KittyClaw + agents) permettait de l'ajouter sans friction. Les bulles sémantiques, la rédaction assistée par IA et les statistiques ont suivi le même chemin.

