devtool 0.8.23

A CLI tool for development in update rustup toolchain, mise maintained tools and homebrew packages.
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.8.23] - 2025-10-23

### Fixed
- **进度条重复显示问题(最终修复)**:彻底解决了 Homebrew 执行过程中进度条重复显示的问题
  - 移除了进度条的 `enable_steady_tick()` 动画,避免持续刷新导致的视觉重复
  - 简化进度条样式,移除 spinner 动画,仅在状态变化时更新
  - 进度条现在只在关键状态转换时更新(准备中 → 执行中 → 完成/失败)
  - 增强 Homebrew 命令的输出隔离,添加 `HOMEBREW_NO_ENV_HINTS=1` 环境变量
  - 添加 `2>&1` 重定向确保所有 stderr 输出都被捕获到日志文件

### Changed
- **进度条样式优化**  - 模板从 `"{spinner:.green} {bar:20.cyan/blue} {pos}% {msg}"` 简化为 `"{bar:20.cyan/blue} {pos}% {msg}"`
  - 进度字符从 `"▰▱▰▱"` 改为 `"▰▱ "`,提供更清晰的视觉效果
  - 使用 `set_position()` 替代 `tick()` 进行初始化,减少不必要的渲染
- **输出抑制增强**:所有 Homebrew 命令现在完全隔离终端输出
  - `brew update`: 添加 `HOMEBREW_NO_ENV_HINTS=1 2>&1`
  - `brew upgrade`: 添加 `HOMEBREW_NO_ENV_HINTS=1 2>&1`
  - `brew cleanup`: 添加 `HOMEBREW_NO_ENV_HINTS=1 2>&1`

### Enhanced
- **用户体验提升**:进度条显示更稳定、更清晰,完全消除视觉重复
- **性能优化**:减少不必要的进度条刷新,降低 CPU 使用率
- **代码清理**:移除未使用的 `std::time::Duration` 导入

### Technical Details
- 进度条不再使用持续动画,仅在状态变化时更新(0% → 50% → 100%)
- 这种方式在保持良好用户反馈的同时,避免了与命令输出的冲突
- 所有 Homebrew 输出仍然完整记录到日志文件中,只是不显示在终端上
- 修复后的进度条在所有场景下都保持稳定的三条进度条显示

## [0.8.22] - 2025-10-23

