Skip to content

Releases: CookPiu/WinHomestead

v0.3.1 — Language switch and a screenshot

Choose a tag to compare

@CookPiu CookPiu released this 12 Sep 03:59

A small follow-up to v0.3.0: the interface language can now be forced from the command line, and the README finally has a screenshot.

New

--lang startup argument. The interface still follows your system language by default, but you can override it:

.\WinHomestead.exe --lang en     # force English
.\WinHomestead.exe --lang zh     # force Chinese

--lang=en-US and --lang=zh-Hans work too. Useful if your Windows is set to one language but you'd rather read the other — and it's how the README screenshot was taken on a Chinese system.

The parsing runs at the very start of OnStartup, before anything renders: the strings on screen are resolved when controls are constructed, so a moment later would already be too late.

Also

  • The README (both languages) now shows the main list, so you can see what the thing looks like before downloading it.
  • Project conventions moved out of the model-tool config file into CONTRIBUTING.md — layering rules, the four stages of a task, how the bilingual strings work, and a few traps worth knowing.

Install

Download both files, keep them in the same folder, and run WinHomestead.exe:

File Why
WinHomestead.exe Single file, all dependencies embedded
WinHomestead.exe.config Binding redirects and runtime declaration — it won't start without this

Requires Windows 11 22H2 or later and an administrator account. No .NET install needed — it runs on the .NET Framework 4.8 that ships with Windows.

Important

This exe is not code-signed, so Windows will show a SmartScreen box. Click More info → Run anyway if you want to proceed; otherwise build from source or verify the checksums below.

Checksums (SHA256)

BBAA8748A2D2AE9E41C16D9B331DB982BD4F589BA1C811AD9610B51934A6780C  WinHomestead.exe
FACB7DA0FBCCD9D6341D74F09A47E66D4E22558320E6D29C464F51C831574238  WinHomestead.exe.config

Verify with Get-FileHash .\WinHomestead.exe -Algorithm SHA256.

Full changelog: v0.3.0...v0.3.1


中文说明

v0.3.0 的小补丁:界面语言可以用命令行参数强制,README 终于有截图了。

新增

--lang 启动参数。 界面默认仍跟随系统语言,但可以覆盖:

.\WinHomestead.exe --lang en     # 强制英文
.\WinHomestead.exe --lang zh     # 强制中文

--lang=en-US、--lang=zh-Hans 也认。系统是一种语言、想看另一种时用得上——README 的截图就是在中文系统上靠它截的英文界面。

解析放在 OnStartup 最前面:界面上的字在控件构造时就取好了,晚一步就来不及。

其他

  • README 两版都放上了主列表截图,下载前先看得到长什么样。
  • 工程约定从模型工具的配置文件搬进了 CONTRIBUTING.md:分层约束、任务的四个环节、双语文案写法,以及几个踩过的坑。

安装

下载上面两个文件,放在同一个目录,双击 WinHomestead.exe。需要 Windows 11 22H2 及以上 + 管理员账户,无需安装 .NET。

这个 exe 没有代码签名,Windows 会弹 SmartScreen 蓝框。确认要运行就点「更多信息」→「仍要运行」;不放心可以自己从源码构建,或者比对上面的校验和。

v0.3.0 — English interface

Choose a tag to compare

@CookPiu CookPiu released this 12 Sep 03:02

The interface now follows your system language. Everything a user sees — item names and descriptions, the current/target values, check findings, manual follow-ups, dialogs, the exported HTML report — comes in English unless Windows is set to Chinese.

A few items still target Chinese users specifically (the Microsoft Pinyin IME switches); they simply won't apply otherwise.

How it's built

No .resx. The user-facing strings here are mostly whole sentences with interpolation — item descriptions, detection findings, manual steps — and a resource file would split them into several hundred keys where a missing translation or a mismatched format string fails silently at runtime. Both languages sit at the call site instead:

L.S("显示文件扩展名", "Show file extensions")

and in XAML, {local:Loc Zh='检查项', En='Checks'}. One sentence is one edit, and a reviewer sees both languages on the same screen. The language is picked from CultureInfo.CurrentUICulture at startup.

Logs and internal exception messages stay in Chinese — they go to a log file and the reader is a developer.

