From 6ccb53c4bec58693c2cf669c17f881d21e4fe4c5 Mon Sep 17 00:00:00 2001 From: Armando Fernandez Date: Thu, 16 Jul 2026 18:56:45 -0700 Subject: [PATCH] Add global Skills manager, per-server MCP controls, and status-pill transcript polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skills - New "Skills" rail tab (graduation-cap icon) to manage global skills (~/.mandocode/skills), the reusable instruction sets the AI loads on demand. - Create / edit / delete skills in-app, with an optional "Draft with AI" panel that generates a skill's name, description, and instructions from a one-line intent using a user-picked model (defaults to the active agent's). - Install skills from a git URL, a .zip, or a local folder, with recursive discovery so nested repo layouts (e.g. skills//SKILL.md) work. - Enable/disable each skill (renames SKILL.md so the engine skips it) — changes fan out to every open agent immediately. - Search box, quick-filter chips (All/Enabled/Disabled/Large), grouped Enabled/Disabled sections, and a per-skill size estimate so heavyweight skills are easy to spot. MCP servers - Replaced the per-agent "Use MCP tools" opt-in with per-server enable/disable, since servers are shared by every agent. Toggling a server saves and restarts/reconnects it across all agents. - Same layout as Skills: search, filter chips (All/Enabled/Disabled/Failed), grouped sections, consolidated [actions | filters] toolbar, and a footer. Transcript polish - Tool calls render as a single static pill (shows the loaded skill's name); no animation, to avoid a prior CPU-spin regression. - Connection/status/confirmation output (MCP reload, /copy, /copy-code, /config, /music) render as centered, theme-aware status pills — no emoji. Lists, errors, and detail-bearing messages stay as readable text. All changes are confined to the Desktop app; the shared engine submodule is untouched. --- src/MandoCode.Desktop/App.xaml.cs | 2 + src/MandoCode.Desktop/MainWindow.xaml | 439 ++++++++++++- src/MandoCode.Desktop/MainWindow.xaml.cs | 588 +++++++++++++++++- .../Services/SessionManager.cs | 4 + src/MandoCode.Desktop/Services/SkillAuthor.cs | 121 ++++ .../Services/SkillCoordinator.cs | 376 +++++++++++ .../Services/TranscriptHtmlBuilder.cs | 45 +- .../ViewModels/ChatController.cs | 51 +- 8 files changed, 1576 insertions(+), 50 deletions(-) create mode 100644 src/MandoCode.Desktop/Services/SkillAuthor.cs create mode 100644 src/MandoCode.Desktop/Services/SkillCoordinator.cs diff --git a/src/MandoCode.Desktop/App.xaml.cs b/src/MandoCode.Desktop/App.xaml.cs index a808f1a..30d0ab1 100644 --- a/src/MandoCode.Desktop/App.xaml.cs +++ b/src/MandoCode.Desktop/App.xaml.cs @@ -89,10 +89,12 @@ private static ServiceProvider BuildServices() // ---- Coordinators + session registry ---- services.AddSingleton(provider => new ConfigCoordinator(provider.GetRequiredService())); services.AddSingleton(provider => new McpCoordinator(provider.GetRequiredService())); + services.AddSingleton(provider => new SkillCoordinator(provider.GetRequiredService())); services.AddSingleton(provider => new SessionManager( provider, provider.GetRequiredService(), provider.GetRequiredService(), + provider.GetRequiredService(), projectRoot)); return services.BuildServiceProvider(); diff --git a/src/MandoCode.Desktop/MainWindow.xaml b/src/MandoCode.Desktop/MainWindow.xaml index 46a91b5..f51fcf5 100644 --- a/src/MandoCode.Desktop/MainWindow.xaml +++ b/src/MandoCode.Desktop/MainWindow.xaml @@ -45,11 +45,20 @@ ToolTipService.ToolTip="Settings — the selected agent's config"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -714,5 +904,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +