Files
silo-server/web/src/lib/jellyfinCompat.ts
T
5afe56cfc0 feat(jellycompat): add runtime-managed Jellyfin Web compatibility (#77)
* feat(jellycompat): install web assets at runtime

* fix(jellycompat): recover stale web operation locks

* fix(jellycompat): harden web component management

* feat(admin): refine compat settings and restart status

* chore(dev): add hot-reload docker compose stack

* fix(dev): include npm in hot-reload backend

* feat(admin): refine Jellyfin compatibility settings

* feat(settings): improve jellyfin proxy summary

* feat(settings): improve jellyfin web controls

* fix(settings): update jellyfin web removal status

* fix(settings): enable jellyfin web after install

* feat(jellycompat): auto-select web ui version

* test(api): update rate limit handler setup

* feat(jellycompat): refine web ui install onboarding

* fix(jellycompat): address web ui install review issues

* fix(onboarding): mirror jellyfin api runtime status

* fix(admin): remove global restart banner

* fix(settings): gate restart required tracking

* fix(jellyfin): ignore live settings for restart status

* fix(jellyfin): avoid restart for live compat settings

* fix(subtitles): normalize AI language codes

* fix(catalog): support partial title search tokens

* feat(branding): add white-label customization

* Add push relay engineering plan

- Document relay API contracts, APNs/FCM behavior, auth, storage, and ops
- Capture implementation plan, provider references, decisions, and README

---------

Co-authored-by: Quick <31828688+Quick104@users.noreply.github.com>
2026-06-15 09:34:08 -04:00

17 lines
689 B
TypeScript

import type { JellyfinCompatStatus } from "@/api/types";
type JellyfinWebInstallStatus = Pick<JellyfinCompatStatus, "installed_version" | "pinned_version">;
export function normalizeJellyfinCompatVersion(version?: string | null): string {
return version?.trim().replace(/^[vV]/, "") ?? "";
}
export function hasPinnedJellyfinWebInstalled(status?: JellyfinWebInstallStatus | null): boolean {
if (!status) return false;
const installedVersion = normalizeJellyfinCompatVersion(status.installed_version);
const pinnedVersion = normalizeJellyfinCompatVersion(status.pinned_version);
return installedVersion !== "" && pinnedVersion !== "" && installedVersion === pinnedVersion;
}