100 Commits
Author SHA1 Message Date
Andrew Rabert a97fb04ce8 AppImage: Fix xdg_positioner.set_size(0,0) crash ubuntu 24.04 2026-02-22 13:58:54 -05:00
Andrew Rabert 6ea2a4395a Fix AppImage crashes on Ubuntu and other non-Arch distros
Three fixes for cross-distro compatibility:

- Keep libvdpau.so in the bundle. It's a dispatcher library, not a
  GPU driver. The backend drivers in /usr/lib/vdpau/ are still excluded.
  Without the dispatcher, the AppImage fails to start on distros where
  libvdpau isn't installed by default (e.g. Ubuntu 24.04).

- Replace the QtWebEngineProcess bash wrapper with a statically-linked
  C binary. The bash wrapper was crashing on Ubuntu because the host's
  /bin/bash was loaded by the host's dynamic linker, which then picked
  up the bundled Arch glibc via LD_LIBRARY_PATH — an ABI mismatch that
  segfaults. A static binary has no shared library dependencies, so
  LD_LIBRARY_PATH is irrelevant to it.

- Improve APPDIR derivation in the wrapper. Instead of relying solely
  on the APPDIR environment variable (which may not be inherited by
  subprocesses), derive it from the binary's own path via
  /proc/self/exe.
2026-02-21 17:31:28 -05:00
Andrew Rabert 9469904309 Add development build download links to README 2026-02-21 00:28:43 -05:00
Andrew Rabert 93ff9f1deb Build macOS, Windows, and AppImage on pushes to master 2026-02-21 00:14:53 -05:00
Andrew Rabert da88a9a9bf Add AppImage build to GitHub Actions
New build-appimage.yml workflow that builds the AppImage in Docker and
uploads it as an artifact. Wired into the main build.yml orchestrator
alongside the existing platform builds.
2026-02-21 00:02:07 -05:00
Andrew Rabert bcd2326971 Add AppImage build support
Docker-based build on Arch Linux that ships the full library stack
(including glibc) for cross-distro compatibility. Uses the bundled
ld-linux as the interpreter to bypass host glibc version requirements.

GPU/graphics libraries are excluded from the bundle and loaded from
the host system to match the kernel GPU driver.
2026-02-21 00:00:13 -05:00
Andrew Rabert 70595095ca Remove accidental symlink 2025-12-30 18:52:14 -05:00
Andrew Rabert cd8698c0e2 Fix warnings; remove dead code 2025-12-30 18:39:08 -05:00
Andrew Rabert b3885236f1 Fix macos cursor hiding outside of Jellyfin Desktop 2025-12-30 18:10:28 -05:00
Andrew Rabert f3d2382530 Fix severe memory leak
6.10.* has a severe memory leak.
https://qt-project.atlassian.net/browse/QTBUG-141377

6.9.3 works well enough.

