paneflow.json est un fichier JSON propre à l'utilisateur. Toutes les
clés sont optionnelles, et {} est une configuration valide. Le loader
Rust et les résolveurs runtime sont la source du comportement ; le
JSON Schema
publié reflète les clés publiques pour la validation éditeur et
l'autocomplétion.
Les clés top-level inconnues sont ignorées au runtime, mais signalées par le schéma dans les éditeurs. Une sauvegarde valide est rechargée par le watcher de config. Pendant le hot reload, un JSON invalide garde la dernière config valide au lieu de diffuser les defaults. Au démarrage, un fichier invalide retombe sur les defaults et logue un avertissement.
Emplacements
| Plateforme | Chemin |
|---|---|
| Linux et macOS | ~/.paneflow/paneflow.json |
| Windows | %USERPROFILE%\.paneflow\paneflow.json |
PANEFLOW_HOME déplace tout le dossier (config, session, worktrees, cache,
binaires auxiliaires). Une configuration trouvée aux anciens emplacements
(~/.config/paneflow, ~/Library/Application Support/paneflow,
%APPDATA%\paneflow) est copiée dans ~/.paneflow au premier lancement.
Schéma éditeur
Ajoute ceci en haut du fichier pour l'autocomplétion dans VS Code, Zed, les IDE JetBrains, Helix et les autres éditeurs compatibles JSON Schema :
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0"
}Clés top-level
| Clé | Type | Défaut | Application | Notes |
|---|---|---|---|---|
$schema | string | aucun | Éditeur seul | Pointe l'éditeur vers le schéma publié. Ignoré par Paneflow. |
$schemaVersion | string | 1.0.0 | Démarrage/reload | Une version inconnue logue un warning sans bloquer le chargement. |
default_shell | string/null | repli shell plateforme | Nouveau terminal | Unix : configuré -> $SHELL -> /bin/sh. Windows : configuré -> pwsh.exe -> powershell.exe -> %ComSpec% -> C:\Windows\System32\cmd.exe -> cmd.exe. |
theme | string/null | Paneflow Dark | Hot reload | Variante claire ou sombre d'un preset : Paneflow, Vercel, Claude, Cursor, Tailwind. Les noms antérieurs aux presets (One Dark, PaneFlow Light, Vercel, Claude, Cursor) restent résolus. La recherche runtime ignore la casse. |
theme_mode | string/null | dark | Hot reload | light et dark forcent le thème intégré correspondant ; system suit l'apparence de l'OS. |
font_family | string/null | JetBrainsMono Nerd Font embarquée | Cache hot reload | Accepte .PaneflowMono, JetBrainsMono NF, JetBrainsMono NFM, .PaneflowSans, les polices embarquées ou une monospace système installée. |
font_fallbacks | string array/null | pile de repli GPUI | Cache hot reload | Familles de repli consultées quand font_family ne couvre pas un glyphe. |
font_size | number/null | 13.0 | Cache hot reload | Taille en points, plage 8.0 à 32.0 ; une valeur invalide retombe sur 13.0. |
font_weight | string/null | normal | Cache hot reload | thin, extra_light, light, semi_light, normal, medium, semi_bold, bold, extra_bold, black, extra_black. |
line_height | number/null | 1.0 | Cache hot reload | Multiplicateur de la hauteur de ligne propre à la police (ascent, descent et line gap), plage 0.8 à 2.5. La cellule est arrondie au pixel physique. |
cell_width | number/null | 1.0 | Cache hot reload | Multiplicateur de l'avance de la police, plage 0.8 à 2.0. La cellule est arrondie au pixel physique. |
unfocused_pane_opacity | number/null | 1.0 | Hot reload | Opacité des panneaux qui n'ont pas le focus, quand un workspace contient plus d'un panneau. Plage 0.15 à 1.0 ; 1.0 désactive l'atténuation. |
reduce_motion | boolean/null | false | Hot reload | Réduit les mouvements non essentiels de l'interface : les transitions au survol s'appliquent instantanément et les animations décoratives rendent une image fixe. Le défilement au pavé tactile dans un terminal avance par lignes entières au lieu de suivre le geste au pixel près. |
sidebar_show | object/null | tout désactivé | Hot reload | Ce qu'une ligne d'onglet de session affiche en plus de son nom : branch ajoute sa branche git, diffstat ajoute ses compteurs d'insertions et de suppressions, pr remplace l'icône de branche par un glyphe de pull request coloré selon l'état de la demande quand il en existe une, indent_guide trace un filet sous l'icône de dossier d'un espace de travail, le long de ses lignes d'onglets. Les deux premiers lisent le worktree lié à l'onglet, ou le checkout de son espace de travail quand l'onglet n'est lié à rien ; pr nécessite la CLI gh et ne répond que pour les dépôts distants GitHub. Se règle depuis le menu Customize Sidebar du rail. |
worktrees | object/null | voir plus bas | Rechargement à chaud | Où Paneflow range les worktrees git qu'il crée pour les branches et comment il les nettoie : dir, auto_remove, keep_limit, for_new_branches. Settings > Worktrees édite les mêmes clés. |
window_decorations | string/null | client | Démarrage | client dessine le chrome Paneflow ; server délègue au compositeur OS. |
window_backdrop | string/null | auto | Démarrage | auto, mica, blurred, acrylic, transparent, opaque ou off. Sous Windows, blurred et acrylic définis dans la config reviennent à auto ; seule PANEFLOW_WINDOW_BACKDROP y applique le flou. PANEFLOW_WINDOW_BACKDROP surcharge un lancement. |
windows_terminal_material | boolean/null | false | Rendu fenêtre/terminal | Windows seulement. Active le matériau derrière le fond terminal. Le style d'interface Blended le passe à true, Themed à false. Ignoré ailleurs. |
windows_chrome_material | boolean/null | false | Rendu fenêtre/chrome | Windows seulement. Active le matériau natif dans la carte de navigation principale. Le style d'interface Blended le passe à true, Themed à false. Ignoré ailleurs. |
macos_chrome_material | boolean/null | false | Rendu fenêtre/chrome | macOS seulement. Active le matériau Sidebar natif dans la carte de navigation principale. Le style d'interface Blended le passe à true, Themed à false. Ignoré ailleurs. |
linux_terminal_material | boolean/null | false | Rendu fenêtre/terminal | Linux seulement. Rend la carte du terminal translucide au-dessus du voile de la fenêtre, pour laisser passer le flou du compositeur. Le style d'interface Blended le passe à true, Themed à false. Ignoré ailleurs. |
linux_chrome_material | boolean/null | false | Rendu fenêtre/chrome | Linux seulement. Pose un voile translucide derrière la sidebar et la barre de titre, pour laisser passer le flou du compositeur. Le style d'interface Blended le passe à true, Themed à false. Ignoré ailleurs. |
option_as_meta | boolean/null | true sous Linux et Windows, false sous macOS | Hot reload | Envoie Alt/Option comme Meta avec préfixe ESC. Sur macOS, true fait envoyer Meta à Option plus une lettre au lieu de composer un caractère ; garde false si Option doit produire des caractères Unicode. Un rechargement de la config l'applique aux terminaux ouverts. |
shell_integration | boolean/null | true | Nouveau terminal | Active les snippets shell Paneflow pour OSC 7 CWD et OSC 133. |
editor | object/null | minimap off, scrollbar on | Rechargement à chaud | Ce que l'éditeur de code dessine à côté du texte : minimap ajoute une minimap le long du bord droit, scrollbar conserve la barre de défilement verticale. Se règle depuis le menu de contrôles de l'éditeur ; le choix s'applique à chaque fichier ouvert. |
automation | object/null | tout désactivé | Rechargement à chaud | Travail de fond lancé après un tour d'agent : tab_auto_naming résume les derniers échanges de la session en un nom d'onglet de 2 à 5 mots via la CLI de l'agent (claude -p, codex exec, opencode run, pi --print) sans outils, au plus une fois toutes les trois minutes par session et seulement si la conversation a grandi. Un nom que vous avez saisi n'est jamais remplacé ; « Reset name » rouvre l'onglet à ce nom. |
submit_paste_delay_ms | integer/null | 70 | Envoi IPC | Délai plancher entre bracketed paste et Enter pour paneflow send --submit. Plage 10 à 5000. |
external_editor | string/null | auto | Prochaine ouverture | Éditeur qui ouvre les liens de fichiers, y compris ceux du terminal : auto, system, zed, cursor, windsurf, code ou visual_studio. auto utilise $VISUAL, puis $EDITOR, puis le premier éditeur connu présent dans le PATH ; system passe toujours par l'ouvreur de l'OS. Un éditeur nommé absent du PATH retombe sur auto. |
shortcuts | object | {} | Hot reload | Mappe des frappes vers des noms d'actions. Voir raccourcis et actions. |
terminal | object/null | defaults ci-dessous | Mixte | Réglages terminal, renderer et PTY. |
commands | array | [] | Settings/Run | Entrées de palette et modèles de workspace. |
agent_profiles | array | [] | Rechargement à chaud | Entrées de lancement personnalisées qui exécutent un agent intégré avec des variables d'environnement et des arguments en plus, par exemple un second compte Claude Code via CLAUDE_CONFIG_DIR. Settings > Agents > Profiles édite la même liste. |
claude_code_bypass_permissions | boolean/null | false | Prochain lancement Claude | Ajoute --permission-mode bypassPermissions au lanceur Claude Code. Option risquée. |
ai_unrestricted | boolean/null | false | Chaque appel IPC | Autorise les conducteurs fiables à soumettre vers d'autres panneaux sans PANEFLOW_IPC_SCRIPTING. |
ai_injection_fence | boolean/null | true | Chaque lecture | Encapsule surface.read dans une clôture de sortie non fiable par défaut. |
on_quit | ask, keep, stop, null | ask | À la fermeture | Ce que fait la fermeture de l'app quand des sessions hébergées tournent : ask ouvre le dialogue de fermeture, keep laisse toutes les sessions tourner, stop les arrête toutes et éteint l'hôte. Sans session active, l'app quitte et éteint l'hôte inactif. |
sidebar_ended_sessions | 0, 3, 5, 10, null | 5 | Prochain rendu de la barre latérale | Nombre de sessions terminées qu'un workspace prévisualise dans la barre latérale avant que le reste se replie sous une ligne « N autres sessions terminées ». Rien n'est supprimé ; le plafond ne règle que l'aperçu. |
agent_panel | object/null | defaults ci-dessous | Agents UI | Notifications de la vue Agents. |
agents | object/null | defaults ci-dessous | Restauration et prochain lancement | Restauration des conversations d'agent et pré-attribution de l'identifiant de session Claude Code. |
telemetry | object/null | { "enabled": null } | Démarrage/consentement | Consentement télémétrie desktop. PANEFLOW_NO_TELEMETRY=1 le surcharge. |
Boutons de lancement d'agents
Chaque clé de bouton est boolean/null. null ou l'omission auto-détecte
le binaire CLI. false masque le bouton. true force son affichage.
Sous Windows, la palette de pane, le menu New pane et l'écran d'accueil ne
proposent que Claude Code, Codex, Amp, Gemini et Copilot, les runtimes qui
déclarent le support de Windows, et masquent les entrées agent_profiles
basées sur les autres. Linux et macOS gardent tous les agents ci-dessous.
| Clé | Agent |
|---|---|
claude_code_button_visible | Claude Code |
codex_button_visible | Codex |
opencode_button_visible | OpenCode |
pi_button_visible | Pi |
hermes_agent_button_visible | Hermes Agent |
grok_button_visible | Grok |
amp_button_visible | Amp |
gemini_button_visible | Gemini |
copilot_button_visible | Copilot |
factory_button_visible | Factory |
openclaw_button_visible | OpenClaw |
muse_button_visible | Muse Code |
fx_button_visible | fx (Linux et macOS) |
terminal
| Clé | Type | Défaut | Application | Notes |
|---|---|---|---|---|
terminal.ligatures | boolean/null | true | Cache hot reload | Active les ligatures de programmation quand la police les supporte. |
terminal.integrated_glyphs | boolean/null | true | Hot reload | Dessine les glyphes de blocs intégrés comme des quads remplis. |
terminal.color_emoji | boolean/null | true | Hot reload | Utilise le chemin emoji couleur de la plateforme. |
terminal.cursor_color | string/null | curseur du thème | Hot reload/nouveau terminal | #RRGGBB, RRGGBB, #RGB ou RGB. |
terminal.scrollbar | boolean/null | true | Nouvelle vue terminal | Barre de défilement en surimpression, visible pendant le défilement ou au survol du bord droit d'un volet. |
terminal.scrollback_lines | integer/null | 10000 | Nouveau terminal | Plage 100 à 100000. Cached plafonne à 1000. |
terminal.cursor_shape | string/null | block | Nouveau terminal | vintage, block, beam, underline, double_underline ou hollow. |
terminal.osc52_clipboard | string/null | copy | Création d'une vue terminal | Disponible depuis v0.17.5. copy autorise le terminal focalisé à écrire dans le presse-papiers système via OSC 52 ; off refuse toutes les écritures OSC 52. La lecture du presse-papiers via OSC 52 est toujours refusée. Les vues terminal existantes conservent leur réglage jusqu'à leur recréation. |
terminal.xt_checksum_report | boolean/null | false | Nouvelle session | Disponible depuis v0.17.7. Répond aux requêtes de checksum DECRQCRA (CSI Pi ; Pg ; Pt ; Pl ; Pb ; Pr * y), dont dépendent des suites de conformité comme vttest et esctest. Désactivé par défaut, car un programme en cours d'exécution peut calculer le checksum de l'écran cellule par cellule et relire ainsi tout ce qu'il affiche, y compris la sortie d'autres programmes. Tant qu'il est désactivé, XTCHECKSUM (CSI Ps # y) est aussi ignoré. Le host de sessions le lit à chaque démarrage de session. |
terminal.xt_checksum_extension | integer/null | 0 | Nouvelle session | Disponible depuis v0.17.7. Mode de calcul du checksum DECRQCRA, avec les bits de XTCHECKSUM et du checksumExtension de xterm : 1 garde le résultat positif, 2 ignore les attributs vidéo des cellules, 4 compte les blancs, 8 compte comme des espaces les cellules jamais écrites, 16 utilise les points de code complets au lieu des valeurs DEC sur 8 bits. 0 correspond au calcul d'un vrai terminal DEC. Plage 0 à 31. Une valeur hors plage, comme 32, -1, 1.5 ou "4", ne retire que cette clé : elle retombe à 0 avec un avertissement qui nomme la clé et la plage, et le reste du fichier s'applique, au démarrage comme au rechargement. Un reset complet (ESC c) revient à cette valeur. |
terminal.cursor_blink | string/null | terminal_controlled | Nouveau terminal | on, off ou terminal_controlled. |
terminal.env | object/null | aucun | Nouveau terminal | Variables injectées dans chaque nouveau terminal. Le env de surface gagne en cas de collision. Les valeurs sont transmises telles quelles : pas d'expansion de ~ ni de $NAME, contrairement à agent_profiles.*.env. Les clés que Paneflow définit pour chaque terminal, comme TERM, ZDOTDIR et les variables PANEFLOW_*, sont ignorées et journalisées une fois. LANG vaut en_US.UTF-8 par défaut uniquement quand LANG, LC_ALL et LC_CTYPE sont tous non définis. |
terminal.scroll_multiplier | number/null | 1.0 | Nouvelle vue terminal | Plage 0.1 à 10.0. Ignoré en mouse-reporting et en scroll alternate-screen. |
terminal.minimum_contrast | number/null | Auto (60) | Hot reload | Contraste APCA (Lc) minimal imposé entre le texte et le fond de sa cellule, sur les couleurs choisies par un programme (truecolor et indices de palette 16 à 255). Les seize couleurs ANSI du thème, son premier plan et son fond ne sont jamais corrigés. Non défini, il vaut Auto, soit 60 sur chaque thème ; 0 désactive la correction ; une valeur négative ou non numérique vaut Auto. Plage 0 à 90. |
agent_panel
| Clé | Type | Défaut | Notes |
|---|---|---|---|
agent_panel.notify_when_agent_waiting | string/null | Never | PrimaryScreen, AllScreens ou Never. Régit aussi les notifications de bureau que les programmes du terminal envoient avec OSC 9 ou OSC 777. |
agents
| Clé | Type | Défaut | Notes |
|---|---|---|---|
agents.restore_conversations | boolean/null | true | Quand la session hébergée d'un panneau n'a pas survécu, par exemple après un redémarrage, Paneflow ouvre un shell dans le dossier enregistré et tape la commande de reprise du runtime pour la dernière conversation lancée dans ce panneau. Mettez false pour seulement rouvrir le shell. |
agents.claude_preassign_session_id | boolean/null | false | Le shim Claude Code ajoute --session-id <uuid> à un nouveau lancement interactif de claude, pour que Paneflow connaisse la conversation avant l'arrivée du moindre hook. Lu par les panneaux lancés après le changement. |
worktrees
Paneflow crée un worktree git quand tu ouvres une branche depuis la palette
« New pane », le menu contextuel d'un onglet ou paneflow up. Rien n'est écrit dans le
checkout : le marqueur de propriété vit dans le git dir propre au worktree
(.git/worktrees/<name>/ dans le dépôt principal), donc git status reste
propre et le marqueur disparaît avec le worktree. Settings > Worktrees édite
les mêmes clés et liste les worktrees que Paneflow gère.
Laisser le nom de branche vide dans la palette crée un checkout détaché sur la
base choisie, nommé <base>-<sha7> ; « Create branch here… » dans le menu
contextuel de l'onglet le transforme en branche plus tard, en gardant les
modifications non commitées.
Un fichier .worktreeinclude à la racine du dépôt liste les fichiers et
dossiers ignorés par git à copier dans chaque nouveau worktree, un chemin par
ligne relatif à la racine, # pour les commentaires, / final optionnel pour
les dossiers. Sans ce fichier, Paneflow copie les .env* de premier niveau et
AGENTS.override.md s'ils existent. Un fichier déjà présent dans le worktree
n'est jamais écrasé.
Avant de supprimer un worktree géré, automatiquement ou à la main, Paneflow
sauvegarde ses modifications non commitées dans un commit de snapshot sous
refs/paneflow/snapshots/ dans le dépôt principal : éditions suivies,
nouveaux fichiers et la branche courante. Settings > Worktrees liste les
snapshots ; Restore recrée le worktree avec ces modifications non commitées
sur la même branche, Delete supprime la ref. Un worktree propre ne laisse
aucun snapshot.
| Clé | Type | Défaut | Notes |
|---|---|---|---|
worktrees.dir | string/null | ~/.paneflow/worktrees | Dossier racine des worktrees gérés. Chaque dépôt reçoit un sous-dossier <repo>-<hash>, chaque branche un dossier dedans. Le défaut est ~/.paneflow/worktrees sur toutes les plateformes (%USERPROFILE%\.paneflow\worktrees sur Windows). ~ désigne le dossier personnel. Les worktrees créés sous une racine antérieure, y compris l'ancien voisin <repo>.worktrees/, continuent de fonctionner là où ils sont. |
worktrees.auto_remove | boolean/null | true | Supprime un worktree géré à la fermeture de son workspace, et rogne les plus anciens au-delà de keep_limit. Les modifications non commitées sont d'abord sauvegardées dans un snapshot, et la branche n'est jamais supprimée. false garde chaque worktree jusqu'à sa suppression depuis Settings > Worktrees ou le menu de l'onglet. |
worktrees.keep_limit | integer/null | 15 | Nombre de worktrees gérés à conserver avant que les plus anciens sans onglet ouvert soient supprimés. De 0 à 200. |
worktrees.for_new_branches | boolean/null | true | État par défaut du toggle Worktree du formulaire New branch. true crée un worktree pour la branche ; false bascule le checkout du workspace dessus, et le pane s'ouvre à la racine du dépôt. Le toggle réécrit cette clé, et la bascule est refusée tant qu'un agent travaille dans ce checkout. |
{
"worktrees": {
"dir": "~/worktrees",
"auto_remove": true,
"keep_limit": 15
}
}agent_profiles
agent_profiles est une liste. Chaque entrée ajoute un item de lancement qui
exécute l'un des agents intégrés avec des variables d'environnement et des
arguments en plus. Les profils apparaissent dans la palette de pane à côté
des agents intégrés, et gardent le suivi de statut, les
hooks et les sessions de l'agent de base. Settings > Agents >
Profiles édite la même liste.
| Clé | Type | Défaut | Notes |
|---|---|---|---|
agent_profiles.*.name | string | requis | Libellé affiché dans le lanceur. |
agent_profiles.*.agent | string | requis | Tag de l'agent de base : claude_code, codex, opencode, pi, hermes, grok, amp, gemini, copilot, factory ou openclaw. |
agent_profiles.*.env | object | {} | Variables d'environnement posées sur le processus de l'agent. Un ~ en tête désigne le dossier personnel, et $NAME, ${NAME} ou %NAME% n'importe où dans la valeur prend cette variable dans l'environnement de Paneflow. Un $ ou % qui ne nomme rien reste littéral ; un nom que l'environnement ne définit pas est refusé par l'éditeur des Settings et, dans une config écrite à la main, laisse la valeur entière intacte avec un avertissement dans le log. |
agent_profiles.*.args | string array | [] | Arguments ajoutés après les propres options de l'agent de base. Chaque token doit être un mot simple : lettres, chiffres, -, _, ., =. |
Une entrée avec un tag d'agent inconnu, un nom vide ou un token non sûr est ignorée avec un avertissement ; les autres profils se chargent quand même.
{
"agent_profiles": [
{
"name": "Claude perso",
"agent": "claude_code",
"env": { "CLAUDE_CONFIG_DIR": "~/.claude-perso" },
"args": ["--model", "opus"]
}
]
}commands
Les entrées commands alimentent à la fois les commandes shell simples
et les modèles Settings > Workspaces. Une entrée doit avoir name;
workspace et command sont mutuellement exclusifs.
| Clé | Type | Défaut | Notes |
|---|---|---|---|
commands[].name | string | requis | Nom affiché. Ne peut pas être vide. |
commands[].description | string/null | aucun | Description lisible par l'utilisateur. |
commands[].keywords | string array | [] | Mots-clés de recherche floue. |
commands[].workspace | object/null | aucun | Modèle de workspace. |
commands[].command | string/null | aucun | Commande shell simple. |
Clés d'un modèle de workspace :
| Clé | Type | Défaut | Notes |
|---|---|---|---|
commands[].workspace.name | string/null | nom de commande | Nom affiché du workspace. |
commands[].workspace.cwd | string/null | cwd courant | Répertoire par défaut du workspace. |
commands[].workspace.layout_preset | string/null | aucun | even_h, even_v, main_vertical ou tiled. |
commands[].workspace.color | string/null | aucun | Couleur d'accent hex à six chiffres, sans #. |
commands[].workspace.layout | object/null | layout du preset | Racine de l'arbre de layout. |
Clés de layout :
| Clé | Type | Notes |
|---|---|---|
commands[].workspace.layout.type | string | pane ou split. |
commands[].workspace.layout.surfaces | array | Requis pour les noeuds pane. |
commands[].workspace.layout.direction | string | Requis pour split : horizontal ou vertical. |
commands[].workspace.layout.ratio | number/null | Ancien ratio de split binaire, plage 0.1 à 0.9. Ignoré si ratios existe. |
commands[].workspace.layout.ratios | number array/null | Ratios par enfant pour les layouts N-aires. Doit correspondre au nombre d'enfants et sommer près de 1.0. |
commands[].workspace.layout.children | array | Requis pour split; minimum deux noeuds de layout. |
Clés de surface dans un panneau :
| Clé | Type | Défaut | Notes |
|---|---|---|---|
commands[].workspace.layout.surfaces[].surface_type | string/null | terminal | Seules les surfaces terminal sont rendues aujourd'hui. |
commands[].workspace.layout.surfaces[].name | string/null | dérivé | Nom d'onglet de surface. |
commands[].workspace.layout.surfaces[].custom_name | string/null | aucun | Nom assigné par l'utilisateur qui survit au redémarrage. |
commands[].workspace.layout.surfaces[].command | string/null | shell | Commande lancée à la création de la surface. |
commands[].workspace.layout.surfaces[].prompt | string/null | aucun | Prompt pré-rempli après le lancement d'une commande agent. |
commands[].workspace.layout.surfaces[].cwd | string/null | cwd du workspace | Répertoire de travail par surface. Les chemins relatifs partent du cwd du workspace. |
commands[].workspace.layout.surfaces[].path | string/null | aucun | Fichier ouvert par une surface markdown. Ignoré par les surfaces terminal. |
commands[].workspace.layout.surfaces[].env | object/null | aucun | Variables d'environnement supplémentaires. Gagne sur terminal.env en cas de collision. |
commands[].workspace.layout.surfaces[].focus | boolean/null | false | Donne le focus initial à cette surface. |
commands[].workspace.layout.surfaces[].scrollback | string/null | aucun | Scrollback texte brut restauré avec la surface. |
commands[].workspace.layout.surfaces[].agent | string/null | aucun | Tag stable de la CLI agent détectée dans la surface. |
commands[].workspace.layout.surfaces[].font_size | number/null | font_size global | Surcharge de taille de police par surface, plage 8.0 à 32.0. |
commands[].workspace.layout.surfaces[].session | string/null | aucun | UUID de la session persistante de l'hôte à laquelle le terminal se rattache à la restauration. Écrit par Paneflow. |
commands[].workspace.layout.surfaces[].agent_session | object/null | aucun | Dernière conversation d'agent lancée dans la surface : runtime (id du catalogue), id (id de session du fournisseur) et cwd. Paneflow la rouvre quand la session de l'hôte n'a pas survécu. Écrit par Paneflow. |
telemetry
| Clé | Type | Défaut | Notes |
|---|---|---|---|
telemetry.enabled | boolean/null | null | null signifie sans réponse, true opt-in, false opt-out. |
Exemple complet
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0",
"theme": "One Dark",
"font_family": "JetBrainsMono Nerd Font",
"font_size": 13,
"line_height": 1.0,
"cell_width": 1.0,
"windows_chrome_material": false,
"macos_chrome_material": false,
"terminal": {
"ligatures": true,
"scrollback_lines": 10000,
"cursor_shape": "block"
},
"agent_panel": {
"notify_when_agent_waiting": "PrimaryScreen"
},
"commands": [
{
"name": "API + Claude",
"description": "Open the API project with Claude and tests",
"workspace": {
"name": "API",
"cwd": "~/projects/api",
"layout_preset": "even_h",
"layout": {
"type": "pane",
"surfaces": [
{
"name": "Claude",
"agent": "claude_code",
"command": "claude",
"prompt": "Review the API changes"
}
]
}
}
}
]
}