@torrent-tv/proxy 2.89.6 → 2.89.8

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.
Files changed (92) hide show
  1. package/AGENTS.md +32 -12
  2. package/CHANGELOG.md +2340 -2330
  3. package/assets/calibration/audio/NOTICE.md +19 -19
  4. package/assets/calibration/audio/manifest.json +98 -98
  5. package/biome.json +412 -412
  6. package/docs/browser-proxy-contract.md +155 -155
  7. package/docs/container-architecture.md +273 -273
  8. package/docs/encode-run-state.md +1 -1
  9. package/docs/playback-start-forecast.md +113 -98
  10. package/package.json +51 -50
  11. package/routes/api/sources/files/get.js +106 -106
  12. package/scripts/build-audio-samples.mjs +31 -31
  13. package/services/encode/EncodeRun.js +67 -15
  14. package/services/encode/EncodeRuns.js +19 -7
  15. package/services/encode/OutputOpening.js +784 -784
  16. package/services/encode/audio-calibration.js +67 -67
  17. package/services/encode/audio-work-rate.js +15 -15
  18. package/services/encode/encode-exit.js +2 -0
  19. package/services/encode/hwaccel.js +1894 -1894
  20. package/services/encode/output/index.js +24 -24
  21. package/services/encode/piece-completeness.js +60 -2
  22. package/services/encode/run-command.js +757 -755
  23. package/services/encode/segment-formats/index.js +1 -0
  24. package/services/encode/segment-formats/mp4-boxes.js +8 -1
  25. package/services/media/ContainerOrchestrator.js +202 -202
  26. package/services/media/KeyframeTables.js +356 -356
  27. package/services/media/SubtitleCues.js +592 -592
  28. package/services/media/audio-inventory.js +299 -299
  29. package/services/media/container/AviContainer.js +268 -268
  30. package/services/media/container/Container.js +632 -632
  31. package/services/media/container/ContainerFactory.js +38 -38
  32. package/services/media/container/MatroskaContainer.js +1031 -1031
  33. package/services/media/container/Mp4Container.js +1354 -1354
  34. package/services/media/container/SubtitleFileContainer.js +339 -339
  35. package/services/media/container/ebml-stream.js +174 -174
  36. package/services/media/container/matroska-clusters.js +1165 -1165
  37. package/services/media/container/unavailable.js +77 -77
  38. package/services/media/tracks/ContainerTrack.js +84 -84
  39. package/services/media/tracks/TextSubtitleTrack.js +295 -295
  40. package/services/storage/piece-store/shared-piece-store.js +1937 -1937
  41. package/services/storage/segment-store/SegmentStore.js +1294 -1294
  42. package/services/torrent/Contents.js +382 -382
  43. package/services/torrent/episode-naming.js +182 -182
  44. package/services/torrent/torrent-pool.js +2688 -2688
  45. package/services/torrent/worker/client.js +836 -836
  46. package/services/torrent/worker/held-bytes.js +231 -231
  47. package/services/torrent/worker/worker.js +1137 -1137
  48. package/services/transport/data-channel-handler.js +1373 -1373
  49. package/services/viewer/PriorityMap.js +421 -421
  50. package/test/audio-calibration.test.js +23 -23
  51. package/test/auto-quality-step.test.js +762 -762
  52. package/test/coalesce.test.js +39 -39
  53. package/test/coverage-follows-the-disk.test.js +5 -0
  54. package/test/decode-cost.test.js +475 -475
  55. package/test/encode-run.test.js +58 -0
  56. package/test/episode-naming.test.js +131 -131
  57. package/test/failed-encoder-still-serves-what-exists.test.js +1 -1
  58. package/test/fixtures/audio-frame-boundary.json +1 -1
  59. package/test/fixtures/refused-audio-20261002.json +10 -0
  60. package/test/fmp4-presentation-clock.test.js +4 -2
  61. package/test/format-keyed-outputs.test.js +78 -78
  62. package/test/health-metrics.test.js +11 -13
  63. package/test/held-read-ownership.test.js +77 -77
  64. package/test/helpers/encode-run.js +14 -6
  65. package/test/helpers/held-file.js +77 -77
  66. package/test/helpers/manager.js +62 -62
  67. package/test/helpers/matroska-file.js +296 -296
  68. package/test/keyframe-table-budget.test.js +123 -123
  69. package/test/matroska-cluster-discovery.test.js +323 -323
  70. package/test/one-output-one-session.test.js +273 -273
  71. package/test/output-speed.test.js +6 -1
  72. package/test/piece-completeness.test.js +37 -1
  73. package/test/quality-variants.test.js +1274 -1270
  74. package/test/rate-control-in-the-output.test.js +4 -3
  75. package/test/reads-not-yet-arrived.test.js +218 -218
  76. package/test/seek-frees-the-viewers-requests.test.js +1 -1
  77. package/test/segment-closed-on-both-branches.test.js +114 -114
  78. package/test/segment-judged-by-its-own-header.test.js +222 -222
  79. package/test/segment-serve-wiring.test.js +481 -481
  80. package/test/serving-existing-output.test.js +111 -111
  81. package/test/source-files-route.test.js +113 -113
  82. package/test/subtitle-cue-walk.test.js +385 -385
  83. package/test/subtitle-metadata.test.js +15 -15
  84. package/test/subtitle-plan-waits.test.js +125 -125
  85. package/test/subtitle-track-numbering.test.js +391 -391
  86. package/test/two-viewers-one-picture.test.js +508 -508
  87. package/test/viewer-requests-admission.test.js +92 -92
  88. package/test/viewer-starts-on-map.test.js +27 -27
  89. package/test/viewer-states.test.js +5 -2
  90. package/test/viewing-generations.test.js +390 -390
  91. package/test/whole-file-held-read.test.js +30 -30
  92. package/utils/coalesce.js +41 -41
