{"record":{"id":"27addd56a967a7c1","repo":"jesseduffield/lazygit","slug":"invalid-diff-renderer-type-s","errorCode":null,"errorMessage":"invalid diff renderer type: %s","messagePattern":"invalid diff renderer type: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"pkg/config/diff_renderer_config_manager.go","lineNumber":52,"sourceCode":"\t// Guard against the diff renderer index being out of range, which can happen if the user\n\t// has removed diff renderers from their config file while lazygit is running.\n\tif self.diffRendererIndex >= len(diffRenderers) {\n\t\tself.diffRendererIndex = 0\n\t}\n\n\treturn &diffRenderers[self.diffRendererIndex]\n}\n\nfunc (self *DiffRendererConfig) getType() DiffRendererType {\n\tswitch self.Type {\n\tcase \"stdinFilter\", \"\":\n\t\treturn DiffRendererType_StdinFilter\n\tcase \"extDiff\":\n\t\treturn DiffRendererType_ExtDiff\n\tcase \"rawGit\":\n\t\treturn DiffRendererType_RawGit\n\t}\n\tpanic(\"invalid diff renderer type: \" + self.Type)\n}\n\nfunc (self *DiffRendererConfigManager) GetDiffRendererType() DiffRendererType {\n\tcurrentDiffRendererConfig := self.currentDiffRendererConfig()\n\tif currentDiffRendererConfig == nil {\n\t\treturn DiffRendererType_RawGit\n\t}\n\treturn currentDiffRendererConfig.getType()\n}\n\nfunc (self *DiffRendererConfigManager) GetStdinFilterCommand(width int) string {\n\tcurrentDiffRendererConfig := self.currentDiffRendererConfig()\n\tif currentDiffRendererConfig == nil || currentDiffRendererConfig.getType() != DiffRendererType_StdinFilter {\n\t\treturn \"\"\n\t}\n\n\ttemplateValues := map[string]string{\n\t\t\"columnWidth\": strconv.Itoa(width/2 - 6),","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/jesseduffield/lazygit/blob/c477a2959b229fbf3284be0d4d2904ab61ec3c94/pkg/config/diff_renderer_config_manager.go#L34-L70","documentation":"A panic (not a returned error) in pkg/config/diff_renderer_config_manager.go: DiffRendererConfig.getType maps the config's diff renderer 'type' string to an enum via a switch with cases 'stdinFilter' (and empty string), 'extDiff', and 'rawGit'. Any other value falls out of the switch and hits panic, crashing lazygit at startup or on first diff render.","triggerScenarios":"Setting a diff renderer entry's Type to anything else: 'stdin-filter', 'external', 'rawgit', or a typo. getType is called through GetDiffRendererType the first time lazygit resolves the active renderer.","commonSituations":"Typos in config.yml; using a renderer type from incompatible documentation or a different lazygit version; leaving a stray experimental value behind after downgrading.","solutions":["Fix config.yml: set the diff renderer type to one of stdinFilter, extDiff, or rawGit (or delete the field to default to stdinFilter)","Delete the whole diff renderer entry to fall back to DiffRendererType_RawGit when no config is present","Never rely on recovery — this is a panic, so validate the value before it reaches lazygit"],"exampleFix":"# before\ndiffRenderers:\n  - type: 'stdin-filter'\n\n# after\ndiffRenderers:\n  - type: 'stdinFilter'","handlingStrategy":"validation","validationCode":"# yq validation before launching lazygit\nyq '.diffRenderers[].type? | select(. != \"stdinFilter\" and . != \"extDiff\" and . != \"rawGit\" and . != null)' ~/.config/lazygit/config.yml","typeGuard":"func validDiffRendererType(t string) bool {\n    switch t {\n    case \"stdinFilter\", \"\", \"extDiff\", \"rawGit\":\n        return true\n    }\n    return false\n}","tryCatchPattern":null,"preventionTips":["This is a panic, not an error return — validate the config value before lazygit loads it","Copy diff renderer config blocks only from docs matching your installed version"],"tags":["lazygit","config","panic","diff-renderer","validation"],"backgroundTag":null,"analyzedSha":"c477a2959b229fbf3284be0d4d2904ab61ec3c94","analyzedAt":"2026-08-15T08:34:32.451Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}