DeepSeek Harness Remote
DeepSeek Harness Remote 可將手機或另一台電腦與你運行 DeepSeek Harness 的電腦安全連接,隨時隨地繼續你的工作,方便隨時查看進度並繼續工作。
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗L'application mobile de « Me », ton assistant personnel : agenda du jour, relances, tâches en attente de tes boîtes perso et pro, habitudes financières et personnelles, rappels selon le mode choisi, assistant audio avec la voix de ton choix et copilote IA.
Construite avec Expo (SDK 58), Expo Router et TypeScript.
Installe Expo Go sur ton téléphone (App Store ou Play Store).
Sur ton ordinateur :
git clone https://github.com/jeereq/me-mobile.git
cd me-mobile
npm install
npx expo start
Scanne le QR code affiché avec l'appareil photo (iPhone) ou avec Expo Go (Android).
Sans autre réglage, l'app tourne en mode local : tout reste sur le téléphone, avec un seul compte (admin). Les habitudes proposées sont créées au premier lancement.
Les notifications locales marchent dans Expo Go. Si ton téléphone les bloque, une version de développement (
npx expo run:androidounpx eas-cli build --profile development) règle le problème.
vercel.json règle le build (npx expo export -p web && node scripts/seo.mjs, dossier dist).EXPO_PUBLIC_API_URL = l'adresse de ton serveur me-api (ex. https://me-api-ua1p.onrender.com).CORS_ORIGINS (ex. https://me-mobile.vercel.app), puis redéploie.(render.yaml permet aussi de déployer sur Render : New > Blueprint.)
Limites de la version web : pas de notifications système sur le téléphone ; les rappels arrivent dans le centre de notifications de l'app et par email (voir plus bas). La voix dépend de celles de Safari.
Le même site sert de version desktop : sur un écran large (900 px et plus), une barre latérale remplace les onglets et le contenu reste centré.
La barre reste visible sur tous les écrans. Elle donne accès direct aux onglets (avec leurs compteurs) et à tous les outils de Plus (Finances, Statistiques, Notifications…), et le compte se trouve en bas.
Elle se replie en une colonne d'icônes avec son bouton en haut, ou Ctrl+B (⌘+B sur Mac). Au survol, chaque icône affiche son nom. Le choix est gardé sur l'appareil.
Recherche globale : Ctrl+K (⌘+K), le champ « Rechercher » de la barre, ou la loupe de l'accueil sur téléphone. Elle trouve une page, une tâche, une relance, une habitude, une dépense, un contact ou une note du journal (sans tenir compte des accents), se pilote aux flèches et à Entrée, et « Ajouter « … » » crée directement ce qui est tapé (« 12 € courses », « Relancer Paul jeudi »).
Chrome ou Edge (Windows, Mac, Linux) : ouvre l'adresse du site, puis l'icône Installer dans la barre d'adresse (ou menu ⋮ > Caster, enregistrer et partager > Installer la page en tant qu'application). Me s'ouvre ensuite dans sa propre fenêtre, avec une icône dans le Dock ou le menu Démarrer.
Safari sur Mac : Fichier > Ajouter au Dock.
Avec un compte (serveur me-api), le serveur calcule tes rappels toutes les 5 minutes selon le mode de chaque élément et ton fuseau horaire :
Pendant que l'app est ouverte, un rappel qui arrive s'affiche en bandeau avec un son.
Chacun choisit ses canaux dans Mon compte › Notifications, où « Envoyer un essai » vérifie que tout fonctionne. Les sons (case cochée, toutes les habitudes faites, rappel reçu) se coupent dans Mon compte › Sons.
| Écran | Contenu |
|---|---|
| Aujourd'hui (« Accueil » sur téléphone) | Ma journée (progression de la mission, niveau, série, points), mission du jour à cocher, Mes finances (dépensé, reste du mois, aujourd'hui, revenus, solde, budgets à surveiller), État des lieux (finances, tâches, relances, habitudes, régularité) avec les 3 recommandations les plus urgentes, briefing audio, recherche, agenda, copilote IA, journal du jour |
État des lieux (/rapport) | Le rapport complet : état des lieux, toutes les recommandations (budgets dépassés ou en danger, frais bancaires, tâches en retard, relances à faire, habitudes qui décrochent, budgets qui se terminent…), résumé des finances et prévisions ; « Copier » le met en texte pour un message ou une note. Calculé dans src/lib/etat-des-lieux.ts. |
| Relances | Qui relancer, à quel sujet, depuis quelle boîte, quand, avec quel mode ; brouillon de mail rédigé par l'IA (✎) |
| Tâches | Tâches perso et pro, priorité, échéance, filtre perso/pro |
| Habitudes | Finances et vie perso, fréquence, jour, mode de rappel, série tenue |
| Plus | Calendrier, Projets, Finances, Catégories, Statistiques, Récompenses, Notifications, Journal & contacts, Agendas & outils, Assistant audio, Configuration, Mon compte |
Chaque élément (relance, tâche, habitude) a un mode qui décide quand l'app le rappelle. Les cinq modes d'origine :
Les modes se configurent (compte admin, Plus › Configuration › Modes de rappel disponibles › « Régler ce mode ») : pour chaque mode, une description libre (affichée à tous dans Habitudes) et des règles :
| Règle | Effet |
|---|---|
| Heures du rappel le jour J | matin (heure du briefing), soir (rappel du soir) ou HH:MM. Une heure : le titre tel quel ; plusieurs : « Aujourd'hui : … » puis « Pas encore fait : … ». Vide : aucun rappel. |
| Jours avant l'échéance | par exemple 3, 1 : « Dans 3 j : … », « Dans 1 j : … » |
| Insister après l'échéance | un « En retard : … » chaque jour tant que ce n'est pas fait |
| Heure des rappels à l'avance et en retard | HH:MM (9:00 par défaut) |
| Regrouper les habitudes du jour | un seul message du soir au lieu d'un rappel par habitude |
| Bilan de la semaine | jour et heure d'un message qui liste ce qui est suivi dans ce mode pour les 7 jours à venir |
Sous les réglages, une phrase calculée dit ce que le mode fera concrètement avec les heures en vigueur (« Envoie un rappel le jour J à 9 h. »). « Remettre les réglages d'origine » efface les règles du mode. Une règle jamais touchée garde sa valeur d'origine, donc les configurations existantes ne changent pas. Le serveur applique les mêmes règles que l'app pour les notifications push et les emails (src/lib/modes.ts ici, src/services/rappels/modes.ts dans me-api : deux copies à garder identiques).
Les rappels des trois prochaines semaines sont reprogrammés à chaque ouverture de l'app et à chaque modification. Le briefing du matin arrive chaque jour à l'heure choisie en configuration.
Les comptes, l'admin, la synchro entre appareils et l'IA passent par ton propre serveur, me-api.
Installe et lance me-api (son README explique comment, en local ou hébergé).
Crée un fichier .env à la racine de me-mobile (copie de .env.example) avec l'adresse du serveur :
EXPO_PUBLIC_API_URL=https://ton-serveur.exemple.com
Sur un téléphone, localhost désigne le téléphone lui-même : en local, mets l'adresse IP de ton ordinateur (par exemple http://192.168.1.20:4000).
Relance npx expo start. L'app affiche alors l'écran de connexion. Le compte admin principal est celui de ADMIN_EMAIL et ADMIN_PASSWORD dans me-api ; sans ces variables, le premier compte créé devient admin.
Règles d'accès, appliquées par le serveur :
npm run promote:admin -- [email protected] dans me-api ;La session est gardée dans le trousseau sécurisé du téléphone. Sans réseau, l'app affiche les données en cache, une pastille « Hors ligne » le signale, et les changements repartent seuls au retour du réseau (nouvel essai toutes les 30 s, ou « Réessayer »). Si un autre appareil a écrit entre-temps, les deux versions sont fusionnées élément par élément (rien n'est écrasé) : chaque appareil garde les ajouts de l'autre, une suppression n'est appliquée que si l'autre n'a pas modifié l'élément, et sur un même champ modifié des deux côtés, l'appareil qui synchronise l'emporte. La logique est dans src/lib/fusion.ts.
L'écran de connexion propose ce que le serveur sait faire (voir le README de me-api) :
/verifier et connecte directement./reinitialiser pour choisir un nouveau mot de passe ; les autres appareils sont déconnectés.Publiées avec l'app web, sans connexion (vercel.json, render.yaml et scripts/seo.mjs les listent) :
| Adresse | Fichier | Contenu |
|---|---|---|
/a-propos | public/a-propos.html | Présentation, offres, accès Google |
/conditions | public/conditions.html | Conditions d'utilisation (CGU) |
/cgv | public/cgv.html | Conditions générales de vente : prix, paiement, durée, rétractation, remboursements |
/confidentialite | public/confidentialite.html | Politique de confidentialité, y compris les données Google et de paiement |
/mentions-legales | public/mentions-legales.html | Éditeur, directeur de la publication, hébergeurs |
/a-propos, /confidentialite et /conditions sont les adresses à donner à l'écran de consentement OAuth de Google. L'adresse de contact ([email protected]) figure dans chaque page.
À compléter avant la mise en vente : les passages surlignés en jaune [À compléter : …] (identité de l'éditeur, droit applicable, TVA, durée de conservation comptable). Ces textes sont un modèle : fais-les relire par un juriste. Les prix des CGV doivent rester ceux de me-api/src/services/abonnements/offres.ts, et une nouvelle version des CGV se signale en changeant VERSION_CGV dans ce même fichier.
Dans l'app installée (hors web), les liens « Confidentialité · Conditions · Conditions de vente · Mentions légales » s'affichent si EXPO_PUBLIC_SITE_URL donne l'adresse du site web.
Avec un serveur où ABONNEMENTS=true (voir le README de me-api) : chaque compte commence par 14 jours d'essai Pro, puis passe à l'offre gratuite ou à Pro (4,99 $ par mois, 49,99 $ par an).
src/app/abonnement.tsx) présente les offres et fait payer par mobile money avec FlexPaie : numéro, acceptation des CGV, demande d'accès immédiat, puis validation sur le téléphone ; l'écran suit le paiement et ouvre Pro dès qu'il est confirmé. Pas de renouvellement automatique : une nouvelle période s'ajoute à celle en cours.src/components/reserve-pro.tsx), et le serveur refuse ces fonctions (402 ABONNEMENT_REQUIS). Tout le reste de l'app reste gratuit.Le build web finit par node scripts/seo.mjs (déjà dans vercel.json). Ce script remplace le repère %SITE% des pages HTML par l'adresse réelle du site, écrit sitemap.xml et ajoute la ligne Sitemap: à robots.txt.
L'adresse vient de EXPO_PUBLIC_SITE_URL, sinon de VERCEL_PROJECT_PRODUCTION_URL que Vercel fournit tout seul. Sans adresse, le site marche quand même : les liens restent relatifs et le sitemap n'est pas écrit.
Ce qui est en place : titre et description sur les quatre pages publiques, adresse canonique, Open Graph et carte Twitter avec public/og.jpg (1200 × 630), fiche SoftwareApplication en JSON-LD, robots.txt, et un contenu lisible sans JavaScript dans public/index.html. public/manifest.json décrit l'app installable, avec ses captures (public/apercu/) et des raccourcis vers Projets, Finances et Notifications.
Pour refaire l'image de partage ou les captures, remplace public/og.jpg et les fichiers de public/apercu/ en gardant les tailles annoncées dans index.html et manifest.json.
Build complet en local : npm run build:web.
Une équipe réunit plusieurs comptes autour d'un espace partagé : ses budgets, ses projets, ses tâches et ses habitudes, à côté de ton espace à toi. Rien n'est mélangé : l'app garde un espace par « portée » (le tien, puis un par équipe), chacun avec son cache sur l'appareil et sa propre synchro.
APP_URL sont configurés ; sinon il te rend le lien à transmettre toi-même.Les équipes demandent un serveur me-api à jour (/api/equipes) : en mode local, l'écran le dit et s'arrête là.
Les formulaires (dépense, budget, revenu, compte, catégorie, tâche, relance, habitude, projet, détail d'une opération, édition d'une tâche de projet) s'ouvrent dans une fenêtre par-dessus la page : Dialogue (src/components/ui.tsx), une feuille qui monte du bas sur téléphone, une fenêtre au centre dès 700 px, fermée par la croix, la zone sombre, Échap ou le retour d'Android. Toutes les pages partagent la largeur des Projets (LARGEUR_LARGE, src/lib/mise-en-page.ts). Les filtres d'une liste passent tous par Filtre (src/components/onglets.tsx) : une barre segmentée jusqu'à quatre choix, des pastilles qui défilent au-delà, chaque choix portant son nombre d'éléments ; la barre reste collée en haut au défilement (Collant).
Au premier lancement, une carte Premiers pas guide les réglages utiles (ajouter une tâche, cocher une habitude, fixer un budget et, avec un compte, connecter son agenda et activer les notifications). Chaque étape se coche d'elle-même ; la carte disparaît une fois tout fait, ou avec « Masquer ».
L'accueil tient en une liste : la mission du jour réunit les habitudes prévues, les relances arrivées à échéance et les tâches urgentes. On touche une ligne pour la cocher ; le bouton + ajoute une tâche, une relance ou une habitude en une phrase : « Relancer Paul jeudi pour le devis », « Envoyer la facture demain urgent », « Sport tous les jours », « Payer le loyer le 1 de chaque mois ». L'app repère le genre, la date (demain, jeudi, dans 3 jours, le 15 novembre, 25/10, fin du mois…), la fréquence et l'importance, et montre ce qu'elle a compris avant d'ajouter. « Remplir le détail » ouvre le formulaire, prérempli.
Avec un compte, le briefing du matin annonce la mission et les points à gagner, et le soir un coup de pouce arrive si la série est en danger (réglage « Mission et série » dans Mon compte). Une fine barre en haut de l'écran montre les chargements en cours.
Chaque action rapporte des points : habitude +10, relance aboutie +15, tâche +15 (+20 si importante, +5 si finie avant l'échéance), note de journal +5 (3 fois par jour), journée parfaite +50. Les points font monter de niveau, les jours actifs d'affilée forment une série (un joker tous les 7 jours la protège d'un jour manqué) et 14 badges marquent les étapes. Décocher retire les points. Tout est visible dans Plus > Récompenses.
Les couleurs sont sobres : fonds neutres, une seule couleur d'accent douce et des couleurs de mode désaturées. Cinq thèmes de base : Nuit (bleu doux, par défaut), Ambre, Forêt (vert), Lavande et Clair, chacun avec sa couleur d'accent ou l'une des 7 proposées. Les thèmes ont été renommés sans changer leurs clés techniques (jarvis, mark, matrice, nebuleuse, clair) : chaque compte garde son choix. L'admin choisit le thème de tous les comptes dans Configuration ; chacun peut prendre le sien dans Mon compte. Le changement s'applique tout de suite.
L'écran Agendas & outils connecte tes comptes Google (Agenda et Gmail), Microsoft (Outlook et To Do), Trello et Slack, autant que tu veux, chacun marqué perso ou pro. La connexion ouvre la page du service, puis revient dans l'app. Le serveur relit ensuite les comptes toutes les 15 minutes, et l'app récupère les nouveautés à l'ouverture et toutes les 10 minutes.
Chaque service doit d'abord être configuré sur le serveur (voir le README de me-api). Notion, Asana et Todoist restent des réglages pour l'instant.
Les changements de la plateforme sont décrits dans CHANGELOG.md.
npm run typecheck # TypeScript
npm run lint # ESLint
npm test # tests en Node, sans l'app : fusion entre appareils, devises, comptes, références de transaction,
# analyse des opérations, catégories, modes de rappel, planning, import de plan, lecteurs xlsx et zip
npm run commun # recopie le code commun depuis me-api (src/lib/commun/)
npm run commun:verifier # échoue si src/lib/commun/ diffère de me-api (lancé par la CI)
Code commun avec le serveur : src/lib/commun/ (rappels, modes, jours, tâches de projet, prévisions, objectifs, synchro par différences) est la copie exacte de me-api/src/commun/. On le modifie dans me-api, puis npm run commun (ou npm run commun -- --depuis ../me-api avec une copie locale). Les notifications du téléphone (rappels-telephone.ts) et le serveur calculent donc les rappels avec le même code ; tests/commun.test.ts compare les règles que l'app garde à part (planning des projets, mission du jour, dates) avec ce code commun, sur des espaces tirés au hasard.
Synchro par différences : une fois l'espace enregistré, l'app n'envoie que ce qui a changé depuis la dernière version confirmée par le serveur (PATCH, voir fusion.ts et commun/patch.ts), au lieu de tout l'espace. Les conflits entre appareils se fusionnent comme avant ; un serveur ancien ou qui refuse les différences reçoit l'espace en entier.
Organisation :
src/app/ : écrans (Expo Router), onglets dans src/app/(tabs)/src/lib/ : données (store.tsx), appels au serveur (api.ts), fusion entre appareils (fusion.ts) et des éléments importés (sync.ts), rappels (reminders.ts, rappels-telephone.ts, modes.ts, code commun avec le serveur dans commun/), assistant et IA (assistant.ts), saisie en une phrase (phrase.ts), finances (finances.ts, previsions.ts, stats-finances.ts, devises.ts, comptes.ts, releve.ts, analyse-operations.ts), catégories (categories.ts), projets (planning.ts, plan-import.ts, xlsx.ts), récompenses (jeu.ts, mission.ts), dates, thème (theme.ts), largeurs (mise-en-page.ts)src/components/ : interface (ui.tsx), barre latérale et recherche, éléments de liste, formulaires, connexion, graphiques, Gantt, imports (relevé CSV, plan Excel), squelettes de chargementpublic/ : pages légales, manifeste et service worker de l'app webtests/ : tests Node (*.test.ts)src/components/justificatifs.tsx, src/lib/justificatifs-api.ts). La fiche (adresse, vignette, nom) est rangée dans Depense.justificatifs, donc synchronisée avec l'espace. Le bouton n'apparaît que si le serveur répond disponible sur GET /api/justificatifs.fenetre dans src/lib/finances.ts : son jour, sa semaine, son mois… ou toute la durée d'une enveloppe), et chaque vue le montre selon sa périodicité (bilan) : un budget de la durée de la vue s'y compte tel quel, un budget plus court s'y additionne (un budget par jour vu sur la semaine compte ses 7 jours, un budget à la semaine vu sur le mois les semaines qui y commencent), un budget plus long n'y est pas (le budget du mois n'entre pas dans la vue Semaine). Son reste est son montant (restes reportés compris) moins les dépenses notées et rangées dedans. Rien n'est supposé : pas de budget du jour tiré d'un budget au mois, pas de conversion au prorata d'une période à l'autre, pas de « à ce rythme ».transferer dans src/lib/reports.ts, testé) : le plafond de la source baisse, celui du budget dépassé monte d'autant, le serveur fait le même calcul, et il s'annule depuis « Reports et transferts ».suiviPlan (src/lib/finances.ts), affichage partagé par Finances et le rapport (PlansDepenses, src/components/finances-plus.tsx), conseils dans plansDepenses (src/lib/etat-des-lieux.ts).idBudgetDe dans src/lib/categories.ts, copiée côté serveur). Le graphique « Dépenses par catégorie » d'Opérations compte une dépense à plusieurs catégories dans chacune.src/lib/planning.ts (testé)./calendrier, ?date=AAAA-MM-JJ pour ouvrir un jour). Mois, semaine et jour de tout ce qui a une date : tâches, relances, habitudes, agenda, dépenses, revenus, récurrences à venir, dates de budgets et de postes, objectifs, projets. Le calcul est dans src/lib/calendrier-global.ts (evenementsEntre, testé), l'affichage dans src/components/vue-calendrier.tsx ; chaque élément porte le lien vers son écran.suiviObjectif, etapesObjectif, faisabilite, planReduction et echeanceTenable (src/lib/objectifs.ts, testé) calculent l'état, le plan, les étapes et ce que le budget permet. Données dans finances.objectifs (versements avec identifiants : la synchronisation fusionne élément par élément). Écran : src/components/objectifs.tsx ; conseils : recosObjectifs dans src/lib/etat-des-lieux.ts. Les dépenses des catégories de l'objectif s'y relient (depensesLiees, compterDepense : le versement porte depense et un identifiant dep:<id>, donc deux appareils ne le doublent pas). Les dépenses comptées comme versement sont écartées du calcul de la capacité d'épargne, du fonds d'urgence et des budgets à réduire (depensesCourantes). Carte ApercuObjectifs sur l'accueil et dans l'Aperçu de Finances. Rappels côté serveur : me-api/src/services/rappels/objectifs.ts, coupés par finances.alertes.objectifs === false.src/lib/{inflate,zip,xlsx,tableur}.ts, sans dépendance ; l'ancien format .xls n'est pas lu.src/components/repondre.tsx), « + Rendez-vous » et le crayon d'un rendez-vous importé dans le calendrier (src/components/rendezvous.tsx), « Envoyer vers » dans les actions groupées de Tâches. Cocher une tâche importée d'une liste la coche à la source (basculerTache dans src/lib/actions.ts). src/lib/externe.ts (pur et testé) lit les identifiants ext:<compte>:<élément>, gtask:<liste>:<tâche> et todo:<liste>:<tâche> et dit ce qui est modifiable./messages) : fils récents des boîtes connectées, groupés par jour, filtres boîte/compte/non lus et recherche (src/lib/mails.ts, pur et testé : filtrerMails, grouperMails, comptesDeMails, nonLus, et pour la voix trouverMail, destinataire, adresseDictee, resumeMails). Toucher un fil l'ouvre dans src/components/lire-mail.tsx (texte demandé à GET /api/integrations/:id/mails/:mail, jamais gardé) ; « Nouveau mail » ouvre src/components/ecrire-mail.tsx (POST /api/integrations/:id/envoyer). L'écran accepte des paramètres de la commande vocale : lire (+ voix=1 pour le dire), repondre (+ texte), ecrire=1 (+ a, sujet, texte, nom). Les mails ne sont pas gardés dans l'espace : ils arrivent à chaque synchronisation (/api/sync, champ mails).GET /api/integrations/:id/agendas) et on coche ceux à reprendre (PATCH /api/integrations/:id, champ agendas) ; voir src/components/agendas-compte.tsx.Grille (dans src/components/ui.tsx) range des cartes de même nature sur plusieurs colonnes selon la place disponible, pas selon un seuil de largeur d'écran.src/lib/vue-courte.ts (pur, testé) range les tâches par échéance (grouperTaches), résume les tâches et les habitudes (resumeTaches, resumeHabitudes, habitudesDuJour) et coupe les listes (limiter) ; src/components/pliable.tsx fournit Pliable (section repliable), Limitee (« Voir les N autres ») et Pastille (chiffre de résumé), utilisés par Tâches, Habitudes et le calendrier./statistiques) : filtres période (PERIODES_STATS, joursDeLaPeriode dans src/lib/stats-budget.ts) et domaine ; budget mois par mois (budgetParMois), budgets du mois, objectifs et versements par mois ; conseils de conseilsBudgetsObjectifs (src/lib/conseils.ts, testé) qui reprend l'état des lieux et ajoute les récidives de dépassement, la marge à verser, les leviers d'un plan qui ne tient pas et le versement du jour.src/lib/mot-cle.ts (détection du mot dans le texte entendu, variantes d'écriture de la dictée, testé), écoute continue au premier plan dans src/components/mot-cle.tsx (EcouteMotCle, montée dans _layout.tsx) via ecouterMotCle (src/lib/ecoute.ts). Elle se met en pause quand une autre écoute ou la fenêtre de commande vocale utilise le micro, et se relance quand le système coupe l'écoute (espacée si rien n'est entendu). Réglage dans PanneauMotCle (Mon compte), enregistré sur l'appareil (AsyncStorage, clé me.motcle). ouvrirVoix(phrase) exécute la phrase dite après le mot sans réécouter.src/lib/commande.ts, testé), l'ajout reprend la saisie en une phrase. Reconnaissance vocale : expo-speech-recognition (iOS, Android, Chrome/Edge/Safari sur le web) ; il faut un nouveau build de l'app (eas build), une app plus ancienne propose de taper la demande. Avec Siri : dans l'app Raccourcis, un raccourci « Ouvrir l'URL » me://voix nommé par exemple « Parle à Me » lance l'écoute d'un « Dis Siri, parle à Me » (même lien pour un raccourci Android). Le micro de l'ajout rapide dicte aussi la phrase.
src/lib/commande-plus.ts, testé) : reporter (« Reporte le devis à lundi », « Mets le devis à demain »), supprimer, prioriser (« Le garage est urgent ») ; « J'ai relancé Paul », « Paul m'a répondu », « Relance Paul par mail » (réponse dans le fil rattaché, sinon nouveau mail) ; « Crée une relance pour le mail de Paul », « Transforme le mail de Paul en tâche », « Rattache la relance de Paul à son dernier mail » ; « J'ai reçu 1 500 € de salaire », « Vire 200 € du compte courant vers le livret », « Mets 100 € de côté pour le voyage », « Crée un budget restaurant de 150 € par mois » ; une dépense qui nomme un poste ou un compte s'y range (« 260 € de billets avec M-Pesa ») ; questions sur un poste, un compte, un objectif, les revenus et le solde, les dernières dépenses, l'agenda d'un jour, le prochain rendez-vous, les tâches en retard ou de demain, la série d'une habitude ; « Lis mon dernier mail », « Réponds au dernier mail que… » ; « Aide ». Chaque changement s'annule (« Annule »).src/lib/voix-texte.ts) : nombres en lettres (« vingt-cinq euros cinquante » → 25,50 €), « Hey Me, est-ce que tu peux… », « Je voudrais… », « J'aimerais savoir… », « J'ai médité » (coche l'habitude Méditer).src/components/choix-voix.tsx, dans Mon compte › Préférences et l'Assistant audio) : choix de la voix, phrase d'essai, vitesse et hauteur. Voix personnelle iPhone (iOS 17+) : l'utilisateur l'enregistre dans Réglages › Accessibilité › Voix personnelle ; le petit module natif modules/voix-personnelle (autolinké) demande l'autorisation, puis expo-speech la liste et la lit. Il faut un nouveau build (eas build) ; sans lui, src/lib/voix-perso.ts répond null et l'écran l'explique. Android et le web n'ont pas d'équivalent.