Fixed along the way

  • The "recommended" badge lost its green background. The DataTrigger compared the displayed status text against the literal string 推荐, so the badge stopped working the moment the label was translated. It now binds a boolean instead. The same trap — UI logic comparing display text — is now written into the contributor rules.
  • TaskCatalog cached shared words in static readonly fields, which are fixed at type initialization, so rebuilding the catalog in another language returned the old strings. They're properties now.
  • Randomly failing tests. The language flag is process-wide static, and xunit runs test classes in parallel by default — the localization tests would flip it to English while another class was asserting Chinese text. Parallelization is disabled for the assembly.

Also in this release

software.json gained name_en / note_en, so Chinese products show as WeChat, DingTalk and Feishu with English install notes. The repository now has an English README.

Install

Download both files, keep them in the same folder, and run WinHomestead.exe:

File Why
WinHomestead.exe Single file, all dependencies embedded
WinHomestead.exe.config Binding redirects and runtime declaration — it won't start without this

Requires Windows 11 22H2 or later and an administrator account. No .NET install needed — it runs on the .NET Framework 4.8 that ships with Windows.

Important

This exe is not code-signed, so Windows will show a SmartScreen box. Click More info → Run anyway if you want to proceed; otherwise build from source or verify the checksums below.

Checksums (SHA256)

21D01AE75093F01EE8AFA30A605FE707B2175010EC1D026DC36D1DCA8024C423  WinHomestead.exe
FACB7DA0FBCCD9D6341D74F09A47E66D4E22558320E6D29C464F51C831574238  WinHomestead.exe.config

Verify with Get-FileHash .\WinHomestead.exe -Algorithm SHA256.

Unchanged

No uninstalling Microsoft's built-in apps, no disabling services, no touching Windows Update, no changes to UAC / SmartScreen / memory integrity, no DNS or hosts tinkering, no network access. A restore point is created before the first change of each session, original values are journaled, and a failed item rolls back from that record.

Full changelog: v0.2.0...v0.3.0


中文说明

界面现在跟随系统语言:中文系统显示中文,其余显示英文。用户能看到的文字——任务名称与说明、当前/目标值、检查项结论、手动步骤、对话框、导出的 HTML 报告——全部双语。

微软拼音那三个开关仍然只对中文用户有意义,其他语言下用不上。

怎么做的

没有走 .resx。这个项目的用户可见文字大多是带插值的整句(任务说明、检测结论、手动步骤),资源文件把它们拆成几百个键之后,漏译和格式串对不上都不会在编译期暴露。改成中英并列写在调用点:

L.S("显示文件扩展名", "Show file extensions")

XAML 里对应 {local:Loc Zh='检查项', En='Checks'}。改一句就是改一处,评审时两种语言在同一屏里。语言在启动时按 CultureInfo.CurrentUICulture 定。

日志与内部异常消息保持中文:它们进的是日志文件,读者是开发者。

顺带修的三个问题

  • 「推荐」徽标的绿底会失效:DataTrigger 拿显示文本跟字符串「推荐」比,文案一换语言就对不上。改成绑定布尔属性。这类「界面逻辑比较显示文本」的坑已写进贡献规则。
  • TaskCatalog 用 static readonly 字段缓存共用词:字段在类型初始化时就定死,换语言重建目录取不到新值。改成属性。
  • 测试随机失败:语言标志是进程级静态,而 xunit 默认并行跑不同测试类——双语测试把语言扳到英文时,别的测试正好在断言中文文案。已禁用该程序集的测试并行。

其他

software.json 新增 name_en / note_en,微信、钉钉、飞书在英文下显示为 WeChat、DingTalk、Feishu,安装备注也有英文版。仓库新增英文 README。

安装

下载上面两个文件,放在同一个目录,双击 WinHomestead.exe。需要 Windows 11 22H2 及以上 + 管理员账户,无需安装 .NET。

这个 exe 没有代码签名,Windows 会弹 SmartScreen 蓝框。确认要运行就点「更多信息」→「仍要运行」;不放心可以自己从源码构建,或者比对上面的校验和。

没有变的部分

不卸载微软预装应用,不禁用系统服务,不动 Windows Update,不碰 UAC / SmartScreen / 内存完整性,不改 DNS 与 Hosts,不联网。每次会话第一次执行前创建系统还原点,写操作的原值先记进 journal,单项失败按记录自动回滚。

