{"record":{"id":"f059d39016f24b3e","repo":"kovidgoyal/kitty","slug":"invalid-s-in-video-preview-s","errorCode":null,"errorMessage":"invalid %s in video_preview: %s","messagePattern":"invalid (.+?) in video_preview: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"kittens/choose_files/main.go","lineNumber":332,"sourceCode":"\terr = p.LoadConfig(\"choose-files.conf\", opts.Config, opts.Override)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tans.KeyboardShortcuts = config.ResolveShortcuts(ans.KeyboardShortcuts)\n\tparts, err := shlex.Split(ans.Video_preview)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor _, x := range parts {\n\t\tk, v, found := strings.Cut(x, \"=\")\n\t\tif !found {\n\t\t\treturn nil, fmt.Errorf(\"invalid value %s in video_preview\", x)\n\t\t}\n\t\tvar i uint64\n\t\tswitch k {\n\t\tcase \"duration\":\n\t\t\tif video_duration, err = strconv.ParseFloat(v, 64); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid %s in video_preview: %s\", k, v)\n\t\t\t}\n\t\tcase \"fps\":\n\t\t\tif i, err = strconv.ParseUint(v, 10, 0); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid %s in video_preview: %s\", k, v)\n\t\t\t}\n\t\t\tvideo_fps = int(i)\n\t\tcase \"width\":\n\t\t\tif i, err = strconv.ParseUint(v, 10, 0); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid %s in video_preview: %s\", k, v)\n\t\t\t}\n\t\t\tvideo_width = int(i)\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unrecognized key in video_preview: %s\", k)\n\t\t}\n\t}\n\treturn ans, nil\n}\n","sourceCodeStart":314,"sourceCodeEnd":350,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/choose_files/main.go#L314-L350","documentation":"The 'duration' key of video_preview failed strconv.ParseFloat — its value is not a valid floating point number (e.g. 'five', '5s', or empty).","triggerScenarios":"--video-preview 'duration=abc' or 'duration=' or a value with a unit suffix.","commonSituations":"Including units ('5s') or locale-specific decimal separators; typos in the number.","solutions":["Use a plain decimal number: duration=4.5","Strip units — kitty assumes seconds"],"exampleFix":"# before\n--video-preview 'duration=5s,fps=10'\n# after\n--video-preview 'duration=5,fps=10'","handlingStrategy":"validation","validationCode":"if _, err := strconv.ParseFloat(v, 64); err != nil { /* reject: duration must be a plain number */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never include units in numeric settings","Validate config values in a preflight script"],"tags":["kitty","config","video-preview","parse-float"],"backgroundTag":"config-value-invalid","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}