diff --git a/CHANGELOG.md b/CHANGELOG.md index 02e37d9..7a813bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.10.21 (Preview) + +### Changed +- **Switched NuGet feed from dotnet-eng to dotnet-tools** — the AITools.BinlogMcp package is now published on the `dotnet-tools` feed. All install, update, and version resolution commands updated automatically. + ## 0.10.20 (Preview) ### Fixed @@ -8,7 +13,7 @@ ## 0.10.19 (Preview) ### Changed -- **Switched MCP server to AITools.BinlogMcp** — the extension now uses [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AITools.BinlogMcp) from the dotnet-eng feed instead of BinlogInsights.Mcp from nuget.org. The new package is auto-installed on first use. Existing BinlogInsights.Mcp installations are automatically migrated — the extension installs the new tool and prompts to uninstall the old one. +- **Switched MCP server to AITools.BinlogMcp** — the extension now uses [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) from the dotnet-tools feed instead of BinlogInsights.Mcp from nuget.org. The new package is auto-installed on first use. Existing BinlogInsights.Mcp installations are automatically migrated — the extension installs the new tool and prompts to uninstall the old one. - **Consistent project count** — the overview and tree view now show the same deduplicated project count instead of the raw evaluation count - **Search with text format** — search results from the new MCP's text format are parsed correctly for the tree view diff --git a/README.md b/README.md index ae43968..b3e639c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Analyze MSBuild binary logs (`.binlog`) with **GitHub Copilot Chat** and **MCP t @binlog /perf ``` -The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. +The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. ## What You Get @@ -52,12 +52,12 @@ The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotn ## Troubleshooting: MCP Server Installation -The extension auto-installs [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: +The extension auto-installs [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: ### 1. Install with explicit feed source ```bash -dotnet tool install -g AITools.BinlogMcp --prerelease --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json +dotnet tool install -g AITools.BinlogMcp --prerelease --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json ``` ### 2. Diagnose NuGet issues @@ -67,9 +67,9 @@ dotnet nuget list source ``` Common problems: -- **dotnet-eng feed not configured** — the tool is published on the dotnet-eng Azure DevOps feed +- **dotnet-tools feed not configured** — the tool is published on the dotnet-tools Azure DevOps feed - **Authenticated feed requires credentials** — may block access to the feed -- **Package source mapping** excludes the dotnet-eng feed for this package +- **Package source mapping** excludes the dotnet-tools feed for this package ### 3. Verify installation @@ -81,7 +81,7 @@ binlog-mcp --help ## Related Projects - [MSBuild Structured Log Viewer](https://github.com/KirillOsenkov/MSBuildStructuredLog) — WPF viewer with secrets redaction -- [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/AITools.BinlogMcp) — MCP server for binlog analysis +- [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) — MCP server for binlog analysis - [MSBuild Binary Log docs](https://learn.microsoft.com/en-us/visualstudio/msbuild/obtaining-build-logs-with-msbuild#save-a-binary-log) ## License diff --git a/package.json b/package.json index eb71b29..72f377d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "binlog-analyzer", "displayName": "MSBuild Binlog Analyzer", "description": "Analyze MSBuild binary logs with Copilot Chat and MCP tools", - "version": "0.10.20", + "version": "0.10.21", "preview": true, "publisher": "dotutils", "license": "MIT", diff --git a/src/extension.ts b/src/extension.ts index 18eeffa..ee478b3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -30,7 +30,7 @@ let extensionContext: vscode.ExtensionContext | undefined; let openedViaUri = false; let optimizeInProgress = false; let cachedMcpExePath: string | null | undefined; // undefined = not searched yet -const DOTNET_ENG_FEED = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'; +const DOTNET_TOOLS_FEED = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'; let codeLensRegistered = false; function escapeHtml(s: string): string { @@ -2137,11 +2137,11 @@ async function configureMcpServer(binlogPaths: string[], config: vscode.Workspac ...(workspaceCwd && { cwd: workspaceCwd }), }; vscode.window.showWarningMessage( - 'Could not find or install AITools.BinlogMcp. Install it manually: `dotnet tool install -g AITools.BinlogMcp --prerelease --add-source ' + DOTNET_ENG_FEED + '`', + 'Could not find or install AITools.BinlogMcp. Install it manually: `dotnet tool install -g AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED + '`', 'Copy Command' ).then(sel => { if (sel === 'Copy Command') { - vscode.env.clipboard.writeText('dotnet tool install -g AITools.BinlogMcp --prerelease --add-source ' + DOTNET_ENG_FEED); + vscode.env.clipboard.writeText('dotnet tool install -g AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED); } }); } @@ -2312,9 +2312,9 @@ async function getLatestNuGetVersion(): Promise { const cp = require('child_process'); return new Promise((resolve) => { - // Search the dotnet-eng feed for the package (includes prereleases) + // Search the dotnet-tools feed for the package (includes prereleases) cp.execFile('dotnet', ['package', 'search', NUGET_PACKAGE_ID, '--exact-match', '--format', 'json', '--prerelease', - '--source', DOTNET_ENG_FEED], + '--source', DOTNET_TOOLS_FEED], { timeout: 30000, encoding: 'utf8' }, (error: any, stdout: string) => { if (error) { @@ -2363,7 +2363,7 @@ async function updateMcpServer() { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Updating AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_ENG_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) @@ -2403,7 +2403,7 @@ async function applyPendingToolUpdate(): Promise { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Updating AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_ENG_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) @@ -2495,9 +2495,9 @@ async function installMcpTool(): Promise { const result = await vscode.window.withProgress( { location: vscode.ProgressLocation.Notification, title: 'Installing AITools.BinlogMcp MCP server (dotnet tool)...' }, () => new Promise((resolve) => { - cp.execFile('dotnet', ['tool', 'install', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_ENG_FEED], { timeout: 60000 }, (err: Error | null) => { + cp.execFile('dotnet', ['tool', 'install', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null) => { if (err) { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_ENG_FEED], { timeout: 60000 }, () => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, () => { const exe = findMcpTool(); telemetry.trackToolInstall(!!exe); resolve(exe);