### Fixed
- **进度条重复显示问题**:修复了在 Homebrew 升级过程中进度条重复显示的问题
  - 移除了无效的 `pbar` 参数机制
  - 实现了基于环境变量的输出抑制控制(`DEVTOOL_SUPPRESS_OUTPUT`  - 在工具执行期间自动启用输出抑制,防止命令输出干扰进度条
  - 增强了 Homebrew 命令的输出控制,添加 `HOMEBREW_NO_EMOJI``HOMEBREW_NO_AUTO_UPDATE`
  - 确保进度条在所有场景下都能流畅显示,不再出现重复行

### Changed
- **代码清理**:移除所有命令函数中未使用的进度条参数
  - 移除 `brew_update`, `brew_upgrade`, `brew_cleanup` 函数的 `_pbar` 参数
  - 移除 `rustup_update` 函数的 `_pbar` 参数
  - 移除 `mise_up` 函数的 `_pbar` 参数
  - 简化函数调用,移除无用的 `progress_bar` 变量声明
- **输出控制机制重构**:从参数传递改为环境变量控制
  - 新增 `enable_output_suppression()``disable_output_suppression()` 助手函数
  - `run_command` 函数检查 `DEVTOOL_SUPPRESS_OUTPUT` 环境变量
  - 所有命令输出仍完整记录到日志文件中

### Enhanced
- **改进文档**:为所有命令函数添加了详细的文档注释
  - 明确说明命令函数不涉及进度条管理
  - 说明进度条管理在编排层(main.rs)统一处理
  -`SimpleProgressManager` 添加架构说明和使用示例
  - 为输出抑制助手函数添加详细文档
- **代码可维护性提升**:通过移除无用参数,使函数签名更简洁清晰
- **架构清晰化**:明确了进度条管理的职责边界
- **用户体验提升**:进度条显示更流畅,终端输出更清晰

### Technical Details
- 进度条管理完全由 `SimpleProgressManager` 在应用程序编排层处理
- 命令执行层专注于执行命令并返回结果,不涉及 UI 相关逻辑
- 使用环境变量 `DEVTOOL_SUPPRESS_OUTPUT` 实现跨层级的输出控制
- 输出抑制只影响终端显示,所有输出仍完整保存到日志文件
- 这是内部实现优化,不影响用户使用或外部 API

## [0.8.21] - 2025-10-21

### Added
- **统一日志存储系统**:所有日志文件现在统一保存到 `~/Library/Caches/devtool/` 目录(macOS)或 `~/.cache/devtool/` 目录(Linux)
- **按工具分类的日志组织**:每个工具(Homebrew、Rustup、Mise)都有独立的子目录
- **时间戳目录结构**:每次执行创建时间戳子目录,便于追踪历史执行
- **latest 符号链接**:每个工具目录包含 `latest` 符号链接,指向最新的执行结果
- **完整的日志保存**`--keep-logs` 功能现在保存所有输出日志,不仅仅是调试日志
- **自动目录创建**:系统自动创建所需的目录结构

### Fixed
- **修复编译警告**:消除了所有编译警告和 lint 问题
- **改进错误处理**:将 `unwrap()` 替换为更安全的错误处理模式
- **统一代码风格**:创建辅助函数来统一调试日志处理

### Enhanced
- **改进的日志管理**:用户现在可以轻松找到所有相关的日志文件
- **更好的问题诊断**:提供完整的日志文件用于故障排查
- **统一的缓存目录管理**:所有组件使用相同的缓存目录获取逻辑
- **代码质量提升**:添加详细的文档注释,改进代码可读性

### Technical Details
- 新增 `ensure_cache_dir()` 函数,自动创建目录结构
- 重写 `save_debug_logs()` 函数,支持完整的日志文件保存
- 实现按工具分类的目录结构:`~/Library/Caches/devtool/{tool}/{timestamp}/`
- 添加 `latest` 符号链接管理
- 统一所有组件的缓存目录获取逻辑
- 修复未使用变量警告,简化可折叠的 else-if 块
- 改进进度条样式设置的错误处理

## [0.8.20] - 2025-10-19

### Fixed
- 完全重写进度条系统,彻底解决进度条重复创建问题
- 移除复杂的全局状态管理,使用简化的本地状态管理
- 简化进度条状态枚举,从6个状态减少到4个状态
- 避免复杂的动画和状态转换逻辑

### Changed
- 升级版本号到0.8.20
- 完全重写进度条架构,使用 `SimpleProgressManager` 替代 `ProgressBarManager`
- 简化进度条状态管理,移除复杂的全局状态
- 优化并发处理,每个执行上下文有独立的进度条管理器

### Technical Details
- 重写 `src/ui/progress.rs`,实现 `SimpleProgressManager``SimpleProgressState`
- 移除复杂的 `ProgressAnimationManager` 和全局状态管理
- 简化进度条创建和更新逻辑
- 移除不再支持的 `progress-status` 子命令
- 确保每个工具只创建一个进度条,彻底解决重复显示问题

## [0.8.19] - 2025-10-19

### Fixed
- 完全重写进度条系统,彻底解决进度条重复创建问题
- 移除复杂的全局状态管理,使用简化的本地状态管理
- 简化进度条状态枚举,从6个状态减少到4个状态
- 避免复杂的动画和状态转换逻辑

### Changed
- 升级版本号到0.8.19
- 完全重写进度条架构,使用 `SimpleProgressManager` 替代 `ProgressBarManager`
- 简化进度条状态管理,移除复杂的全局状态
- 优化并发处理,每个执行上下文有独立的进度条管理器

### Technical Details
- 重写 `src/ui/progress.rs`,实现 `SimpleProgressManager``SimpleProgressState`
- 移除复杂的 `ProgressAnimationManager` 和全局状态管理
- 简化进度条创建和更新逻辑
- 移除不再支持的 `progress-status` 子命令
- 确保每个工具只创建一个进度条,彻底解决重复显示问题

## [0.8.18] - 2025-10-19

### Fixed
- 彻底修复进度条重复创建问题
- 改进环境变量设置机制,完全禁用Homebrew进度条
- 优化输出重定向逻辑,防止进度条输出到终端
- 实现进度条隔离机制,确保只有一个进度条系统活跃
- 修复输出重定向机制中的进度条检测逻辑

### Changed
- 升级版本号到0.8.18
- 改进Homebrew命令执行时的环境变量设置
- 优化进度条状态传递机制
- 增强输出重定向的可靠性

## [0.8.17] - 2025-10-19

### Fixed
- 修复进度条重复创建问题
- 改进进度条实例管理机制
- 优化进度条生命周期管理
- 修复所有lint和clippy警告

### Changed
- 升级版本号到0.8.17
- 改进进度条稳定性,确保每个工具只有一个进度条实例
- 优化进度条状态管理,防止重复创建

## [0.8.16] - 2025-10-19

### Added
- 升级检测逻辑修复和测试
- Homebrew 升级检测问题诊断
- 版本发布测试机制

### Changed
- 升级版本号以测试 Homebrew 升级检测修复效果
- 改进升级检测逻辑,确保升级命令真正执行
- 优化升级状态判断,准确反映升级结果
- 增强升级验证机制,确保升级操作成功

### Fixed
- 修复升级检测逻辑中的缓存更新延迟问题
- 解决升级状态判断不准确的问题
- 优化升级详情文件生成机制
- 改进升级命令执行验证

### Improved
- 显著提升升级检测的准确性和可靠性
- 进一步优化升级执行逻辑
- 改进代码质量和可维护性
- 增强系统整体稳定性和一致性

## [0.8.15] - 2025-10-19

### Added
- Homebrew 进度条输出控制机制
- 环境变量控制 Homebrew 进度条显示
- 命令执行环境隔离功能

### Changed
- 彻底解决 Homebrew 工具执行过程中的进度条重复创建问题
- 使用 HOMEBREW_NO_PROGRESS=1 环境变量禁用 Homebrew 内部进度条
- 优化 Homebrew 命令执行参数
- 改进进度条显示稳定性和用户体验

### Fixed
- 修复 Homebrew 命令执行过程中的进度条重复显示问题
- 解决 brew update、brew upgrade、brew cleanup 命令的进度条冲突
- 优化进度条输出控制机制
- 改进命令执行环境隔离

### Improved
- 显著提升 Homebrew 执行过程中的进度条显示稳定性
- 进一步优化用户体验和进度条显示效果
- 改进代码质量和可维护性
- 增强系统整体稳定性和一致性

## [0.8.14] - 2025-10-19

### Added
- 进度条重复显示问题的进一步优化
- 进度条管理逻辑简化
- 全局进度条实例管理机制

### Changed
- 进一步优化进度条重复显示问题
- 简化进度条管理逻辑,移除不必要的全局进度更新调用
- 优化进度条创建和生命周期管理
- 改进进度条显示稳定性

### Fixed
- 彻底修复进度条重复创建问题
- 优化进度条状态管理
- 修复进度条显示不一致问题
- 改进进度条性能表现

### Improved
- 显著提升进度条显示稳定性
- 进一步优化用户体验
- 改进代码质量和可维护性
- 增强系统整体稳定性

## [0.8.13] - 2025-10-19

### Added
- 进度条平滑过渡功能
- 进度条状态验证机制
- 全局进度条管理
- 代码质量优化工具

### Changed
- 实现进度条平滑过渡,从 25% 到 50% 到 75% 到 100%
- 修复重复进度条显示问题
- 统一并行和顺序执行模式的进度条管理
- 优化进度条显示稳定性

### Fixed
- 修复进度条重复显示问题
- 消除所有 lint 和 clippy 警告
- 修复进度条状态转换验证
- 优化进度条创建和销毁逻辑

### Improved
- 显著提升进度条显示质量
- 改进代码可维护性
- 优化用户体验
- 增强系统稳定性

## [0.8.12] - 2025-10-18

### Added
- 进度条显示样式美化
- 现代化进度条设计
- 无边框极简主义设计

### Changed
- 进度条字符从单调的 `#` 升级为美观的 `█▓▒░`
- 进一步升级为现代字符 `▰▱▰▱`
- 实现无边框现代化设计

### Improved
- 显著提升用户体验和视觉效果
- 符合现代UI设计趋势
- 提供更优秀的进度反馈
- 实现极简主义的现代化进度条

## [0.8.11] - 2025-10-18

### Fixed
- 修复编译警告和代码质量问题
- 修复重复进度条显示问题
- 移除未使用的字段和方法
- 优化代码结构和性能

### Improved
- 改进进度条管理系统
- 提升代码质量和可维护性
- 统一代码格式化
- 应用所有 Clippy 建议

### Technical Details
- 移除了 `ProgressBarManager` 中未使用的 `start_time``completion_delay` 字段
- 移除了未使用的 getter 方法
- 使用 `std::slice::from_ref` 替代 `clone()` 以提高性能
- 优化了测试代码以适配新的代码结构
- 确保所有代码符合 Rust 最佳实践

## [0.8.10] - 2025-10-18

### Added
- 用户反馈系统
- 内置反馈收集功能
- 交互式反馈收集
- 自动系统信息收集
- 结构化反馈报告生成

### Fixed
- 修复重复进度条显示问题
- 改进 Homebrew 命令执行

### Improved
- 进度条状态管理和同步
- 用户反馈收集体验

## [0.8.0] - 2025-10-18

### Added
- 扩展工具支持
- 用户反馈系统
- 改进的进度条显示

### Changed
- 优化了工具更新流程
- 改进了用户体验

## [0.7.8] - 2025-10-18

### Added
- 版本跟踪系统
- 性能优化

### Improved
- 工具更新性能
- 用户体验

## [0.7.0] - 2025-10-18

### Added
- 并行执行框架
- 多进度条支持
- Shell 补全支持
- 性能基准测试

### Improved
- 代码质量
- 错误处理
- Rustup 支持

## [0.6.0] - 2025-10-18

### Added
- 并行执行模式
- 依赖图管理
- 异步/等待架构

### Improved
- 执行性能(最高 10 倍提升)
- 进度报告
- 用户体验