开源贡献

修复前、修复后,附上凭证。

我提交给他人项目的每一个 pull request,已对照 GitHub 和各项目 main 的历史核实。

48 个提交给他人项目的 pull request,每个一块方块。

悬停、聚焦或点按方块查看 PR。

17已合并
GitHub 标记为已合并,合并提交在默认分支上。
3已 squash 进 main
PR 已关闭,但维护者把它以我的提交应用到了 main。
5已整合
已关闭并并入维护者的整合 PR;我的提交在 main 的历史中。
22审核中
审核中。
1草稿
实验性草稿;不声称已整合。

“squash”和“整合”的 PR 与已合并的分开标示。 这些工作大多借助 AI 编程助手完成(PR 描述中已注明);我负责界定问题、审查 diff、检查测试。

仓库PR已合并squash整合审核中/草稿
DaKheera47/job-ops93006
PDFCraftTool/pdfcraft25100015
willfaust/Madeira144352
外部合计48173523

案例研究

左侧是我的 PR 里的结果;右侧是维护者随后做了什么。

willfaust/Madeira · C · 已 squash 进 main

过长的工作目录会覆盖启动内存

之前24 个用例中 12 个失败含 5 个 ASan 缓冲区溢出
之后0 个失败24 个全部通过

来自 PR #471(macOS arm64 主机复现)。

问题长度 ≥260 个 UTF-16 单元的当前目录被复制进只为 MAX_PATH 预留的槽位,后面写入的字符串会把它覆盖掉。
方法在初始启动和子进程启动两条路径上,都预留 max(MAX_PATH, 实际字节数 + 结尾 NUL),并把该容量写入 DosPath.MaximumLength。较短路径行为不变。
验证ASan/UBSan 测试程序编译真实的分配与打包代码;修复前失败、修复后通过。改动的文件也能为 iOS arm64 编译。PR 中还如实披露了一个与本次无关的既有测试失败。
上游结果维护者把它以 16b3382b 的提交 squash 进了 main,保留了我的署名和 sign-off。
willfaust/Madeira · C · MoltenVK · 已整合

什么都返回不了的 pipeline cache 导出

之前VK_INCOMPLETE直接调用,0 字节
之后VK_SUCCESS空缓存 36 字节 · 非空缓存 750 字节

来自 PR #456,在 Apple M1 Pro 上测试(MoltenVK 与 Metal)。

