GopeedLab/gopeed · error
extension title is required
Error message
extension title is required
What it means
Extension.validate() requires a non-empty title in manifest.json. The title is the human-readable display name shown in the extensions UI, so an empty one fails install even when name and version are present. It is checked second, after name.
Source
Thrown at pkg/download/extension.go:441
Scripts []*Script `json:"scripts"`
Settings []*Setting `json:"settings"`
// Disabled if true, this extension will be ignored
Disabled bool `json:"disabled"`
DevMode bool `json:"devMode"`
// DevPath is the local path of extension source code
DevPath string `json:"devPath"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
func (e *Extension) validate() error {
if e.Name == "" {
return fmt.Errorf("extension name is required")
}
if e.Title == "" {
return fmt.Errorf("extension title is required")
}
if e.Version == "" {
return fmt.Errorf("extension version is required")
}
return nil
}
func (e *Extension) buildIdentity() string {
if e.Author == "" {
return e.Name
}
return e.Author + "@" + e.Name
}
func (e *Extension) buildInstallUrl() string {
if e.Repository == nil || e.Repository.Url == "" {
return ""
}View on GitHub (pinned to 7b7327ffb3)
Solutions
- Add a non-empty "title" to manifest.json
- Double-check exact key spelling and top-level placement
- Reinstall the extension after fixing the manifest
Example fix
// before (manifest.json)
{ "name": "my-extension", "version": "1.0.0" }
// after
{ "name": "my-extension", "title": "My Extension", "version": "1.0.0" } Defensive patterns
Strategy: validation
Validate before calling
// Go: pre-validate manifest title
var m map[string]any
_ = json.Unmarshal(raw, &m)
if s, _ := m["title"].(string); strings.TrimSpace(s) == "" {
return fmt.Errorf("manifest.json: 'title' is required")
} Prevention
- Fill title (display name) in addition to name (slug) in the template
- Check exact key spelling — 'title', top-level
- Re-validate after renaming keys when porting manifests from other formats
When it happens
Trigger: manifest.json with a "name" but missing or empty "title"; title key misspelled ("label", "Title") so the field stays zero after unmarshal.
Common situations: Minimal manifests written quickly for testing; converting another format's manifest and dropping the display-name field; templates where title defaults to a placeholder that was cleared.
Related errors
- extension name is required
- extension version is required
- manifest.json not found
- invalid resource file name
- missing handler
AI-assisted analysis of GopeedLab/gopeed@7b7327ffb3 (2026-08-16).
Data as JSON: /api/errors/7ff4775970dbae59.
Report an issue: GitHub.