resolves https://github.com/jellyfin/jellyfin-desktop/issues/1091
2025-12-29 22:08:50 -05:00
Andrew Rabert d3858e2c21 Set player artwork on macos 2025-12-27 12:00:52 -05:00
Andrew Rabert 8a0091cc24 Remove dead code 2025-12-27 11:05:18 -05:00
Andrew Rabert 91881c57b3 Delete cache and log dirs when deleting profile 2025-12-27 01:50:42 -05:00
Andrew Rabert c8cd28e6ca Refactor ProfileManager to encapsulate profile IDs
- Make Profile::id private, expose only through ProfileManager
- Add std::optional<Profile> returns for profileByName/defaultProfile
- Add profiles(), createProfile(), deleteProfile(), setDefaultProfile()
- Update setActiveProfile() to take Profile instead of id string
- Move profile operations from main.cpp lambdas into ProfileManager
- Remove profile-aware methods from Paths (dataDir, cacheDir, logDir)
- All callers now use ProfileManager::activeProfile().dataDir() etc.
2025-12-27 01:45:52 -05:00
Andrew Rabert 63967910d6 Fix mac builds 2025-12-27 01:38:44 -05:00
Andrew Rabert c563de40ac Add disk cache for MRPIS artwork 2025-12-27 00:25:57 -05:00
Andrew Rabert 0cc41a0d0a Add cache paths 2025-12-27 00:02:21 -05:00
Andrew Rabert 8c51614a4a Reorganize dev docs/scripts 2025-12-26 23:57:17 -05:00
Andrew Rabert df852c99cb Update artifact names 2025-12-26 23:56:27 -05:00
Andrew Rabert c85aec44c6 Disable pipeline cache in Windows portable mode 2025-12-26 19:32:12 -05:00
Andrew Rabert 0ffccae6e3 Override LOCALAPPDATA for Windows portable mode cache
Move detectOpenGLEarly() after portable mode detection so Qt's
pipeline cache uses the portable cache directory.
2025-12-26 19:09:15 -05:00
Andrew Rabert 47d055a929 Use separate cache and data paths for WebEngine profile 2025-12-26 18:39:25 -05:00
Andrew Rabert 0650372701 Use disk HTTP cache instead of memory cache 2025-12-26 18:30:54 -05:00
Andrew Rabert a8d0f47dc5 Use DATA_NAME for Qt applicationName on Linux
Consolidates APP_NAME into DATA_NAME and removes redundant MainName().
Ensures Qt's QStandardPaths (cache, config dirs) match our Paths code,
fixing duplicate cache directories on Linux.
2025-12-26 17:45:32 -05:00
Andrew Rabert 7ebf46e96c Use qt_add_qml_module for QML AOT compilation
Eliminates runtime qmlcache by compiling webview.qml ahead of time.
Fixes portable mode cache leak where qmlcache was written to system dir.
2025-12-26 16:49:20 -05:00
Andrew Rabert 6c26132332 Set minimum Windows to Windows 10 (1903)
1903 introduced icu.dll which Qt requires.
2025-12-26 16:01:24 -05:00
Andrew Rabert ec3e4d101d Fix portable mode 2025-12-26 15:43:06 -05:00
Andrew Rabert c1c80a5fc4 Fix mixed path separators in Inno Setup script 2025-12-26 05:50:30 -05:00
Andrew Rabert 6b11ab921c Add LOCALAPPDATA path for Inno Setup discovery 2025-12-26 05:28:24 -05:00
Andrew Rabert a730b75189 Fix setup-windows.bat and portable ZIP build 2025-12-26 05:07:04 -05:00
Andrew Rabert 4315bc5ec5 Fix AVX2 constant redefinition, limit to x64 2025-12-26 04:57:50 -05:00
Andrew Rabert ee098dfb5a CI: Bundle VC runtime and build portable ZIP 2025-12-26 04:54:39 -05:00
Andrew Rabert 960f40a367 Move libmpv AVX2 fallback detection to runtime
Use delay-load for libmpv-2.dll so app can check AVX2 support at
startup and swap to fallback DLL before mpv loads. Both installer
and portable now ship both DLLs, app handles selection.
2025-12-26 04:25:43 -05:00
Andrew Rabert 3e840b3c8c Add portable mode for Windows
Detect portable marker file (portable or portable.txt) next to exe
and store data/cache in app directory instead of AppData.

ZIP package includes marker file for out-of-box portable use.
2025-12-26 03:51:15 -05:00
Andrew Rabert 747275054e Bundle VC runtime DLLs for Windows installer
- Support user-level install (no admin required)
- Bundle MSVC runtime DLLs from deps/vcruntime
- Offer system-wide VCRedist install when running as admin
- Add portable ZIP artifact (windows_zip target)
- Add combined windows_all target for installer + ZIP
2025-12-26 03:49:48 -05:00
Andrew Rabert cc0cb7e4bc Remove unnecessary null pointer checks before delete 2025-12-25 22:00:54 -05:00
Andrew Rabert e84dec77ca Support non-AVX CPUs with x86_64 libmpv fallback
Bundle both x86_64-v3 (AVX) and x86_64 (non-AVX) libmpv versions.
Installer detects AVX2 at install time and keeps the appropriate DLL.
2025-12-25 13:10:52 -05:00
Andrew Rabert f8e65dc138 Change to Inno Setup for Windows
WiX 3 is EOL and is one of the blockers for arm64 builds.
2025-12-25 02:08:28 -05:00
Andrew Rabert eba84d1e13 Update flathub metadata 2025-12-24 00:30:54 -05:00
Andrew Rabert 0a4598ac24 Update README 2025-12-23 19:31:34 -05:00
Andrew Rabert 929bee74dc Remove redundant ninja 2025-12-23 19:16:01 -05:00
Andrew Rabert 5bba0eaa22 Fix Windows CI 2025-12-23 19:15:49 -05:00
Andrew Rabert b8c4e83e17 Fix mac ci build; use aqtinstall 2025-12-23 19:15:30 -05:00
Andrew Rabert 9696de712c Center when no saved geometry 2025-12-23 19:13:26 -05:00
Andrew Rabert 3c7cbd10ca Update Windows metadata 2025-12-23 01:03:39 -05:00
Andrew Rabert d0d5112464 Drop win32, win64-legacy
- win32: Qt 6 is 64-bit only
- win64-legacy: a separate build is unnecessary. could create separate
  artifact from the same jellyfin-desktop compilation if desired
