Files
ESP32_ZACUS/ui_freenove_allinone/AGENT_TODO_BACKUP.md
T
L'électron rare 878d911065 P1.1+P1.2: Phase 9 Touch Emulator + AGENT_TODO Update
 P1.1 Phase 9 Touch Input (4h)
- TouchEmulator: 4x4 grid navigation via buttons (UP/DOWN/LEFT/RIGHT toggle)
- Files: touch_emulator.{h,cpp} + AmigaUIShell integration
- Button mapping: 0=UP, 1=SELECT, 2=DOWN, 3=MENU, 4=TOGGLE_LR
- Build SUCCESS (31.06s, 64.4% RAM, 42.0% Flash)

 P1.2 Documentation Update (1h)
- AGENT_TODO.md: Phase 9 completion + Sprint 9 section added
- Root cause analysis: watchdog timeout (cycle 9) → stack fix (8192→16384)
- Troubleshooting guide: common issues + debug commands

Files:
  + touch_emulator.{h,cpp}
  ~ ui_amiga_shell.* + main.cpp + AGENT_TODO.md

Next: P1.3 (Sprint 1 endurance validation) + P2 (main.cpp refactor)
2026-03-11 00:03:58 +01:00

9.2 KiB
Raw Blame History

Validation hardware TODO détaillée

Sprint 0 - Foundation (2026-03-02)

  • Bridge AmigaUIShell -> AppRuntimeManager branché via interface interne.
  • launchSelectedApp() implémenté avec ouverture runtime réelle.
  • Anti double-launch activé (debounce + garde sur état app déjà active).
  • APP_STATUS exposé en commande série directe + HELP mis à jour.
  • Logs runtime normalisés ajoutés (APP_OPEN_*, APP_CLOSE_*, APP_ACTION_*).
  • Upgrade LVGL 8.4.x appliqué.
  • Librairie QR figée sur commit.
  • tinyexpr ajouté explicitement.
  • [~] Upgrade ESP32-audioI2S 3.4.4 tenté puis rollback vers 2.3.0 (toolchain bloque sur <span>).
  • Gate build exécutée: pio run -e freenove_esp32s3_full_with_ui SUCCESS.

