Second Brain documentation

ADR 0058 – Dossiers intelligents dans l'arborescence

Accepté (2026-10-16, mode autonome ; ligne 26 du backlog, prise sur la recommandation du fil coordinateur)

← Toutes les décisions

ADR 0058 – Dossiers intelligents dans l’arborescence

Statut : Accepté (2026-10-16, mode autonome ; ligne 26 du backlog, prise sur la recommandation du fil coordinateur)

La ligne 26 du backlog (jalon 3, vague 2) demande des dossiers intelligents dans l’arbre. Ce sont des entrées de l’arborescence dont le contenu n’est pas une hiérarchie, mais le résultat d’une requête : « Factures à payer », « À faire aujourd’hui », une recherche enregistrée.

Ce qui existe :

  • les vues (ADR 0028) sont des requêtes nommées dans config/views/ ;
  • la recherche à opérateurs (ADR 0043) les écrit depuis Ctrl+K ;
  • le panneau Arborescence (ADR 0024) montre la hiérarchie des nœuds et les tags les plus utilisés.

Décision

Un dossier intelligent est une vue marquée folder: true

name: factures-a-payer
label: Factures à payer
folder: true          # aussi dans l'arborescence
query: …
  • Pas de nouveau genre de définition. La requête, son tri et son libellé sont ceux de la vue. Un dossier n’est qu’une autre façon d’afficher une vue, comme un widget de dashboard (ADR 0038).
  • Vue contextuelle exclue. Elle dépend d’un nœud (ADR 0036) et n’a pas de sens hors d’une fiche : le chargement refuse folder sur une vue qui déclare context.
  • Recherche enregistrée. « Enregistrer comme vue » (ADR 0043) gagne une case « Afficher dans l’arborescence », qui écrit folder: true.
  • Exemples. factures-a-payer et echeance-aujourdhui deviennent des dossiers.

Dans le panneau Arborescence

  • Section. Une section « Dossiers intelligents » s’ajoute entre l’arbre et les tags, avec une ligne par vue folder, triée par libellé.
  • Une ligne. L’icône de la vue, son libellé, et son compte (12, ou 12+ quand la vue en a plus que les lignes lues : 50 au plus, ou la limite de la vue si elle est plus basse). Un dossier qui ne se charge pas affiche un « ! », avec « Chargement impossible » au survol et pour les lecteurs d’écran.
  • Déplier. Le dossier montre ses nœuds avec les mêmes lignes de 24 px que l’arbre : badge de type, titre, lien vers la fiche, ligne surlignée si c’est le nœud ouvert. Une dernière ligne « Tout voir » ouvre toujours la vue : la page de la vue montre aussi ce que le dossier ne liste pas (lignes au-delà de 50, nœuds masqués jusqu’à une date).
  • Données. Ce sont les résultats habituels de la vue (GET /api/views/{name}/results, 50 lignes, fuseau du navigateur). Il n’y a pas d’endpoint dédié. Une réponse plus ancienne qu’une autre déjà reçue pour le même dossier est ignorée.
  • Mise à jour. Les dossiers sont relus avec l’arbre : à « Actualiser », et quand l’arbre se relit lui-même, après l’enregistrement du nœud affiché, un lien ou une capture. Ils le sont aussi quand le menu « Vue » relit les vues.
  • État mémorisé. L’ouverture des dossiers est retenue dans le navigateur (localStorage), comme une préférence d’affichage.

Reporté

  • Dossier dont les nœuds se déplient à leur tour (sous-arbre de chaque résultat).
  • Glisser un nœud sur un dossier pour lui appliquer la requête (« faire entrer » une facture dans « À payer »).
  • Ordre manuel des dossiers et dossiers imbriqués.

Conséquences

  • Un dossier se crée et se modifie comme une vue, dans config/views/ ou depuis Ctrl+K, et rien d’autre n’est à maintenir.
  • Le panneau fait une requête par dossier à chaque relecture de l’arbre (un enregistrement en déclenche une). Avec quelques dossiers, c’est négligeable ; un compte groupé serait à ajouter si leur nombre grandit.