- arm64: added commented out, but requires switching to wix4
2025-12-23 01:02:44 -05:00
Andrew Rabert 6cf115ae2d Cleanup build-windows workflow 2025-12-23 01:02:44 -05:00
Andrew Rabert 94fa8c62dc Fix build-macos workflow 2025-12-23 01:02:44 -05:00
Andrew Rabert 5f337fd051 Update metadata 2025-12-23 00:53:53 -05:00
Andrew Rabert 4ef2c11169 Optimize images 2025-12-22 23:14:26 -05:00
Andrew Rabert 844b203525 Update screenshots 2025-12-22 23:11:33 -05:00
Andrew Rabert 9890696351 Split workflow builds by platform (fix) 2025-12-22 00:01:58 -05:00
Andrew Rabert ff1e9f5fae Split workflow builds by platform 2025-12-21 23:57:24 -05:00
Andrew Rabert fecefad83e Update windows libmpv to 20251214; ninja to 1.13.2 2025-12-21 23:25:45 -05:00
Andrew Rabert 5140e6be2e Fix windows build pipelines 2025-12-21 23:04:16 -05:00
Andrew Rabert 9cc65361b1 libmpv: autodetect gpu-api except when windows 2025-12-21 22:14:12 -05:00
Andrew Rabert 468e59eee9 Fix build-mac 2025-12-20 19:54:01 -05:00
Andrew Rabert 9ab4bf8ec2 Add workflow_dispatch trigger for manual builds of specific targets 2025-12-20 15:54:41 -05:00
Andrew Rabert 726b067df3 Change launcher/titlebar name to "Jellyfin Desktop"
For clarity
2025-12-17 22:46:09 -05:00
Andrew Rabert c7078046a4 Fix stale resources not building (again)
Always execute rcc and compare the hash of the resulting file to the
existing one. If it's different, write it.
2025-12-15 22:43:51 -05:00
Andrew Rabert a5adbe36ac Suppress error log when LIRC socket not running 2025-12-15 18:45:06 -05:00
Andrew Rabert de36b677af Remove settings migration
v2.0.0 configuration is separate from older versions
2025-12-15 18:41:40 -05:00
Andrew Rabert 334c382bc6 Remove warning when config empty/not exist 2025-12-15 18:40:05 -05:00
Andrew Rabert f1579d322d Cleanup build scripts
- remove unused scripts
- convert python scripts to cmake
- move WindowsSign.cmd to bundle/win
2025-12-15 18:19:32 -05:00
Andrew Rabert 3122130450 Update macos build instructions 2025-12-15 13:08:35 -05:00
Andrew Rabert 45459ec419 Fix oversaturated colors on macos 2025-12-15 12:27:48 -05:00
Andrew Rabert 7f04b8dd64 Fix cert detection on macos 2025-12-15 12:11:19 -05:00
Andrew Rabert fd4de88c9d Update flatpak developer 2025-12-14 19:29:14 -05:00
Andrew Rabert 6c0c42f97e Update package changelogs for v2.0.0 2025-12-14 15:12:00 -05:00
Andrew Rabert eb9779f5e3 Use static mpvqt for macos and windows builds 2025-12-14 15:04:56 -05:00
Andrew Rabert 955c336e18 Fix tests (GitHub) 2025-12-14 15:03:56 -05:00
Andrew Rabert f1896bcce7 Fix option to ignore certificate errors / add --ignore-certificate-errors flag 2025-12-14 14:39:08 -05:00
Andrew Rabert 2c7be6b164 Set version to 2.0.0-dev 2025-12-14 06:19:37 -05:00
Andrew Rabert 1634d3d263 Release jellyfin-desktop v2.0.0 2025-12-14 06:13:03 -05:00
Andrew Rabert a694d42cee Use runtimedir for sockets
Use tempdir as fallback
2025-12-14 06:00:14 -05:00
Andrew Rabert 7f19a83c9b Fix socket cleanup 2025-12-14 05:56:43 -05:00
Andrew Rabert d1a8a16fd7 Change socket names 2025-12-14 05:56:32 -05:00
Andrew Rabert 0df5b28b6c Add initial multi-profile support
Assign a local, unique identifier to the default profile and store in
<DATA_DIR>/profiles/<ID>. Profiles are managed via CLI flags only. GUI
will be added to switch _eventually_.

