Studio
Un studio local pour parcourir le contenu, effectuer des recherches dans chaque document, prévisualiser les corps MDX, inspecter les traductions et supprimer des entrées en toute sécurité.
View as Markdownscribe studio # http://127.0.0.1:3600
scribe studio --port 4000
Le studio est un outil de développement local : rendu HTML côté serveur, aucune étape de compilation, pas d'authentification, avec un accès direct à vos fichiers de travail en temps réel. Les agents et les humains éditent les fichiers. Le studio, quant à lui, permet aux humains de visualiser et vérifier tout ce que Scribe gère : parcourir les collections, inspecter les entrées avec la résolution des relations et l'aperçu des ressources, repérer les images défectueuses ou manquantes, et savoir ce qui utilise quoi avant toute modification. Il intègre également le tableau de bord de traduction existant (couverture, liste de travail, instantanés par document, voir la section traduction).
Navigateur de collections
Sur la page /types/:typeId, la barre latérale répertorie chaque type de contenu avec le nombre d'entrées et un badge indiquant les problèmes globaux. Le tableau des entrées affiche chaque slug, une sélection de champs clés dérivée du schéma (les énumérations et les relations sous forme de puces), des indicateurs d'état de traduction et des badges de validation pour chaque entrée.
Les filtres de champs proviennent de l'introspection du schéma et se trouvent dans les paramètres de requête (les URL sont donc partageables et rendues côté serveur). Ainsi, les champs d'énumération deviennent des listes déroulantes, les relations sélectionnent les slugs cibles, les booléens s'affichent sous forme de commutateur, et les chaînes de caractères permettent une recherche par correspondance.
Tout type possédant au moins un champ de ressource permet de basculer le tableau en mode galerie. Chaque carte affiche l'image principale avec son slug, ses champs clés et ses badges. Les filtres s'appliquent de la même manière. C'est le tableau de contrôle idéal pour l'assurance qualité des images générées.
Inspecteur d'entrées
La route /types/:typeId/:enSlug affiche les champs selon leur type introspecté :
- translatable : la valeur accompagnée d'un sélecteur de langue (données provenant du store). Lorsqu'une langue n'a pas de traduction, le repli sur l'anglais est clairement indiqué.
- structural : la valeur brute.
- relation : un lien cliquable vers l'entrée cible. Les références orphelines sont signalées par un badge rouge.
- asset : un aperçu de l'image avec son URL résolue, sa taille et ses dimensions. Si le fichier est manquant, un badge rouge apparaît.
- Used by : une section de référence inversée qui liste toutes les entrées (de n'importe quel type) dont les relations pointent vers celle-ci.
- Body : un commutateur Brut / Aperçu (
?body=preview). L'aperçu affiche correctement le Markdown et le GFM. Les composants JSX inconnus y apparaissent sous forme de blocs étiquetés avec leurs propriétés. Les jetons de relation deviennent des liens cliquables (les liens morts sont clairement visibles) et les jetons de ressource s'affichent comme de véritables images. Un lien de prévisualisation sur le site est disponible pour les types routables.
Les touches fléchées permettent de passer d'une entrée à l'autre. ArrowLeft et ArrowRight naviguent vers l'entrée précédente ou suivante du même type dans l'ordre par défaut de la collection (sans revenir au début), tout en conservant la langue actuelle et les paramètres de requête de l'aperçu. Ces raccourcis sont ignorés lorsque le curseur se trouve dans un champ de saisie.
Navigateur de ressources
La page /assets présente une grille de miniatures par racine gérée. Chaque ressource affiche son aperçu, son chemin, son poids, ses dimensions et une liste d'éléments qui y font référence (répertoriant chaque entrée et champ pointant vers elle, calculée en temps réel à partir de la mémoire). Des badges signalent les éléments non référencés (potentiellement orphelins), manquants mais référencés, trop lourds (dépassant la limite maxKB du champ) et les dérives de format. Consultez la section sur les ressources pour comprendre le système sous-jacent.
Recherche globale
La recherche /search?q= effectue une correspondance de sous-chaîne insensible à la casse sur les slugs anglais, l'ensemble des valeurs du frontmatter et les corps MDX bruts. Un formulaire de recherche est présent sur chaque page. Les résultats, limités à 20 occurrences par type, sont regroupés par type et accompagnés d'un extrait surligné.
Suppression d'entrées
La barre d'outils de l'inspecteur propose un bouton Delete affiché en rouge pour signaler le danger. Celui-ci ouvre une page de confirmation présentant le plan de suppression détaillé par sections (suppressions en cascade, détachements, ressources affectées, décomptes du store par langue et éventuels blocages), suivi d'un bouton de confirmation rouge (ou, en cas de blocage, de la liste des obstacles sans bouton de validation). Confirmer exécute strictement ce plan : le fichier source, ses ressources, ses traductions et instantanés stockés, ainsi que toute réécriture de détachement (et rien de plus). Le comportement du plan dépend du mode onTargetDelete d'une relation (restrict, detach ou cascade) et du mode onDelete d'une ressource. Ce même plan est accessible en ligne de commande via scribe delete. Il s'agit de la seule route du studio permettant d'effectuer des modifications. L'outil reste donc limité à un usage en local (localhost).
Ce que le studio ne fait pas
Pas d'édition de contenu, de déclenchement de traductions, de téléchargement d'images, d'authentification ou de véritable rendu de composants MDX. La rédaction reste dans votre éditeur et sur git, le studio est strictement réservé à la révision.