Approfondissement et annexes

Le dossier de données et le format des fichiers

Sommaire

Le dossier de données (dans l’univers Markdown, on parle aussi de « vault ») est le dossier dans lequel TandemLoop enregistre toutes vos données. Il se compose uniquement de fichiers texte ordinaires — du Markdown avec un en-tête YAML — et se trouve à l’emplacement que vous choisissez lors de la configuration — en local ou dans iCloud Drive. Il peut ainsi être lu par d’autres outils, par des agents IA et bien sûr par vous-même avec n’importe quel éditeur de texte.

Structure des dossiers

{dossier de données}/
  AGENTS.md                  ← mode d’emploi pour les agents IA
  _inbox/                    ← tâches saisies rapidement (boîte de réception GTD)
  bereiche/                  ← vos domaines (un sous-dossier chacun)
    {domaine}/
      area_{slug}.md         ← métadonnées du domaine
      _projects/             ← projets du domaine
      _singles/              ← tâches isolées directement dans le domaine
      _folders/              ← dossiers facultatifs
        {dossier}/
          fld_{slug}.md      ← métadonnées du dossier
          _projects/
          _singles/
  _config/                   ← configuration (tags, attributs, thèmes, affichage, langue)
    tags.yaml
    attributes/              ← attributs personnalisés (un fichier par attribut)
      {clé}.yaml
    themes/                  ← thèmes (un fichier par thème)
      {clé}.yaml
    agent.yaml               ← dernier passage de votre agent IA (écrit par l’agent)
    language.yaml            ← langue du dossier de données
  _views/                    ← vues enregistrées (aussi dans des sous-dossiers)
    vw_{slug}.yaml
  _proposals/                ← propositions de l’IA
    prop_{slug}.md
  _archive/                  ← entités archivées (ne pas modifier à la main)
  _conflicts/                ← copies de conflit iCloud sauvegardées
  _system/                   ← schéma et documents de référence générés

Les répertoires préfixés par _ sont des dossiers système gérés par l’app.

ID d’entité et préfixes de nom de fichier

Chaque entité porte dans le champ id de son frontmatter un ID stable basé sur un UUID. Le nom de fichier en est indépendant et suit un slug lisible. Seules les vues, les dossiers de vues (vf_…) et les propositions portent leur slug dans l’ID. Des fichiers plus anciens peuvent encore avoir des ID sous forme de slug (par exemple area_arbeit).

Entité Préfixe Exemple d’ID Exemple de nom de fichier
Tâche tsk_ tsk_f66f123ebac0402f… tsk_logo-entwerfen.md
Projet prj_ prj_03ebb2b6286f4a9f… prj_website-relaunch.md
Domaine area_ area_4f8e2d1c0b9a4e… area_arbeit.md
Dossier fld_ fld_a1b2c3d4e5f647… fld_kunden.md
Jalon ms_ ms_9fd12a6f440a4c… ms_sprint-1.md
Tag tag_ tag_a1b2c3d4e5f647… (dans _config/tags.yaml)
Vue vw_ vw_signal-tasks vw_signal-tasks.yaml
Proposition prop_ prop_inbox-aufraeumen prop_inbox-aufraeumen.md
Attribut attr_ attr_3f2e9a0b4c5d… _config/attributes/client.yaml
Thème thm_ thm_7c1d0e9f2a4b… _config/themes/nordlicht.yaml

Le contrat de données

Le format de fichier repose sur trois principes :

Lecture tolérante : L’app lit les fichiers même s’il manque des champs, s’ils contiennent des valeurs de statut inconnues ou s’ils proviennent de versions antérieures. Ainsi, un élément modifié à la main ou créé par un agent IA ne bloque pas toute l’app.

Écriture stable : Lorsqu’elle met à jour un fichier, l’app conserve l’ordre des champs existants et les informations présentes. Les champs inconnus ajoutés par un éditeur externe sont préservés. Les champs ajoutés ultérieurement, comme un rappel (remind_at), sont placés par l’app à la fin du frontmatter ; les champs vides figurent avec la valeur null, seuls quelques-uns comme remind_at et repeat: sont totalement absents tant qu’ils ne sont pas définis.

Lisible par les machines : Comme il s’agit de fichiers Markdown en texte brut, les agents IA et d’autres outils peuvent lire directement le dossier de données. Les modifications qu’ils peuvent effectuer directement sont décrites dans le chapitre Collaborer avec des agents IA.

Attributs personnalisés

Les attributs personnalisés (dans les réglages, sous Attributs) ajoutent des champs supplémentaires aux tâches, aux projets et aux jalons. Chaque attribut est un petit fichier YAML dans _config/attributes/ — le nom du fichier est la clé de l’attribut :

key: client
name: Client
type: select
applies_to:
  - task
  - project
options:
  - ACME
  - Contoso
description: Le client pour lequel le travail est réalisé.

Les valeurs figurent dans le frontmatter du fichier concerné, sous attributes: :

attributes:
  client: ACME
  budget: 12000
  recette: '2026-11-30'
  • Types : text, number (nombre), date ('AAAA-MM-JJ'), boolean (oui/non), select (une des options), url (lien).
  • Les clés se composent de lettres minuscules, de chiffres et de traits de soulignement, et ne doivent correspondre à aucun champ intégré comme status ou due_date. Une clé ne peut plus être modifiée par la suite.
  • Les champs vides ne sont pas enregistrés. La suppression d’un attribut n’efface pas ses valeurs — elles restent dans les fichiers et apparaissent dans l’inspecteur sous forme de ligne en lecture seule.
  • Dans les vues, les attributs sont disponibles sous la forme de champs attributes.<clé> pour filtrer, trier et grouper.

