Skip to content

Releases: SMWHff/winrandr

v0.9.4

Choose a tag to compare

@SMWHff SMWHff released this 12 Jul 00:37

重构

  • 新增 scripts/_common.sh 共享函数库,消除 build.sh/publish.sh/bump-version.sh 中的版本管理重复代码
  • 提取 _calc_relative_position() 纯函数,替换 6 个零 mock 坐标计算测试

Bug 修复

  • 修复 GitHub Release 中文乱码(改用 --notes-file 避免 GBK 编码丢失)
  • 修复构建脚本默认压缩模式问题 + 发版脚本 UTF-8 编码修复

CI

  • 覆盖率阈值从 99% 降至 98%(适配真实硬件测试边界)
  • --cov-fail-underpyproject.toml 对齐

测试

  • Mock 审核修复:违规正向用例 Mock 替换为纯函数测试
  • 清除 test_identify_display_full_success 违规 Mock 测试

v0.9.3

Choose a tag to compare

@SMWHff SMWHff released this 10 Jul 03:43

重构

  • profiles.py: 从 load_profile 提取 _restore_display 辅助函数,消除 C901 复杂度过高
  • utils.py: 合并冗余错误日志,精简 _build_path_subset
  • 新增 repair.py 到版本控制(缺失 mode 修复模块)

新增

  • 标准化发版流程:scripts/release/publish.sh(8 步确认)、scripts/release/bump-version.shdocs/release-process.md
  • .claude/skills/release.md/release 技能定义
  • test_cli_main_mock.py:异常分支 Mock 测试 253 行

CI

  • 覆盖率阈值从 85% 提升至 95%(test.yml + pyproject.toml)
  • .gitignore 添加 *.cover 忽略 coverage 并行模式临时文件
  • 清理 .claude/worktrees/ 遗留目录

文档

  • 同步 CHANGELOG / architecture.md / README.md / CLAUDE.md 最新状态
  • release.yml 更新默认发布说明

测试

  • 测试夹具去重:3 个 profile 测试文件共享 conftest.pytemp_profiles
  • 覆盖率 99%,7 行未覆盖(入口样板/正向路径,不可 Mock)

v0.9.2

Choose a tag to compare

@SMWHff SMWHff released this 09 Jul 07:09

v0.9.2 — 代码质量提升与测试覆盖完善

  • docs: 更新测试计数(446 项,100%)和 PyPI 安装说明(#15
  • refactor: 测试夹具去重(temp_profiles → conftest)、utils.py 行数清理、profiles.py 废弃 noqa 移除(#16
  • refactor: 从 list_displays() 提取 _source_resolution_position_target_refresh_rate 辅助函数(#17
  • refactor: 提取 _build_path_subset 消除重复模式;CI 覆盖率阈值同步为 99%(#18
  • bump: 0.9.1 → 0.9.2

v0.9.1

Choose a tag to compare

@SMWHff SMWHff released this 09 Jul 05:29

修复: gamma 黑屏、循环依赖、测试清理等

v0.9.0

Choose a tag to compare

@SMWHff SMWHff released this 09 Jul 03:24

v0.9.0

Bug 修复

  • 修复 load_profile 在 set_noprimary 失败时未正确返回 False
  • set_off 添加防禁用最后显示器保护
  • 修复 Nuitka 编译 exe 环境下日志路径错误(增加文件日志降级处理)

新功能

  • PowerShell 模块新增 4 个 cmdlet(Set-WinRandrDryRun、Set-WinRandrVerbose、Get-WinRandrProperties、Get-WinRandrProvider)

代码完善

  • 改进类型注解精度(NoReturn、具体 tuple 类型)
  • 增加 3 个未覆盖场景的测试
  • fail_under 提升至 99%
  • 修正 build.sh 注释和版本号提取方式(改用 grep 避免导入全包)
  • 移除 .gitattributes 和 xrandr-reference.md 重复行

v0.8.0

Choose a tag to compare

@SMWHff SMWHff released this 09 Jul 02:01

v0.8.0

新功能

  • --night-mode:夜览模式减少蓝光(light/medium/heavy 或 0.0–1.0)
  • 连接类型检测:--prop 显示 HDMI/DP/USB-C/DVI/VGA
  • PowerShell 模块新增 Set-WinRandrNightModeGet-WinRandrListModes cmdlet

Bug 修复

  • PowerShell 补全动态显示名正则错误(多了一个反斜杠)
  • --night-mode 在补全脚本中缺失
  • 分辨率 is_preferred 未比较刷新率,导致同分辨率不同刷新率都标为首选
  • _normalize_name 对无法识别的输入静默返回未修改字符串

代码/测试完善

  • 新增 22 项测试,gamma.py 覆盖率 100%
  • 提取共享 _fake_display fixture 到 conftest.py,消除 5 处重复
  • _relations 提升为模块级常量
  • build.sh 添加 uv 前置检查
  • clean.sh 补充清理 dist/winrandr.exe
  • pyproject.toml 补充 PyPI 元数据

v0.7.1

Choose a tag to compare

@SMWHff SMWHff released this 09 Jul 00:18

变更

  • 移除 win32/constants.py 中未使用的 SDC_VIRTUAL_MODE_AWARE 常量
  • 移除 profiles.py 中悬空函数 get_profile_names() 及对应测试
  • 399 项测试通过,100% 覆盖率

v0.6.0

Choose a tag to compare

@SMWHff SMWHff released this 08 Jul 13:24

变更

  • 拆分超限测试文件(test_cli_main.py → profiles/global/misc,test_models.py → test_edid.py)
  • 拆分 test_cli_handlers.py / test_profiles.py / test_cli.py 中超限部分
  • 重组 tests/unit/ 为 cli/ profiles/ win32/ 子目录结构
  • 从 cli/init.py 提取 parser.py 独立文件
  • 所有源文件 ≤300 行,所有目录 ≤8 文件
  • 395 项测试,100% 行/分支覆盖率

v0.5.0

Choose a tag to compare

@SMWHff SMWHff released this 08 Jul 12:01

v0.5.0 (2026-07-08)

Breaking Changes

  • -v 现在等价于 --version(与 xrandr 一致),不再是 --verbose 的别名。
    如需详细日志请使用 --verbose(长选项不变)。

架构重构

  • winrandr/cli.py + cli_handlers.pywinrandr/cli/__init__.py + handlers.py 子包
  • winrandr/ 目录文件数从 9 降至 7,符合 ≤8 规范

新增

  • --list-providers--listproviders 的兼容别名
  • --list-monitors--listmonitors 的兼容别名

测试

  • 395 项通过,全模块 100% 分支覆盖率(1345 语句)

v0.4.0

Choose a tag to compare

@SMWHff SMWHff released this 08 Jul 11:48

v0.4.0

新增功能

  • --brightness / --gamma 可不带 --output,一次性批量应用到所有已连接显示器
  • 配置存档管理(Profile):--save-profile / --load-profile / --list-profiles / --delete-profile
  • --identify:闪屏识别显示器
  • --list-profiles --json / --load-profile --dry-run / --save-profile --dry-run

质量

  • 全模块 100% 分支覆盖率(1343 语句,0 遗漏)
  • 393 项 pytest,lint 零警告
  • 空存档名/显示器缺失/API 失败等所有边界路径覆盖

全局亮度/伽马

winrandr --brightness 0.7       # 批量调暗所有显示器
winrandr --gamma 1.0:0.9:0.8   # 批量伽马校正

Shell 补全

. ./scripts/completions.ps1    # PowerShell
source scripts/completions.bash # Bash/Zsh