package/AGENTS.md CHANGED
@@ -318,21 +318,41 @@ rented infra (flat-rate/unmetered bandwidth — Hetzner dedicated / OVH; NOT
318
318
  metered-egress clouds). Provider/economics analysis in the parent
319
319
  `../CLAUDE.md` "Cloud proxy" section.
320
320
 
321
- ## Changelog
321
+ ## Commits
322
+
323
+ Every commit header follows Conventional Commits (`<type>(<scope>)!: <subject>`,
324
+ types `feat fix perf refactor docs test build ci chore style revert`); CI refuses
325
+ a pushed commit that does not. Enable the local check once per clone:
326
+ `git config core.hooksPath .githooks`. Rules: `torrent-tv/.github` CONTRIBUTING.md.
322
327
 
323
- Every behavioural change must be recorded in `CHANGELOG.md` — add an entry under
324
- a new `## <version>` heading at the top, following the existing
325
- `- **New**/**Fix**/**Chore**:` format.
328
+ ## Changelog
326
329
 
327
- **Do NOT edit `package.json` version.** `npm run patch`/`minor` runs `npm
328
- version …` which bumps it. Write the CHANGELOG entry at the version that bump
329
- will produce: **current `package.json` version + 1 patch** (or + 1 minor).
330
- Accumulate bullets into that single pending entry until it's published. See the
331
- parent `../CLAUDE.md`.
330
+ Every behavioural change must be recorded in `CHANGELOG.md` — add a bullet
331
+ under `## Unreleased` at the top (create the heading if it is missing),
332
+ following the existing `- **New**/**Fix**/**Chore**:` format. Never write a
333
+ version heading and never edit the `package.json` version: the release job
334
+ does both. CI refuses a releasable push without an `## Unreleased` entry.
332
335
 
333
336
  ## Release
334
337
 
335
- `npm run patch` (publishes to npm + pushes tags). The HA addon then needs its
336
- own version bump to pull the new package. Publish proxy BEFORE bumping the addon.
338
+ GitHub Actions releases; nothing is published from a workstation. A push to
339
+ `main` runs `.github/workflows/main.yml`: lint, the tests, and
340
+ `scripts/check-tests-start-no-torrent.mjs` (no check may start a real
341
+ torrent). Then, when the commits since the last `v*` tag ask for it (`feat`
342
+ → minor; `fix`/`perf`/`revert` → patch; anything else → none), the release
343
+ job in the `production` environment:
344
+
345
+ 1. writes the version into `package.json`/`package-lock.json` and renames
346
+ `## Unreleased` to it, commits `chore(release): <version>` and tags it;
347
+ 2. publishes `@torrent-tv/proxy` to npm with provenance;
348
+ 3. pushes the tag and the commit and creates the GitHub release;
349
+ 4. pushes `fix(proxy)`/`feat(proxy): install proxy <version>` to
350
+ `torrent-tv/ha-addon` (`PROXY_VERSION` and the add-on changelog), whose own
351
+ workflow builds the add-on image and releases the add-on.
352
+
353
+ So the order proxy → add-on is kept by construction. A release can also be
354
+ started by hand from the Actions tab with an explicit `patch` or `minor` step.
355
+ Updating the add-on on the Home Assistant host is still done there.
337
356
 
338
- **Any proxy change requires bumping the ha-addon version** (`ha-addon/torrent_tv_proxy/config.yaml`). The addon installs the proxy from npm at build time and the build is cached; without a version bump the plugin will NOT update and keeps running the old proxy. So after `npm run patch`, always bump the addon `config.yaml` version, push, and update the addon.
357
+ `.github/workflows/dependencies.yml` updates dependencies daily within the
358
+ ranges, runs the same checks and pushes to `main`.