Aller au contenu

Référence du schéma paneflow.json

Chaque clé de paneflow.json avec son type, sa valeur par défaut, son moment d'application et ses notes runtime.

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

PlateformeChemin
Linux~/.config/paneflow/paneflow.json
macOS~/Library/Application Support/paneflow/paneflow.json
Windows%APPDATA%\paneflow\paneflow.json

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 :

paneflow.json
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0"
}

Clés top-level

CléTypeDéfautApplicationNotes
$schemastringaucunÉditeur seulPointe l'éditeur vers le schéma publié. Ignoré par Paneflow.
$schemaVersionstring1.0.0Démarrage/reloadUne version inconnue logue un warning sans bloquer le chargement.
default_shellstring/nullrepli shell plateformeNouveau terminalRepli par exécutable configuré, $SHELL, /bin/sh, puis %COMSPEC% sur Windows.
themestring/nullOne DarkHot reloadThèmes intégrés : One Dark, PaneFlow Light. La recherche runtime ignore la casse.
theme_modestring/nulldarkHot reloadlight et dark forcent le thème intégré correspondant ; system suit l'apparence de l'OS.
font_familystring/nullJetBrainsMono NFM si installée, sinon LilexCache hot reloadAccepte .PaneflowMono, .PaneflowSans, les polices embarquées ou une monospace système installée.
font_fallbacksstring array/nullpile de repli GPUICache hot reloadFamilles de repli consultées quand font_family ne couvre pas un glyphe.
font_sizenumber/null13.0Cache hot reloadTaille en points, plage 8.0 à 32.0 ; une valeur invalide retombe sur 13.0.
font_weightstring/nullnormalCache hot reloadthin, extra_light, light, semi_light, normal, medium, semi_bold, bold, extra_bold, black, extra_black.
line_heightnumber/null1.2Cache hot reloadMultiplicateur, plage 1.0 à 2.5 ; une valeur invalide retombe sur 1.2.
cell_widthnumber/null0.6Cache hot reloadMultiplicateur, plage 0.3 à 2.0 ; une valeur invalide retombe sur 0.6.
window_decorationsstring/nullclientDémarrageclient dessine le chrome Paneflow ; server délègue au compositeur OS.
window_backdropstring/nullautoDémarrageauto, mica, blurred, acrylic, transparent, opaque ou off. PANEFLOW_WINDOW_BACKDROP surcharge un lancement.
windows_terminal_materialboolean/nullfalseRendu fenêtre/terminalWindows seulement. Active le matériau derrière le fond terminal. Ignoré ailleurs.
windows_chrome_materialboolean/nullfalseRendu fenêtre/chromeWindows seulement. Active le matériau natif dans la carte de navigation principale. Ignoré ailleurs.
macos_chrome_materialboolean/nulltrueRendu fenêtre/chromemacOS seulement. Active le matériau Sidebar natif dans la carte de navigation principale. Ignoré ailleurs.
option_as_metaboolean/nulltrueNouveau terminalEnvoie Alt/Option comme Meta avec préfixe ESC. Mets false sur macOS si Option doit produire des caractères Unicode.
shell_integrationboolean/nulltrueNouveau terminalActive les snippets shell Paneflow pour OSC 7 CWD et OSC 133.
agent_stall_detectionboolean/nulltrueSweep runtimeDétecte les agents en Thinking sans activité hook après le seuil.
agent_stall_threshold_secsinteger/null60Sweep runtimePlage 30 à 86400; vérifié par un sweep toutes les 30 secondes.
review_prefill_delay_msinteger/null2000Lancement ReviewDélai avant l'auto-remplissage du prompt Review dans une CLI neuve. Plage 250 à 10000.
submit_paste_delay_msinteger/null70Envoi IPCDélai plancher entre bracketed paste et Enter pour paneflow send --submit. Plage 10 à 5000.
external_editorstring/nullautoProchaine ouvertureauto, system, zed, cursor, windsurf ou code.
shortcutsobject{}Hot reloadMappe des frappes vers des noms d'actions. Voir raccourcis et actions.
terminalobject/nulldefaults ci-dessousMixteRéglages terminal, renderer et PTY.
commandsarray[]Settings/RunEntrées de palette et modèles de workspace.
claude_code_bypass_permissionsboolean/nullfalseProchain lancement ClaudeAjoute --permission-mode bypassPermissions au lanceur Claude Code. Option risquée.
ai_unrestrictedboolean/nullfalseChaque appel IPCAutorise les conducteurs fiables à soumettre vers d'autres panneaux sans PANEFLOW_IPC_SCRIPTING. Chaque écriture est tracée.
ai_injection_fenceboolean/nulltrueChaque lectureEncapsule surface.read dans une clôture de sortie non fiable par défaut.
agent_panelobject/nulldefaults ci-dessousAgents UIAffichage, profils et notifications de la vue Agents.
tool_permissionsobject{}PermissionsPatterns d'autorisation et de refus permanents par type d'outil.
telemetryobject/null{ "enabled": null }Démarrage/consentementConsentement 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.

