Persistance
Ce que MadoHub enregistre, où et comment.
MadoHub persiste l'état de votre espace de travail sur disque afin que tout soit restauré lorsque vous relancez l'application. Toutes les données persistantes de l'espace de travail sont stockées localement sur votre machine.
Emplacement de stockage
Tous les fichiers sont stockés dans ~/.madohub/ :
~/.madohub/
├── canvas-state.json # État complet du canevas
├── config.json # Configuration de l'application
├── chat-history.json # Historique des messages du chat
├── memory-policies.json # Politiques d'injection automatique de mémoire
├── templates/
│ └── <slug>.json # Un fichier par modèle d'espace de travail enregistré
├── flows/
│ └── <id>.json # Un fichier par flow enregistré
├── logs/
│ └── madohub.log # Journaux de l'application
├── notifications/ # Marqueurs de complétion du hook Stop
└── orchestrator/ # État du mode orchestrateurCe qui est enregistré
État du canevas (canvas-state.json)
| Données | Détails |
|---|---|
| Tiles | Type, position, taille, z-index, chemins de fichier, répertoire de travail |
| Frames | Chemins des espaces de travail, couleurs, positions |
| Viewport | Décalage du panoramique (X/Y) et niveau de zoom |
| Connections | Toutes les connexions de routage avec leur configuration de déclencheur/transformation |
| Settings | Fournisseur API, clé, modèle ; état du hook de notification |
| Max z-index | Pour l'ordre d'empilement des nouveaux tiles |
| Dismissed sessions | Sessions tmux masquées |
Configuration de l'application (config.json)
| Données | Détails |
|---|---|
| Hooks state | Indique si les hooks de notification Claude Code sont activés |
| Workspaces (hérité, inactif) | Le schéma de configuration définit toujours une liste de répertoires de projet enregistrés et un ID d'espace de travail actif, mais aucun chemin de code du frontend n'appelle les fonctions de sauvegarde/chargement correspondantes : c'est du code mort. Le concept actuel pour l'état par projet, ce sont les frames, stockés dans canvas-state.json. |
Comment fonctionne l'enregistrement
- Sauvegarde automatique : se déclenche à chaque changement du canevas, d'une connexion ou des paramètres.
- Différée : délai de 500 ms pour regrouper les changements rapides.
- Écriture atomique : les données sont d'abord écrites dans un fichier voisin unique (
<name>.tmp.<pid>.<seq>), puis renommées à leur emplacement final. Cela évite toute corruption si l'application plante pendant l'écriture. - Récupération après corruption : si un fichier ne peut pas être analysé comme du JSON au chargement, ses octets sont mis en quarantaine dans un fichier voisin nommé par empreinte de contenu
<name>.corrupt.<hash>(stable d'un redémarrage à l'autre), et le chargement se rabat sur les valeurs par défaut plutôt que d'échouer.
Ce qui n'est PAS enregistré
- Le contenu des sessions de terminal (la sortie PTY est éphémère)
- Le contenu du presse-papiers