Reviewed-on: echo/Luminate#2 Co-authored-by: Brendan Szymanski <hello@bscubed.dev> Co-committed-by: Brendan Szymanski <hello@bscubed.dev>
100 lines
4.3 KiB
Markdown
100 lines
4.3 KiB
Markdown
# Luminate ✨
|
|
|
|
Luminate is a modern Jellyfin client for the Linux desktop, built with Swift and Adwaita.
|
|
|
|
It aims to provide a delightful browsing experience for any Jellyfin server with features rivaling the default Jellyfin Media Player, all while feeling right at home in your GNOME desktop.
|
|
|
|
## 🛠️ Building
|
|
|
|
### Linux (Native)
|
|
|
|
```bash
|
|
swift build
|
|
swift run
|
|
```
|
|
|
|
Requires `libadwaita-devel` (Fedora) or `libadwaita` (Ubuntu/Debian) and the Swift 6 toolchain.
|
|
|
|
### Flatpak
|
|
|
|
```bash
|
|
flatpak-builder --force-clean build-dir dev.bscubed.Luminate.json
|
|
flatpak-builder --run build-dir dev.bscubed.Luminate.json Luminate
|
|
```
|
|
|
|
### macOS (Development)
|
|
|
|
```bash
|
|
brew install libadwaita
|
|
swift build
|
|
swift run
|
|
```
|
|
|
|
macOS builds work for development, but the target platform is Linux/Flatpak.
|
|
|
|
### Release Build
|
|
|
|
```bash
|
|
swift build -c release
|
|
```
|
|
|
|
## 🤝 Contributing
|
|
|
|
Contributions are welcome! Check out [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide on branching, coding style, pull requests, and everything you need to get started. You can also browse the [issue tracker](https://git.bscubed.dev/echo/Luminate/issues) for open issues to tackle.
|
|
|
|
## 🗺️ Project Roadmap
|
|
|
|
### Login
|
|
|
|
| Feature | Completion | Version | Details |
|
|
| :--- | :---: | :--- | :--- |
|
|
| Server Authentication | ✅ | v0.1.0 | Login via server URL, username, and password |
|
|
| Persistent Session Storage | ✅ | v0.1.0 | Auto-login across restarts via SQLite |
|
|
| Multi-User Support | ❌ | | Switch between accounts without re-entering credentials |
|
|
| Quick Login | ❌ | | One-click reconnect to recently used servers |
|
|
|
|
### Libraries
|
|
|
|
| Feature | Completion | Version | Details |
|
|
| :--- | :---: | :--- | :--- |
|
|
| Home Screen | ✅ | v0.1.0 | Continue Watching, Next Up, and Recently Added rows |
|
|
| Library Grid Browsing | ✅ | v0.1.0 | Folder navigation with responsive grid layout |
|
|
| Movie Detail View | ✅ | v0.1.0 | Backdrop, poster, metadata, cast, similar items, actions |
|
|
| TV Show Detail View | ✅ | v0.1.0 | Season picker, episode list with thumbnails and runtime |
|
|
| Search | ✅ | v0.1.0 | Debounced text input with results across libraries |
|
|
| Detail View Navigation | 🚧 | v0.1.0 | Connecting poster cells to their detail views |
|
|
| Unified Search Integration | ❌ | | Search results navigating directly to content |
|
|
|
|
### Playback
|
|
|
|
| Feature | Completion | Version | Details |
|
|
| :--- | :---: | :--- | :--- |
|
|
| Playback Progress Reporting | ✅ | v0.1.0 | Start, progress, and stop reported to server |
|
|
| Video Player Widget | 🚧 | v0.1.0 | mpv + GtkGLArea integration (placeholder currently) |
|
|
| Full Video Playback | ❌ | | Play, pause, seek, progress bar, and fullscreen |
|
|
| Resume Playback | ❌ | | Continue Watching from home screen plays at saved position |
|
|
|
|
### Functionality
|
|
|
|
| Feature | Completion | Version | Details |
|
|
| :--- | :---: | :--- | :--- |
|
|
| Favorites | ✅ | v0.1.0 | Toggle favorite status on items |
|
|
| Mark Played / Unplayed | ✅ | v0.1.0 | Track watched state |
|
|
| Image Caching | ✅ | v0.1.0 | Two-tier cache (memory + disk) with deferred loading |
|
|
| WebSocket Client | ✅ | v0.1.0 | Real-time server event notifications |
|
|
| Dependency Injection | ✅ | v0.1.0 | `@Injected` property wrapper and `DIContainer` |
|
|
| Stack Navigation | ✅ | v0.1.0 | `NavigationView` with typed `NavigationStack<Page>` |
|
|
| Localization (en/de) | ✅ | v0.1.0 | YAML-based strings with the `localized` package |
|
|
| `@Injected` Migration | 🚧 | v0.1.0 | Migrating library views from parameter injection |
|
|
| Keyboard Shortcuts | ❌ | | Global shortcuts for search, navigation, playback |
|
|
| Error Handling UI | ❌ | | User-facing error states for network failures |
|
|
| Testing | ❌ | | Unit and UI test coverage |
|
|
| CI/CD Pipeline | ❌ | | Automated builds and test runs |
|
|
| Flatpak Publishing | ❌ | | Release on Flathub |
|
|
| Offline / Download Support | ❌ | | Cache media for offline playback |
|
|
|
|
## 📄 License
|
|
|
|
Luminate is free software: you can redistribute it and/or modify it under the terms of the [GNU General Public License](LICENSE) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU General Public License](LICENSE) for more details.
|