Open Source Contributions
A collection of my open source contributions to projects I use and appreciate. These range from bug fixes and features to documentation improvements across TypeScript, Ruby, Python, Go, Rust, and more.
C#
Added ItemUrl template variable and email customization options for better email notifications
Configuration
Updated 14 outdated Unraid forum links across 13 plugin configuration files
Documentation
Corrected a typo in the environment variable documentation for improved clarity
Added new to_base attribute to Crypto object documentation and added nullable column to document which fields can be null
Corrected HTTP method from POST to GET for the get transaction group endpoint
Removed leading and trailing pipes from table markdown to improve readability when editing
Added nullable column to Categories object and cleaned up table formatting, including adding missing group_category_name field
Added nullable column to Transactions object, improved table formatting, and clarified split parameter documentation
Added missing order, archived, and recurring fields to Budget object documentation with improved table spacing
Added nullable column and missing created_at field to Recurring Expenses object documentation
Added nullable column to User object documentation and cleaned up table formatting
Added nullable column to Tags object documentation
Added nullable column, fixed date_linked format documentation, improved table formatting, and corrected field ordering in examples
Added nullable columns to Budget and Data objects and documented the previously undocumented Config object
Updated Ruby to 3.2, Bundler to 2.4, and various gem dependencies to fix Ruby LSP crashes and improve development experience
Go
Fixed a bug where Twitter and Instagram URL bases were duplicated when submitting to StashBox if the entry already had full URLs
Added StashID display to studio details page without requiring edit mode, improving usability
PHP
Updated outdated Unraid forum links to point to current forum locations
Python
Fixed a bug where pathlib Path object was incorrectly joined with string, causing file operation failures
Changed MKVpropedit plugin to set file_out to None instead of creating hardlinked copies, improving efficiency
Fixed tag handling and progress parsing in the MKVpropedit plugin
Created a new plugin to manipulate MKV file properties using mkvpropedit without re-encoding, enabling fast metadata editing
Added a new configuration option to control how out-of-range pixel values are handled during video scaling
Ruby
Added CSV as an explicit runtime dependency to ensure Ruby 3.3+ compatibility, as it's no longer included in the standard library by default
Fixed ActiveJob RBI type definitions by fully qualifying the JITTER_DEFAULT constant for Sorbet compatibility
Added IncludedMacroPatterns configuration to catch assertion methods via regex patterns for better cop customization
Fixed documentation formatting by adding missing code fence around example code
Added support for looking up Magic: The Gathering cards by their Multiverse and Cardmarket IDs
Fixed Ruby 3.5 compatibility by adding CGI as runtime dependency and replacing parse method to work with bundled gem
Rust
Fixed a typo in the installation documentation that appeared to be a copy-paste issue
TypeScript
Fixed regional labeling to properly indicate that the USA region also supports Canadian users
Large codebase cleanup to improve code quality and maintainability
added error logging and improved error handling for 500 server errors and consolidated error logging
Better handle the oauth vs basic auth login methods
Moved debug statements to error conditions to improve debug logging
Fixed JSON parsing crashes from malformed API responses and improved error handling and debug logs. Plugin is now more resilient and shows better error messages.
Refactored webhook notification system to use Handlebars templating instead of custom KeyMap system, adding 17 custom helpers for flexible template rendering
Added exempt tags feature to allow filtering media during Sonarr/Radarr sync based on configured tags
Implemented comprehensive custom email template system with 17 dynamic variables and live preview functionality for email notifications
Added ability to click on the currently selected conversation to deselect it in the LeftPane
Fixed pending edit count to include both bot and regular edits by allowing the is_bot field query parameter to return both types
Improved image display by scaling down vertical images to prevent excessive cropping and centering all images for balanced cropping
Fixed substudio sorting to be case-insensitive for more intuitive alphabetical ordering
Corrected the Discord channel name for StashDB invites and added helpful links to Discord and the specific channel
Added .DS_Store to gitignore and specified maximum Node.js version for better development environment consistency
Added missing title sort option to scene list, enabling users to sort scenes alphabetically by title
Enhanced URL input validation to support multiple regex capture groups, enabling more flexible URL normalization
Changed ethnicity label from gendered 'Latino' to gender-neutral 'Latin' for inclusivity
