fix(handoff): use workspace.FindFromCwd for town root detection
detectTownRootFromCwd() only checked for mayor/town.json, but workspace.FindFromCwd() also accepts mayor/ directory as a secondary marker. This fixes handoff failing in workspaces without town.json. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -479,27 +479,13 @@ func sessionToGTRole(sessionName string) string {
|
|||||||
|
|
||||||
// detectTownRootFromCwd walks up from the current directory to find the town root.
|
// detectTownRootFromCwd walks up from the current directory to find the town root.
|
||||||
func detectTownRootFromCwd() string {
|
func detectTownRootFromCwd() string {
|
||||||
cwd, err := os.Getwd()
|
// Use workspace.FindFromCwd which handles both primary (mayor/town.json)
|
||||||
|
// and secondary (mayor/ directory) markers
|
||||||
|
townRoot, err := workspace.FindFromCwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
return townRoot
|
||||||
dir := cwd
|
|
||||||
for {
|
|
||||||
// Check for primary marker (mayor/town.json)
|
|
||||||
markerPath := filepath.Join(dir, "mayor", "town.json")
|
|
||||||
if _, err := os.Stat(markerPath); err == nil {
|
|
||||||
return dir
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move up
|
|
||||||
parent := filepath.Dir(dir)
|
|
||||||
if parent == dir {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
dir = parent
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// handoffRemoteSession respawns a different session and optionally switches to it.
|
// handoffRemoteSession respawns a different session and optionally switches to it.
|
||||||
|
|||||||
Reference in New Issue
Block a user