NeXroll 2.2.0-beta.8
Pre-releaseThe NeX-Up generators can now be driven from the External API, so a dynamic preroll or a Coming Soon list can be rendered on a headless install without opening the interface. Two External API endpoints that returned 500 on every call are fixed. The Library's quick filters now show what clicking them will actually return, the header no longer comes apart on a folded phone, and NeXroll ships a real app icon at every size a launcher, browser tab or home screen asks for.
No configuration change needed.
NeX-Up generators over the API
POST /external/nexup/dynamicandPOST /external/nexup/coming-soonrender server-side through FFmpeg. Generating a preroll previously meant opening the interface and clicking Generate, which a headless install has no way to do.- They return
202with a job id rather than the finished file. A five second preroll takes around two minutes to render, well past most client and proxy timeouts.GET /external/nexup/jobs/{id}reports progress, and on success the job carries thepreroll_idof the registered file, ready to pass straight toPOST /external/schedules. GET /external/nexup/capabilitieslists the templates, themes and limits the render endpoints accept, andGET /external/nexup/generatedlists what has been produced.- One render runs at a time. The generators write a fixed filename per template and per layout, so concurrent renders would fight over the same output file.
- Generating over the API no longer changes the interface's saved generator settings. The values are restored after the render unless
save_as_default=trueis passed. Clicking Generate in the interface still saves them, as before.
External API fixes
GET /external/schedulesreturned 500 on every call, andGET /external/active-schedulesdid the same as soon as any schedule was active. Both readschedule_typeandenabledoff the database row, but those are the request-schema names; the columns aretypeandis_active.- A dynamic preroll generated through the FFmpeg path was never registered in the library, so the file existed on disk with no library row and nothing that could schedule it. The Coming Soon generator had always registered its output.
/docs,/redocand/openapi.jsongroup the supported endpoints. All 284 routes previously sat undifferentiated under a bare title, with the ones meant for integrators buried among the interface's own.
API documentation
- The wiki told you to send a header the server does not accept.
Authorization: Bearerreturns 401; NeXroll readsX-Api-Keyor anapi_keyquery parameter. The Troubleshooting page offered that same wrong header as the fix for a key that will not work, so following the docs to debug the problem confirmed the problem. - Eight documented endpoints did not exist.
GET /versionis/system/version, path mappings live under/settings/, the Plex and Jellyfin connection tests are/plex/connectand/jellyfin/connect, active schedules are/scheduler/active-schedule-ids, and there is no endpoint returning every setting at once — that is now stated rather than implied.
Library and Community
- The "Uncategorized" quick filter counted prerolls it then refused to show. The count came from the raw library while the grid hides NeX-Up generator output and downloaded trailers, and "uncategorized" is not one of those categories, so the exemption never applied: a library whose uncategorized files were all NeX-Up ones showed a count and then an empty grid. Every quick filter now counts through the same visibility rules the grid uses.
- A quick filter could offer a category with nothing in it, landing on an empty grid whatever you did. Empty categories are no longer offered.
- "All" did not mean all. The search box feeds the same filter state the chips do, but All neither cleared it nor accounted for it, so a search with no matches left "All" highlighted over an empty grid with nothing to say why.
- The Matched quick filter did not reset the others, so its count described the whole library while the grid showed the intersection. It now behaves like every other chip in the row and carries a count.
- Community Browse showed no filters until you interacted with the page. They were loaded as a side effect of the Fair Use check, which runs at most once per page load and only if that check is still pending when Community is first opened; anything that made it miss left the card absent for the session. They now load whenever the page is open, and the card says whether it is loading, or why it cannot load.
- "1 prerolls".
Phones and folding phones
- The header came apart on a cover screen. At around 320 to 344 pixels wide the account controls grew taller than the fixed header, and the avatar wrapped onto a line below it, overlapping the page. The header now grows to fit, and its controls meet the 44 pixel minimum touch target.
- Below 480 pixels the health badge moves to its own row with its text intact, rather than being reduced to a colour-only dot.
- Library and NeX-Up summary tiles drop to two columns on narrow screens. Four fixed-width columns had been forcing the page wider than the screen.
This was reviewed at fifteen widths from 320 pixels up, signed in and out. It is a review of the shared shell and the main pages, not an exhaustive audit of every modal and editor, and browser viewport testing does not reproduce a physical hinge, Samsung Internet, or OS text scaling. If you reported this, please do check it on the actual handset.
App icon
- NeXroll now has a real icon set. The manifest previously advertised the wide NeXroll wordmark as a square marked
any maskable, so launchers cropped it to fit their mask, and the Apple touch icon tags claimed sizes the files did not have. - Icons are exported from a glyph master:
anyandmaskabledeclared separately, maskable artwork inside the W3C safe zone, a 180 pixel Apple home-screen icon, and a multi-resolution ICO for browser tabs and Windows shortcuts. - Existing installed shortcuts may need to be removed and added again to clear the operating system's icon cache.