Open source contributions: 125 merged changes in 65 projects
Fixes that maintainers of other people's projects reviewed and merged into their code. From Proxmox VE and the Zed editor to PHP, Go and .NET libraries.
- Go33 changesVersity Gateway (9), Ebitengine (3) and 19 more
- JavaScript25 changescompromise (21), Autoprefixer (3), spacetime (1)
- Python6 changespydantic-extra-types (2), funcy (1) and 3 more
- Perl and JavaScript6 changesProxmox VE (6)
- TypeScript2 changesvscode-neovim (1), MailDev (1)
65 projects, each with a change of ours merged
The colour of a circle is the repository's language, and circles of one language stay together. The list of the largest starts with Proxmox VE and ILSpy, then the rest follow by stars multiplied by the number of our changes.
Circle size: repository stars. Number in the circle: our merged changes. Empty circle: a project outside GitHub.
Every project by language
Groups from the language with the most projects, inside a group from the project with the most of our changes. The name leads to the project's page.
Go
21- Versity Gatewayversity/versitygw93,007
Newest: fix: compute IsTruncated from the absolute index in ListMultipartUploads (8 Oct 2026)
- Ebitenginehajimehoshi/ebiten313,546
Newest: audio: run the tests waiting on real time on synctest's fake clock (6 Oct 2026)
- goqueryPuerkitoBio/goquery214,989
Newest: Expose html parse options (addresses #139, noscript) (30 Sep 2026)
- urfave/cliurfave/cli124,287
Newest: fix: use prefixFor for BoolWithInverseFlag names and aliases (8 Oct 2026)
PHP
20- Kanboardkanboard/kanboard49,904
Newest: fix(ical): only accept known columns as the calendar start date (11 Oct 2026)
- Spiral Testingspiral/testing37
Newest: Ignore line endings in scaffolder output assertions (4 Oct 2026)
- Whoopsfilp/whoops213,230
Newest: Stop output buffer cleanup at buffers that cannot be removed (3 Oct 2026)
- Predispredis/predis27,778
Newest: Fix ConnectionErrorProof response count on single node read errors (8 Oct 2026)
C#
7- ILSpyicsharpcode/ILSpy326,543
Newest: Fix #4137: Keep nint in conditionals with mixed native int branches (11 Oct 2026)
- NLogNLog/NLog26,547
Newest: CachedLayoutRendererWrapper - Added CachedUntil to reset cached value when hour or day changes (11 Oct 2026)
- Markdigxoofx/markdig25,341
Newest: Fix: keep trailing content out of an unmatched emphasis closer (#743) (19 Sep 2026)
- PollyApp-vNext/Polly114,242
Newest: Return null from FaultGenerator when no fault is generated (6 Sep 2026)
Rust
6- Sonicvaleriansaliou/sonic521,357
Newest: fix(core): Back up and restore FST buckets again (5 Oct 2026)
- Zedzed-industries/zed191,587
Newest: openai_subscribed: Keep loading slow model catalogs in the background (1 Oct 2026)
- PagefindPagefind/pagefind15,511
Newest: fix(pagefind): skip exclude selectors that cannot be parsed (13 Sep 2026)
- instamitsuhiko/insta12,974
Newest: Remove trailing semicolon from assert_binary_snapshot! macro body (10 Oct 2026)
- rssrust-syndication/rss1504
Newest: Fix image height validation to allow the spec maximum of 400 (5 Sep 2026)
Python
5- funcySuor/funcy13,510
Newest: fix: _cut_iter yields wrong-length/wrong-content parts when step > n (10 Sep 2026)
- python-benedictfabiocaccamo/python-benedict11,606
Newest: Fix RecursionError when assigning a benedict into its own nested descendant (#592) (29 Sep 2026)
- pydashdgilland/pydash11,447
Newest: Fix `fill` growing the array when `start` comes after `end` (20 Sep 2026)
- pytimeparsewroberts/pytimeparse1299
Newest: Fix sign character class accidentally matching a pipe `|` (3 Oct 2026)
JavaScript
3- compromisespencermountain/compromise2112,161
Newest: find payloads by term id so they survive a .remove() (6 Oct 2026)
- Autoprefixerpostcss/autoprefixer322,209
Newest: Add `/* autoprefixer: ignore next warning */` control comment (7 Oct 2026)
- spacetimespencermountain/spacetime14,107
Newest: Fix hour() setter clamping to an invalid hour (24) (8 Sep 2026)
TypeScript
2- vscode-neovimvscode-neovim/vscode-neovim17,753
Newest: Keep visual selections whole over characters outside the BMP (23 Sep 2026)
- MailDevmaildev/maildev16,135
Newest: Build CID attachment URLs against the API route and base path (22 Sep 2026)
Perl and JavaScript
1- Proxmox VEpve-manager, proxmox-widget-toolkit6not on GitHub
Newest: fix #8015: ui: upload: let the user choose the .img image format (29 Sep 2026)
Merged changes over the last 37 days
125 merged changes in 65 projects. A column is every change of one day, the colour the repository's language.
- Go
- PHP
- JavaScript
- C#
- Rust
- Perl and JavaScript
- Python
- TypeScript
The latest merged changes
The latest changes the projects' maintainers merged into their code, titled as the repository records them, with the address where anyone can check them.
- ILSpy#4232Merged 11 Oct 2026github.com/icsharpcode/ILSpy/pull/4232
- chezmoi#5233
fix: Don't double backslashes in shellQuote
Merged 11 Oct 2026github.com/twpayne/chezmoi/pull/5233 - chezmoi#5232
fix: Pass /dev/null to diff command for missing files in apply --interactive
Merged 11 Oct 2026github.com/twpayne/chezmoi/pull/5232 - OpenRA#22627
Preserve player definition order in MapPlayers
Merged 11 Oct 2026github.com/OpenRA/OpenRA/pull/22627 - Kanboard#5914
fix(ical): only accept known columns as the calendar start date
Merged 11 Oct 2026github.com/kanboard/kanboard/pull/5914 - Kanboard#5913
fix(security): escape the project name in the analytic modal title
Merged 11 Oct 2026github.com/kanboard/kanboard/pull/5913
Proxmox VE: fixes through a mailing list
Proxmox does not take pull requests. Patches go by email to pve-devel after signing a contributor licence agreement, and a maintainer applies them to the repository. Each patch of ours answers a Bugzilla report and carries its number.
- #6475Upload shows only the name of the file
- #7108ipset no longer offers aliases already added
- #8015Choosing the .img format on upload
- #8015Choosing the .img format on download from a URL
- #5608Resource mapping names validated as the API does
- #6943The network selector shows comments of IPv6 entries
A Bugzilla report
A numbered bug described by users. Our patches answer these reports:
- #64751 patch
- #71081 patch
- #80152 patches
- #56081 patch
- #69431 patch
A patch via git send-email
To the pve-devel list, explained in the email. From us: 6 patches.
Review on the list
Review and testing by the project's maintainers, on the same list.
Applied in the repository
A commit with our authorship on git.proxmox.com:
ILSpy: fixes in the .NET decompiler
A .NET decompiler: it turns compiled assemblies back into readable C# code. The repository has 26,543 stars on GitHub, and its maintainers have merged 3 changes from us.
What was broken
The C# compiler stores a delegate created from a method group in a static cache field, so it does not have to build it again on every call. ILSpy, the open source .NET decompiler, recognises that pattern and turns it back into readable code. The transform, however, assumed the cache field would be read exactly once. With
_ = (Action<int>)M;the delegate is created and immediately discarded, so the field is never read. The pattern did not match, and the decompiled output kept a field named<>O.<0>__M, a name that cannot be used in C#. That code does not compile (issue #3965).What we changed
When the cache field has no reads at all, the cache check is replaced by the delegate construction it guarded. The output now contains
new Action<int>(M);, which compiles and does the same thing.How we tested it
We added an
Issue3965test case with nine scenarios: a single discarded conversion, a conversion before and after a use of the same method, several conversions in a row, two to the same method, and conversions inside a condition and a loop. Each has its expected output written out, and the test compares the decompiled result against it.What it taught us
A decompiler has to recognise the patterns a compiler emits, or it leaves optimisation debris in the code. Each fix meant reading exactly what the C# and VB compilers emit.
Projects by what they do
Dates, logs, email and configuration come back in every language, so we have fixed the same kinds of libraries in several of them. A row is an area, a column the repository language, a square one merged change.
Developer tools
16 projects, 6 languages
Editors, a decompiler, tests, API docs, packages, CSS, the command line and game engines.
Data and configuration
13 projects, 5 languages
CSV, configuration and dotfiles, jq, URIs, API serialisation and data validation.
Dates and time
7 projects, 4 languages
Dates, time zones and time written in words.
Markdown, HTML and text
7 projects, 5 languages
Markdown and HTML parsers, RSS, a lexer and natural language.
Logs and errors
5 projects, 2 languages
Logging, the error page and retrying after a failure.
Search and storage
5 projects, 3 languages
Search engines, S3-compatible storage, a bitmap index and a Redis client.
Self-hosted applications
5 projects, 4 languages
Virtualisation, a game server panel, hosting billing, kanban and CI/CD.
Helper functions
4 projects, 2 languages
Collections of helper functions and statistics.
Questions about contributions
Where these changes come from, how we pick projects, what licence our code is under and whether we can fix something in your library.
Read next
Why we do it, our own projects, write-ups of the changes, the languages we write in and the whole Work department.
Need a team that fixes bugs at the source?
Describe the problem with a library or project. We reply within an hour.