@torrent-tv/proxy 2.9.115 → 2.9.116

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 2.9.116
2
+
3
+ - **New**: A progress report says which height is being produced right now. Under automatic quality the proxy steps the resolution down when the host cannot encode in realtime or the viewer's link cannot carry the stream, and nothing said so — the menu read "Auto" whatever it had settled on. Zero when the video is copied, because then nothing is being chosen and the source's own height is what plays.
4
+
1
5
  ## 2.9.114
2
6
 
3
7
  - **Fix**: A seek leaked a pinned piece, and enough of them destroyed the torrent. A piece is pinned before its fragment is handed to the reader and released by whoever received it — but a consumer that ABANDONS the read never gets the chance, and a seek abandons it every time: the encoder is killed, the response is torn down, the loop is left between two fragments. Field 2026-08-06, one seek was enough: the store answered `Every resident piece is pinned; no slot can be freed`, and it answered it to the WebTorrent client, which closed the store and destroyed the torrent — after which every read failed with `File 0 not found`, the session went terminal, and the segment the viewer was waiting for returned an instant error. The pin of a fragment still in the consumer's hands is now dropped by the reader itself on every exit, abandonment included. Covered by a test that abandons a read mid-fragment and checks the store has nothing pinned.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@torrent-tv/proxy",
3
- "version": "2.9.115",
3
+ "version": "2.9.116",
4
4
  "description": "Torrent proxy client that exposes webseed-like HTTP stream endpoint.",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "publishConfig": {
@@ -3284,6 +3284,13 @@ export class HlsSessionManager {
3284
3284
  segmentDurationSec: this.segmentDurationSec,
3285
3285
  speed: session.progress.speed,
3286
3286
  outputMbps,
3287
+ // The height being produced RIGHT NOW. On automatic quality the proxy
3288
+ // steps down a rung when the host cannot keep up or the viewer's link
3289
+ // cannot carry the stream, and the menu said only "Auto" — so the one
3290
+ // question it raises, what am I actually watching, had no answer
3291
+ // anywhere. Zero when the video is copied, because then nothing is being
3292
+ // chosen: the source's own height is what plays.
3293
+ currentHeight: session.transcodeVideo ? (session.encodeHeight ?? 0) : 0,
3287
3294
  updatedAt: session.progress.updatedAt,
3288
3295
  error: session.state === "failed" ? session.lastError : ""
3289
3296
  };