CléAgent
claude_code_button_visibleClaude Code
codex_button_visibleCodex
opencode_button_visibleOpenCode
pi_button_visiblePi
hermes_agent_button_visibleHermes Agent
grok_button_visibleGrok
amp_button_visibleAmp
cursor_button_visibleCursor
gemini_button_visibleGemini
kiro_button_visibleKiro
antigravity_button_visibleAntigravity
copilot_button_visibleCopilot
codebuddy_button_visibleCodeBuddy
factory_button_visibleFactory
qoder_button_visibleQoder
openclaw_button_visibleOpenClaw

terminal

CléTypeDéfautApplicationNotes
terminal.backendstringautoNouvelle sessionauto, ghostty ou alacritty. Les builds Linux standard et Windows x64 MSVC pris en charge sélectionnent Ghostty avec auto ; ghostty le demande explicitement et alacritty permet le rollback. macOS et les builds sans la fonctionnalité Ghostty native de leur cible utilisent Alacritty. Les valeurs inconnues reviennent sur Alacritty. S'applique uniquement aux nouvelles sessions.
terminal.ligaturesboolean/nullfalseCache hot reloadActive les ligatures de programmation quand la police les supporte.
terminal.integrated_glyphsboolean/nulltrueHot reloadDessine les glyphes de blocs intégrés comme des quads remplis.
terminal.color_emojiboolean/nulltrueHot reloadUtilise le chemin emoji couleur de la plateforme.
terminal.cursor_colorstring/nullcurseur du thèmeHot reload/nouveau terminal#RRGGBB, RRGGBB, #RGB ou RGB.
terminal.scrollback_linesinteger/null10000Nouveau terminalPlage 100 à 100000. Review plafonne à 2000; cached plafonne à 1000.
terminal.cursor_shapestring/nullblockNouveau terminalvintage, block, beam, underline, double_underline ou hollow.
terminal.cursor_blinkstring/nullterminal_controlledNouveau terminalon, off ou terminal_controlled.
terminal.envobject/nullaucunNouveau terminalVariables injectées dans chaque nouveau terminal. Le env de surface gagne en cas de collision.
terminal.scroll_multipliernumber/null1.0Nouvelle vue terminalPlage 0.1 à 10.0. Ignoré en mouse-reporting et en scroll alternate-screen.

agent_panel

CléTypeDéfautNotes
agent_panel.max_content_widthinteger/null760Largeur du contenu chat en pixels. Plage 320 à 4000.
agent_panel.thinking_displaystring/nullAutoAuto, Preview, AlwaysExpanded ou AlwaysCollapsed.
agent_panel.profilesobject{}Map de profils nommés. Les clés sont les noms de profils.
agent_panel.default_profilestring/nullaucunProfil sélectionné par défaut quand présent.
agent_panel.notify_when_agent_waitingstring/nullPrimaryScreenPrimaryScreen, AllScreens ou Never.

Les entrées sous agent_panel.profiles utilisent cette forme :

CléTypeDéfautNotes
agent_panel.profiles.*.agentstring/nullaucunTag d'agent préféré.
agent_panel.profiles.*.modelstring/nullaucunLibellé de modèle préféré.
agent_panel.profiles.*.modestring/nullaucunLibellé de mode préféré.
agent_panel.profiles.*.effortstring/nullaucunLibellé d'effort préféré.
agent_panel.profiles.*.toolsstring array[]Types d'outils préférés affichés par le profil.

