{"record":{"id":"f478ae71d4d9840f","repo":"chenhg5/cc-connect","slug":"invalid-boolean-s","errorCode":null,"errorMessage":"invalid boolean: %s","messagePattern":"invalid boolean: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/engine.go","lineNumber":15133,"sourceCode":"\t\t\t\tif e.displaySaveFunc != nil {\n\t\t\t\t\ttm := e.display.ThinkingMessages\n\t\t\t\t\ttool := e.display.ToolMessages\n\t\t\t\t\treturn e.displaySaveFunc(&v, &tm, nil, nil, &tool)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tkey:    \"thinking_messages\",\n\t\t\tdesc:   \"Whether thinking messages are shown (true/false)\",\n\t\t\tdescZh: \"是否显示思考消息 (true/false)\",\n\t\t\tgetFunc: func() string {\n\t\t\t\treturn fmt.Sprintf(\"%t\", e.display.ThinkingMessages)\n\t\t\t},\n\t\t\tsetFunc: func(v string) error {\n\t\t\t\tb, err := strconv.ParseBool(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid boolean: %s\", v)\n\t\t\t\t}\n\t\t\t\te.display.ThinkingMessages = b\n\t\t\t\tif e.displaySaveFunc != nil {\n\t\t\t\t\treturn e.displaySaveFunc(nil, &b, nil, nil, nil)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tkey:    \"thinking_max_len\",\n\t\t\tdesc:   \"Max chars for thinking messages (0=no truncation)\",\n\t\t\tdescZh: \"思考消息最大长度 (0=不截断)\",\n\t\t\tgetFunc: func() string {\n\t\t\t\treturn fmt.Sprintf(\"%d\", e.display.ThinkingMaxLen)\n\t\t\t},\n\t\t\tsetFunc: func(v string) error {\n\t\t\t\tn, err := strconv.Atoi(v)\n\t\t\t\tif err != nil {","sourceCodeStart":15115,"sourceCodeEnd":15151,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/core/engine.go#L15115-L15151","documentation":"Display settings setter for thinking_messages: strconv.ParseBool rejected the provided value; only Go ParseBool forms (1/t/T/TRUE/true/True, 0/f/F/FALSE/false/False) are accepted when setting the option via the display settings command.","triggerScenarios":"Setting the thinking-messages option with a value like \"yes\", \"on\", \"enabled\", or \"true \" (whitespace) that ParseBool rejects.","commonSituations":"Config file written with YAML-style `yes`/`no` booleans; user typing natural-language booleans in an interactive set command.","solutions":["Use \"true\" or \"false\" (also accepted: 1/0, t/f, T/F, TRUE/FALSE, True/False).","Trim whitespace and quotes around the value in config.toml.","Convert yes/no style values to true/false before applying."],"exampleFix":"// before\nsetFunc(\"yes\") // error\n// after\nsetFunc(\"true\")","handlingStrategy":"validation","validationCode":"if _, err := strconv.ParseBool(strings.TrimSpace(v)); err != nil { return fmt.Errorf(\"invalid boolean: %s\", v) }","typeGuard":null,"tryCatchPattern":"if err := setThinkingMessages(v); err != nil {\n    if strings.Contains(err.Error(), \"invalid boolean\") { /* re-prompt with true/false */ }\n    return err\n}","preventionTips":["Always write booleans as true/false in config.toml, never yes/no.","Trim whitespace and quotes from values read from files or chat input.","Pre-validate with strconv.ParseBool in any UI layer."],"tags":["configuration","boolean","parsing"],"backgroundTag":"invalid-boolean-value","analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}