# Upstream contributions log One row per PR/issue we file. Outcomes recorded honestly — merged, closed, abandoned, whatever happened. ## Active _(none yet — opens with M1 development)_ ## Filed | Date | Project | PR/Issue | Title | Status | Outcome | |------|---------|----------|-------|--------|---------| | _empty_ | | | | | | ## Watching (not ours, but relevant to torttube) | Project | PR/Issue | Title | Why we care | |---------|----------|-------|-------------| | rustypipe | [PR #77](https://codeberg.org/ThetaDev/rustypipe/pulls/77) | "Some fixes" | Open 2026-05-23, unmerged. If maintainer stays quiet we may need to help land it or fork. | | NPE | [#1339](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1339) | n-parameter deobfuscation broken | Core to playback. Fix here = fix in our Tier-1. | | NPE | [#1444](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1444) | Distinguish unavailable vs unextractable | Clean typed-error PR target. | | NPE | [#1360](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1360) | Refactor link handlers | "help wanted" label. | | NPE | [#1357](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1357) | JDoc checks in PR pipeline | "good first issue" — smallest credible first PR. | ## Posture - Every sidecar bug we trace ends with one question: **is the root cause in rustypipe / NPE / yt-dlp?** If yes, fix it there first; pull the fix into our sidecar via dep bump or backport. - We are not pretending to be on the rustypipe / NPE / yt-dlp maintainer level. We're a downstream consumer that does its share. - A merged PR > a forked patch. A fork is the last resort, not the first move.