tool_permissions

tool_permissions est indexé par type d'outil, par exemple read, edit ou execute.

CléTypeDéfautNotes
tool_permissions.*.always_allowstring array[]Patterns de sous-chaîne qui autorisent automatiquement les entrées correspondantes.
tool_permissions.*.always_denystring array[]Patterns de sous-chaîne qui refusent automatiquement les entrées correspondantes.

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éTypeDéfautNotes
commands[].namestringrequisNom affiché. Ne peut pas être vide.
commands[].descriptionstring/nullaucunDescription lisible par l'utilisateur.
commands[].keywordsstring array[]Mots-clés de recherche floue.
commands[].workspaceobject/nullaucunModèle de workspace.
commands[].commandstring/nullaucunCommande shell simple.

Clés d'un modèle de workspace :

CléTypeDéfautNotes
commands[].workspace.namestring/nullnom de commandeNom affiché du workspace.
commands[].workspace.cwdstring/nullcwd courantRépertoire par défaut du workspace.
commands[].workspace.layout_presetstring/nullaucuneven_h, even_v, main_vertical ou tiled.
commands[].workspace.colorstring/nullaucunCouleur d'accent hex à six chiffres, sans #.
commands[].workspace.layoutobject/nulllayout du presetRacine de l'arbre de layout.

Clés de layout :

CléTypeNotes
commands[].workspace.layout.typestringpane ou split.
commands[].workspace.layout.surfacesarrayRequis pour les noeuds pane.
commands[].workspace.layout.directionstringRequis pour split : horizontal ou vertical.
commands[].workspace.layout.rationumber/nullAncien ratio de split binaire, plage 0.1 à 0.9. Ignoré si ratios existe.
commands[].workspace.layout.ratiosnumber array/nullRatios par enfant pour les layouts N-aires. Doit correspondre au nombre d'enfants et sommer près de 1.0.
commands[].workspace.layout.childrenarrayRequis pour split; minimum deux noeuds de layout.

Clés de surface dans un panneau :

CléTypeDéfautNotes
commands[].workspace.layout.surfaces[].surface_typestring/nullterminalSeules les surfaces terminal sont rendues aujourd'hui.
commands[].workspace.layout.surfaces[].namestring/nulldérivéNom d'onglet de surface.
commands[].workspace.layout.surfaces[].custom_namestring/nullaucunNom assigné par l'utilisateur qui survit au redémarrage.
commands[].workspace.layout.surfaces[].commandstring/nullshellCommande lancée à la création de la surface.
commands[].workspace.layout.surfaces[].promptstring/nullaucunPrompt pré-rempli après le lancement d'une commande agent.
commands[].workspace.layout.surfaces[].cwdstring/nullcwd du workspaceRépertoire de travail par surface. Les chemins relatifs partent du cwd du workspace.
commands[].workspace.layout.surfaces[].envobject/nullaucunVariables d'environnement supplémentaires. Gagne sur terminal.env en cas de collision.
commands[].workspace.layout.surfaces[].focusboolean/nullfalseDonne le focus initial à cette surface.
commands[].workspace.layout.surfaces[].scrollbackstring/nullaucunScrollback texte brut restauré avec la surface.
commands[].workspace.layout.surfaces[].agentstring/nullaucunTag stable de la CLI agent détectée dans la surface.
commands[].workspace.layout.surfaces[].font_sizenumber/nullfont_size globalSurcharge de taille de police par surface, plage 8.0 à 32.0.

telemetry

CléTypeDéfautNotes
telemetry.enabledboolean/nullnullnull signifie sans réponse, true opt-in, false opt-out.

Exemple complet

paneflow.json
{
"$schema": "https://github.com/arthjean/paneflow/raw/main/schemas/paneflow.schema.json",
"$schemaVersion": "1.0.0",
"theme": "One Dark",
"font_family": "Lilex",
"font_size": 13,
"line_height": 1.2,
"cell_width": 0.6,
"windows_chrome_material": false,
"macos_chrome_material": true,
"terminal": {
  "backend": "auto",
  "ligatures": false,
  "scrollback_lines": 10000,
  "cursor_shape": "block"
},
"agent_panel": {
  "thinking_display": "Auto",
  "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"
          }
        ]
      }
    }
  }
]
}