{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/jujutsu-jj-vcs-config/latest.json",
  "title": "Jujutsu config",
  "description": "User configuration for Jujutsu VCS. See <https://docs.jj-vcs.dev/latest/config/> for details",
  "x-lintel": {
    "source": "https://jj-vcs.github.io/jj/latest/config-schema.json",
    "sourceSha256": "82ab9841feb1ba8231766e5050774814b26c941cb51757df39fc4cc983b93a7b",
    "fileMatch": [
      "**/.jj/repo/config.toml",
      "**/jj/config.toml"
    ],
    "parsers": [
      "toml"
    ]
  },
  "type": "object",
  "properties": {
    "user": {
      "type": "object",
      "description": "Settings about the user",
      "properties": {
        "name": {
          "type": "string",
          "description": "Full name of the user, used in commits"
        },
        "email": {
          "type": "string",
          "description": "User's email address, used in commits",
          "format": "email"
        }
      }
    },
    "operation": {
      "type": "object",
      "description": "Metadata to be attached to jj operations (shown in jj op log)",
      "properties": {
        "hostname": {
          "type": "string",
          "format": "hostname"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "ui": {
      "type": "object",
      "description": "UI settings",
      "properties": {
        "default-command": {
          "description": "Default command to run when no explicit command is given",
          "default": "log",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "color": {
          "description": "Whether to colorize command output",
          "enum": [
            "always",
            "never",
            "debug",
            "auto"
          ],
          "default": "auto"
        },
        "paginate": {
          "type": "string",
          "description": "Whether or not to use a pager",
          "enum": [
            "never",
            "auto"
          ],
          "default": "auto"
        },
        "pager": {
          "description": "Pager to use for displaying command output",
          "default": "less -FRX",
          "oneOf": [
            {
              "$ref": "#/properties/ui/$defs/command"
            },
            {
              "$ref": "#/properties/ui/$defs/command-env"
            }
          ]
        },
        "streampager": {
          "type": "object",
          "description": "':builtin' (streampager-based) pager configuration",
          "properties": {
            "interface": {
              "description": "Whether to quit automatically, whether to clear screen on startup/exit",
              "enum": [
                "quit-if-one-page",
                "full-screen-clear-output",
                "quit-quickly-or-clear-output"
              ],
              "default": "quit-if-one-page"
            },
            "wrapping": {
              "description": "Whether to wrap long lines",
              "enum": [
                "anywhere",
                "word",
                "none"
              ],
              "default": "anywhere"
            },
            "show-ruler": {
              "type": "boolean",
              "description": "Whether the ruler should start visible",
              "default": true
            }
          }
        },
        "diff-instructions": {
          "type": "boolean",
          "description": "Whether to generate the JJ-INSTRUCTIONS file as part of editing a diff",
          "default": true
        },
        "graph": {
          "type": "object",
          "description": "Options for rendering revision graphs from jj log etc",
          "properties": {
            "style": {
              "description": "Style of connectors/markings used to render the graph. See <https://docs.jj-vcs.dev/latest/config/#graph-style>",
              "enum": [
                "curved",
                "square",
                "ascii",
                "ascii-large"
              ],
              "default": "curved"
            }
          }
        },
        "log-word-wrap": {
          "type": "boolean",
          "description": "Whether to wrap log template output",
          "default": false
        },
        "log-synthetic-elided-nodes": {
          "type": "boolean",
          "description": "Whether to render elided parts of the graph as synthetic nodes.",
          "default": true
        },
        "editor": {
          "description": "Editor to use for commands that involve editing text",
          "oneOf": [
            {
              "$ref": "#/properties/ui/$defs/command"
            },
            {
              "$ref": "#/properties/ui/$defs/command-env"
            }
          ]
        },
        "diff-editor": {
          "description": "Editor tool to use for editing diffs",
          "default": ":builtin",
          "oneOf": [
            {
              "$ref": "#/properties/ui/$defs/command"
            },
            {
              "$ref": "#/properties/ui/$defs/command-env"
            }
          ]
        },
        "diff-formatter": {
          "description": "Tool for displaying or generating diffs",
          "default": ":color-words",
          "oneOf": [
            {
              "$ref": "#/properties/ui/$defs/command"
            },
            {
              "$ref": "#/properties/ui/$defs/command-env"
            }
          ]
        },
        "merge-editor": {
          "description": "Tool to use for resolving three-way merges. Behavior for a given tool name can be configured in merge-tools.TOOL tables",
          "default": ":builtin",
          "oneOf": [
            {
              "$ref": "#/properties/ui/$defs/command"
            },
            {
              "$ref": "#/properties/ui/$defs/command-env"
            }
          ]
        },
        "conflict-marker-style": {
          "$ref": "#/properties/ui/$defs/conflict-marker-style"
        },
        "revsets-use-glob-by-default": {
          "type": "boolean",
          "default": true,
          "description": "Whether to use glob string patterns in revsets by default"
        },
        "show-cryptographic-signatures": {
          "type": "boolean",
          "default": false,
          "description": "Whether the built-in templates should show cryptographic signature information"
        },
        "movement": {
          "type": "object",
          "properties": {
            "edit": {
              "type": "boolean",
              "description": "Whether the next and prev commands should behave as if the --edit flag was passed",
              "default": false
            }
          }
        },
        "bookmark-list-sort-keys": {
          "type": "array",
          "description": "Specifies the sort keys for the bookmarks list. See the `jj bookmark list --help` for the `--sort` option",
          "items": {
            "type": "string",
            "enum": [
              "name",
              "name-",
              "author-name",
              "author-name-",
              "author-email",
              "author-email-",
              "author-date",
              "author-date-",
              "committer-name",
              "committer-name-",
              "committer-email",
              "committer-email-",
              "committer-date",
              "committer-date-"
            ]
          }
        },
        "tag-list-sort-keys": {
          "type": "array",
          "description": "Specifies the sort keys for the tags list. See the `jj tag list --help` for the `--sort` option",
          "items": {
            "type": "string",
            "enum": [
              "name",
              "name-",
              "author-name",
              "author-name-",
              "author-email",
              "author-email-",
              "author-date",
              "author-date-",
              "committer-name",
              "committer-name-",
              "committer-email",
              "committer-email-",
              "committer-date",
              "committer-date-"
            ]
          }
        }
      },
      "$defs": {
        "conflict-marker-style": {
          "type": "string",
          "description": "Conflict marker style to use when materializing conflicts in the working copy",
          "enum": [
            "diff",
            "diff-experimental",
            "snapshot",
            "git"
          ],
          "default": "diff"
        },
        "command": {
          "type": [
            "string",
            "array"
          ],
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "command-env": {
          "type": "object",
          "properties": {
            "command": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string"
              }
            },
            "env": {
              "type": "object"
            }
          },
          "required": [
            "command",
            "env"
          ]
        }
      }
    },
    "fsmonitor": {
      "type": "object",
      "description": "External filesystem monitor settings, useful for large repos",
      "properties": {
        "backend": {
          "type": "string",
          "enum": [
            "none",
            "watchman"
          ],
          "default": "none",
          "description": "Whether to use an external filesystem monitor, useful for large repos"
        },
        "watchman": {
          "type": "object",
          "properties": {
            "register-snapshot-trigger": {
              "type": "boolean",
              "default": false,
              "description": "Whether to use triggers to monitor for changes in the background."
            }
          }
        }
      }
    },
    "colors": {
      "type": "object",
      "description": "Mapping from jj formatter labels to colors",
      "$defs": {
        "colorNames": {
          "enum": [
            "default",
            "black",
            "red",
            "green",
            "yellow",
            "blue",
            "magenta",
            "cyan",
            "white",
            "bright black",
            "bright red",
            "bright green",
            "bright yellow",
            "bright blue",
            "bright magenta",
            "bright cyan",
            "bright white"
          ]
        },
        "ansi256Color": {
          "type": "string",
          "pattern": "^ansi-color-([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
        },
        "hexColor": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "colors": {
          "oneOf": [
            {
              "$ref": "#/properties/colors/$defs/colorNames"
            },
            {
              "$ref": "#/properties/colors/$defs/ansi256Color"
            },
            {
              "$ref": "#/properties/colors/$defs/hexColor"
            }
          ]
        }
      },
      "additionalProperties": {
        "description": "A color profile for the given formatter label. Either a bare color name used as the foreground color or a table describing color and formatting",
        "oneOf": [
          {
            "$ref": "#/properties/colors/$defs/colors"
          },
          {
            "type": "object",
            "properties": {
              "fg": {
                "$ref": "#/properties/colors/$defs/colors"
              },
              "bg": {
                "$ref": "#/properties/colors/$defs/colors"
              },
              "bold": {
                "type": "boolean"
              },
              "dim": {
                "type": "boolean"
              },
              "italic": {
                "type": "boolean"
              },
              "underline": {
                "type": "boolean"
              },
              "reverse": {
                "type": "boolean"
              }
            }
          }
        ]
      }
    },
    "diff": {
      "type": "object",
      "description": "Builtin diff formats settings",
      "properties": {
        "color-words": {
          "type": "object",
          "description": "Options for color-words diffs",
          "properties": {
            "conflict": {
              "type": "string",
              "description": "How conflicts are processed and displayed",
              "enum": [
                "materialize",
                "pair"
              ],
              "default": "materialize"
            },
            "max-inline-alternation": {
              "type": "integer",
              "description": "Maximum number of removed/added word alternation to inline",
              "default": 3
            },
            "context": {
              "type": "integer",
              "description": "Number of lines of context to show",
              "default": 3
            }
          }
        },
        "git": {
          "type": "object",
          "description": "Options for git diffs",
          "properties": {
            "context": {
              "type": "integer",
              "description": "Number of lines of context to show",
              "default": 3
            }
          }
        }
      }
    },
    "fileset-aliases": {
      "type": "object",
      "description": "Custom symbols/function aliases that can be used in fileset expressions",
      "additionalProperties": {
        "type": "string"
      }
    },
    "git": {
      "type": "object",
      "description": "Settings for git behavior (when using git backend)",
      "properties": {
        "abandon-unreachable-commits": {
          "type": "boolean",
          "description": "Whether jj should abandon commits that became unreachable in Git.",
          "default": true
        },
        "fetch": {
          "description": "The remote(s) from which commits are fetched",
          "default": "origin",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "private-commits": {
          "type": "string",
          "description": "Revset of commits to refuse to push to remotes",
          "default": "none()"
        },
        "push": {
          "type": "string",
          "description": "The remote to which commits are pushed",
          "default": "origin"
        },
        "sign-on-push": {
          "type": "boolean",
          "description": "Whether jj should sign commits before pushing",
          "default": false
        },
        "track-default-bookmark-on-clone": {
          "type": "boolean",
          "description": "Whether `jj git clone` creates a local bookmark tracking the default remote bookmark",
          "default": true
        },
        "write-change-id-header": {
          "type": "boolean",
          "description": "Whether the change id should be stored in the Git commit object",
          "default": true
        },
        "executable-path": {
          "type": "string",
          "description": "Path to the git executable",
          "default": "git"
        },
        "colocate": {
          "type": "boolean",
          "description": "Whether to colocate the working copy with the git repository",
          "default": true
        }
      }
    },
    "remotes": {
      "type": "object",
      "description": "Settings related to specific remotes",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "auto-track-bookmarks": {
            "type": "string",
            "description": "A string pattern describing the bookmarks to automatically track with this remote. It will be applied to any new bookmark, created or fetched. See <https://docs.jj-vcs.dev/latest/config/#automatic-tracking-of-bookmarks>",
            "default": "~*"
          },
          "auto-track-created-bookmarks": {
            "type": "string",
            "description": "A string pattern describing the locally-created bookmarks which should track this remote automatically. It will be applied to new bookmarks created with `jj bookmark create` or `jj bookmark set`. See <https://docs.jj-vcs.dev/latest/config/#automatic-tracking-of-bookmarks>",
            "default": "~*"
          }
        }
      }
    },
    "gerrit": {
      "type": "object",
      "description": "Settings for interacting with Gerrit",
      "properties": {
        "default-remote": {
          "type": "string",
          "description": "The Gerrit remote to interact with"
        },
        "default-remote-branch": {
          "type": "string",
          "description": "The default branch to propose changes for"
        },
        "review-url": {
          "type": "string",
          "description": "Generate Link trailers with this URL instead of Change-Id trailers in `jj gerrit upload`"
        }
      }
    },
    "merge": {
      "type": "object",
      "description": "Merge settings",
      "properties": {
        "hunk-level": {
          "type": "string",
          "description": "Granularity of hunks when merging files",
          "enum": [
            "line",
            "word"
          ],
          "default": "line"
        },
        "same-change": {
          "type": "string",
          "description": "Whether to resolve conflict that makes the same change at all sides",
          "enum": [
            "keep",
            "accept"
          ],
          "default": "accept"
        }
      }
    },
    "merge-tools": {
      "type": "object",
      "description": "Tables of custom options to pass to the given merge tool (selected in ui.merge-editor)",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "program": {
            "type": "string"
          },
          "diff-args": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "diff-expected-exit-codes": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Array of exit codes that do not indicate tool failure, i.e. [0, 1] for unix diff.",
            "default": [
              0
            ]
          },
          "diff-do-chdir": {
            "type": "boolean",
            "description": "Invoke the tool in the temporary diff directory. This setting will be removed soon",
            "default": true
          },
          "diff-invocation-mode": {
            "description": "Invoke the tool with directories or individual files",
            "enum": [
              "dir",
              "file-by-file"
            ],
            "default": "dir"
          },
          "edit-args": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "merge-args": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "merge-conflict-exit-codes": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Array of exit codes to indicate that the conflict was only partially resolved. See <https://docs.jj-vcs.dev/latest/config/#editing-conflict-markers-with-a-tool-or-a-text-editor>",
            "default": []
          },
          "merge-tool-edits-conflict-markers": {
            "type": "boolean",
            "description": "Whether to populate the output file with conflict markers before starting the merge tool. See <https://docs.jj-vcs.dev/latest/config/#editing-conflict-markers-with-a-tool-or-a-text-editor>",
            "default": false
          },
          "conflict-marker-style": {
            "$ref": "#/properties/ui/$defs/conflict-marker-style"
          }
        }
      }
    },
    "revsets": {
      "type": "object",
      "description": "Revset expressions used by various commands",
      "properties": {
        "arrange": {
          "type": "string",
          "description": "Default set of revisions to open in the TUI when no explicit revset is given for jj arrange",
          "default": "reachable(@, mutable())"
        },
        "fix": {
          "type": "string",
          "description": "Default set of revisions to fix when no explicit revset is given for jj fix",
          "default": "reachable(@, mutable())"
        },
        "log": {
          "type": "string",
          "description": "Default set of revisions to show when no explicit revset is given for jj log and similar commands",
          "default": "present(@) | ancestors(immutable_heads().., 2) | trunk()"
        },
        "short-prefixes": {
          "type": "string",
          "description": "Revisions to give shorter change and commit IDs to",
          "default": "<revsets.log>"
        },
        "simplify-parents": {
          "type": "string",
          "description": "Default set of revisions to simplify when no explicit revset is given for jj simplify-parents",
          "default": "reachable(@, mutable())"
        },
        "sign": {
          "type": "string",
          "description": "Default set of revisions to sign when no explicit revset is given for jj sign",
          "default": "reachable(@, mutable())"
        },
        "log-graph-prioritize": {
          "type": "string",
          "description": "Set of revisions to prioritize when rendering the graph for jj log",
          "default": "present(@)"
        },
        "bookmark-advance-to": {
          "type": "string",
          "description": "Default revision to advance bookmarks to when no explicit revision is given to jj advance `--to`",
          "default": "@"
        },
        "bookmark-advance-from": {
          "type": "string",
          "description": "Default set of revisions to advance bookmarks from for jj advance (has access to `to`, the advance destination)",
          "default": "heads(::to & bookmarks())"
        }
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "revset-aliases": {
      "type": "object",
      "description": "Custom symbols/function aliases that can used in revset expressions",
      "properties": {
        "immutable_heads()": {
          "type": "string",
          "description": "Revisions to consider immutable. Ancestors of these are also considered immutable. The root commit is always considered immutable.",
          "default": "trunk() | tags() | untracked_remote_bookmarks()"
        }
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "template-aliases": {
      "type": "object",
      "description": "Custom symbols/function aliases that can used in templates",
      "additionalProperties": {
        "type": "string"
      }
    },
    "aliases": {
      "type": "object",
      "description": "Custom subcommand aliases to be supported by the jj command",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "snapshot": {
      "type": "object",
      "description": "Parameters governing automatic capture of files into the working copy commit",
      "properties": {
        "auto-track": {
          "type": "string",
          "description": "Fileset pattern describing what new files to automatically track on snapshotting. By default all new files are tracked.",
          "default": "all()"
        },
        "auto-update-stale": {
          "type": "boolean",
          "description": "Whether to automatically update the working copy if it is stale. See <https://docs.jj-vcs.dev/latest/working-copy/#stale-working-copy>",
          "default": false
        },
        "max-new-file-size": {
          "type": [
            "integer",
            "string"
          ],
          "description": "New files with a size in bytes above this threshold are not snapshotted, unless the threshold is 0",
          "default": "1MiB"
        }
      }
    },
    "experimental-advance-branches": {
      "type": "object",
      "description": "Settings controlling the 'advance-branches' feature which moves bookmarks forward when new commits are created.",
      "properties": {
        "enabled-branches": {
          "type": "array",
          "description": "Patterns used to identify bookmarks which may be advanced.",
          "items": {
            "type": "string"
          }
        },
        "disabled-branches": {
          "type": "array",
          "description": "Patterns used to identify bookmarks which are not advanced. Takes precedence over 'enabled-branches'.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "signing": {
      "type": "object",
      "description": "Settings for verifying and creating cryptographic commit signatures",
      "properties": {
        "backend": {
          "type": "string",
          "enum": [
            "gpg",
            "gpgsm",
            "none",
            "ssh"
          ],
          "description": "The backend to use for signing commits. The string `none` disables signing.",
          "default": "none"
        },
        "key": {
          "type": "string",
          "description": "The key the configured signing backend will use to to sign commits. Overridden by `jj sign` parameter or by the global `--sign-with` option"
        },
        "behavior": {
          "type": "string",
          "enum": [
            "drop",
            "keep",
            "own",
            "force"
          ],
          "description": "Which commits to sign by default. Values: drop (never sign), keep (preserve existing signatures), own (sign own commits), force (sign all commits)"
        },
        "backends": {
          "type": "object",
          "description": "Tables of options to pass to specific signing backends",
          "properties": {
            "gpg": {
              "type": "object",
              "properties": {
                "program": {
                  "type": "string",
                  "description": "Path to the gpg program to be called",
                  "default": "gpg"
                },
                "allow-expired-keys": {
                  "type": "boolean",
                  "description": "Whether to consider signatures generated with an expired key as valid",
                  "default": false
                }
              }
            },
            "gpgsm": {
              "type": "object",
              "properties": {
                "program": {
                  "type": "string",
                  "description": "Path to the gpgsm program to be called",
                  "default": "gpgsm"
                },
                "allow-expired-keys": {
                  "type": "boolean",
                  "description": "Whether to consider signatures generated with an expired key as valid",
                  "default": false
                }
              }
            },
            "ssh": {
              "type": "object",
              "properties": {
                "program": {
                  "type": "string",
                  "description": "Path to the ssh-keygen program to be called",
                  "default": "ssh-keygen"
                },
                "allowed-signers": {
                  "type": "string",
                  "description": "Path to an allowed signers file used for signature verification"
                },
                "revocation-list": {
                  "type": "string",
                  "description": "Path to a revocation list file used for revoking public keys"
                }
              }
            }
          },
          "additionalProperties": true
        }
      }
    },
    "fix": {
      "type": "object",
      "description": "Settings for jj fix",
      "properties": {
        "tools": {
          "type": "object",
          "description": "Settings for tools run by jj fix",
          "additionalProperties": {
            "type": "object",
            "description": "Settings for how specific filesets are affected by a tool",
            "properties": {
              "command": {
                "description": "Arguments used to execute this tool",
                "oneOf": [
                  {
                    "$ref": "#/properties/ui/$defs/command"
                  },
                  {
                    "$ref": "#/properties/ui/$defs/command-env"
                  }
                ]
              },
              "patterns": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Filesets that will be affected by this tool"
              },
              "enabled": {
                "type": "boolean",
                "description": "Disables this tool if set to false",
                "default": true
              }
            }
          }
        }
      }
    },
    "split": {
      "type": "object",
      "description": "Settings for jj split",
      "properties": {
        "legacy-bookmark-behavior": {
          "type": "boolean",
          "description": "If true, bookmarks will move to the second commit instead of the first.",
          "default": true
        }
      }
    },
    "hints": {
      "type": "object",
      "description": "Various hints in jj's UI that can be disabled",
      "additionalProperties": {
        "type": "boolean"
      }
    },
    "templates": {
      "type": "object",
      "description": "Definitions for the templates that various jj commands use",
      "properties": {
        "arrange": {
          "type": "string",
          "description": "`jj arrange``'s template for commits in the main view"
        },
        "bookmark_list": {
          "type": "string",
          "description": "`jj bookmark list`'s output"
        },
        "commit_summary": {
          "type": "string",
          "description": "The short commit summary used by many commands"
        },
        "commit_trailers": {
          "type": "string",
          "description": "Trailers that will be appended to a commit's description"
        },
        "file_annotate": {
          "type": "string",
          "description": "`jj file annotate`'s output"
        },
        "config_list": {
          "type": "string",
          "description": "`jj config list`'s output"
        },
        "draft_commit_description": {
          "type": "string",
          "description": "The draft commit description opened in an editor"
        },
        "evolog": {
          "type": "string",
          "description": "`jj evolog`'s output"
        },
        "file_list": {
          "type": "string",
          "description": "`jj file list`'s output"
        },
        "file_show": {
          "type": "string",
          "description": "`jj file show`'s output"
        },
        "git_push_bookmark": {
          "type": "string",
          "description": "Bookmark name to be assigned when pushing a change to Git remote"
        },
        "log": {
          "type": "string",
          "description": "`jj log`'s output"
        },
        "op_log": {
          "type": "string",
          "description": "`jj op log`'s output"
        },
        "op_show": {
          "type": "string",
          "description": "`jj op show`'s output"
        },
        "op_summary": {
          "type": "string",
          "description": "The operation summary used by many commands"
        },
        "show": {
          "type": "string",
          "description": "`jj show`'s output"
        },
        "revert_description": {
          "type": "string",
          "description": "The description of commits reverted by `jj revert`"
        },
        "tag_list": {
          "type": "string",
          "description": "`jj tag list`'s output"
        },
        "workspace_list": {
          "type": "string",
          "description": "`jj workspace list`'s output"
        }
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "working-copy": {
      "type": "object",
      "description": "Working copy settings",
      "properties": {
        "eol-conversion": {
          "type": "string",
          "description": "Configuring auto-converting CRLF line endings into LF when you add a file to the backend, and vice versa when it checks out code onto your filesystem.",
          "enum": [
            "input",
            "input-output",
            "none"
          ],
          "default": "none"
        },
        "exec-bit-change": {
          "type": "string",
          "description": "Whether to respect changes to executable bits on Unix. This is unused on Windows.",
          "enum": [
            "respect",
            "ignore",
            "auto"
          ],
          "default": "auto"
        }
      }
    },
    "--when": {
      "type": "object",
      "description": "Conditions restriction the application of the configuration",
      "properties": {
        "repositories": {
          "type": "array",
          "description": "List of paths to match the repository path prefix",
          "items": {
            "type": "string"
          }
        },
        "hostnames": {
          "type": "array",
          "description": "List of hostnames to match the hostname",
          "items": {
            "type": "string"
          }
        },
        "workspaces": {
          "type": "array",
          "description": "List of paths to match the workspace path prefix",
          "items": {
            "type": "string"
          }
        },
        "commands": {
          "type": "array",
          "description": "List of subcommands to match",
          "items": {
            "type": "string"
          }
        },
        "platforms": {
          "type": "array",
          "description": "List of platforms to match",
          "items": {
            "type": "string",
            "enum": [
              "aix",
              "android",
              "apple",
              "dragonfly",
              "emscripten",
              "espidf",
              "fortanix",
              "freebsd",
              "fuchsia",
              "haiku",
              "hermit",
              "horizon",
              "hurd",
              "illumos",
              "ios",
              "itron",
              "l4re",
              "linux",
              "macos",
              "netbsd",
              "nto",
              "openbsd",
              "redox",
              "solaris",
              "solid_asp3",
              "tvos",
              "uefi",
              "unix",
              "visionos",
              "vita",
              "vxworks",
              "wasi",
              "wasm",
              "watchos",
              "windows",
              "xous"
            ]
          }
        },
        "environments": {
          "type": "array",
          "description": "List of environment conditions, any of which must match (NAME=VALUE) or be present (NAME).",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "--scope": {
      "type": "array",
      "description": "Scoped tables for conditional configuration",
      "items": {
        "$comment": "https://json-schema.org/understanding-json-schema/structuring#recursion",
        "$ref": "#"
      }
    }
  },
  "$comment": "`taplo` and the corresponding VS Code plugins only support version draft-04 of JSON Schema, see <https://taplo.tamasfe.dev/configuration/developing-schemas.html>. draft-07 is mostly compatible with it, newer versions may not be."
}