Sprint 1 - Utility Pack (2026-03-02)

  • CalculatorModule: tinyexpr prioritaire + erreurs explicites (eval_error@pos) + action status.

  • TimerToolsModule: chrono/countdown stabilisés + action status + signal fin countdown (audio/LED si dispo).

  • FlashlightModule: on/off robustes + light_toggle + set_level appliqué à chaud + action status.

  • Contrat specs apps mis à jour (calculator, timer_tools, flashlight).

  • Campagne endurance outillée: tests/sprint1_utility_contract.py (mode serial + mode HTTP).

  • Smoke série court validé: python3 tests/sprint1_utility_contract.py --mode serial --cycles 5 --port /dev/cu.usbmodem5AB90753301.

  • Gate endurance série 20 cycles/app encore rouge.

    • Verdict (2026-03-02): échec à calculator cycle 9/20 avec reboot panic (reset_reason=4) et APP_STATUS parse failed post-reboot.
    • Contexte: issue non fonctionnelle app métier, liée à stabilité runtime/mémoire sous endurance.
  • Gate HTTP toujours bloqué côté reachability/auth (/api/apps/* non validé dans cette passe).

  • Compiler et flasher le firmware sur le Freenove Media Kit (pio run -e freenove_esp32s3_full_with_ui -t upload)

  • Préparer les fichiers de test sur LittleFS (/data/scene_.json, /data/screen_.json, /data/*.wav)

  • Vérifier laffichage TFT (boot, écran dynamique, transitions)

  • Tester la réactivité tactile (zones, coordonnées, mapping)

  • Tester les boutons physiques (appui, mapping, transitions)

  • Tester la lecture audio (fichiers présents/absents, fallback)

  • [~] Observer les logs série (initialisation, actions, erreurs) en continu pendant endurance longue

  • Générer et archiver les logs d’évidence (logs/)

  • Produire un artefact de validation (artifacts/)

  • Documenter toute anomalie ou limitation hardware constatée

Sprint 2 - Capture Pack (2026-03-02)

  • CameraVideoModule: action status + états preview/clip/frame + erreurs normalisées.
  • QrScannerModule: action status + scan_payload + classification url/app/text.
  • DictaphoneModule: action status + normalisation de chemin enregistrement/lecture.
  • Contrat Sprint 2 ajouté: tests/sprint2_capture_contract.py.
  • Gate série Sprint 2 (1 cycle/app) verte.
    • Verdict (2026-03-02): python3 tests/sprint2_capture_contract.py --mode serial --cycles 1 SUCCESS.
  • Endurance courte Sprint 2 (3 cycles/app) verte.
    • Verdict (2026-03-02): python3 tests/sprint2_capture_contract.py --mode serial --cycles 3 SUCCESS.
  • Endurance intermédiaire Sprint 2 (10 cycles/app) verte.
    • Verdict (2026-03-02): python3 tests/sprint2_capture_contract.py --mode serial --cycles 10 SUCCESS.
  • Déblocage mémoire/coex appliqué:
    • platformio.ini: UI_FX_TARGET_FPS=12, UI_DMA_TRANS_BUF_LINES=1, UI_LV_MEM_SIZE_KB=54, ARDUINO_LOOP_STACK_SIZE=16384, BOARD_HAS_PSRAM.
    • QrScannerModule: ownership caméra corrigé (évite double init avec ESP32QRCodeReader).
    • AppRuntimeManager: profil ressource auto selon capabilities app (caméra vs micro).
  • Gate endurance longue Sprint 2 à lancer (20 cycles/app) + archivage logs.

Revue finale Checklist agents

  • Vérifier la cohérence de la structure (dossiers, modules, scripts)
  • Relire AGENT_FUSION.md (objectifs, couverture specs, structure)
  • Relire README.md (usage, build, validation, modules)
  • Relire la section onboarding (docs/QUICKSTART.md, etc.)
  • Vérifier la présence et la robustesse du fallback LittleFS
  • Vérifier la traçabilité des logs et artefacts
  • Vérifier la synchronisation UI/scénario/audio
  • Vérifier la gestion dynamique des boutons/tactile
  • Vérifier la non-régression sur les autres firmwares (split)

TODO Agent Firmware All-in-One Freenove

Plan dintégration détaillé (COMPLÉTÉ)

  • Vérifier la présence du scénario par défaut sur LittleFS

  • Charger la liste des fichiers de scènes et d’écrans (data/)

  • Initialiser la navigation UI (LVGL, écrans dynamiques)

  • Mapper les callbacks boutons/tactile vers la navigation UI

  • Préparer le fallback LittleFS si fichier manquant

  • Logger linitialisation (logs/)

  • Boucle principale dintégration

    • Navigation UI (LVGL, écrans dynamiques)
    • Exécution scénario (lecture, actions, transitions)
    • Gestion audio (lecture, stop, files LittleFS)
    • Gestion boutons/tactile (événements, mapping)
    • Gestion stockage (LittleFS, fallback)
    • Logs/artefacts

Validation hardware (EN COURS)

  • Tests sur Freenove Media Kit (affichage, audio, boutons, tactile)
  • Génération de logs d’évidence (logs/)
  • Production dartefacts de validation (artifacts/)

Documentation

  • Mise à jour README.md (usage, build, structure)
  • Mise à jour AGENT_FUSION.md (règles dintégration, conventions)
  • Synchronisation avec la doc onboarding principale

Spécifications fonctionnelles utilisateur à livrer

  • Lecteur Audio (lecture locale, play/pause/stop, playlist de base)
  • Appareil photo / vidéo (capture image/vidéo, stockage média, aperçu)
  • Dictaphone (enregistrement audio local, lecture, suppression)
  • Chronomètre / minuteur (UI dédiée, rappel sonore)
  • Lampe de poche (commande on/off, intensité si supportée)
  • Calculatrice (opérations de base, historique simple)
  • Webradio enfants (gestion flux HTTP/ICY, reprise auto minimale)
  • Podcast enfants (lecture podcasts local ou RSS simplifié)
  • Lecteur de QR code (scan caméra, parsing et action de base)
  • Émulateur de jeux vidéo (version minimale ludique compatible mémoire embarquée)
  • Lecteur de livres audio (index/chapitres, reprise de progression)
  • Application de dessin (canvas tactile + outils minimum)
  • Application de coloriage (templates + remplissage couleur)
  • Application de musique pour enfants (playlists ciblées, contrôle simple)
  • Application de yoga pour enfants (séquences guidées, audio/texte)
  • Application de méditation pour enfants (tempos/sons/apaisement)
  • Application de langues pour enfants (mini leçons + répétition audio)
  • Application de mathématiques pour enfants (exercices interactifs)
  • Application de sciences pour enfants (contenus interactifs + quiz)
  • Application de géographie pour enfants (quiz/carte/images interactives)

Plan dintégration recommandé (ordre de dépendance)

  • 1) Base commune UI + assets + navigation (priorité haute)
  • 2) Audio stack: lecteur audio / livres / podcasts / webradio
  • 3) Outils système: chronomètre, calculatrice, lampe de poche
  • 4) Camera stack: photo/vidéo + QR code
  • 5) Contenus enfants: dessin, coloriage, musique, yoga, méditation, langues, maths, sciences, géographie
  • 6) Jeux: intégrer émulateur léger après stabilisation mémoire/perf

Stack technique réseau (nouvelle contrainte)

  • Ajouter découverte réseau Bonjour/mDNS (nom appareil + présence services)
  • Ajouter service de transfert simple de fichiers entre appareils
  • Définir protocole minimal de transfert (metadata + chunks + ack + reprise simple)
  • Ajouter endpoints/API de partage (liste appareils, push/pull fichier, état transfert)
  • Journaliser les transferts (début, progression, succès/échec)

UX/UI enfants + inspiration Amiga (nouvelle contrainte)

  • Définir un thème visuel enfant inspiré Amiga (palette, icônes, typo, motion)
  • Créer écran home "kids shell" (grille dapps colorée + navigation simple)
  • Ajouter transitions ludiques non bloquantes (sans pénaliser FPS/runtime loop)
  • Standardiser composants UI: bouton, carte app, badge état, feedback action
  • Ajouter règles de lisibilité enfant (texte court, contraste, zones tactiles larges)

Progression technique réalisée (itération courante)

  • Socle apps runtime: registre, lifecycle manager, endpoints /api/apps/*
  • Contrat capacités runtime: flags explicites et gating au lancement dapp
  • Actions scénario app-aware: open_app, close_app, app_action
  • Bonjour/mDNS: service publié _zacus._tcp + découverte peers
  • Partage fichiers simple: endpoints /api/share/peers, /api/share/files, /api/share/upload
  • Spécifications JSON: manifest/streams/progress + registre exemple
  • Direction UX enfant + Amiga: fichier de thème de référence