22 Commits

Author SHA1 Message Date
Christian Benincasa
6b27a070c4 fix: allow using non-synced sources in filler / custom-shows 2025-12-09 15:51:06 -05:00
Christian Benincasa
5183eae8e0 feat!: introduce smart collections (#1436)
Smart Collections are no more than saved searches, currently. This
feature allows saving a freestyle query for later use. This will
eventually be a basic building block of dynamically updating lineups.
2025-10-27 15:39:28 -04:00
Christian Benincasa
a748408fcc feat!: implement local media libraries (#1406)
Initial implementation of local media libraries. Includes local scanners
for movie and TV library types. Saves extracted metadata locally.

Some things are missing, including:
* Saving all metadata locally, including genres, actors, etc.
* blurhash extraction - this is computationally expensive at scale and
  should be done async
* Hooking up subtitle extraction to new subtitle DB tables
2025-10-14 16:41:58 -04:00
Christian Benincasa
158245bcef refactor: generate API client from OpenAPI spec (#1336) 2025-08-20 15:44:45 -04:00
Christian Benincasa
3542baac3b chore: fix even more eslint issues 2025-07-25 08:57:12 -04:00
Christian Benincasa
a311d8f964 fix: properly handle all item types in Jellyfin/Emby program selectors (#1214)
Also includes a large refactoring of how the inline modal works, which
was long overdue. Additionally, there are many QoL improvements in this
change around UX.
2025-06-05 18:55:57 +00:00
Christian Benincasa
846ed27498 feat: support Emby as a media source (#1101) 2025-02-18 13:21:32 -05:00
Christian Benincasa
491fc2e2dc Revert "feat: support Emby as a media source (#1085)" (#1099)
This reverts commit a918176a3b.
2025-02-17 07:54:44 -05:00
Christian Benincasa
a918176a3b feat: support Emby as a media source (#1085) 2025-02-17 07:22:15 -05:00
Christian Benincasa
3b65ccdff3 feat: ability to set the server port in the UI (#1096) 2025-02-16 07:52:41 -05:00
Christian Benincasa
4c96a2492f fix: do not set channel start time when saving lineups (#1042)
This change does not affect time / random slots. Editing the channel
start time now works as expected in the UI.

Fixes #276
2025-01-08 21:28:13 -05:00
Christian Benincasa
8027f998db feat: re-implement random slot UI to match time slot UI (#1036)
* Includes table view for random slots
* Includes warnings for programming that will exceed configured random
  slot duration
* Removes async generator from random slot service - wasn't really
  useful
* Fixes bug in random slot algorithm for caluclating "flex between" or
  pad style = "slot"
* Refactors a lot of code between the time/random slot UIs to be shared
2025-01-04 12:48:23 -05:00
Christian Benincasa
891ed296fb feat: support for toggling between 12/24-hour time in UI (#1026)
This is implemented as baseline for region and timezone selection.
2024-12-18 14:08:53 -05:00
Christian Benincasa
bbae17d116 feat: time slot UI overhaul (#964)
Time Slots are now rendered using Tanstack React Table. The time slot UI
includes rich warnings about programs who cannot fit within their slot.
Various other improvemnts and fixes are included.
2024-11-18 15:20:17 -05:00
Christian Benincasa
bc3e97564d chore: do not attempt to build vite configs for app typechecking 2024-07-18 12:57:02 -04:00
Christian Benincasa
7027efc000 feat: ability to manually add Plex servers (#622)
We've seen reports that the Plex server discovery functionality doesn't
always work. As a workaround, this feature will allow users to manually
enter Plex server details and add those servers to Tunarr.
2024-07-17 15:19:24 -04:00
Christian Benincasa
85ca900b65 Tanstack router (#513)
* Checkpoint tanstack router

* More

* Checkpoint

* Start sorting out channel loaders a bit more

* Try this again

* Get suspense working in some plces

* Make it build. Remove dead code

* Hook up final pages

* Rebase fixes
2024-06-21 10:38:48 -04:00
Mark D'Avella
6a96a826a6 Fixes Fillers & Custom Shows Preloading (#505) 2024-06-11 19:39:52 -04:00
Christian Benincasa
03bcc69942 Implement 'select all' functionality in program selector (#482)
Closes #481

This adds new functionality to 'select all' of the visible items in the
program selector. The use-case here is to execute a Plex search/filter
and then add all of the results at once

Also includes the following changes:
* Refactor giant plex hooks file into multiple smaller files
* Breakout some common plex search queries into new hooks
* Use FixedList in the selected programming list drawer - I noticed a
  slowdown after implementing select all; this helps.
* Refactor the way the SelectedProgrammingList component works a bit.
  We're no longer mounting this in App with hard-coded paths -- there's
more fixes here, though. Now we have a temporary drawer with various
toggle states, etc etc. This should free up the viewport to view content
* Fixes a bug in Plex search/filtering for TV shows
* Enables the use of path aliases in imports using "@/", since we're
  starting to deal with a lot of files in many nested directories. This
cleans things up a bit
2024-06-06 15:03:48 -04:00
Christian Benincasa
06478d9e9f Use season/episode secondary sort in useReleaseDateSort + test. Fixes #166 2024-04-23 16:26:26 -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
c7ea7ab1b4 Cleanup the repo!
* Move web2 -> web -- this was an artifact from the original fork where
  I wanted to keep the original webapp running side by side. We've
expanded the scope a lot since then and it doesn't make sense to keep
this name
* Remove old/ directory - this was leftover from the fork as well
* Remove various files like PR template (we'll make a new one when we're
  ready) and CODE_OF_CONDUCT
2024-03-05 14:17:49 -05:00