Releases: Aljayz/nexube
v0.2.7
v0.2.7 — Offline Playback & Downloads Overhaul
New Features
- Grouped Downloads: Completed downloads are now organized into Movies and TV Series sections on the Downloads page with poster card grid layout.
- Offline Detail View: Click a download card to open a full detail view (like the online DetailView but powered by local data). Browse episodes by season, play any episode, and navigate between episodes with prev/next buttons.
- Auto-Advance: When an episode finishes, the next episode plays automatically.
- Movie Play Button: Compact play button placed beside the poster instead of a giant full-width button.
Bug Fixes
- Production Download Playback: Fixed
net::ERR_UNEXPECTEDand "Not allowed to load local resource" errors when playing downloaded videos in packaged builds. The customlocal-media://protocol now serves files directly viafs.createReadStream(bypassingnet.fetchwhich doesn't supportfile://). - Video Seeking: Added proper HTTP Range request handling (206 Partial Content) so video seeking/buffering works past the first 3 seconds.
- URL Normalization: Fixed Chromium stripping empty authority from
local-media:///path→local-media://pathby usingnew URL()hostname reconstruction. - Cookie Handling: Fixed
yt-dlpcookie file parameter — raw cookie strings are now written to a temporary Netscape-format cookie file. - Downloader Permission: Added
chmodSyncbefore spawning downloader binary in AppImage/deb builds. - React Hooks Violation: Fixed "Rendered more hooks than during previous render" crash caused by early returns before hook declarations.
Infrastructure
- Separated Downloader Build:
release.ymlnow mirrorsdeploy.ymlwith dedicated downloader build jobs. The Electron build downloads the pre-built artifact, making failures visible earlier. - Downloader Binary Detection: Both workflows verify binary existence after build and after artifact download.
Full Changelog: v0.2.6...v0.2.7
v0.2.6
0.2.6 — Embedded Player Fullscreen Fix + UX Improvements
Fixed an issue where clicking fullscreen on VidSrc and VidAPI embedded players would fullscreen the entire Electron window instead of just the video area. These sources nest the <video> element inside cross-origin iframes and use the native Fullscreen API, which Electron propagates as an enter-html-full-screen event on the webview.
What's Changed
- Main process (
electron/main.js): Addeddid-attach-webviewhandler that forwardsenter-html-full-screenandleave-html-full-screenwebview events to the renderer via IPC. - Preload bridge (
electron/preload.js): ExposedonWebviewEnterFullscreen/offWebviewEnterFullscreen/onWebviewLeaveFullscreen/offWebviewLeaveFullscreenunderelectron.player.*. - Player component (
src/components/PlayerSection.jsx): Added auseEffectthat intercepts the fullscreen request when the active source usesprogressMethod: 'frameIteration'(VidSrc, VidAPI). Instead of allowing native fullscreen, it sets adata-player-fullscreenattribute on<html>, hides the header toolbar, and callsdocument.exitFullscreen()to cancel the native fullscreen. - CSS (
src/styles/globals.css): Added rules so[data-player-fullscreen-container]becomes a fixed full-viewport overlay whenhtml[data-player-fullscreen]is present, with overflow hidden on<body>to prevent scrolling.
Full Changelog: v0.2.5...v0.2.6
v0.2.5
v0.2.5
Features
- TMDB setup help carousel — "Need help?" button opens a step-by-step guide with screenshots, zoom, and keyboard navigation
- External browser links — TMDB link now opens in the system default browser (Chrome, Brave, Firefox, etc.) instead of Electron webview
Improvements
- Click screenshot to zoom in with backdrop blur
- Instruction text shown above zoomed image
- ESC to close, ←/→ arrows to navigate steps
- Close button positioned near the zoomed image
Full Changelog: v0.2.4...v0.2.5
v0.2.4
v0.2.4 — Bug Fix Release
Fixes
- Episode switching not working in series —
seasonandepisodeparams were not forwarded to source URL builders, so every episode loaded the same URL - Avatar buttons submitting the setup form — avatar picker buttons inside
<form>defaulted totype="submit", accidentally creating a master account when clicking an avatar - Reset All Data not redirecting to TMDB API setup — the in-memory store cache in the main process was not cleared during reset, causing the app to skip setup and go to profile select instead
charAtcrash opening Settings for the first time —activeProfilewas never set after setup completed, causingprofileName.charAt(0)to throw- ErrorBoundary "Try Again" button — now does a full page reload to reliably clear error states
Additions
- Report button in ErrorBoundary — opens a pre-filled GitHub issue with the error message and stack trace
Full Changelog: v0.2.3...v0.2.4
v0.2.3
Full Changelog: v0.2.2...v0.2.3
v0.2.2
v0.2.1
What's Changed
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Download System Rewrite
- New Rust-based download backend — Replaced the Python vid-dl CLI (~150MB) with a native Rust binary (
desk-downloader). Smaller, faster, and no Python dependency at runtime. - Rewrite download IPC layer — New
desk-downloads.js/desk-downloader.jsreplacing the olddownloads.js/downloader.jswith a cleaner subprocess management and progress event architecture.
Bug Fixes
- Downloads freezing near completion — Root cause: main window reference was captured as
nullat registration time, silently dropping allsendProgressIPC calls. Fixed by passinggetMainWindowfunction reference instead. - Stop button not updating UI —
stop/killused'stopped'/'killed'status values rejected by the DB CHECK constraint. Now maps to'cancelled'for persistence. - Progress bar stuck at 0% — Added mapping from
pct(subprocess field) toprogress(UI field) so the bar updates in real time. - Download size fluctuating mid-download — First
total_bytesvalue is now frozen; subsequent progress events no longer overwrite it. - Stray "0" rendering beside speed — Fixed ternary rendering for speed display in
DownloadsPage.jsx. - Safety-net polling — Full
fetchDownloads()refresh every 3 seconds catches any terminal state missed by live progress events.
UI Enhancements
- Download rows now show raw
downloaded_bytes(comma-formatted) alongside formattedtotal_bytes. formatBytesprecision changed from 1 to 2 decimal places.- VidSrc downloads: visible browser window with play-button banner (no auto-clicking).
- Quick-download blocked for VidSrc (info message in
DownloadModal). - AllManga downloads blocked for non-anime content (info message in
DownloadModal). PlayerSectiondownload button requires video to be played first.
Chores
- Removed
vid-dl-clisource repo and all prebuilt binaries (Linux + Windows) from tree. - Added
apps/desk-vid-dl/Python package for on-the-fly PyInstaller builds. - Updated README, ARCHITECTURE.md, sources config, and settings UI.
v0.1.8
Nexube v0.1.8
Bug Fixes
-
Fixed Missing Assets in Linux Builds Resolved an issue where root-relative asset paths (e.g.,
/Logo.png,/Name.png) resolved incorrectly to the filesystem root (file:///) when loaded via Electron'sloadFile(). Paths have been updated to be relative todist/index.html. -
Fixes: Missing sidebar logo, titlebar name, splash/loading screen logo, and broken avatar images in the packaged application.
-
Fixed Production Avatar Loading Updated
getAvatarSrc()acrossAvatarPicker.jsx,ProfileSelectScreen.jsx, andProfilesSettings.jsxto prevent prepending a forward slash (/) to avatar filenames. Built-in avatars (avatar1.pngthroughavatar6.png) now render correctly in production environments. -
Resolved Windows Packaging Error (
Cannot find module 'conf') Fixed a build failure caused by staledist-electron/artifacts referencing the deprecatedelectron-storedependency. Cleaned up the legacy compiled output to ensure the build properly utilizes the new custom Store implementation.
NEW USERS: TMDB API Setup Required
Don't have a TMDB account or need help setting up your media keys? Check out our quick guide:
For Non-Tech User
Windows Installer
Nexube-0.1.8-x64.exe
Linux Installer
Nexube-0.1.8-amd64.debNexube-0.1.8-x86_64.AppImage
Full Changelog: v0.1.7...v0.1.8
v0.1.7
Full Changelog: v0.1.6...v0.1.7