Some contributions don’t fix anything broken — they add something that simply was never there. A new API method that should have existed from the start. A startup check that saves you two days of debugging. Metadata that keeps a registry accurate. Here are four contributions in the “now it exists” category.
Kometa: Add E4 to the network overlay and show collection
Kometa’s defaults/ directory contains a community-maintained set of YAML definitions for overlays (badges that appear on poster art) and collections (groups of shows or movies organized by theme). Network overlays badge each show with the logo of the network it aired on — BBC, HBO, Netflix, and so on.
E4 — the UK Channel 4 offshoot that’s given us Skins, The IT Crowd, and Hollyoaks, among others — was missing. E! was there. E4 was not. The fix is two additions:
- An
E4entry indefaults/overlays/network.yml(alphabetical, after E!) - E4added to the include list indefaults/show/network.yml
Small change, but the right kind of small — E4 has a solid library of shows worth organizing.
ruby_open_weather_map: Add zip code lookup with specs and VCR cassettes
ruby_open_weather_map is a Ruby gem that wraps the OpenWeatherMap API — current weather, forecasts, and historical data by city name, coordinates, or (after this PR) zip code.
The OpenWeatherMap API has always supported zip code lookups (zip=33704,US), and :zip was already in the gem’s valid_options list. But there was no .zip class method, so users had to construct the option hash by hand. A previous PR had added the method without any test coverage, so it never made it in.
This PR adds the method properly:
# Usage: OpenWeather::Current.zip('33704,US')def zip(zip_code, options = {}) new(options.merge(zip: zip_code)).retrieveend
Two RSpec tests cover valid and invalid zip codes, matching the style of every other method in the suite. The tests use VCR cassettes — recorded HTTP interactions that get replayed during test runs — so they’re fast, deterministic, and don’t hit the live API. A great pattern for testing API clients, and worth keeping in mind for any Ruby project with external HTTP calls. Also fixed a pre-existing “Doucumentation” typo in the README, because it was right there.
FlareSolverr: Warn on low temp disk space and clean up stale Chrome profiles
FlareSolverr (headless Chrome proxy) had an issue documented in a GitHub thread where one user spent two full days investigating Chrome versions, proxies, and Docker configurations before discovering the real problem: /tmp was full.
When the temp partition fills up, Chrome crashes with a completely unhelpful “disconnected: Unable to receive message from renderer” error. A contributing factor: Chrome creates puppeteer_dev_chrome_profile-* directories in /tmp and only removes them on clean shutdown. Crashes and kills leave them behind, and they accumulate.
Two functions added to utils.py, both called at startup:
check_disk_space()— warns if the temp partition is full or has less than 500 MB free, with a hint to setTMPDIRto a partition with more roomcleanup_stale_temp_dirs()— removes leftoverpuppeteer_dev_chrome_profile-*directories from previous crashed sessions on startup
Both catch all exceptions and fall through gracefully. The broader principle: surfacing the root cause of a failure at startup — when the system is in a known state and someone is paying attention — is worth far more than a confusing error deep in a request cycle hours later.
Homebrew Cask: Add auto_updates true to dictionaries, jumpshare, and keycombiner
Three separate PRs — dictionaries, jumpshare, keycombiner — same one-line fix each:
auto_updates true
All three apps ship their own auto-updater that keeps the app current outside of Homebrew. Without the auto_updates true stanza, Homebrew reports them as “outdated” on every brew outdated run — even when the app is already on the latest version. That leads users to unnecessarily reinstall through Homebrew, potentially downgrading an app the built-in updater had already advanced past the cask version.
One stanza, three casks, the brew outdated output gets a little less noisy. Sometimes that’s the whole job.