Les agents IA peuvent créer eux-mêmes des attributs : Si vous demandez par exemple à un agent « Crée un attribut Budget pour les projets », il écrit un fichier dans _config/attributes/. L’app le détecte aussitôt et affiche le nouveau champ.

Tâches récurrentes

La règle de répétition figure dans le frontmatter de la tâche sous repeat:, par exemple chaque lundi :

repeat:
  unit: week
  days: [mon]

unit vaut day, weekday, week, month ou year ; s’y ajoutent éventuellement every (intervalle), day ou nth + weekday (règles mensuelles), from: completion (à partir de l’achèvement) ainsi que until ou count pour la fin. Les clés series, occurrence et next sont gérées par l’app elle-même. La référence complète pour les agents se trouve dans _system/docs/data-model.md.

Thèmes

Chaque thème est un fichier YAML dans _config/themes/ — le nom du fichier sans extension est sa clé (nordlicht.yaml → nordlicht). Un thème ne cite que les couleurs qui diffèrent de celles par défaut :

name: Nordlicht
description: Bleu pétrole froid avec des surfaces sombres.
appearance: system        # system, light ou dark
font_design: rounded      # default, rounded, serif ou monospaced
colors:
  primary:
    light: "#0F766E"
    dark: "#2DD4BF"
  danger: "#E5484D"       # une seule valeur pour clair et sombre

Les couleurs s’écrivent en valeur hexadécimale entre guillemets, avec l’opacité sous la forme #RRGGBBAA. Les clés de couleur disponibles, celles qui sont dérivées d’autres couleurs et les valeurs par défaut sont décrites dans _system/docs/themes.md — TandemLoop tient cette référence à jour lui-même, afin que les agents IA puissent concevoir des thèmes adaptés. Le thème actif est enregistré séparément sur chaque appareil ; les fichiers de thème, eux, sont synchronisés avec le dossier de données.

Le bloc de relations

Chaque fichier de tâche, de projet, de jalon et de dossier — sauf les tâches de la boîte de réception — contient à la fin de son corps une courte section lisible par les machines, qui enregistre le rattachement au parent sous forme de liens Markdown relatifs — ici pour une tâche du projet « Website Relaunch » :

<!-- tandemloop:relations:start -->
[Bereich: Arbeit](../../../area_arbeit.md) · [Projekt: Website Relaunch](../prj_website-relaunch.md)
<!-- tandemloop:relations:end -->

L’app tient ce bloc à jour automatiquement ; il n’est pas nécessaire de le modifier à la main ; les agents IA l’omettent dans les nouveaux fichiers et le retirent lors d’un déplacement. Il permet aux outils et aux agents de comprendre le rattachement hiérarchique même sans l’index en mémoire de l’app.

Langue du dossier de données

Les quelques textes que TandemLoop écrit lui-même dans les fichiers — les libellés du bloc de relations (Bereich: / Area:…), les titres de l’historique d’une tâche (## Du — 21.3.2026 / ## You — 2026-03-21), les sections d’une proposition (## Diskussion / ## Discussion) et les instructions pour les agents IA (AGENTS.md, _system/docs/) — dépendent de la langue du dossier de données. Elle est indiquée dans _config/language.yaml :

language: en

Les nouveaux dossiers de données sont en anglais ; les dossiers sans ce fichier (issus de versions antérieures) restent en allemand. La langue du dossier de données ne dépend pas de la langue de l’appareil — ainsi, tous les appareils écrivent les mêmes fichiers. À la lecture, TandemLoop reconnaît les deux variantes.

Modifier directement le dossier de données — avec prudence. Vous pouvez ouvrir les fichiers avec n’importe quel éditeur de texte. Attention : les ID ne doivent jamais être modifiés ; dans le frontmatter des fichiers Markdown, les dates sont entre apostrophes droites ('2026-03-14T09:30:00'), et dans les fichiers de vue et de configuration (_views/, _config/) sans guillemets ; le dossier _archive/ ne doit pas être modifié à la main. Pour les changements de structure (déplacer des projets, renommer des tags), utilisez plutôt l’app ou le mécanisme des propositions — sinon, l’index interne peut devenir incohérent.

Plusieurs appareils : synchronisation via iCloud Drive

TandemLoop n’a pas de serveur propre et ne transmet de lui-même aucune donnée sur le réseau. Comme votre dossier de données est un dossier tout à fait ordinaire, vous l’utilisez sur plusieurs appareils en le plaçant dans iCloud Drive. iCloud tient les fichiers à jour entre le Mac, l’iPad et l’iPhone ; TandemLoop lit le même dossier sur chaque appareil et télécharge au besoin depuis iCloud les fichiers manquants.

Réglages › Dossier de données › Changer de dossier de données… › choisir un répertoire dans iCloud Drive

Ne pas écrire sur deux appareils en même temps. Les services cloud synchronisent au niveau des fichiers et ne connaissent pas l’organisation interne de votre dossier de données. Dans la mesure du possible, modifiez vos données sur un seul appareil à la fois et attendez la fin de la synchronisation avant d’utiliser l’appareil suivant — sinon, des copies de conflit de certains fichiers peuvent apparaître. Il en va de même si un outil d’IA accède en même temps au même dossier de données dans le cloud.

La synchronisation ne remplace pas une sauvegarde. Une synchronisation cloud répercute aussi les suppressions sur tous les appareils. Pour de vraies sauvegardes, utilisez en plus Time Machine ou l’historique des versions de votre service cloud, par exemple.