63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/).
|
||
|
||
## [0.1.52] - 2026-02-15
|
||
|
||
### Fixed
|
||
|
||
- **PATH 按段去重**: `ensure_runtime_path` 从整段 `starts_with` 改为按分隔符拆段去重,
|
||
解决上层多次前置导致的 `node/bin` 重复条目问题
|
||
- **config PATH 覆盖**: 用户在 MCP config env 中指定自定义 PATH 时,
|
||
仍然确保应用内置运行时路径(`NUWAX_APP_RUNTIME_PATH`)在最前面
|
||
- **env value 泄露**: `log_command_details` 不再打印 env 变量的 value,
|
||
仅输出 key 列表,避免泄露敏感信息(如 token、secret)
|
||
|
||
### Added
|
||
|
||
- **`mcp-common::diagnostic` 模块**: 提取子进程启动诊断日志为独立模块,
|
||
提供 `log_stdio_spawn_context`、`format_spawn_error`、`format_path_summary` 等公共函数,
|
||
减少业务代码中的日志侵入
|
||
- **启动阶段环境诊断**: `env_init` 结束后输出 PATH 摘要和镜像环境变量最终值
|
||
- **spawn 失败上下文**: SSE/Stream 子进程 spawn 失败时输出完整错误上下文
|
||
(command、args、PATH),便于快速定位可执行文件找不到的问题
|
||
- **build 失败上下文**: `mcp_start_task` 中 SSE/Stream server build 失败时
|
||
通过 `anyhow::Context` 附加 MCP ID 和服务类型
|
||
- **`ensure_runtime_path` 单元测试**: 新增 5 个测试覆盖前置、部分去重、
|
||
全部已存在、双重重复等场景
|
||
|
||
### Changed
|
||
|
||
- **server_builder PATH 逻辑简化**: 两侧 `connect_stdio` 从三分支
|
||
(继承/config/缺失)统一为:取基础 PATH → `ensure_runtime_path` → 传递给子进程
|
||
- **无镜像提示**: 未配置镜像源时输出提示行,而非静默跳过
|
||
|
||
## [0.1.51] - 2026-02-14
|
||
|
||
### Changed
|
||
|
||
- 版本号更新
|
||
|
||
## [0.1.49] - 2026-02-13
|
||
|
||
### Added
|
||
|
||
- **镜像源配置**: 支持通过 `config.yml` 配置 npm/PyPI 镜像源,
|
||
环境变量优先级高于配置文件
|
||
- **环境变量初始化**: `env_init` 模块统一管理子进程环境(镜像源 + 内置运行时 PATH)
|
||
- **`UV_INSECURE_HOST` 支持**: HTTP 类型的 PyPI 镜像自动提取 host 并设置
|
||
|
||
## [0.1.48] - 2026-02-12
|
||
|
||
### Added
|
||
|
||
- **跨平台进程管理**: `process_compat` 模块提供 `wrap_process_v8` / `wrap_process_v9` 宏,
|
||
统一 Unix(ProcessGroup)和 Windows(JobObject + CREATE_NO_WINDOW)的进程包装
|
||
|
||
### Fixed
|
||
|
||
- Windows 平台隐藏控制台窗口配置
|