fix: 修复 Windows nvm4w 路径下 upgrade 命令识别为 development 的问题

- doctorDiagnostic: 增加 Windows nvm4w/nodejs 路径检测
- 路径比较时统一规范化分隔符,确保跨平台匹配
- chore: bump version to 4.0.8
This commit is contained in:
y574444354 2026-04-16 20:38:26 +08:00
parent 928afd355d
commit d67b7e4010
3 changed files with 13 additions and 5 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@costrict/csc", "name": "@costrict/csc",
"version": "4.0.7", "version": "4.0.8",
"description": "CSC — CoStrict多模型终端 AI 编程助手,支持 Anthropic/OpenAI/Gemini/Grok 等多种 API 端点", "description": "CSC — CoStrict多模型终端 AI 编程助手,支持 Anthropic/OpenAI/Gemini/Grok 等多种 API 端点",
"type": "module", "type": "module",

View File

@ -7,7 +7,7 @@
*/ */
export function getMacroDefines(): Record<string, string> { export function getMacroDefines(): Record<string, string> {
return { return {
"MACRO.VERSION": JSON.stringify("4.0.7"), "MACRO.VERSION": JSON.stringify("4.0.8"),
"MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()), "MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()),
"MACRO.FEEDBACK_CHANNEL": JSON.stringify(""), "MACRO.FEEDBACK_CHANNEL": JSON.stringify(""),
"MACRO.ISSUES_EXPLAINER": JSON.stringify(""), "MACRO.ISSUES_EXPLAINER": JSON.stringify(""),

View File

@ -113,17 +113,25 @@ export async function getCurrentInstallationType(): Promise<InstallationType> {
return 'npm-local' return 'npm-local'
} }
// Check if we're in a typical npm global location // Check if we're in a typical npm global location (Unix + Windows)
const npmGlobalPaths = [ const npmGlobalPaths = [
'/usr/local/lib/node_modules', '/usr/local/lib/node_modules',
'/usr/lib/node_modules', '/usr/lib/node_modules',
'/opt/homebrew/lib/node_modules', '/opt/homebrew/lib/node_modules',
'/opt/homebrew/bin', '/opt/homebrew/bin',
'/usr/local/bin', '/usr/local/bin',
'/.nvm/versions/node/', // nvm installations '/.nvm/versions/node/', // nvm installations (Unix)
'\\nvm', // nvm4w installations (Windows, e.g. C:\nvm4w\nodejs)
] ]
if (npmGlobalPaths.some(path => invokedPath.includes(path))) { // Normalize path separators for cross-platform matching
const normalizedPath = invokedPath.replace(/\\/g, '/')
if (
npmGlobalPaths.some(path => invokedPath.includes(path)) ||
normalizedPath.includes('/nvm') ||
normalizedPath.includes('/nodejs/') ||
normalizedPath.includes('/.nvm/')
) {
return 'npm-global' return 'npm-global'
} }