diff --git a/migrations/migrate.go b/migrations/migrate.go
index daf717a..9708a8d 100755
--- a/migrations/migrate.go
+++ b/migrations/migrate.go
@@ -1297,16 +1297,15 @@ func SeedUmind() {
return
}
// El panel viejo (Alpine, /app/umind) sigue existiendo y respondiendo, pero
- // el menú ahora apunta al orquestador (SPA Vue). Si ya existía el submódulo
- // apuntando a la URL vieja, se migra en el mismo registro en vez de crear
- // uno duplicado.
- url := "/orchestrator"
- urlVieja := "/app/umind"
+ // el menú apunta al SPA. La URL pasó por /app/umind → /orchestrator →
+ // /studio: se busca por cualquiera de las tres y se migra el mismo
+ // registro, en vez de dejar submódulos duplicados en el menú.
+ url := "/studio"
var sub models.Submodules
- if err := db.Where("url = ? OR url = ?", url, urlVieja).First(&sub).Error; err != nil {
+ if err := db.Where("url IN ?", []string{url, "/orchestrator", "/app/umind"}).First(&sub).Error; err != nil {
sub = models.Submodules{
- Title: "uMind",
- Description: "Chat con IA embebible por sitio, con base de conocimiento propia (RAG)",
+ Title: "uMind Studio",
+ Description: "Creación y gestión de agentes de IA: conocimiento, canales, herramientas y consumo",
Url: url,
ModuleId: modulo.ID,
ModifiedAt: time.Now(),
diff --git a/orchestrator/src/App.vue b/orchestrator/src/App.vue
index b776b1d..47ec168 100644
--- a/orchestrator/src/App.vue
+++ b/orchestrator/src/App.vue
@@ -1,12 +1,22 @@
-