feat: add Cobra CLI, LSP/MCP registries, workflow engine, and enriched dashboard
All checks were successful
Beta Release / beta (push) Successful in 2m24s

Major changes:
- Refactor CLI entry point to Cobra commands (root, setup, scan, doctor, install, update, lsp, mcp, skills, config, version)
- Add LSP registry with health checks, auto-install, and editor config generation
- Add MCP registry with editor detection, status tracking, and per-editor configuration
- Add workflow engine with planner and step execution for automated task chains
- Add conversation search, export (Markdown/JSON), and detailed token counting
- Add streaming shell chat handler with tool call/result events
- Add skill validation, dry-run testing, and export endpoints
- Enrich dashboard with Tools/Activity/Status tabs and tool cards grid
- Add PRD documentation
- Complete i18n for both EN and FR

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
This commit is contained in:
Augustin
2026-04-22 22:22:05 +02:00
parent 66b773ff86
commit 2e50366cd8
42 changed files with 6779 additions and 319 deletions

View File

@@ -3,7 +3,9 @@ package api
import (
"encoding/json"
"net/http"
"sync"
"github.com/muyue/muyue/internal/installer"
"github.com/muyue/muyue/internal/scanner"
"github.com/muyue/muyue/internal/updater"
)
@@ -49,7 +51,30 @@ func (s *Server) handleInstall(w http.ResponseWriter, r *http.Request) {
writeError(w, "no tools specified", http.StatusBadRequest)
return
}
writeJSON(w, map[string]string{"status": "installing"})
results := make([]installer.InstallResult, len(body.Tools))
var wg sync.WaitGroup
var mu sync.Mutex
for i, tool := range body.Tools {
wg.Add(1)
go func(idx int, name string) {
defer wg.Done()
inst := installer.New(s.config)
res := inst.InstallTool(name)
mu.Lock()
results[idx] = res
mu.Unlock()
}(i, tool)
}
wg.Wait()
writeJSON(w, map[string]interface{}{
"status": "done",
"tools": body.Tools,
"results": results,
})
}
func (s *Server) handleRunUpdate(w http.ResponseWriter, r *http.Request) {