Home: v0.2 — All videos folder, user-data mirror, sort names, official icon, OAuth plumbing

2026-10-25 16:36:18 +01:00
parent f970ccb0a1
commit 3a7e0840a7

25
Home.md

@@ -6,6 +6,31 @@ A Jellyfin **channel plugin** that shows your Floatplane subscriptions (creators
- Install: Dashboard → Plugins → Repositories → add `https://gitea.brasse-pc.eu/brasse/jellyfin-plugin-floatplane/releases/download/latest/manifest.json`, or run `install-pi5.sh` from the release. - Install: Dashboard → Plugins → Repositories → add `https://gitea.brasse-pc.eu/brasse/jellyfin-plugin-floatplane/releases/download/latest/manifest.json`, or run `install-pi5.sh` from the release.
- Built for **Jellyfin 10.10.x** (.NET 8, `targetAbi 10.10.0.0`). One AnyCPU DLL for x64 and arm64 (Pi5). - Built for **Jellyfin 10.10.x** (.NET 8, `targetAbi 10.10.0.0`). One AnyCPU DLL for x64 and arm64 (Pi5).
## What's new (2026-10-25, v0.2)
- **"All videos" folder** per creator: every sub-channel's videos in release order
(`all:<creatorId>`, items keep the canonical `post:<id>` ids). Sub-channel folders list
the same posts under `cpost:<channelId>:<postId>` because Jellyfin allows one parent per
item id; `UserDataMirror` (an `IHostedService`) copies played/resume state between the
two copies on every `UserDataSaved` event.
- **Release order by default in every client**: `SortNameUpdater` sets each video's
`ForcedSortName` to `(10^13 - 1 - releaseUnixMs)` zero-padded, so the clients' default
"Name ascending" sort shows newest first. Runs ~10 s after a listing (the DB entities exist
only after Jellyfin synced them) and during the scheduled refresh.
- **Official Floatplane icon** (from `frontend.floatplane.com/favicons`) as channel Primary
image (16:9 card, `Resources/logo.png`) and plugin thumbnail (`thumb.png` in the zip,
`imagePath` in meta.json, `imageUrl` in manifest.json). The channel offers **only** a
Primary image: a channel Thumb is inherited by video cards in "Continue watching" and
would hide the video thumbnails. Existing installs get the new image once via
`FloatplaneSyncTask.ChannelImageVersion` (explicit `SaveImage` + delete of Thumb/Backdrop;
a metadata refresh does not replace a stored Primary).
- **OAuth device-flow plumbing** (`FloatplaneAuthService`, `Floatplane/OAuth/*` endpoints,
settings page section): works as soon as Floatplane issues a `client_id`; unregistered ids
get `invalid_client`. Username/password inside Jellyfin is impossible: Floatplane's
Turnstile site key is domain-bound (error 110200 on other origins, verified).
- Generic `install.sh` (auto-detects linuxserver / official image / native layout),
`doc/usage.md` with screenshots.
## Architecture ## Architecture
``` ```