Metadata-Version: 2.4
Name: jellytoast
Version: 0.1.3
Summary: A desktop music player for Jellyfin and Navidrome servers — bit-perfect mpv playback (Linux + Windows).
Author-email: august <augustvontrips@gmail.com>
License: GPL-2.0-or-later
Project-URL: Homepage, https://github.com/wolfgangwarehaus/jellytoast
Project-URL: Repository, https://github.com/wolfgangwarehaus/jellytoast
Project-URL: Issues, https://github.com/wolfgangwarehaus/jellytoast/issues
Project-URL: Changelog, https://github.com/wolfgangwarehaus/jellytoast/blob/main/docs/CHANGELOG.md
Keywords: jellyfin,navidrome,subsonic,media,music,mpv,linux,windows,kde
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Multimedia :: Sound/Audio :: Players
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: COPYING
Requires-Dist: PySide6<7.0,>=6.6.0
Requires-Dist: python-mpv>=1.0.5
Requires-Dist: pychromecast<16,>=14.0.0
Requires-Dist: zeroconf>=0.149.12
Requires-Dist: ifaddr>=0.1.7
Requires-Dist: dbus-next>=0.2.3; sys_platform == "linux"
Requires-Dist: jeepney>=0.6; sys_platform == "linux"
Requires-Dist: pyatv<1.0,>=0.17; sys_platform != "win32"
Requires-Dist: python-xlib>=0.30; sys_platform == "linux"
Requires-Dist: requests>=2.32.4
Requires-Dist: keyring>=23.0
Requires-Dist: cryptography>=43.0.1
Requires-Dist: numpy>=1.24
Requires-Dist: async-upnp-client<1.0,>=0.47.0
Requires-Dist: aiohttp>=3.14.0
Requires-Dist: soco<1,>=0.31
Requires-Dist: snapcast>=2.3.8
Requires-Dist: winrt-runtime>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.ApplicationModel>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Media>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Media.Interop>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Storage.Streams>=2.0; sys_platform == "win32"
Requires-Dist: winrt-Windows.Foundation>=2.0; sys_platform == "win32"
Requires-Dist: windows-toasts>=1.1; sys_platform == "win32"
Requires-Dist: comtypes>=1.2; sys_platform == "win32"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.0; extra == "dev"
Requires-Dist: pytest-randomly>=3.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: pre-commit>=3.0; extra == "dev"
Requires-Dist: mypy>=1.8; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: pip-audit>=2.7; extra == "dev"
Provides-Extra: windows
Provides-Extra: macos
Dynamic: license-file

<h1 align="center">jellytoast</h1>

<p align="center">
  A desktop music player for <a href="https://jellyfin.org/">Jellyfin</a> and
  <a href="https://www.navidrome.org/">Navidrome</a> servers —<br>
  bit-perfect playback, casting, mini-player, and offline downloads.
</p>

<p align="center">
  <a href="https://github.com/wolfgangwarehaus/jellytoast/actions/workflows/ci.yml"><img src="https://github.com/wolfgangwarehaus/jellytoast/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-GPL--2.0--or--later-blue" alt="License"></a>
</p>

<!-- hero screenshot: docs/screenshots/hero.png (Library view, Frosted dark) -->
<!-- <p align="center"><img src="docs/screenshots/hero.png" width="800" alt="jellytoast — library view"></p> -->

## Features

- **Desktop app for your self-hosted music** — supports Jellyfin and Navidrome, with multiple libraries.
- **Bit-perfect audio** — FLAC / ALAC / OPUS / DSD playback via [mpv](https://mpv.io/).
- **Cast anywhere** — send music to Chromecast, AirPlay 2, Sonos, DLNA, or Snapcast. A built-in local relay can forward the stream for trickier setups, like Tailscale connections or fully offline playback.
- **Offline mode** — cache albums, playlists, or your whole library for offline playback.
- **Floating mini player** — compact and album-art views.
- **Desktop features** — media keys, a tray icon, optional notifications, and a start-at-login option.
- **Frosted-glass look** — real background blur on KDE and Windows, light and dark themes, and your own accent color.
- **And more** — synced lyrics, an audio visualizer, smart playlists, smart shuffle, a sleep timer, ListenBrainz scrobbling, tag editing (Jellyfin), and encrypted login storage.

## Install

### Windows 10/11 (x64)

- **winget:** `winget install wolfgangwarehaus.jellytoast`
- **Installer or portable zip** from [Releases](https://github.com/wolfgangwarehaus/jellytoast/releases) — the direct download is unsigned, so SmartScreen warns on first run; click **More info → Run anyway** (verify the SHA256 against `SHA256SUMS`).
- **Microsoft Store** — coming soon.

### Linux

- **Ubuntu / Debian / Mint** (22.04+ / 12+): download the `.deb` from [Releases](https://github.com/wolfgangwarehaus/jellytoast/releases/latest), then `sudo apt install ./jellytoast_*_amd64.deb`
- **AppImage** (any distro, no install needed) — coming soon.
- **AUR** — coming soon.

### Any OS

- **PyPI:** `pipx install jellytoast`

**From source** (Python 3.11+, Qt 6, libmpv):

```bash
git clone https://github.com/wolfgangwarehaus/jellytoast.git
cd jellytoast
pip install -e .
jellytoast            # or: python3 -m jellytoast
```

Want to contribute? [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) has the
dev setup, the architecture, and the conventions this codebase follows.

## Documentation

| Doc | What it is |
| --- | --- |
| [`docs/user_guide.md`](docs/user_guide.md) | Shortcuts, mini player, tray, casting, settings, themes & blur, troubleshooting |
| [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) | Dev setup, architecture & the conventions this codebase follows |
| [`docs/SPEC.md`](docs/SPEC.md) | What the app actually does today |
| [`docs/decisions.md`](docs/decisions.md) | Architecture decision log (why, not just what) |
| [`docs/TODO.md`](docs/TODO.md) | The backlog (P0–P4) |
| [`SECURITY.md`](.github/SECURITY.md) | How to report a vulnerability |
| [`CHANGELOG.md`](docs/CHANGELOG.md) | Dated history of what shipped |

## License

GPL-2.0-or-later. See [`LICENSE`](LICENSE).

## Support

Want to leave a tip? [Ko-fi ☕](https://ko-fi.com/wolfgangwarehaus)
