Skip to content

fix: integrate pending features and repair cross-feature regressions - #40

Merged
JamesLinYJ merged 40 commits into
mainfrom
codex/merge-prs-20261020
Oct 20, 2026
Merged

JamesLinYJ merged 40 commits into
mainfrom
codex/merge-prs-20261020

Conversation

@JamesLinYJ

@JamesLinYJ JamesLinYJ commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

整合当前全部 12 个功能/依赖 PR,并完成先前已确认的五项安全与性能修复。使用 merge commit 保留原 PR 的提交关系。

包含:#23、#24、#27、#28、#30、#31、#35、#36、#37、#38、#39、#41。

修复:

  • 进程筛选与树形列表协同:筛选显示平面命中列表,保留折叠状态和完整进程身份;转到进程立即清除筛选并重建可信快照,异步导航按 generation 关联。
  • 消除启动页、新建任务、筛选和服务操作之间的资源/消息 ID 冲突,合并全部语言资源;服务暂停/继续检查 SCM 接受的控制位。
  • 转储临时文件使用可撤销的删除 disposition,成功转储可以完成重命名;窗口销毁和通知共用短锁,关闭界面不等待完整转储。
  • View 和托盘使用 session-only 置顶状态,修正重复菜单命令造成的勾选错误,包含新增的启动页。
  • 诊断退出直接等待 writer 结束,避免已经退出的 writer 留下未消费的回复造成额外超时。
  • WMI 使用有界枚举和协作取消;阻塞中的 provider 由后台回收,UI 不等待它退出。COM 资源仍在所属线程释放。
  • 诊断导出在后台冻结私有 ZIP 后才显示隐私/保存提示,释放日志源句柄,后续写入不能改变已确认的内容;路径、详细错误及 panic payload 默认按敏感字段处理,崩溃记录大小写别名使用同一分类规则。
  • D3D12 保持仅从 System32 加载,并增加真实 DLL 夹具验证;Direct2D 丢失目标后重建目标和画刷,失败时立即建立 GDI 后备缓冲。
  • IPv4 查询失败保留同一网卡的最后可信地址;成功的空地址集会清空地址,接口编号复用不会继承旧网卡地址。

验证(最终提交 3c636bb):

  • Windows 11 ARM64 VM,Rust 1.99.0,MSVC 2022;ARM64 原生运行,x64/x86 由系统仿真运行。
  • 三个 MSVC 目标均通过 cargo check --all-targets --locked、cargo clippy --all-targets --locked -- -D warnings、cargo test --all-targets --locked、cargo build --release --locked;命令均指定相应 --target,使用已缓存依赖。
  • ARM64/x64 各 386 项单元测试 + 7 项集成测试通过,x86 为 385 + 7(少一项仅 64 位适用的测试);4 项环境相关测试在常规套件中按原配置忽略。另在 ARM64 单独运行真实 CPU/WMI/PDH 与 GPU/DXGI/D3D12 数据源测试,两项均通过。
  • cargo fmt --all -- --check、相对 main 的 git diff --check、tests/build_scripts.ps1 的 3 项回归通过。
  • ZIP 源码快照的 184 个跟踪文件逐一与提交树核对一致。

新增及扩展的回归覆盖真实转储临时文件保存/清理、冻结 ZIP 与日志轮转、默认脱敏/敏感模式/panic/大写崩溃记录、受控阻塞 worker 的退出与通知、D2D/GDI 原生资源、筛选/树选择、菜单勾选、IPv4 失败保留与网卡身份切换、诊断退出回复通道。

关键修复模块:src/infrastructure/diagnostics/mod.rs、src/app/diagnostics_dialog.rs、src/infrastructure/worker.rs、src/pages/cpu/firmware.rs、src/pages/gpu/metadata.rs、src/ui/charts.rs、src/pages/performance/mod.rs、src/pages/processes/、src/pages/network.rs、服务及菜单模块。两次只读安全检查发现的具体问题均已处理。

GitHub 托管 Windows CI 在提交合并时仍排队;上述结果来自本地 Windows VM。未将这些结果表述为物理 GPU、真实挂死 WMI provider、保存对话框交互或全部设备兼容性验收。

dependabot Bot and others added 30 commits October 16, 2026 12:04
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@3e5f45b...9000827)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@043fb46...cf430e0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Add a classic Filter field on the Processes page. The filter is a UI-thread
view of the committed snapshot, so sampling, tokens, and icons stay on the
worker. Selection is kept by ProcIdentity across refresh, including when a
row is hidden and the filter is later cleared.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
A missing target left the previous filtered rows on screen until the next
snapshot, and a failed collection could keep that mismatch. Apply the empty
filter to the committed snapshot before scheduling collection. The filter
tests now use a needle that matches only alpha.exe.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
List Run-key and Startup-folder entries, and enable or disable them
through StartupApproved without deleting the original entry. Queries
stay on the background worker, and a failed change is shown immediately.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Treat StartupApproved 0x07 as disabled and write 0x07 when disabling a 0x06 entry. When one startup source fails, keep that source's previous rows and show them as not refreshed.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Sample physical-disk byte counters on the existing system worker and
draw active time with the same history graph as CPU and memory.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Each successful IOCTL_DISK_PERFORMANCE increments the driver's reference
count. Track those successes, keep one enable while the handle is open,
and issue IOCTL_DISK_PERFORMANCE_OFF for the rest, including worker
shutdown and a drive that disappears.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Grow the process column list through an options schema 3 migration that
keeps the existing binary fields in place. Sample the new counters on the
process worker, and leave a failed row unknown instead of zero.