v0.2.0 — Display, power and startup items

Choose a tag to compare

@CookPiu CookPiu released this 12 Sep 01:55

This release fills out the coverage: two new categories (Display and Power), a Startup items page, and six more UI detail switches. The positioning shifted too — it's no longer organized around "keep things off the C drive", but around getting a new machine configured properly in one pass.

The interface is still Chinese-only. English UI is on the roadmap; everything else works the same regardless of system language.

New

Display and power

  • Raise the refresh rate to maximum — high-refresh panels shipping at 60 Hz is the norm on new machines. Reads by enumerating every mode at the current resolution and color depth via EnumDisplaySettings (not the GPU's advertised MaxRefreshRate, which gives false positives); writes frequency only, leaving resolution and color depth untouched.
  • Turn off Fast Startup — it turns "shut down" into hibernating the kernel session to hiberfil.sys, so a shutdown-and-boot isn't a clean cold start: it locks NTFS volumes under dual-boot, and some peripheral or driver glitches only clear on a real power cycle. Costs a few seconds at boot.
  • Later screen-off and sleep on AC (15 / 60 min) — Windows' defaults are tuned for battery life, which gets in the way when you're plugged in and downloading or compiling. Only the AC side changes; the battery side keeps the system defaults.

Startup items page — lists entries from the Run keys and the Startup folder with a switch on each. Only writes StartupApproved (the same mechanism Task Manager uses), so the Run key and shortcut stay put and can be re-enabled any time. Changes go into the session journal and show up in the run log.

Six UI detail switches — full path in the title bar, never combine taskbar buttons, seconds on the clock, keep recent items out of Quick Access, disable Aero Shake, and turn off sync provider notifications in File Explorer (that's the ad slot only — OneDrive sync itself is unaffected).

Fixed

  • Startup item count was inflated: Win32_StartupCommand only lists the raw entries in the Run keys and Startup folder — items disabled through Task Manager are listed all the same. The old check reported "14 autostart items" on the development machine when only 8 were actually enabled. It now reads StartupApproved.
  • Checks page rendered as a class name: App.xaml was missing the DataTemplate for CheckupViewModel, so the page showed the type name instead of the view. The mapping is in place, and the smoke test now asserts that every sub-page view model has a template.

Changed

  • Refresh rate and startup items were promoted from read-only checks to executable items, so the checks page goes from ten items back to eight — one thing shouldn't appear in two places, and "go change it yourself in Settings" contradicts a one-click button for the same setting.
  • IRegistry gained the Binary value type (stored as hex in the journal).

Install

Download both files, keep them in the same folder, and run WinHomestead.exe:

File Why
WinHomestead.exe Single file, all dependencies embedded
WinHomestead.exe.config Binding redirects and runtime declaration — it won't start without this

Requires Windows 11 22H2 or later and an administrator account. No .NET install needed — it runs on the .NET Framework 4.8 that ships with Windows.

Important

This exe is not code-signed, so Windows will show a SmartScreen box. Click More info → Run anyway if you want to proceed; otherwise build from source or verify the checksums below.

Checksums (SHA256)

0B5AFCB864810DFCF1133227850EFE6E5FC1ECE5BE68DC4018AC12EEB7D8E72B  WinHomestead.exe
FACB7DA0FBCCD9D6341D74F09A47E66D4E22558320E6D29C464F51C831574238  WinHomestead.exe.config

Verify with Get-FileHash .\WinHomestead.exe -Algorithm SHA256.

Not included, on purpose

No uninstalling Microsoft's built-in apps, no disabling services, no touching Windows Update, no changes to UAC / SmartScreen / memory integrity, no DNS or hosts tinkering, no network access. This is not a performance tool — it won't raise benchmark scores.

Power mode (Best power efficiency / Balanced / Best performance) and Night light are still out: the former only has the undocumented PowerSetActiveOverlayScheme, and the latter's state lives in a CloudStore binary blob whose format shifts between builds. Both are left to you in Settings.

Safety

  • A system restore point is created before the first change of each session
  • Original values go to %ProgramData%\WinHomestead\journal-*.jsonl before any write; a failed item rolls back from that record
  • Partition operations are irreversible, never pre-selected, and require explicit confirmation; no existing partition is ever deleted, moved, or merged
  • Under MDM or domain management, HKLM-touching items are skipped with the reason shown

Known limitations

  • Unsigned binary, so SmartScreen warns on first run
  • Battery health falls back to powercfg /batteryreport on machines whose firmware won't report design capacity; on a brand-new machine the battery statistics need a few days of normal use before the numbers mean anything
  • Desktop relocation shows as not applicable while OneDrive has taken it over — turn off Desktop backup in OneDrive settings first
  • Found a problem? Open an issue

Full changelog: v0.1.0...v0.2.0


中文说明

这一版把覆盖面补齐了:新增「显示」「电源」两个分类和「启动项」子页,界面细节开关补到十四条。定位也跟着调整——不再以「把东西挡在 C 盘之外」为唯一主线,而是新机该配的设置一次配到位。

新增

显示与电源

  • 把刷新率拉到最高 —— 高刷屏出厂跑 60 Hz 是新机常态。读用 EnumDisplaySettings 枚举同分辨率同色深下的全部模式取最大值(而不是显卡标称的 MaxRefreshRate,那个会误报),写只改频率,分辨率与色深不动。
  • 关闭快速启动 —— 它让「关机」实际变成把内核会话休眠到 hiberfil.sys,于是关机重启并不等于一次干净的冷启动:双系统下会锁住 NTFS 分区,外设与驱动异常有时也只有真关机才能复位。代价是开机慢几秒。
  • 插电时晚点关屏与睡眠(15 / 60 分钟)—— 系统默认按省电定,插着电源下载或编译时容易被打断。只动交流电源一侧,电池侧保持系统默认。

启动项子页 —— 列出 Run 键与启动文件夹里的自启项,逐项开关。只写 StartupApproved(和任务管理器同一套机制),Run 键与快捷方式本身不动,随时能开回来。改动进会话 journal,能在执行记录里看到。

界面细节六条 —— 标题栏显示完整路径、任务栏按钮从不合并、时钟显示秒、快速访问不留最近项目、关闭抖动最小化,以及关掉资源管理器里的同步提供程序通知(只关广告位,不影响 OneDrive 同步)。

修复

  • 启动项数量报大了:Win32_StartupCommand 只列 Run 键与启动文件夹里的原始条目,被任务管理器禁用过的项照列不误。旧版的检查项在开发机上报「14 项自启」,实际启用的只有 8 项。现在改看 StartupApproved。
  • 检查项页显示成类名:App.xaml 缺 CheckupViewModel 的 DataTemplate,页面会原样渲染类名字符串而不是界面。已补上映射,并在冒烟测试里逐个断言子页都有模板。

调整

  • 刷新率和开机启动项从只读检查项升级成了可执行条目,检查项相应从十项回到八项——一件事不该两处显示,而且一边说「自己去设置里改」、一边能一键改,结论是矛盾的。
  • IRegistry 补上 Binary 类型(journal 里按十六进制存原值)。

安装

下载上面两个文件,放在同一个目录,双击 WinHomestead.exe。需要 Windows 11 22H2 及以上 + 管理员账户,无需安装 .NET。

这个 exe 没有代码签名,Windows 会弹 SmartScreen 蓝框。确认要运行就点「更多信息」→「仍要运行」;不放心可以自己从源码构建,或者比对上面的校验和。

不做什么

不卸载微软预装应用,不禁用系统服务,不动 Windows Update,不碰 UAC / SmartScreen / 内存完整性,不改 DNS 与 Hosts,不联网。它不是「加速」工具,装了跑分不会变高。

电源模式和夜间光这一版也没做:前者只有未文档化的 PowerSetActiveOverlayScheme,后者的开关存在 CloudStore 的二进制 blob 里、格式随版本变化。

安全机制

  • 每次会话第一次执行前自动创建系统还原点
  • 写操作的原值先记进 %ProgramData%\WinHomestead\journal-*.jsonl,单项失败按记录自动回滚
  • 分区类操作不可逆,默认不勾选、执行前二次确认;永远不删除、不移动、不合并已有分区
  • MDM / 域管控的机器上,涉及 HKLM 的条目自动跳过并说明原因

v0.1.0 — 首个版本

Choose a tag to compare

@CookPiu CookPiu released this 11 Sep 13:01

新电脑到手,该改的设置散在系统设置、文件夹选项、注册表、输入法属性、磁盘管理里。开荒把它们归拢到一张列表,逐项显示现在什么样、改完什么样,点一项做一项。这是第一个版本。

安装

下载下面两个文件,放在同一个目录,双击 WinHomestead.exe:

文件 说明
WinHomestead.exe 单文件程序,依赖已全部嵌入
WinHomestead.exe.config 绑定重定向与运行时声明,缺了会启动失败

需要 Windows 11 22H2 及以上 + 管理员账户。无需安装 .NET,用的是系统自带的 .NET Framework 4.8。

Important

这个 exe 没有代码签名,Windows 会弹 SmartScreen 蓝框。确认要运行就点「更多信息」→「仍要运行」;不放心可以自己从源码构建,或者比对下面的校验和。

校验和(SHA256)

28991CAF1AE4DC05E28E48C9F6EAC2EE4AF05E93E40F537B8586AB46D2819A32  WinHomestead.exe
FACB7DA0FBCCD9D6341D74F09A47E66D4E22558320E6D29C464F51C831574238  WinHomestead.exe.config

PowerShell 里用 Get-FileHash .\WinHomestead.exe -Algorithm SHA256 核对。

这个版本有什么

界面与交互 — 文件扩展名、隐藏文件、资源管理器起始页、桌面「此电脑」、任务栏右键结束任务、鼠标加速、粘滞键、Alt+Shift 语言热键;任务栏与开始菜单风格、经典右键菜单、深色模式作为可选项;一组默认不勾的去推送项。全部走 HKCU,可回滚。

中文输入法 — 微软拼音启动时默认英文、关掉 Ctrl+. 标点切换、关掉单击 Shift 切中英文。

磁盘与路径 — 识别数据盘;单盘无分区时给分盘建议,条件都满足才提供一键压缩 C 并新建 D;在数据盘建目录骨架;迁移文档 / 下载 / 图片 / 视频 / 音乐与 TEMP。桌面被 OneDrive 接管时不硬来,只告诉你去哪儿关。

开发环境 — 在装工具之前先把 pip、uv、npm、pnpm、Yarn、Gradle、Maven、NuGet、vcpkg、Cargo、Go、Flutter、Conda、Hugging Face、Ollama 的缓存目录指到数据盘;Dev Drive 按数据盘文件系统与未分配空间给出创建方案,只建议不格式化。

空间清理 — 旧临时文件、休眠文件(台式机)、存储感知。

安全与状态检查 — 十项只读:BitLocker 恢复密钥、多套杀软并存、补丁时间、还原点占用、OEM 预装、开机启动项、屏幕刷新率、电池健康、默认应用、区域时区。只给结论和跳转按钮,不代你改。

软件规划 — 官网下载页入口加按分类规划好的安装路径。不下载、不静默安装。

机器信息与执行记录 — 「这台电脑」列出硬件与各卷容量给精确值;每次会话的结果与手动事项可导出成 HTML 报告。

不做什么

不卸载微软预装应用,不禁用系统服务,不动 Windows Update,不碰 UAC / SmartScreen / 内存完整性,不改 DNS 与 Hosts,不联网。它不是「加速」工具,装了跑分不会变高——做的是把新机该配的设置一次配对。

安全机制

  • 每次会话第一次执行前自动创建系统还原点
  • 写操作的原值先记进 %ProgramData%\WinHomestead\journal-*.jsonl,单项失败按记录自动回滚
  • 分区类操作不可逆,默认不勾选、执行前二次确认;永远不删除、不移动、不合并已有分区
  • MDM / 域管控的机器上,涉及 HKLM 的条目自动跳过并说明原因

已知限制

  • 产物未签名,首次运行有 SmartScreen 提示
  • 电池健康在部分机型上读不到设计容量,会回退到 powercfg /batteryreport;新机刚开箱时电量统计样本不足,数值要正常用几天才准
  • 桌面迁移在 OneDrive 接管时标为不适用,需要先在 OneDrive 设置里关掉桌面备份
  • 早期版本,遇到问题欢迎提 issue