From 5c8565534fb5dd59c6706b0b6d40c716e171e231 Mon Sep 17 00:00:00 2001 From: gus Date: Sun, 4 Jan 2026 12:33:15 -0800 Subject: [PATCH] fix: improve rig name validation error message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use underscores instead of stripping invalid characters - Convert suggestion to lowercase for consistency - Explicitly state that underscores are allowed Before: "MyProject.jl" → "MyProjectjl" After: "MyProject.jl" → "myproject_jl" Closes #97 Co-Authored-By: Olivier Debeuf De Rijcker 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/rig/manager.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/rig/manager.go b/internal/rig/manager.go index 9038993e..76e25b04 100644 --- a/internal/rig/manager.go +++ b/internal/rig/manager.go @@ -212,8 +212,9 @@ func (m *Manager) AddRig(opts AddRigOptions) (*Rig, error) { // Validate rig name: reject characters that break agent ID parsing // Agent IDs use format --[-] with hyphens as delimiters if strings.ContainsAny(opts.Name, "-. ") { - sanitized := strings.NewReplacer("-", "", ".", "", " ", "").Replace(opts.Name) - return nil, fmt.Errorf("rig name %q contains invalid characters (hyphens, dots, or spaces break agent ID parsing); use %q instead", opts.Name, sanitized) + sanitized := strings.NewReplacer("-", "_", ".", "_", " ", "_").Replace(opts.Name) + sanitized = strings.ToLower(sanitized) + return nil, fmt.Errorf("rig name %q contains invalid characters; hyphens, dots, and spaces are reserved for agent ID parsing. Try %q instead (underscores are allowed)", opts.Name, sanitized) } rigPath := filepath.Join(m.townRoot, opts.Name)