Pourquoi cette app
Ranger une pensée coûte plus cher que l'avoir eue.
Presque toutes les applications de notes vous demandent la même chose avant de vous écouter : choisir un dossier, un type, une catégorie. La friction arrive avant la pensée, et la pensée se perd en chemin.
CocoMind retourne le problème. Vous appuyez sur le micro et vous parlez comme vous parlez vraiment, y compris le familier et le dicté à la va-vite. L'assistant transcrit, comprend l'intention et crée le bon objet, au bon endroit, avec la bonne date.
Il distingue une tâche d'une habitude, un projet d'une note, un rendez-vous d'un rappel. Il tient les récurrences complexes du genre « le premier mardi de chaque mois » et les échéances relatives du genre « dans trois semaines ».
Les défis techniques
Ce que le modèle range mal, le serveur doit le rattraper.
Une pensée capturée avant que l'app soit prête. Au démarrage à froid, une pensée écrite dans la première seconde arrivait avant que l'authentification soit résolue : elle ne vivait qu'en mémoire. Les écritures sont désormais mises en file et rejouées dès que le compte est connu. Le même piège touchait les annulations : appuyer sur « Annuler » ramenait l'objet à l'écran, puis le premier instantané reçu du serveur le supprimait de nouveau, en silence.
Deux courses dans le micro. Le démarrage de l'enregistreur natif prend un temps réel. Dans cette fenêtre, un second appui relançait l'enregistrement sur un nouveau fichier et les premiers mots disparaissaient ; une annulation, elle, ne faisait rien, l'enregistreur finissait de démarrer et plus personne ne l'arrêtait : micro resté chaud, voyant orange allumé. Un état de démarrage rend l'appel réentrant, et un compteur de génération permet d'invalider un démarrage encore en vol.
La récurrence perdue par le modèle. « Tous les mardis » retombait en tâche ponctuelle. Un garde-fou côté serveur et une reprise corrective posent maintenant une vraie règle, et un moteur déterministe l'avance à intervalle régulier, sur le serveur : les occurrences se recalculent chaque jour au lieu d'être figées, et une règle cesse de produire quand l'objectif qu'elle servait disparaît.
Deux heures d'écart sur les reports. Le contexte envoyé au modèle affichait les objets existants en temps universel. « Décale à la même heure » dérivait donc du décalage horaire, silencieusement. Le contexte est passé en heure locale, et un report d'événement déplace le début et la fin en préservant l'heure et l'écart du rappel.
Une protection anti-abus qui a tout bloqué. L'attestation d'appareil a été activée un soir. Le lendemain, toutes les captures étaient rejetées, en développement comme en test interne, parce que l'attestation n'était pas encore enregistrée côté console. Elle a été coupée en urgence, et une procédure ordonnée conditionne sa réactivation : enregistrer d'abord, observer sans bloquer ensuite, ne verrouiller qu'une fois le taux de réussite vérifié.
Les blocages d'empaquetage, trouvés avant Apple. Des numéros de version désynchronisés entre la montre et l'application empêchaient purement et simplement l'envoi du binaire. Une permission de localisation était déclarée sans texte alors qu'aucun code ne l'utilise. L'iPad était activé sans avoir jamais été testé. Et l'environnement de notifications était resté en développement : ce n'est pas un motif de rejet, c'est pire, les notifications auraient cessé de fonctionner en production sans que rien ne le signale.