Skip to content

NeXroll 2.1.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@JFLXCLOUD JFLXCLOUD released this 19 Aug 02:35
· 1 commit to main since this release

Beta release. Upgrade-safe: dashboard layouts, categories, schedules, and sequences are all preserved. Please report anything that looks wrong.


A redesigned dashboard

The dashboard now opens on what is actually happening rather than a wall of counters.

  • Now showing leads with the active schedule, its mode, preroll count, and timezone, plus a progress bar to the next change.
  • What's next lays the coming activations out on a timeline with Active, Next, and Upcoming badges.
  • System health scores the install out of 100 across the scheduler, media server, library, storage, schedule conflicts, and community index age. A check that could not be measured is reported as unknown and costs no points, so a fresh install does not open on an alarming number.
  • Storage mix breaks disk use down across prerolls, NeX-Up trailers, thumbnails, and the database.
  • Quick actions puts refresh, scan files, NeX-Up sync, and rebuild thumbnails one click away.

A new Customize dashboard dialog replaces the old inline edit mode, with three presets (Essential, Operations, Everything), per-tile width and detail, tile density, and toggles for the greeting, health note, and date line.

Upgrading keeps your layout. Your tile order, hidden tiles, sizes, and lock state all survive; the new tiles are inserted ahead of them. Nothing you previously hid comes back.

Deleting a preroll no longer risks your video files

This is the most important fix in the release.

NeXroll decided whether a file was its own to destroy using the managed flag, but the library scanner sets that flag on everything it indexes. A file you copied into a category folder yourself and let NeXroll index was treated exactly like one NeXroll had created, and the confirmation only asked "Are you sure you want to delete this preroll?" without ever mentioning your disk.

  • Removing a preroll now leaves the file alone unless you explicitly ask for it.
  • The confirmation names the preroll and its folder and carries an unchecked Also delete the video file from disk option. The confirm button only becomes Remove and Delete File once that box is ticked.
  • If you have confirmations turned off in Settings, a delete never takes the file. Skipping the prompt is not treated as consent to destroy it.
  • Externally mapped files are never deleted from disk, even when you do ask.

Preroll trash, with a UI to restore from

Files you do ask to delete move to a .nexroll-trash folder inside your preroll library instead of being erased, and are kept for 30 days (NEXROLL_TRASH_RETENTION_DAYS to change it, 0 to keep them indefinitely).

The new Library > Trash page lists what is recoverable with each file's original location, deletion time, size, and days remaining. Restore puts a file back where it came from and re-indexes it. You can also erase a single entry, empty the trash, or clear only expired files.

The trash lives inside your preroll library on purpose: libraries are commonly on a network share, so trashing is an instant same-volume rename rather than copying gigabytes over SMB. The library scanner never indexes it.

Plex no longer hangs partway through your prerolls

Plex does not take a snapshot of the preroll list when playback starts. It re-reads the setting as it advances through the list. NeXroll rewrote that setting on a timer with no idea whether you were mid-playback, so Plex would reach for an entry that no longer existed.

This affected four separate paths: the 10-minute random-block rotation, schedule transitions, the 5-minute verification re-apply, and NeX-Up trailer retention deleting a file that was still in the active list. NeXroll now waits for playback to finish before changing prerolls, and never deletes a trailer currently in Plex's list. Since prerolls only take effect at the start of the next playback, waiting costs nothing.

Set NEXROLL_ALLOW_MIDPLAYBACK_PREROLL_WRITES=1 to restore the old behaviour.

The genre subsystem is gone

Its settings UI was removed in v1.9.10, but the backend stayed live: a playback monitor ran every 60 seconds, twelve API endpoints remained callable, and the Plex webhook existed only to drive it. It also wrote prerolls at the worst possible moment, the instant a movie started, which is the same hang described above.

Removed: the scheduler's playback monitor, all /genres/* and /settings/genre endpoints, the /plex/webhook and /webhooks/plex receivers, the leftover "Recent Genre Prerolls" dashboard tile, and the dead frontend state. The genre_maps table and its settings columns are untouched, so no data disappears and older backups still restore cleanly.

Also in this release

  • Random NeX-Up trailers now cycle through the pool before repeating. Independent random draws could pick the same one or two trailers repeatedly. Random blocks now use a no-repeat shuffle bag and reshuffle once the pool is exhausted.
  • Removals stay removed. A preroll removed while its file stays on disk is added to an ignore list, so the next scan does not re-import it. Re-importing the file deliberately clears the entry.
  • Library sorting by Last added, Name, or Duration, in either direction, with natural-order names so bumper2 comes before bumper10. Your choice is remembered per browser.
  • AI-generated Community Prerolls filter. Content under the community server's /AI/ directory is excluded by default, with a clearly labelled toggle to include it.
  • Fresh installations start in dark mode; existing theme choices are preserved.
  • Fixed: GET /stats always returned 404, shadowed by the frontend catch-all mount.
  • Fixed: importing the same folder again under a different category did nothing.
  • Fixed: the logo was missing from the login screen because its assets sat behind the auth gate.
  • Fixed: files moved into a category folder outside NeXroll stayed uncategorized after a scan.
  • Fixed: thumbnails failed to resolve for paths carrying Docker's prerolls/ prefix.
  • Fixed: garbled UI symbols caused by a source encoding problem.
  • Login and registration forms now say why a submission was rejected, and their fields are labelled for screen readers.
  • Schedule priority now reads "Higher priority number schedules win when multiple schedules overlap," in both forms and the wiki.

Known gaps

  • Dashboard screenshots in the wiki still show the previous layout and will be reshot before the stable 2.1.0.

Install

Download NeXroll_Installer_v2.1.0-beta.1.exe below and run it. Jellyfin users can install NeXroll.Jellyfin-1.14.0.0.zip as a plugin, or download it directly from the Connect page in NeXroll.

Full changelog: https://github.com/JFLXCLOUD/NeXroll/blob/v2.1.0-beta.1/NeXroll/CHANGELOG.md