Open-source contributions

Before, after, and the receipts.

Every pull request I have sent to other people's projects, checked against GitHub and each project's main history.

48 pull requests to other people's projects. One tile each.

Hover, focus or tap a tile for the PR.

17Merged
GitHub marks it merged; merge commit is on the default branch.
3Squashed onto main
Closed, but the maintainer applied it to main as my commit.
5Consolidated
Closed into a maintainer PR; my commits are in main's history.
22Open
Under review.
1Draft
Experimental draft; no integration claimed.

Squashed and consolidated PRs are shown separately from merged ones. Most of this work was developed with AI coding assistance, which the PR descriptions state; I scope each bug, review the diff and check the tests.

RepositoryPRsMergedSquashedConsolidatedOpen/draft
DaKheera47/job-ops93006
PDFCraftTool/pdfcraft25100015
willfaust/Madeira144352
External total48173523

Case studies

Left: the results from my PR. Right: what the maintainers did with it.

willfaust/Madeira · C · squashed onto main

Long working directories overwrote startup memory

Before12 of 24 cases failingincl. 5 ASan buffer overflows
After0 failing24 of 24 pass

From PR #471 (host reproduction, macOS arm64).

ProblemA current directory of 260+ UTF-16 units was copied into a slot sized for MAX_PATH, so the next strings overwrote it.
ApproachReserve max(MAX_PATH, actual bytes + NUL) in both the initial and child-process startup paths and report that capacity in DosPath.MaximumLength. Short paths are unchanged.
ValidationASan/UBSan harness compiles the real allocation and packing code; base fails, patch passes. The modified file also compiles for iOS arm64. A pre-existing, unrelated test failure is disclosed in the PR.
UpstreamMaintainer squashed it onto main as 16b3382b, keeping my authorship and sign-off.
willfaust/Madeira · C · MoltenVK · consolidated

Pipeline-cache export that returned nothing

BeforeVK_INCOMPLETE0 bytes, direct call
AfterVK_SUCCESS36 B empty · 750 B populated cache

From PR #456, tested on an Apple M1 Pro (MoltenVK and Metal).

