{"record":{"id":"eb613d83ae914e22","repo":"glanceapp/glance","slug":"page-d-has-no-name","errorCode":null,"errorMessage":"page %d has no name","messagePattern":"page (.+?) has no name","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/glance/config.go","lineNumber":490,"sourceCode":"\t\t\tif user.PasswordHashString == \"\" {\n\t\t\t\treturn fmt.Errorf(\"user %s must have a password or a password-hash set\", username)\n\t\t\t}\n\t\t} else if len(user.Password) < 6 {\n\t\t\treturn fmt.Errorf(\"the password for %s must be at least 6 characters\", username)\n\t\t}\n\t}\n\n\tif config.Server.AssetsPath != \"\" {\n\t\tif _, err := os.Stat(config.Server.AssetsPath); os.IsNotExist(err) {\n\t\t\treturn fmt.Errorf(\"assets directory does not exist: %s\", config.Server.AssetsPath)\n\t\t}\n\t}\n\n\tfor i := range config.Pages {\n\t\tpage := &config.Pages[i]\n\n\t\tif page.Title == \"\" {\n\t\t\treturn fmt.Errorf(\"page %d has no name\", i+1)\n\t\t}\n\n\t\tif page.Width != \"\" && (page.Width != \"wide\" && page.Width != \"slim\" && page.Width != \"default\") {\n\t\t\treturn fmt.Errorf(\"page %d: width can only be either wide or slim\", i+1)\n\t\t}\n\n\t\tif page.DesktopNavigationWidth != \"\" {\n\t\t\tif page.DesktopNavigationWidth != \"wide\" && page.DesktopNavigationWidth != \"slim\" && page.DesktopNavigationWidth != \"default\" {\n\t\t\t\treturn fmt.Errorf(\"page %d: desktop-navigation-width can only be either wide or slim\", i+1)\n\t\t\t}\n\t\t}\n\n\t\tif len(page.Columns) == 0 {\n\t\t\treturn fmt.Errorf(\"page %d has no columns\", i+1)\n\t\t}\n\n\t\tif page.Width == \"slim\" {\n\t\t\tif len(page.Columns) > 2 {","sourceCodeStart":472,"sourceCodeEnd":508,"githubUrl":"https://github.com/glanceapp/glance/blob/91324e8de762702e97b0ac5c8e36271d644d8642/internal/glance/config.go#L472-L508","documentation":"Every page in the pages list must have a name (title); this validation fires when page.Title is empty for the page number given in the message (1-indexed). The name is used in the navigation sidebar.","triggerScenarios":"A pages list item lacking the name field, or where indentation places name outside the item; also an include that yields a page object without a title.","commonSituations":"Starting a new page block and forgetting name; YAML indentation issues after copy-pasting; renaming the field to title instead of name.","solutions":["Add a name: to the page indicated by the number in the message","Check indentation — name must sit at the same level as columns/content","Use the field name 'name', not 'title' or 'label'"],"exampleFix":"# before\npages:\n  - columns:\n      - size: full\n# after\npages:\n  - name: Home\n    columns:\n      - size: full","handlingStrategy":"validation","validationCode":"for i, p := range cfg.Pages {\n    if p.Title == \"\" {\n        return fmt.Errorf(\"page %d missing name\", i+1)\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Write the name line first when scaffolding a page","Use yamllint truthy/key-duplicates rules to catch structural slips"],"tags":["glance","configuration","validation","yaml"],"backgroundTag":null,"analyzedSha":"91324e8de762702e97b0ac5c8e36271d644d8642","analyzedAt":"2026-08-15T14:12:54.279Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}