35 Commits

Author SHA1 Message Date
Christian Benincasa
87974b629c test: add "integration" style tests that check basic transcoding pipelines 2026-03-23 10:41:06 -04:00
Christian Benincasa
6ba45e3e80 test: fix tests and program schema ordering 2026-02-15 17:57:26 -05:00
Christian Benincasa
9da132a174 fix: properly generate build-time constants 2026-01-22 13:38:08 -05:00
nstjuliana
a6933aaa77 fix: add missing build dependency for meilisearch install (#1577) 2026-01-04 00:10:08 +00:00
Christian Benincasa
6b27a070c4 fix: allow using non-synced sources in filler / custom-shows 2025-12-09 15:51:06 -05:00
Christian Benincasa
4e3edbea63 Merge remote-tracking branch 'origin/dev' into media-scanner 2025-10-02 08:48:15 -04:00
Christian Benincasa
e98cccb94d chore: cleanup turbo tasks, consolidate some shared package versions 2025-09-30 21:02:20 -04:00
Christian Benincasa
c96a19f1a5 fix: create release archives with bundled meilisearch 2025-09-16 11:28:54 -04:00
Christian Benincasa
0f1a1ce820 feat: media library scanner + full library search
BREAKING CHANGE:

A massive paradigm shift in the way libraries and media are accessed
within Tunarr.
2025-09-15 17:39:58 -04:00
Christian Benincasa
158245bcef refactor: generate API client from OpenAPI spec (#1336) 2025-08-20 15:44:45 -04:00
Christian Benincasa
b14f6386a3 refactor: simplify Dockerfile and begin using unified base image (#1247)
The unified based image provides all hardware acceleration methods, so
users will not have install specific hardware variants.

Hardware-specific images will be published for a short time in order to
provide warnings to existing users to migrate their install over to the
non-suffixed version.

Thank you to @jasongdove for his hard work on the base image!
2025-06-24 07:37:59 -04:00
Christian Benincasa
0a02ed2e31 refactor(scheduling): generate all time slot schedules on the server (#1231) 2025-06-11 14:50:55 -04:00
Christian Benincasa
f45b873a26 feat(backend): add support for Tunarr worker thread pools (#1225)
This will allow us to run CPU intensive commands away from the main
server event loop, which could improve stream quality and allow us to
ditch erroneous setTimeout calls to flush the event loop. We will
eventually move all scheduling operations onto the server because they
are much more flexible.
2025-06-10 15:07:53 -04:00
Christian Benincasa
e803946d6f fix: remove Bun and rollback to Node 22.13.1 (#1095) 2025-02-15 22:43:59 -05:00
Christian Benincasa
581f70f083 chore: fix make-exec build dependencies 2025-01-29 13:56:06 -05:00
Christian Benincasa
c9c3130d70 refactor: use bun for runtime and packaging (#1063) 2025-01-29 13:42:34 -05:00
Christian Benincasa
3dcf327e30 fix: fix bundled build; apparently only works with a TS entrypoint with esbuild 2025-01-25 09:45:58 -05:00
Christian Benincasa
0e01e2a38d chore: change build process + update core deps (#1057)
* Updates Typescript to latest version
* Changes server Typescript config to actually emit JS files. We were
  already running a full tsc invocation against the server for
typechecking anyway... and we use tsx for fast dev iteration w/o
typechecking, so we may as well just emit the actual JS files so that we
can take advantage of thinks like decorator metadata (upcoming inversify
PR...)
* Updates better-sqlite version to latest
* Bumps node version requirement to 22 and codifies it in package.json
  engines
2025-01-19 13:15:44 -05:00
Christian Benincasa
c6009c66da refactor: port mikro-orm migrations to kysely (#921)
Also removes mikro-orm from the build/bundle process
2024-10-31 11:23:15 -04:00
Christian Benincasa
79005d831b chore: ditch nexe; opt for just packaing node version and our runner script 2024-09-21 14:00:18 -04:00
Christian Benincasa
5ef1fc8bb8 feat: major streaming overhaul (#749)
This commit features a major rewrite and refactoring of the streaming
pipeline and class hierachy in Tunarr. It introduces new default
streaming modes in an attempt to stabilize transitions between program
streams, reuse underlying resources (e.g. ffmpeg processes), reduce the
complexity of interaction between various streaming class components,
and increase flexibility for future development.

Some notable changes:
* The default MPEG-TS stream is now backed by HLS. IPTV and Web
  streaming sessions are shared
* Transcode readahead implementation. This should create smoother
  streams. For FFMPEG 7 (and future versions) we use the native
  "readrate_initial_burst" option. For earlier versions we use an
  artificial readahead. **NOTE**: FFMPEG <7 artificial readahead might
  have unintended side effects (e.g. loudness normalization issues) and
  as such FFMPEG 7+ is recommended
* Separation between building an ffmpeg process, spawning the process,
  and the notion of a 'transcode session'. These are all separate
  classes now with narrow concerns
* Other misc refactoring to cleanup code and remove leftover superfluous
  logic from DTV
2024-09-06 14:44:50 -04:00
Christian Benincasa
107fa26208 chore: do not rely on typechecking for bundle stage 2024-07-18 12:57:27 -04:00
Christian Benincasa
c2d5a667b5 feat: add ARM builds (#618) 2024-07-16 13:19:08 -04:00
Christian Benincasa
6f32ce60f2 chore: bump turborepo to latest version (#614) 2024-07-13 21:23:32 -04:00
Christian Benincasa
1f22d46810 Use intermediate build steps so the build actions don't take centuries 2024-04-22 13:54:32 -04:00
Christian Benincasa
744510eaf1 Fix up dependency graph for make-exec 2024-04-22 11:19:45 -04:00
Christian Benincasa
09b5a7301a Attempt 1 at automated edge binary builds 2024-04-22 11:15:47 -04:00
Christian Benincasa
fd7b433055 Fix Legacy DB Migration to coincide with latest data model (#325) 2024-04-18 18:44:01 -04:00
Christian Benincasa
e2448debaa Cleaning up + optimizing (#277)
* Cleaning up scary code - checkpoint 1

* Massive server cleanup + optimizations - Part 1

* Bump mikro-orm versions
* Pilot using tagged types (type branding) on FillerShow.uuid for
  (maybe) better type checking
* Start hacking away at the 'helperFuncs' file inherited from DTV
    * Optimizations in getCurrentProgramAndTimeElapsed to reuse the
      precalculated 'startTimeOffsets' from the channel lineup
    * More type checks
    * Untangling some of the crazier types I added earlier on to make
      sense of the original code
    * General cleanup + best practices
* Move util.ts to util/index.ts
* No longer using req.hijack() to send raw video stream to frontend -
  this cleaned up a lot of code
* Introduce VideoStream + ConcatStream classes which hold functionality
  related to streaming that used to be in the monolithic video.ts
* Simplify ChannelCache and break dependence on Plex IDs. This now
  caches using our internal DB IDs

Left TODO:
* Completely remove helperFuncs.ts and put the functions in a more
  appropriate place
* Subdirectories for Plex files
* Subdirectories for 'Player' classes
* Subdirectories for 'ffmpeg' classes
* Persist channel cache to disk periodically so that server restarts
  preserve that information about streaming

* Update lockfile

* Fix build
2024-04-12 07:01:59 -04:00
Christian Benincasa
d3ca4a2816 Code health updates (#242)
* Checkpoint - this isn't working right

* typecheck should depend on generate-db-cache action

* Fix some lint warnings
2024-04-07 08:46:40 -04:00
Christian Benincasa
4e22047c16 Try build with specific target 2024-04-02 14:48:16 -04:00
Christian Benincasa
d295f5f96b Basic attempt at docker build + push of a test asset 2024-04-02 10:41:13 -04:00
Christian Benincasa
a68ffb1a39 Really close to getting single executables working (#226) 2024-04-01 18:01:52 -04:00
Christian Benincasa
7735e7d9ae Some server cleanup and organization 2024-03-08 13:41:43 -05:00
Christian Benincasa
a0cdb7600a Integrate turborepo for easier monorepo dep management and bundling (#146) 2024-03-06 12:44:11 -05:00