App v0.2.26 and gateway 0.1.20

Client: seek controls, Bazarr subtitle download and cast panel in the
player; MDBList ratings strip; episode and schedule detail pages; series
pace estimate; what's new panel; install-permission onboarding step;
synced per-profile preferences; Emby outage banner.

Gateway: rebuilt admin console (one fragment per page), preference
history and restore, merged Continue Watching, Emby health probe,
subtitle selection and Bazarr download, structured request logging with
per-request identity, and embedded build version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
ponzischeme89
2026-08-06 22:33:56 +12:00
co-authored by Claude Opus 5
parent 2675e6d82b
commit 4a4df7a73c
257 changed files with 24868 additions and 3108 deletions
+14
View File
@@ -40,3 +40,17 @@ func TestMovieRejectsUnsupportedProviderBeforeCallingUpstream(t *testing.T) {
t.Fatal("expected unsupported provider to fail")
}
}
func TestMediaUsesShowEndpointForSeries(t *testing.T) {
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/imdb/show/tt0944947/" {
t.Fatalf("unexpected path %s", r.URL.Path)
}
_, _ = w.Write([]byte(`{"ratings":[{"source":"trakt","value":89}]}`))
}))
defer server.Close()
got, err := New(server.URL, time.Second).Media(context.Background(), "secret", "imdb", "tt0944947", "series")
if err != nil || len(got) != 1 || got[0].Value != 89 {
t.Fatalf("ratings=%+v err=%v", got, err)
}
}