Conversation
- console_windows.go 重写:仅 Win10/Server2016+ 开 VT 并回读验证通过后才设 UTF-8 CP,老系统完全不动控制台避免字体被回退到 Raster Font - 新增 console_other.go + supportsANSIColor(),colorize() 在老 Windows 自动降级纯文本 - install.ps1 仅当控制台已是 CP 65001 时才设 UTF-8,避免 CP 936 系统上字节/解码错位乱码 - pkg/service/windows.go 等待进度输出从 stderr 迁到 stdout,与主流同轨避免 PowerShell 降级 writer 错位 - README 追加老系统 PowerShell 字体排查指引(右键默认值改 TrueType 字体) - 新增 SSLCTL_CONSOLE_DEBUG=1 启动期诊断开关 - 同步 CLAUDE.md / skills/go-dev/SKILL.md 说明
- 新增 PrefixUnknownError 结构化错误,含受影响站点列表和修复指引渲染 - Nginx/Apache 扫描器统一 resolveSitePaths,相对路径自动解析为绝对路径 - 多策略探测链:CLI override > 编译时 prefix > 运行进程参数 > 启发式 - CLI 新增 --nginx-prefix / --apache-prefix 参数(scan/setup 均支持) - PrefixUnknownError 穿透 adapter/certops/CLI 三层,不被 Docker 成功结果掩盖 - upgrade validateDownloadURL 提取为 var func,支持 e2e build tag 覆盖 - e2e.go 重命名为 z_e2e_overrides.go,统一 e2e 覆盖入口 - 新增 Bats E2E 测试覆盖相对路径扫描和 prefix 参数传递
- 安装脚本探测 releases.json 内容验证发布目录可达性 - 根目录优先,不可达时回落 /release/ 子目录 - 同步 deploy-spec.md(validation_method 限制、私钥四级回退、§7.2 路径探测)
- 适用项目列表新增 sslnas(NAS 系统) - 定位描述从"三个项目"调整为"现有项目" - 部署粒度表格新增 NAS 行:1:1 证书/1:1 站点,直接部署到 NAS 证书存储 - HTTP 文件验证新增平台豁免说明:NAS 受家庭宽带 80/443 不通限制,遇 file 字段跳过并告警 - 建议 NAS 的 local 模式使用 delegation(DNS 委托)验证
- detector 在 Windows 下扫描 SCM 服务,命中 nginx/apache 二进制路径时 ReloadCmd 设为 winsvc:<服务名> 哨兵 - Base.ReloadService 识别哨兵后走 SCM Stop+Start(轮询 30s 至 Stopped 再启动),避免与 SYSTEM master 进程之间的 OpenEvent 权限错配 - Windows reload 错误兜底白名单新增 Access is denied,未注册为服务的部署仍可回退到 taskkill+重启 - NeedsProcessRestart 把 winsvc 哨兵纳入「需要进程级重启」提示 - 新增 winservice_windows.go(svc/mgr 实现)+ winservice_other.go(非 Windows stub) - 单测覆盖:哨兵分发、错误透传、白名单分支、非 Windows stub
- pkg/service/windows.go: defer Close/Disconnect 用闭包包裹避免 errcheck;fmt.Fprint/Fprintln 显式丢弃返回值;exec.Cmd.Run 失败非致命场景显式 _ = 声明 - pkg/service/windows.go: SetRecoveryActions 错误改为显式忽略(消除 SA9003 空分支);RunAsService 增加 defer cancel 兜底,handler 自然退出时也释放 context(消除 G118) - cmd/console_windows.go: SetConsoleCP/SetConsoleOutputCP 调用显式忽略三返回值 - .github/workflows/ci.yml: lint job 追加 GOOS=windows 同步检查,防止 Windows 专属源(svc/mgr、kernel32)的 lint 问题再积 - skills/go-dev/SKILL.md、CLAUDE.md、.claude/commands/finish-check.md: 文档同步「双平台 lint」规范
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
winsvc:<服务名>哨兵,Base.ReloadService走 SCM Stop+Start 标准路径,避免 sslctl 与 SYSTEM master 之间的 OpenEvent 权限错配pkg/service/windows.go全部 errcheck/SA9003 +RunAsServiceG118 context 泄漏(defer cancel()兜底自然退出路径);修复cmd/console_windows.goerrcheckGOOS=windows二轮,防止 Windows 专属源(svc/mgr、kernel32 等)的 lint 问题再积Commits