ProblemIn MoltenVK 1.4.2, vkGetPipelineCacheData failed unless the caller made a NULL-size query first, which the Vulkan spec does not require.
ApproachOne-file backport moving the size calculation ahead of both export branches, a pinned source-build helper, and a Windows x64 / macOS regression. A separate PR (#400) added an opt-in Wine→MoltenVK route.
ValidationWith the fix reverted the regression fails; with only the fix restored it passes; the official prebuilt library fails it too. One-byte-buffer bounds check kept.
UpstreamClosed into maintainer integration PRs. My commits are in main's history and all 8 files from #456 are byte-identical there. Counted as consolidated, not merged.
PDFCraftTool/pdfcraft · TypeScript · merged

Rotating a PDF no longer destroys it

Before11 regression cases failoriginal rotate implementation
After12 real tests passsave → reload → verify

From PR #266. Full suite: 779 passed; 3 locale-catalog tests also fail on the base commit.

ProblemRotate copied pages into a new document, so even 0° lost forms, bookmarks, page labels and attachments, and internal links pointed at pages missing from the output.
ApproachFor multiples of 90°, update each page's rotation and save the original document; arbitrary angles keep the old embedding path.
ValidationReal PDFs are saved and reloaded: form values stay editable, links resolve to actual page references, attachment bytes match, labels survive.
UpstreamMerged by the maintainer organisation (no written review). 10 of my 14 PDFCraft PRs are merged.
PDFCraftTool/pdfcraft · TypeScript · merged

Page-label prefixes saved as mojibake

Beforeà‡-prefix 章节- after save and reopen
After章节-UTF-16 text string, also Greek, Hebrew, emoji

From PR #257: 4 of 5 new real-PDF round-trip cases fail before the fix.

ProblemPrefixes were written with PDFString.of(), which does not encode JavaScript Unicode text.
ApproachWrite them with PDFHexString.fromText(); numbering and range behaviour untouched. A follow-up (#264) clipped oversized ranges that froze preview and export.
ValidationReal PDF round trips across disjoint ranges and continued start values; 23 focused tests for the range parser including overflowing endpoints.
Upstream#257 and #264 both merged.
DaKheera47/job-ops · TypeScript · merged

Postings that were a day early

Before5 tests failAmerica/Toronto, before the fix
After14 of 14 passalso UTC, London, Sydney

From PR #788. Full suite and CI-parity checks pass.

ProblemA date-only posting (2026-05-25) parsed at UTC midnight showed as May 24 in Toronto, and dividing elapsed milliseconds by 24 h miscounted days across DST.
ApproachParse YYYY-MM-DD at local midnight and compare UTC day numbers built from local calendar components.
ValidationSix added cases around local-date, tooltip, sort and clock-change boundaries, run under four time zones.
UpstreamMerged; maintainer: “nice! thanks for the contribution!” #787 and #789 were merged the same day.

Every pull request

48 external pull requests · Updated 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.
Merged
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.
Merged
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.
Merged
PDFCraftTool/pdfcraft#252
fix(studio): show, reorder and remove files before appendingStudio: show, reorder and remove files before appending.
Merged
PDFCraftTool/pdfcraft#253
fix(editor): select previous query when reopening findEditor: reopening Find selects the previous query.
Merged
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.
Merged
PDFCraftTool/pdfcraft#255
fix(bookmarks): preserve subtree on descendant dropBookmarks: dropping a node onto its own descendant preserves the subtree.
Merged
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.
Merged
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.
Merged
PDFCraftTool/pdfcraft#265
fix(pdf-to-zip): preserve documents with duplicate filenamesPDF to ZIP: preserves documents with duplicate filenames.
Merged
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.
Merged
PDFCraftTool/pdfcraft#267
fix(bookmarks): retain destination position, zoom and fit modeBookmarks: retains destination position, zoom and fit mode.
Merged
PDFCraftTool/pdfcraft#268
fix(metadata): preserve unedited fields and honor date opt-outMetadata: preserves unedited fields and honours the date opt-out.
Merged
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.
Merged
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.
Merged
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.
Merged
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.
Merged
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).
Squashed onto 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.
Squashed onto main
willfaust/Madeira#473
runtime: release task and copied values in entitlement checksBalances Core Foundation ownership (task and copied values) in runtime entitlement checks.
Squashed onto 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.
Consolidated
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.
Consolidated
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.
Consolidated
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.
Consolidated
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.
Consolidated
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.
Open
DaKheera47/job-ops#792
feat: add Simplified Chinese (zh-CN) interface languageAdds a Simplified Chinese (zh-CN) interface language.
Open
DaKheera47/job-ops#793
feat: add include/exclude keyword filters to the jobs listInclude/exclude keyword filters for the jobs list.
Open
DaKheera47/job-ops#794
fix(llm): preserve fenced text and complete JSON response valuesLLM responses: preserves fenced text and completes JSON response values.
Open
DaKheera47/job-ops#795
feat(jobs): export filtered and selected jobs to CSVExports filtered and selected jobs to CSV.
Open
PDFCraftTool/pdfcraft#273
feat(reader): add remembered right-to-left spread orderReader: remembered right-to-left spread order.
Open
PDFCraftTool/pdfcraft#274
fix(editor): preserve object aspect ratio while Shift-resizingEditor: preserves object aspect ratio while Shift-resizing.
Open
PDFCraftTool/pdfcraft#277
feat(bookmarks): move multi-selections across the outline treeBookmarks: move multi-selections across the outline tree.
Open
PDFCraftTool/pdfcraft#278
test(editor): cover editing PDFs containing zero-width spacesTest: covers editing PDFs containing zero-width spaces.
Open
PDFCraftTool/pdfcraft#280
fix(reverse): retain forms, bookmarks, links and metadata when reversing pagesfix(reverse): retain forms, bookmarks, links and metadata when reversing pages
Open
PDFCraftTool/pdfcraft#281
fix(add-blank-page): retain forms, bookmarks, links and metadatafix(add-blank-page): retain forms, bookmarks, links and metadata
Open
PDFCraftTool/pdfcraft#282
fix(remove-blank-pages): retain forms, bookmarks, links and metadatafix(remove-blank-pages): retain forms, bookmarks, links and metadata
Open
PDFCraftTool/pdfcraft#283
fix(background-color): retain forms, bookmarks, links and metadatafix(background-color): retain forms, bookmarks, links and metadata
Open
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
Open
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
Open
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
Open
PDFCraftTool/pdfcraft#287
fix(fix-page-size): honour the /Rotate of source pagesfix(fix-page-size): honour the /Rotate of source pages
Open
PDFCraftTool/pdfcraft#288
fix(n-up): honour the /Rotate of source pagesfix(n-up): honour the /Rotate of source pages
Open
PDFCraftTool/pdfcraft#292
fix(uniform-resize): honour the /Rotate of source pagesfix(uniform-resize): honour the /Rotate of source pages
Open
PDFCraftTool/pdfcraft#293
fix(ci): normalize extracted AppDir permissions before repacking the Linux AppImagefix(ci): normalize extracted AppDir permissions before repacking the Linux AppImage
Open
willfaust/Madeira#544
README: say how to add a game after installingREADME: say how to add a game after installing
Open
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).
Draft

Full contribution ledger ↗