Doing this now as the next stable release will have new configuration
paths without any for of migration.
2025-12-14 05:37:48 -05:00
Andrew Rabert bea2484416 Fix crash when canceling server connection 2025-12-14 05:26:32 -05:00
Andrew Rabert 4f30737b98 Disable update checks by default 2025-12-14 05:26:32 -05:00
Andrew Rabert 520ad2bd63 Change client identification / user-agent 2025-12-14 05:26:32 -05:00
Andrew Rabert b3c85d959c Use VERSION file for versioning 2025-12-14 05:26:32 -05:00
Andrew Rabert 8281ee713d Rename to Jellyfin Desktop 2025-12-14 05:26:31 -05:00
Andrew Rabert 020505abb9 Fix window geometry, maximize, and fullscreen persistence 2025-12-13 17:01:55 -05:00
Andrew Rabert 3ef86082bf Include command details in host command slot error 2025-12-06 13:15:35 -05:00
Andrew Rabert e4df26c880 Fix ac3 audio filter add/remove logic 2025-12-06 13:15:35 -05:00
Andrew Rabert 94c5917861 Add null checks for SettingsSection in connect calls
getSection() can return nullptr if called before sections are
initialized, causing Qt warnings about invalid nullptr parameter.
2025-12-06 13:01:09 -05:00
Andrew Rabert 8d9b59816e Silence warning for mapping files without idmatcher
Missing idmatcher is valid for intentionally disabled mapping files
like dualshock4-xbox-emulate.json which users can manually enable.
2025-12-06 13:00:05 -05:00
Andrew Rabert 02908968b0 Fix deprecated mpv video-aspect-override value
Use "no" instead of "-1" which is deprecated in recent mpv versions.
2025-12-06 12:59:16 -05:00
Andrew Rabert c54c2249b7 Fix Qt6 QLocalSocket signal deprecation
Use errorOccurred signal instead of error() which was removed in Qt6.
2025-12-06 12:58:49 -05:00
Andrew Rabert cc103e35c1 Bump minimum macos version to 10.15
Fixes compilation
2025-12-04 18:50:30 -05:00
Andrew Rabert 107ab1affc Revert "Remove non-dbus X11 power management"
This reverts commit 7b067a751b.
2025-11-30 22:11:53 -05:00
Andrew Rabert 7b067a751b Remove non-dbus X11 power management
Spawning a new process every 15 seconds is an inefficient hack.
2025-11-30 21:21:10 -05:00
Andrew Rabert efc973aca6 Use PlayerComponent signals for screensaver state 2025-11-30 20:50:44 -05:00
Andrew Rabert 8823d11b38 Fix screensaver inhibition on Linux 2025-11-30 20:34:50 -05:00
Andrew Rabert 83399a5c1e Change MPRIS artUrl to inline base64 image
Particularly useful for Flatpak where filesystem paths may not be
consistent between the host and sandbox.
2025-11-30 16:34:37 -05:00
Andrew Rabert df79a7fb30 Add option to disable zoom (keys/wheel/pinch) 2025-11-30 15:18:19 -05:00
Andrew Rabert 641f6ca079 Fix remote debugging 2025-11-29 21:31:58 -05:00
Andrew Rabert 0d18af84c6 Fix: audio mute/mute not persisting between tracks 2025-11-29 16:27:26 -05:00
Andrew Rabert b3a43cbdf4 Fix: match jellyfin-web audio fade out 2025-11-29 16:26:54 -05:00