问题在 MoltenVK 1.4.2 中,除非调用方先做一次 NULL 大小查询,否则 vkGetPipelineCacheData 会失败,而 Vulkan 规范并不要求这样。
方法单文件补丁,把大小计算移到两个导出分支之前;加上固定版本的源码构建脚本,以及 Windows x64 / macOS 回归测试。另一个 PR(#400)增加了可选的 Wine→MoltenVK 路径。
验证撤掉修复,回归测试失败;只恢复这一处修复,测试通过;官方预编译库同样不通过。保留了 1 字节缓冲区的边界检查。
上游结果被并入维护者的整合 PR。我的提交在 main 的历史中,#456 的 8 个文件在 main 上逐字节相同。计为“已整合”,不计为已合并。
PDFCraftTool/pdfcraft · TypeScript · 已合并

旋转 PDF 不再破坏文件

之前11 个回归用例失败原有旋转实现
之后12 个真实测试通过保存 → 重新加载 → 校验

来自 PR #266。完整测试 779 通过;3 个语言包测试在基线提交上同样失败。

问题旋转会把页面复制进新文档,因此即使旋转 0° 也会丢失表单、书签、页码标签和附件,内部链接还会指向输出中不存在的页面。
方法当所有旋转角度都是 90° 的倍数时,只更新每页的旋转值并保存原文档;任意角度仍走原来的嵌入路径。
验证对真实 PDF 做保存再加载:表单值仍可编辑,链接指向真实页面引用,附件字节一致,标签保留。
上游结果由维护组织合并(没有书面评论)。我提交的 14 个 PDFCraft PR 中,10 个已合并。
PDFCraftTool/pdfcraft · TypeScript · 已合并

页码标签前缀保存后变成乱码

之前à‡-前缀“章节-”保存并重新打开后
之后章节-写成 UTF-16 文本字符串;希腊文、希伯来文、emoji 同样正常

来自 PR #257:新增 5 个真实 PDF 往返用例,修复前有 4 个失败。

问题前缀用 PDFString.of() 写入,它不会对 JavaScript 的 Unicode 文本编码。
方法改用 PDFHexString.fromText();编号和范围行为不变。后续 PR(#264)还把过大的页码范围裁剪到文档范围内,解决了预览和导出卡死。
验证覆盖不连续范围和延续起始值的真实 PDF 往返;为范围解析器写了 23 个针对性测试,包括数值溢出的端点。
上游结果#257 与 #264 均已合并。
DaKheera47/job-ops · TypeScript · 已合并

招聘日期总是早一天

之前5 个测试失败修复前,America/Toronto
之后14 个全部通过UTC、伦敦、悉尼同样通过

来自 PR #788。完整测试与 CI 对等检查通过。

问题只有日期的岗位发布时间(2026-05-25)按 UTC 零点解析,在多伦多显示成 5 月 24 日;用经过的毫秒数除以 24 小时,在夏令时切换前后还会数错天数。
方法把 YYYY-MM-DD 按本地零点解析,并用本地日期分量构造 UTC 日序号来比较。
验证新增 6 个用例,覆盖本地日期、提示文字、排序和换钟边界,并在四个时区下运行。
上游结果已合并;维护者评论:“nice! thanks for the contribution!”。#787、#789 同一天也被合并。

全部 pull request

48 个外部 pull request · 更新于 2026-11-02

DaKheera47/job-ops#787
fix(resume): retain semantic style metadata across import and exportPreserves Reactive Resume v5.3 semantic style metadata (stylesheet, styleRules) across import, template merge and export, with validation of style targets and values.
已合并
DaKheera47/job-ops#788
fix(jobs): preserve local posting dates across timezones and DSTParses date-only postings at local midnight and counts calendar days across DST so posting age, tooltip and sort are right in America/Toronto.
已合并
DaKheera47/job-ops#789
feat(manual-import): read job descriptions from text PDFsManual Import accepts text PDFs: client-side PDF.js extraction with size/page/character limits, reviewed text sent through the existing analysis flow.
已合并
PDFCraftTool/pdfcraft#252
fix(studio): show, reorder and remove files before appendingStudio: show, reorder and remove files before appending.
已合并
PDFCraftTool/pdfcraft#253
fix(editor): select previous query when reopening findEditor: reopening Find selects the previous query.
已合并
PDFCraftTool/pdfcraft#254
fix(workflow): preserve literal values during token interpolationWorkflow filename interpolation keeps substituted values literal (e.g. $& and {date} inside a filename) using a single-pass token replacement.
已合并
PDFCraftTool/pdfcraft#255
fix(bookmarks): preserve subtree on descendant dropBookmarks: dropping a node onto its own descendant preserves the subtree.
已合并
PDFCraftTool/pdfcraft#257
fix(page-labels): preserve Unicode prefixes in saved PDFsPage labels: writes prefixes as UTF-16 text strings so Chinese, Greek, Hebrew and emoji survive save and reload.
已合并
PDFCraftTool/pdfcraft#264
fix(page-labels): prevent oversized ranges from freezing preview and exportPage labels: clips oversized ranges to the document and shares one parser so preview and export no longer freeze.
已合并
PDFCraftTool/pdfcraft#265
fix(pdf-to-zip): preserve documents with duplicate filenamesPDF to ZIP: preserves documents with duplicate filenames.
已合并
PDFCraftTool/pdfcraft#266
fix(rotate): retain editable forms, bookmarks and internal linksRotate: updates page rotation in place for multiples of 90 degrees so forms, bookmarks, links, attachments and labels survive.
已合并
PDFCraftTool/pdfcraft#267
fix(bookmarks): retain destination position, zoom and fit modeBookmarks: retains destination position, zoom and fit mode.
已合并
PDFCraftTool/pdfcraft#268
fix(metadata): preserve unedited fields and honor date opt-outMetadata: preserves unedited fields and honours the date opt-out.
已合并
willfaust/Madeira#399
build: detect optional rusage diagnostic fields in the iOS SDKDetects optional rusage diagnostic fields in the iOS SDK so the build works across SDK versions.
已合并
willfaust/Madeira#458
docs: record Detroit iPad menu and interactive scene with screenshotsDocuments Detroit: Become Human menu and interactive-scene observations on an experimental iPad build, with screenshots and explicit limits.
已合并
willfaust/Madeira#486
steam: propagate local depot write errors without retrying healthy CDNsPropagates local depot write errors instead of retrying healthy CDNs in the Steam downloader.
已合并
willfaust/Madeira#501
move: log an original that cannot be removed after a verified copyLogs an original that cannot be removed after a verified copy during a move.
已合并
willfaust/Madeira#471
ntdll: reserve enough startup storage for long working directoriesReserves enough startup storage for current directories of 260+ UTF-16 units so later strings no longer overwrite the directory; ASan/UBSan host reproduction (12/24 cases failed on base, 24/24 pass).
已 squash 进 main
willfaust/Madeira#472
steam: avoid automatic cloud transfers for unreadable local savesStops Steam Cloud sync from treating an unreadable local save or incomplete checksum as proof of a local edit (no automatic upload; keeps it as a conflict); eight added cases.
已 squash 进 main
willfaust/Madeira#473
runtime: release task and copied values in entitlement checksBalances Core Foundation ownership (task and copied values) in runtime entitlement checks.
已 squash 进 main
willfaust/Madeira#396
ntdll: scope failed fixed-address relocation to the existing helper workaroundRestricts failed fixed-address relocation in the iOS ntdll virtual-memory layer to the existing helper workaround; adds a regression fixture.
已整合
willfaust/Madeira#400
vulkan: add an opt-in Windows x64 iOS route and reproduction fixturesOpt-in Windows x64 Vulkan route for iOS (Wine Vulkan forwarding to MoltenVK via a retained CAMetalLayer), with enumerate, clear/readback and present fixtures and host checks.
已整合
willfaust/Madeira#451
wine-pe: ship the registered TaskbarList COM server and add x64 activation coverageShips the registered TaskbarList COM server (explorerframe.dll) in the Wine PE package and adds x64 activation coverage; fixes a startup crash reported by a user.
已整合
willfaust/Madeira#456
vulkan: isolate the direct pipeline-cache export sizing fix and regressionIsolated MoltenVK 1.4.2 backport so a direct vkGetPipelineCacheData call succeeds without a prior size query, plus a source-build helper and an x64/macOS Vulkan regression.
已整合
willfaust/Madeira#465
ntdll: decode UTF-8 launch folders before setting the Windows working directoryDecodes the UTF-8 initial working directory before building its NT path (non-ASCII launch folders), with host regression and Windows probe.
已整合
DaKheera47/job-ops#791
feat: optional lean scoring and Claude CLI modes to reduce AI usageOptional lean scoring and Claude CLI modes to reduce AI usage.
审核中
DaKheera47/job-ops#792
feat: add Simplified Chinese (zh-CN) interface languageAdds a Simplified Chinese (zh-CN) interface language.
审核中
DaKheera47/job-ops#793
feat: add include/exclude keyword filters to the jobs listInclude/exclude keyword filters for the jobs list.
审核中
DaKheera47/job-ops#794
fix(llm): preserve fenced text and complete JSON response valuesLLM responses: preserves fenced text and completes JSON response values.
审核中
DaKheera47/job-ops#795
feat(jobs): export filtered and selected jobs to CSVExports filtered and selected jobs to CSV.
审核中
PDFCraftTool/pdfcraft#273
feat(reader): add remembered right-to-left spread orderReader: remembered right-to-left spread order.
审核中
PDFCraftTool/pdfcraft#274
fix(editor): preserve object aspect ratio while Shift-resizingEditor: preserves object aspect ratio while Shift-resizing.
审核中
PDFCraftTool/pdfcraft#277
feat(bookmarks): move multi-selections across the outline treeBookmarks: move multi-selections across the outline tree.
审核中
PDFCraftTool/pdfcraft#278
test(editor): cover editing PDFs containing zero-width spacesTest: covers editing PDFs containing zero-width spaces.
审核中
PDFCraftTool/pdfcraft#280
fix(reverse): retain forms, bookmarks, links and metadata when reversing pagesfix(reverse): retain forms, bookmarks, links and metadata when reversing pages
审核中
PDFCraftTool/pdfcraft#281
fix(add-blank-page): retain forms, bookmarks, links and metadatafix(add-blank-page): retain forms, bookmarks, links and metadata
审核中
PDFCraftTool/pdfcraft#282
fix(remove-blank-pages): retain forms, bookmarks, links and metadatafix(remove-blank-pages): retain forms, bookmarks, links and metadata
审核中
PDFCraftTool/pdfcraft#283
fix(background-color): retain forms, bookmarks, links and metadatafix(background-color): retain forms, bookmarks, links and metadata
审核中
PDFCraftTool/pdfcraft#284
fix(rotate-custom): retain forms, bookmarks, links and metadata for right-angle rotationsfix(rotate-custom): retain forms, bookmarks, links and metadata for right-angle rotations
审核中
PDFCraftTool/pdfcraft#285
fix: let page-embedding tools handle blank pages that have no content streamfix: let page-embedding tools handle blank pages that have no content stream
审核中
PDFCraftTool/pdfcraft#286
fix(organize): retain forms, bookmarks, links and metadata in the pdf-lib pathfix(organize): retain forms, bookmarks, links and metadata in the pdf-lib path
审核中
PDFCraftTool/pdfcraft#287
fix(fix-page-size): honour the /Rotate of source pagesfix(fix-page-size): honour the /Rotate of source pages
审核中
PDFCraftTool/pdfcraft#288
fix(n-up): honour the /Rotate of source pagesfix(n-up): honour the /Rotate of source pages
审核中
PDFCraftTool/pdfcraft#292
fix(uniform-resize): honour the /Rotate of source pagesfix(uniform-resize): honour the /Rotate of source pages
审核中
PDFCraftTool/pdfcraft#293
fix(ci): normalize extracted AppDir permissions before repacking the Linux AppImagefix(ci): normalize extracted AppDir permissions before repacking the Linux AppImage
审核中
willfaust/Madeira#544
README: say how to add a game after installingREADME: say how to add a game after installing
审核中
willfaust/Madeira#502
vulkan: expose the complete experimental source profile and reproduction artifactsDraft: exposes the complete experimental Vulkan source profile and reproduction artifacts (Detroit iPad investigation).
草稿

完整贡献记录 ↗