Accept command lines up to the UNICODE_STRING limit of 32,767 code units,
and size the query buffer to include the UnicodeString header.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
…uilds

Preserve stable selections and correlate asynchronous process navigation, including the current process-tree UI. Prevent service controls from being discarded and avoid presenting unavailable samples as valid zeros.

Correct native UI and buffer handling, bound diagnostic flush and shutdown work, and make build scripts preserve failures and argument boundaries. Add regression coverage and run PowerShell script tests in CI.

Co-authored-by: OpenAI Codex <codex@openai.com>
The process context menu writes a full-memory dump only after
open_process_for_identity confirms the pid and creation time.
The save dialog stays on the UI thread; MiniDumpWriteDump runs
on a persistent worker, and failure is reported immediately.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Shutdown no longer joins the dump thread. Failed partial files are deleted
and a cleanup error is reported. MiniDumpWriteDump shares one nonblocking
gate with the crash handler, and partial names are created with CREATE_NEW.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Add a Processes context command that opens a web search for a verified
image name on a background worker and shows a dialog when the search fails.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
PWM_PROC_SEARCH_COMPLETE moves to 0x0400+28 so it does not share
0x0400+27 with the dump worker.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
A CoInitializeEx result outside FACILITY_WIN32 is recorded and shown as
that HRESULT instead of ERROR_GEN_FAILURE.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Services can pause a running service and continue a paused one through the existing background worker, using the same failure dialog as start and stop.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
Toggle WS_EX_TOPMOST from the View menu with IDM_ALWAYSONTOP and a checkmark. The choice lasts for the session and is not written into Options.

Co-authored-by: jameslincn <jameslincn@outlook.sg>
# Conflicts:
#	src/pages/processes/mod.rs
# Conflicts:
#	build_support/localization.rs
#	localization/de.toml
#	localization/en_us.toml
#	localization/es.toml
#	localization/fr.toml
#	localization/pt.toml
#	localization/ru.toml
#	localization/zh_cn.toml
#	localization/zh_tw.toml
#	src/app/mod.rs
#	src/app/page_host.rs
#	src/pages/processes/mod.rs
#	src/ui/localization/text_key.rs
#	src/ui/resource_ids.rs
# Conflicts:
#	src/pages/services/model.rs
#	src/pages/services/sampler.rs
# Conflicts:
#	src/pages/processes/mod.rs
# Conflicts:
#	localization/de.toml
#	localization/en_us.toml
#	localization/es.toml
#	localization/fr.toml
#	localization/pt.toml
#	localization/ru.toml
#	localization/zh_cn.toml
#	localization/zh_tw.toml
#	src/app/page_host.rs
#	src/pages/performance/mod.rs
#	src/ui/localization/text_key.rs
# Conflicts:
#	README.md
#	README.zh-CN.md
#	build_support/localization.rs
#	docs/compatibility-matrix.md
#	localization/de.toml
#	localization/en_us.toml
#	localization/es.toml
#	localization/fr.toml
#	localization/pt.toml
#	localization/ru.toml
#	localization/zh_cn.toml
#	localization/zh_tw.toml
#	src/app/mod.rs
#	src/app/page_host.rs
#	src/ui/dialogs.rs
#	src/ui/localization/text_key.rs
#	src/ui/resource_ids.rs
# Conflicts:
#	build_support/localization.rs
#	localization/de.toml
#	localization/en_us.toml
#	localization/es.toml
#	localization/fr.toml
#	localization/pt.toml
#	localization/ru.toml
#	localization/zh_cn.toml
#	localization/zh_tw.toml
#	src/app/page_host.rs
#	src/pages/processes/mod.rs
#	src/ui/dialogs.rs
#	src/ui/localization/text_key.rs
#	src/ui/menus.rs
#	src/ui/resource_ids.rs
cursoragent and others added 10 commits October 20, 2026 04:36
View → Always on Top is session-only, so the registry setter had no caller and failed clippy.

Co-authored-by: JamesLinYJ <JamesLinYJ@users.noreply.github.com>
Walk FirstUnicastAddress and keep only AF_INET. A failed query stays Unknown, and an adapter with no IPv4 stays "-".

Co-authored-by: JamesLinYJ <JamesLinYJ@users.noreply.github.com>
Clippy rejects assigning fields after SHELLEXECUTEINFOW::default().

Co-authored-by: jameslincn <jameslincn@outlook.sg>
@JamesLinYJ
JamesLinYJ marked this pull request as ready for review October 20, 2026 04:58
@JamesLinYJ
JamesLinYJ merged commit ced4756 into main Oct 20, 2026
3 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T05:00:15.254846Z 3c636bb Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants