v0.2: All videos folder, shared watched state, release-order sorting, official icon, OAuth plumbing, docs
Some checks failed
release / build-release (push) Has been cancelled

- per-creator "All videos" folder (release order across sub-channels); sub-channel copies use
  cpost: ids and UserDataMirror keeps played/resume state in sync
- SortNameUpdater forces release-order sort names so every client lists newest first by default
- official Floatplane icon as channel image (Primary only — a channel Thumb hid video thumbnails
  in Continue Watching) and as 16:9 plugin thumbnail; one-time image replacement on upgrade
- OAuth device-flow login (FloatplaneAuthService + settings UI); needs a Floatplane client id;
  Turnstile verified domain-bound so password login inside Jellyfin is impossible
- generic install.sh (linuxserver / official image / native), thumb.png in package + manifest
- README rewritten for a general audience, doc/usage.md with screenshots, 60 tests

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 16:36:32 +01:00
parent 2a883c02de
commit bf476134c2
33 changed files with 1478 additions and 155 deletions

View File

@@ -38,13 +38,19 @@ public class PluginServiceRegistrator : IPluginServiceRegistrator
AutomaticDecompression = System.Net.DecompressionMethods.All
});
serviceCollection.AddSingleton<FloatplaneAuthService>();
serviceCollection.AddSingleton<FloatplaneApiClient>();
serviceCollection.AddSingleton<CatalogService>();
serviceCollection.AddSingleton<DeliveryResolver>();
// One instance: the status endpoint and the sync task must see the same caches
// as the channel Jellyfin serves from.
serviceCollection.AddSingleton<SortNameUpdater>();
serviceCollection.AddSingleton<FloatplaneChannel>();
serviceCollection.AddSingleton<IChannel>(sp => sp.GetRequiredService<FloatplaneChannel>());
// The same post appears under "All videos" and under its sub-channel (Jellyfin
// allows one parent per item id); this keeps watched/resume state in sync.
serviceCollection.AddHostedService<UserDataMirror>();
}
}