1 line
86 KiB
JavaScript
1 line
86 KiB
JavaScript
rd_("AoGL entry points, resolved once.oFile I/O failedAjContains the success valueCnStable Jellyfin item id \xe2\x80\x94 what gets stored when the user \xe2\x80\xa6AaUnique identifierCjDeserializes from API\xe2\x80\x99s \xe2\x80\x9cId\xe2\x80\x9d field (PascalCase), \xe2\x80\xa6CkAll presets, for enumerating the curve table across the \xe2\x80\xa6CmThe ladder, highest first, for enumerating across the IPC \xe2\x80\xa6AkAdd at the end of the queueAhContains the error valueCmAn HLS playlist. The webview attaches hls.js (or Safari\xe2\x80\x99\xe2\x80\xa6lTimer is offAfAdd items to the queueBfMake a GET request to the Jellyfin APIdmpv.AiCreate a new auth managerAmCreate a new session verifierBaCreate a new connectivity monitorCeCreate a new credential store, detecting the best \xe2\x80\xa6AmCreate a new download managerB`Create a new Jellyfin API clientCcCreate a new HTTP client with default configurationBbCreate a new playback mode managerAnCreates a new PlaybackReporterAkCreates a new SyncProcessorCgCreates a new EventThrottler with 30 second default \xe2\x80\xa6AoOpen at the beginning, playing.CiCreate a new TauriEventEmitter with the given app handle.AhCreate a new MPV backendCdCreate a render context over an existing mpv handle.CnBuild a library, deriving everything that follows from its \xe2\x80\xa6BaCreate a new SessionPollerManagerAlCreate a new thumbnail cacheAmCreate a new thumbnail workerCnStream URL for the <code><audio></code> element to play.lSubtitle URLBbThe URL (or loopback URL) to open.oNo media loadedDeNothing loaded. <code>close()</code> must reach this, and must be \xe2\x80\xa6BdNo active session - browsing libraryAhLouder output (-11 LUFS)BbAdd immediately after current itemClNo match on the name at all. The backend returned it for \xe2\x80\xa6AbNo active network.CmNo audio device, no window. What conformance uses, so the \xe2\x80\xa6BhReal audio and video. What the app uses.DfThe byte range a response should carry. <code>end</code> is inclusive.BmStop playback (no next item or timer expired)BcStop after a specific time durationA`User informationCmWiFi (may still be metered \xe2\x80\x94 check <code>unmetered</code>).BnAuthentication and session-lifecycle commands.BhDraw the current frame, if there is one.BjEmit a player status event to the frontendAoReturns the argument unchanged.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BaCalls <code>U::from(self)</code>.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AfCurrently loaded movieAhCurrently loaded episodeAiThe underlying media itemCkProvider-neutral classification \xe2\x80\x94 the replacement for \xe2\x80\xa6CgProvider-neutral stream classification \xe2\x80\x94 replaces \xe2\x80\xa6BmLoad a media item for playback TRACES: UR-005CmResolve every entry point, or none \xe2\x80\x94 a partially-loaded \xe2\x80\xa6B`Poison-tolerant locking helpers.A`Sleep timer modeCcNew mode: \xe2\x80\x9clocal\xe2\x80\x9d, \xe2\x80\x9cremote\xe2\x80\x9d, or \xe2\x80\x9cidle\xe2\x80\x9d.ChDisplay name of the folder (or of the library, for a \xe2\x80\xa6CcName (alias for title - for frontend compatibility)ClDeserializes from API\xe2\x80\x99s \xe2\x80\x9cName\xe2\x80\x9d field (PascalCase), \xe2\x80\xa6AbSkip to next trackAeMove to the next itemDhPresent <code>req.selection</code>, beginning at <code>req.start</code>.ClLoad, play, then seek \xe2\x80\x94 the sequence every caller used \xe2\x80\xa6BnOpen or create the database at a specific pathBeAbsolute path to the written archive.AjGet the database file pathCgQuick ping to check if a server is reachable (no retry)AdPlay/resume playbackBgStart or resume playback TRACES: UR-005BgMake a POST request to the Jellyfin APIClDeserializes from API\xe2\x80\x99s \xe2\x80\x9cRole\xe2\x80\x9d field (PascalCase), \xe2\x80\xa6DiSeek to a position in seconds, <strong>on the player\xe2\x80\x99s own </strong>\xe2\x80\xa6BlSeek to a position in seconds TRACES: UR-005CjSeek to an absolute position on the item\xe2\x80\x99s own timeline.BcVideo seek strategy decision logic.CjDeliver <code>operation</code>. Must not block the caller.AjStop periodic verificationBhStop signalling for in-flight downloads.AhStops the sync processormStop playbackBmStop playback and unload media TRACES: UR-005AgStop the polling threadBhTauri commands for sync queue operationsAmPlaying from a specific album0ChAudio playback session (music, audiobooks, podcasts) \xe2\x80\xa6DkReached the end of the item by itself. Distinct from <code>Idle</code>, \xe2\x80\xa6BaPlayback error - don\xe2\x80\x99t autoplayAaAn error occurredBaAn error occurred during playbackeGenreAlHTML5 video element fallbackAiDownloaded/cached locallyCbMovie playback (single video, auto-dismiss on end)CgA kind we do not model explicitly. Reached only for \xe2\x80\xa6CmAny stream kind we do not model explicitly (e.g. embedded \xe2\x80\xa6CmSome other transport (VPN over unknown carrier, Bluetooth \xe2\x80\xa6CjStop making sound. The user did not ask for background \xe2\x80\xa6BbWhat an engine is doing right now.C`Represents a database query that can be executedAiQuieter output (-23 LUFS)BkLoaded and able to play, but not advancing.AdAlbum name for audioBmSmart caching engine for predictive downloadsBiThumbnail cache manager with LRU evictionCnForget a download\xe2\x80\x99s flag. Called when its task finishes, \xe2\x80\xa6AoClears all tracked report timesCjClear the queue entirely, returning it to the empty state.BbStop and release the current item.AoPresent on <code>failed</code>.CnThe 10-band gain curve (dB) for this preset, one entry per \xe2\x80\xa6B`Stream index in the media sourceAfAll items in the queueAjGet all items in the queue1mDisplay titleChHuman label (\xe2\x80\x9c8 Mbps\xe2\x80\x9d). Lives in Rust beside the \xe2\x80\xa6CnHuman label for the picker. Lives in Rust with the numbers \xe2\x80\xa6CnActive level, lowercase: \xe2\x80\x9cerror\xe2\x80\x9d | \xe2\x80\x9cwarn\xe2\x80\x9d | \xe2\x80\x9cinfo\xe2\x80\xa6BeAuthenticate by username and passwordBoCanonical, provider-neutral media domain model.nCheck if mutedAfWhether audio is mutednPause playbackAmPause playback TRACES: UR-005CiQueue manipulation commands (add / remove / move / skip).AcGet queue referenceCnForget everything \xe2\x80\x94 a different file is loading, and the \xe2\x80\xa6CnForget the budget \xe2\x80\x94 a new item is playing, so nothing is \xe2\x80\xa6CnCheck the token and resolve the path, or return the status \xe2\x80\xa6DkOpaque scope selected by the UI. When set it <strong>wins</strong> over \xe2\x80\xa6Cfitem id \xe2\x86\x92 bytes on disk (leaf\xe2\x80\x99s own size, or a \xe2\x80\xa6BcStart periodic session verificationDjBind to an ephemeral loopback port and start serving <code>root</code> \xe2\x80\xa6AiStarts the sync processorDhWhere to begin. <code>Duration::ZERO</code> means the start of the item.BcStart the background polling threadDb<code>started</code> | <code>finished</code> | <code>failed</code>AaGet current stateAhGet current player stateCmNew state: \xe2\x80\x9cplaying\xe2\x80\x9d, \xe2\x80\x9cpaused\xe2\x80\x9d, \xe2\x80\x9cstopped\xe2\x80\x9d, \xe2\x80\x9c\xe2\x80\xa6mDisplay titleFcUpdate <code>last_accessed</code> for LRU tracking. When <code>tag</code> is <code>Some</code>, \xe2\x80\xa6BlThe engine renders pictures, not only sound.CaCustom queue (search results, manual queue, etc.)CjCustom queue (search results, manual queue, etc.) Will \xe2\x80\xa6AjDownload failed with errorCfNative backend (ExoPlayer on Android, libmpv on Linux)BiUse native seeking (HLS or direct stream)BmNative backend handled it (Android ExoPlayer)CnThe native backend was reloaded here; nothing left for the \xe2\x80\xa6CcNo special hint, use mode-based frequency (default)AhDefault level (-14 LUFS)BjHow the engine should talk to the machine.oDownload pausedoMedia is pausedCgPerson (cast/crew member) - for movies, series, and \xe2\x80\xa6CnThe name starts with the query \xe2\x80\x94 \xe2\x80\x9cparks\xe2\x80\x9d in \xe2\x80\x9cParks \xe2\x80\xa6AhDownload has been queuedAnStreaming from Jellyfin serverClScrub within the current item, to this absolute position \xe2\x80\xa6CcState the event thread writes and the caller reads.ClA colour-renderable framebuffer mpv draws into, sized to \xe2\x80\xa6CeTV show playback (supports next episode auto-advance)ChOne of: \xe2\x80\x9cplay\xe2\x80\x9d, \xe2\x80\x9cpause\xe2\x80\x9d, \xe2\x80\x9cstop\xe2\x80\x9d, \xe2\x80\x9cseek\xe2\x80\x9d.BnOptional now-playing metadata. Used by the \xe2\x80\xa6AhArtist name(s) for audioCcStart drawing mpv\xe2\x80\x99s video underneath the webview.A`Cancel the timerAiHTTP client for downloadsClTRACES: UR-009 | JA-001, JA-002, JA-003, JA-004, JA-007, \xe2\x80\xa6CjMake a DELETE request to the Jellyfin API (used by the \xe2\x80\xa6CcDrop the live surface, if there is one. Idempotent.AmSecondary line (\xe2\x80\x9c1080p\xe2\x80\x9d).ChSecondary line for the picker: what the cap means in \xe2\x80\xa6AnDevice identification commandsCkCanonical, provider-neutral domain model \xe2\x80\x94 the single \xe2\x80\xa6ClAttach remote-volume control (and, on Android, start the \xe2\x80\xa6ChDownload events for progress tracking and status updatesCjPlayer events for frontend communication via Tauri events.CiRows that couldn\xe2\x80\x99t be resolved (item metadata / URL \xe2\x80\xa6BfLogout (call Jellyfin logout endpoint)AfDatabase model structsBhTRACES: UR-002, UR-007 | DR-013 | IR-010BdPerson/cast metadata cache commands.ClTRACES: UR-003, UR-004, UR-005, UR-010, UR-020, UR-021 | \xe2\x80\xa6D`Rows that reached the server and are now <code>completed</code>.CmRecord a live reading. Non-positive durations are treated \xe2\x80\xa6BdStrip credentials from one log line.ChRemote Jellyfin session control commands (casting to \xe2\x80\xa6AmRemove an item from the queueEgRender the current frame at <code>width</code> x <code>height</code>, returning the \xe2\x80\xa6AcCurrent repeat mode0CkReports a playback operation (dual sync: local DB + server)CkSend a playback report. Fire-and-forget by contract, so \xe2\x80\xa6AnDatabase schema and migrationsA`Search for itemsBfSearch every library the user can see.BbAsk an in-flight download to stop.AcSource of the mediaAjTarget position in secondsBbSleep-timer and autoplay commands.AnGet current volume (0.0 - 1.0)AbGet current volumel0.0 \xe2\x80\x93 1.0.AjNew volume level (0.0-1.0)CmDownload worker for HTTP streaming with progress tracking \xe2\x80\xa6AiThumbnail download workerClMove to the next/previous queue entry \xe2\x80\x94 a track, or an \xe2\x80\xa6EcA channel <em>container</em> the user drills into (Jellyfin <code>Channel</code>\xe2\x80\xa6BlOperation succeeded using the system keyringAhKeyring operation failedAjLibrary (media collection)AnMedia is being loaded/bufferedDhAn <code>open</code> is in flight. Position is not yet meaningful; a \xe2\x80\xa6A`Media is playingAiSeeking to a new positionAnActive session for restorationAdDownload has startedCmThe download was asked to stop (paused or cancelled). Not \xe2\x80\xa6BbCould not determine the transport.CkArtists as array of strings (fallback when artist_items \xe2\x80\xa6CjBackend being used (native = ExoPlayer/libmpv, html5 = \xe2\x80\xa6CeThe engine. One contract, so the controller stops \xe2\x80\xa6ChThe source\xe2\x80\x99s own bitrate, when the server reports one.CkTauri commands for the offline \xe2\x80\x9cbrowse & queue\xe2\x80\x9d \xe2\x80\xa6CkOptional context for the queue (album, playlist, or custom)CjGet the current queue context (album, playlist, or custom)CkContext for the queue (album, playlist, or custom) Used \xe2\x80\xa6AmGet the current session stateAdGet the current itemBmFree everything, with the GL context current.CbReturn volume control to the local device speaker.ClDismiss/clear current session (user action) Transitions: \xe2\x80\xa6CiWhether mpv should decode and draw video in this process.BmWhether autoplay is enabled for next episodesAjWhether caching is enabledCjExecute a query that doesn\xe2\x80\x99t return results (INSERT, \xe2\x80\xa6BaHandles of every live repository.CgHistory of played indices (for going back with shuffle)CiCreate the GL context and the mpv render context over it.CmLibrary browsing preferences \xe2\x80\x94 currently, which folders \xe2\x80\xa6BiDirectory holding the rotating log files.mError messageAjRun all pending migrationsCfNetwork transport classification for the WiFi-only \xe2\x80\xa6BfTauri commands for offline data accessAjBuffering progress (0-100)CjPinning commands - protect an item\xe2\x80\x99s cached metadata \xe2\x80\xa6CeThe rung of the ladder this stream was built against.CiResolve a GL symbol the way libepoxy actually exports it.CgWhere to seek after loading, if the source does not \xe2\x80\xa6C`Get a database service for async-safe operationsAmMedia session state commands.AeCurrent session stateAjWhether shuffle is enabled0AhSkip to a specific indexCjNumber of tracks skipped (no jellyfin ID or other reasons)BcOffline storage module using SQLiteBnTauri commands for database/storage operationsAdConfirmation messageBlA playable URL for an absolute on-disk path.ClThe signed-in user these requests are made as. Needed by \xe2\x80\xa6BlThe signed-in user this repository acts for.CmAn engine that renders through the webview element, where \xe2\x80\xa6CkMobile data \xe2\x80\x94 never acceptable when wifi-only is enabled.CcDatabase connection wrapper with thread-safe accessAjDatabase query result typeBdThe opt-in for native desktop video.CdCentre frequencies (Hz) of the fixed 10-band ISO \xe2\x80\xa6CnStop after N more episodes complete (TV episodes only, not \xe2\x80\xa6DaBuilt-in equalizer presets. A preset <em>is</em> a gain curve \xe2\x80\xa6CbWired ethernet, typical on Android TV and desktop.CiLegacy rows only \xe2\x80\x94 live favourite toggles drain via \xe2\x80\xa6CkTrack played to completion (natural end) - trigger autoplayAdCredential not foundClNo client-imposed cap \xe2\x80\x94 the server may direct-play the \xe2\x80\xa6B`Playing from a specific playlist0AhDownload progress updateDhA queued mutation, resolved from its stored <code>operation</code> + \xe2\x80\xa6BaReplacement for a redacted value.CgWhat a request path resolved to, before any file is \xe2\x80\xa6CmThe slice of the repository the drain needs \xe2\x80\x94 narrow so \xe2\x80\xa6CnUser-specific data for an item (playback state, favorites, \xe2\x80\xa6AnUser info returned to frontendCiUser pressed next/previous - already handled, don\xe2\x80\x99t \xe2\x80\xa6BhUser stopped playback - don\xe2\x80\x99t autoplayCbAlbum ID (Jellyfin ID) for remote transfer contextBlBegin playing as soon as the engine is able.CcWhether to begin playing immediately after loading.BjThe base a media URL is built on, e.g. \xe2\x80\xa6CkRows that failed and will be retried on the next reconnect.BjDownload manager for offline media supportBfTauri commands for download operationsCgDownload a file with retry logic and progress tracking.AmDownload a thumbnail from URLmGet duration.AiTotal duration in seconds0AmGet total duration in secondsDg<code>None</code> while unknown \xe2\x80\x94 a live stream, or an item still \xe2\x80\xa622CfTotal duration \xe2\x80\x94 live, or the last one observed. \xe2\x80\xa6AcDuration in secondsAgGet a single item by IDCiFetch one item with every field the detail and player \xe2\x80\xa6CgA single item, cache-first \xe2\x80\x94 and, on a cache hit, \xe2\x80\xa6AnMake authenticated GET requestAiGet current playback modeClThe old trait has no notion of \xe2\x80\x9copening\xe2\x80\x9d, so this is \xe2\x80\xa6BhWhether there\xe2\x80\x99s a next track availableBhCheck if there\xe2\x80\x99s a next item availableDhNeutral image identifier \xe2\x80\x94 replaces <code>primary_image_tag</code> \xe2\x80\xa6CkNeutral image identifier the frontend resolves to a URL \xe2\x80\xa60BjLanguage code (e.g., \xe2\x80\x9ceng\xe2\x80\x9d, \xe2\x80\x9cspa\xe2\x80\x9d)BdID of the current media item, if anyCiJellyfin item id, used as the media_id when reporting \xe2\x80\xa6CdLast position/duration seen while a file was loaded.CdPin an item\xe2\x80\x99s metadata (protects from cache clear)ClTauri commands for playlist management Uses handle-based \xe2\x80\xa6CeManually trigger a poll (for frontend refresh button)AmConfirmed position after seekAoCurrent position to resume fromAmPosition playback resumed at.AhPosition to resume from.AdGet current positionBoGet the current playback position if available.AkCurrent position in seconds0BhGet current playback position in seconds1CmTarget position in seconds (only meaningful for \xe2\x80\x9cseek\xe2\x80\x9d\xe2\x80\xa6CjResume position in seconds (0 = start from the beginning).DhCurrent position \xe2\x80\x94 the live <code>time-pos</code>, or the last one \xe2\x80\xa6AfSkip to previous trackAiMove to the previous itemDiRegister <code>download_id</code> as in-flight and hand back its stop \xe2\x80\xa6Cmdownload id \xe2\x86\x92 its stop flag, for downloads currently in \xe2\x80\xa6CnGet a cheap, cloneable reporter so the repository can feed \xe2\x80\xa6B`Playback reporter implementationCbRows whose stream URL was resolved and are now \xe2\x80\xa6DhWhether <code>seek</code> can be expected to land. False for live edges.B`TRACES: UR-010 | JA-021 | DR-037BnAll active controllable sessions from JellyfinBaSet playback mode (internal use).ClTRACES: UR-023, UR-027, UR-031, UR-032, UR-033 | DR-030, \xe2\x80\xa6BkAudio and video playback settings commands.BjOne coherent read of the engine\xe2\x80\x99s state.DeDecide which span to send for a <code>Range</code> header (or its \xe2\x80\xa6CgTear down in the order DR-232 requires, with the GL \xe2\x80\xa6BmEvent throttler for position update reportingAgBuffering state changedCfBytes per response. Large enough that a film needs \xe2\x80\xa6AbDownload cancelledAoDownload completed successfullyClEvery request this app makes identifies the same device, \xe2\x80\xa6BbDirect URL (e.g., channel plugins)ChTracks why playback ended to determine autoplay behaviorBdError classification for retry logicAiEscaped the allowed root.jImage typeCmA single actor returned by the JRay plugin\xe2\x80\x99s \xe2\x80\x9ccontext \xe2\x80\xa6CkA file already on disk \xe2\x80\x94 a completed download, or the \xe2\x80\xa6BjRepresents a media item that can be playedjMedia itemCaThe kind of a media item \xe2\x80\x94 provider-neutral \xe2\x80\xa6CjPoison-tolerant locking for <code>std::sync::Mutex</code>.ClThe rendition actually negotiated \xe2\x80\x94 what the viewer is \xe2\x80\xa6BeError types for repository operationsCnThe query appears mid-word \xe2\x80\x94 \xe2\x80\x9cparks\xe2\x80\x9d in \xe2\x80\x9cSparks of \xe2\x80\xa6ClThe server is re-encoding. The only case where a bitrate \xe2\x80\xa6BmHow the bytes of a chosen stream are fetched.DgSome later <em>word</em> starts with the query \xe2\x80\x94 \xe2\x80\x9crecreation\xe2\x80\x9d \xe2\x80\xa6DhRows that exhausted <code>MAX_SYNC_ATTEMPTS</code> and were given up on.ClWhat this media source can offer, for the quality picker \xe2\x80\xa6C`Evict least recently used items to free up spacejExoPlayer.CgPushing favourite toggles made while the server was \xe2\x80\xa6AoGet database file size in bytesB`Get items in a library or parentBdGet the current cache limit in bytesAnGet an access token for a userBdWhether mpv has a new frame waiting.BkWhether the engine currently holds an item.AnWhether playback is advancing.BlTrue = playing/paused, False = stopped/endedBdTrue = playing/paused, False = ended0AhCheck if timer is activeCjWhether this item is a folder/container (vs a playable \xe2\x80\xa6BgCheck if the player is currently pausedCmCached title of the item the operation is about, when the \xe2\x80\xa6CmItem type (e.g. \xe2\x80\x9cEpisode\xe2\x80\x9d, \xe2\x80\x9cMovie\xe2\x80\x9d, \xe2\x80\x9cAudio\xe2\x80\x9d). \xe2\x80\xa6BgItem type (Audio, Movie, Episode, etc.)FjLegacy Jellyfin item-type string (<code>"Audio"</code>, <code>"MusicAlbum"</code>, \xe2\x80\xa6AnMutable access to queue items.CjRank of a media kind when match quality ties \xe2\x80\x94 lower \xe2\x80\xa6AoLast/current track being playedCnLock the mutex, recovering the inner guard if the lock was \xe2\x80\xa6CjCollect every log file in the log directory, newest first.CnMIME type (e.g., \xe2\x80\x9ctext/vtt\xe2\x80\x9d, \xe2\x80\x9capplication/x-subrip\xe2\x80\x9d\xe2\x80\xa6BfMove an item from one index to anotherCgLoad and play a single item (also sets the queue to \xe2\x80\xa6AoMake authenticated POST requestAbQuery a single rowCgAcquire a read guard, recovering it if the lock was \xe2\x80\xa6CfRows still waiting afterwards (what the badge counts).DgThe negotiated rendition; <code>None</code> when direct-playing the \xe2\x80\xa6CmResolve app state and drain. Shared by the reconnect hook \xe2\x80\xa6BlDrop blanks and duplicates from the id list.ChWhat to open, and how \xe2\x80\x94 transport included, so the \xe2\x80\xa6BnWhat to open, and how. TRACES: UR-079 | DR-225CkWhat the backend actually opened, so the UI reflects it \xe2\x80\xa6ClWhat to open, and how \xe2\x80\x94 already negotiated against the \xe2\x80\xa6DiSeries ID for TV episodes. Needed alongside <code>item_type</code> so \xe2\x80\xa6BdSeries ID for fetching next episodesClSeries ID (for TV show episodes) - used for series audio \xe2\x80\xa6BmServer ID - used for series audio preferencesAlSet the cache limit in bytesCkThe old trait has no mute. Folding it into volume would \xe2\x80\xa6CbReplace the queue without starting local playback.CgSet the queue with new items (resets context to Custom)CkSubtitle tracks to sideload, with URLs the frontend has \xe2\x80\xa6AiAvailable subtitle tracksBcThumbnail caching with LRU evictionCkThe server could not be reached at all \xe2\x80\x94 retry later, \xe2\x80\xa6CgHow this item\xe2\x80\x99s stream is fetched, as the backend \xe2\x80\xa60BdHow to open <code>stream_url</code>.DaHow to fetch it. Replaces the <code>.m3u8</code> substring check.CdWhether the active network is unmetered (Android \xe2\x80\xa6AbOnly cache on WiFiClOne track of an album, as the album-download path queues \xe2\x80\xa6CiArtist item with ID and name (for clickable artist links)AeAuthentication resultBfCached media item returned to frontendCgCastButton is active and needs frequent updates (500ms)CjThe source file is served untouched. No server CPU, no \xe2\x80\xa6AlEncryption/decryption failedB`Stop at the end of current trackCnOne row of the series episode listing used when queueing a \xe2\x80\xa6EeGL enum for <code>gdk_cairo_draw_from_gl</code>\xe2\x80\x99s <code>source_type</code>. GDK \xe2\x80\xa6CcEnhanced HTTP client with retry logic and error \xe2\x80\xa6AiHTTP client configurationCnName of the file holding the user\xe2\x80\x99s chosen level, in the \xe2\x80\xa6CmList of migrations to apply in order. Each migration is a \xe2\x80\xa6CkThe mpv handle of the backend this process created, for \xe2\x80\xa6BbMPV-based player backend for LinuxBoQuery parameter types supported by the databaseAiRepeat mode for the queueCkPoison-tolerant locking for <code>std::sync::RwLock</code>.BiServer information returned from JellyfinB`Server info returned to frontendCmWhat a lockscreen skip button means for the playback that \xe2\x80\xa6AdSmart caching engineCkThe kind of a media stream within an item (audio track, \xe2\x80\xa6B`Configuration for sync processorBoAlbum name (alias - for frontend compatibility)B`Login with username and passwordBeRemoves a specific item from trackingBbDatabase service abstraction layerCnUser-chosen browsing exclusions (UR-076 / DR-209). Library \xe2\x80\xa6CiHow many log files went in, excluding the environment \xe2\x80\xa6AaGet configurationjGet genresAbGet person detailsCbA single Person item (actor, director, \xe2\x80\xa6) by id.AoGet current connectivity statusCfThe track the server serves when the client pins none.AkCheck if caching is enabledDfTrue when the candidate <em>is</em> a library rather than a folder \xe2\x80\xa6BhCheck if the player is currently playingAkCheck if shuffle is enabled0CiWhether this outcome means \xe2\x80\x9cthe user stopped it\xe2\x80\x9d, \xe2\x80\xa6CaNumber of downloaded leaf items (not containers).DiThe Jellyfin item types this scope requests, or <code>None</code> for \xe2\x80\xa6BgA selection for a file already on disk.DiResolution ceiling, when one applies. <code>None</code> preserves the \xe2\x80\xa6DfResolution ceiling that suits the bitrate, or <code>None</code> to \xe2\x80\xa6mType of mediaBe<code>MediaPlayer</code> over libmpv.Cjmpv\xe2\x80\x99s render API into a framebuffer we own (UR-080 / \xe2\x80\xa6ChSet the queue and start playing from the specified indexAcQuery multiple rowsCjTauri commands for repository access Uses handle-based \xe2\x80\xa6AoSave an access token for a userEeSession id when <code>mode == "remote"</code>, otherwise <code>None</code>.AfSet volume (0.0 - 1.0)BeSet volume (0.0 - 1.0) TRACES: UR-016DgTelling a <em>finished</em> stream apart from a <em>truncated</em> one.DhDraining the offline mutation queue (<code>sync_queue</code>) to the \xe2\x80\xa6BgThumbnail cache and image-URL commands.AmTrack that an item was playedAjUnpin an item\xe2\x80\x99s metadataChAcquire a write guard, recovering it if the lock was \xe2\x80\xa6BbPosition to add items to the queueAfAuthentication managerAkSmart caching configurationBeConfiguration for the thumbnail cacheBnA playable leaf inside a channel (Jellyfin \xe2\x80\xa6CmWhat a drain did, for logging and for the frontend\xe2\x80\x99s \xe2\x80\x9c\xe2\x80\xa6AlMaximum per-band gain in dB.AlMinimum per-band gain in dB.DkEnvelope returned by the JRay <code>jray?t=</code> endpoint. Extra keys \xe2\x80\xa6CkCarry on. Music, and video the user explicitly asked to \xe2\x80\xa6CmA live TV channel \xe2\x80\x94 playable, but a live stream with no \xe2\x80\xa6BoMedia has finished loading and is ready to playB`Anything that can present media.CmA running server. Dropping this does not stop the thread; \xe2\x80\xa6BoTRACES: UR-002, UR-003, UR-004, UR-011 | DR-003AhMedia source informationChMedia stream information (audio, video, subtitle tracks)BkKind of network transport currently active.CnNull player backend (for testing or when no real player is \xe2\x80\xa6AmA request to present an item.B`Error type for player operationsCkPlayer state machine (6 states: Idle, Loading, Playing, \xe2\x80\xa6CcHint for adjusting poll frequency based on UI stateCkA single progressive HTTP resource, seekable by byte range.ClWhy a push failed, and whether the row should be charged \xe2\x80\xa6AjResponse for queue queriesCjAn opaque search scope the frontend selects; Rust owns \xe2\x80\xa6BaSession information from JellyfinCcTransaction handle for batching multiple operationsChVolume normalization levels matching Spotify\xe2\x80\x99s presetsCmNumber of albums tagged with this genre, when the backend \xe2\x80\xa6AlURL or path to artwork imageBlAudio codec the server was asked to produce.AjBuild authorization headerChLogout (clear session and call Jellyfin logout endpoint)AkClear all cached thumbnailsCjClear the queue entirely (used when playback genuinely \xe2\x80\xa6CbTauri commands for unit conversions and formattingBhUnit conversion and formatting utilitiesB`Secure credential storage moduleBkDelete cached thumbnail for a specific itemCeDiagnostics: log level control and the exportable \xe2\x80\xa6CkCredential redaction and crash capture for diagnostic logs.AoTrack duration in milliseconds.ClDuration in milliseconds \xe2\x80\x94 the neutral replacement for \xe2\x80\xa6BnFormat time in seconds to MM:SS display stringCnSet by mpv\xe2\x80\x99s update callback (on an mpv thread), cleared \xe2\x80\xa6AoExtracts item_id from operationAcGet current sessionAlGet a specific session by IDBoWhether we\xe2\x80\x99re currently checking connectivityBeGet the Jellyfin item ID if availableCkLast size we logged, so a size change re-reports rather \xe2\x80\xa6DjMark an item played \xe2\x80\x94 the inverse of <code>clear_watch_history</code>\xe2\x80\xa6Di<code>POST /Users/{userId}/PlayedItems/{itemId}</code> \xe2\x80\x94 the mirror \xe2\x80\xa6BmMarks an item as synced in the local databaseClTotal bits per second the stream may use, when a ceiling \xe2\x80\xa6CmTotal bits per second the stream may use (video + audio), \xe2\x80\xa6AfMaximum retry attemptsBhParse a stored/user-supplied level name.CkPerson type from Jellyfin API (Actor, Director, Writer, \xe2\x80\xa6CePlaylist ID (Jellyfin ID) for remote transfer contextCmResume position in milliseconds. Stored as Jellyfin ticks \xe2\x80\xa6BjCurrent playback position in milliseconds.B`Whether the error is recoverableoGet repeat modeAkGet the current repeat modeBoTell mpv the frame reached the screen. See [\xe2\x80\xa6BeRelevance ranking for search results.DdSort key for a season number. Specials sort <em>after</em> every \xe2\x80\xa6Dj<code>seek_offset</code> carries the position to RESUME AT, not a base \xe2\x80\xa6AeSet the queue contextAcSet current sessionCjSmart-cache statistics/config and album recommendation \xe2\x80\xa6CnLegacy Jellyfin stream type string (\xe2\x80\x9cAudio\xe2\x80\x9d/\xe2\x80\x9cVideo\xe2\x80\x9d\xe2\x80\xa6BoGet the target LUFS value for this volume levelDcConvert a Jellyfin <code>RunTimeTicks</code> value to milliseconds.BjRun a transaction with multiple operationsCjVideo codec (e.g., \xe2\x80\x9ch264\xe2\x80\x9d, \xe2\x80\x9chevc\xe2\x80\x9d) for video media0BlVideo codec the server was asked to produce.AeVideo width in pixelsBgCached person info returned to frontendCjWhat an engine can do, so callers adapt without naming \xe2\x80\xa6CmThe container is repackaged but the codecs are copied \xe2\x80\x94 \xe2\x80\xa6AlInformation about a downloadAiDownload task for workersDhIds (normalised \xe2\x80\x94 see <code>normalise_id</code>) of items the user \xe2\x80\xa6BmThe subset of the repository the drain needs.mImage optionsBmThe one live surface, on the GTK main thread.CiAn LMS multi-room sync group, as returned by JellyLMS \xe2\x80\xa6ChThe inverse, queued by the watched toggle. Pushes as \xe2\x80\xa6ChHow well a query matched an item\xe2\x80\x99s name \xe2\x80\x94 better \xe2\x80\xa6CeCurrent network transport plus whether it is metered.ClThe last playback time actually observed while media was \xe2\x80\xa6AdPlayback informationCjWhat the server is doing to the source to produce this \xe2\x80\xa6CePlayback mode - local device, remote session, or idleBaResponse for player state queriesAcPlaylist item entryCfQueue changed (items added, removed, reordered, or \xe2\x80\xa6CmContext for the current queue - where did the queue items \xe2\x80\xa6BhQueue manager for playlist functionalityCdReload stream from new position (transcoded non-HLS)CaHTML5 needs to reload stream with new audio trackCbHTML5 must reload its element with this selection.CdThe production sink: hands each operation to the \xe2\x80\xa6CkThe stream ended well short of the item\xe2\x80\x99s runtime \xe2\x80\x94 \xe2\x80\xa6AmSearch result with paginationAdPlayer state changedB`Storage statistics for downloadsCjEverything the draw handler needs, shared with the GTK \xe2\x80\xa6AoBackend type for video playbackCnA live video surface. Dropping it tears the render context \xe2\x80\xa6BlGet the number of currently active downloadsBiArtist items with IDs for clickable linksC`Whether to auto-advance when countdown reaches 0ChThe position the stream\xe2\x80\x99s own zero corresponds to, \xe2\x80\xa6BgSubdirectory name for cached thumbnailsDkThe boxed clone of <code>frame_ready</code> handed to mpv, reclaimed on \xe2\x80\xa6BkWhat the engine currently rendering can do.CjDeclared at construction: this wrapper is generic over \xe2\x80\xa6BlServer-reachability / connectivity commands.CfReports the outcome of every server request to the \xe2\x80\xa6AeGuess a content type.BaGet the current media item if anyAaCycle repeat modeAjCycle through repeat modesCjDefault value for supports_remote_control when missing \xe2\x80\xa6BaDelete an access token for a userCjEnsure there\xe2\x80\x99s enough space by evicting LRU items if \xe2\x80\xa6ChGet the root list of plugin \xe2\x80\x9cChannels\xe2\x80\x9d (Jellyfin \xe2\x80\xa6AgGet all active sessionsCjGet the next N upcoming items (for preloading) Returns \xe2\x80\xa6BlWhether there\xe2\x80\x99s a previous track availableBlCheck if there\xe2\x80\x99s a previous item availableCeWhether an index pass is due, given when one last \xe2\x80\xa6CnTrue for kinds that are containers/collections rather than \xe2\x80\xa6CnCurrent reachability as seen by this reporter (shared with \xe2\x80\xa6B`Check if this error is retryable0CiTotal items persisted to the offline cache across all \xe2\x80\xa6CjEntries removed because the server no longer has them. \xe2\x80\xa6CjLast time we checked server reachability (ISO 8601 string)ClLibrary this candidate lives in, so the picker can group \xe2\x80\xa6CnMaximum number of episodes to auto-play consecutively (0 = \xe2\x80\xa6DhThe <code>MediaPlayer</code> contract: one API, interchangeable engines.CdA loopback HTTP server for locally downloaded media.CdMedia item from either local queue or remote sessionCgWhether this process renders video natively \xe2\x80\x94 one \xe2\x80\xa6AdNext episode to playCjJellyfin writes the same GUID both dashed and undashed \xe2\x80\xa6CeThe partial-download sidecar for <code>target</code>.CeA seek that arrived before MPV had a file to seek in.BfThe URL or path an engine should open.BcNumber of tracks queued for preloadCbRead every favourite change this user has pending.CkResolve a percent-encoded request path to a file inside \xe2\x80\xa6BjPer-series preferred audio track commands.AhSeek on a remote sessionCgCheck if a request should be retried based on the errorBjInitialize the database and run migrationsCgRead the persisted level, if the user has ever set one.AiAttempt a single downloadAfVideo height in pixelsBeTarget volume level for normalizationBmActive session info (for session restoration)CaAdvance to next track in queue (for audio/movies)AgAudio playback settingsBhCached library info returned to frontendBeCastButton is in discovery mode (15s)ChCountdown tick (emitted every second during autoplay \xe2\x80\xa6AdDownload error typesBiEvents emitted during download operationsBhDownload statistics computed server-sideCaOperation succeeded using encrypted file fallbackChDrop the user\xe2\x80\x99s hidden items from a repository result.AhInitial schema migrationClMigration to remove access_token column from users table \xe2\x80\xa6CkMigration to relax foreign key constraints on user_data \xe2\x80\xa6CjMigration to enhance downloads table with priority and \xe2\x80\xa6C`Migration to relax foreign key constraint on \xe2\x80\xa6CjMigration to store item metadata directly in downloads \xe2\x80\xa6ClMigration to enhance thumbnail caching with LRU eviction \xe2\x80\xa6ChMigration to add video download support and item pinningBlMigration to add people/cast caching supportBjMigration to add playback context trackingBnMigration to add user-specific player settingsCiMigration to track download source (user-initiated vs \xe2\x80\xa6CkMigration to add composite index for offline mode filteringBoMigration to add series audio track preferencesBbMigration to add device ID storageBoMigration to add autoplay episode limit settingCkMigration to persist the resolved stream URL and target \xe2\x80\xa6CbMigration to record whether a cached item is a \xe2\x80\xa6CeMigration to cache the full server genre catalog. \xe2\x80\xa6C`Migration to index <code>items.season_id</code>.DdDiscard and rebuild the FTS index from the <code>items</code> table.DkFull-text index over <code>people</code>, mirroring <code>items_fts</code>.BfGive temporary downloads a life limit.CcPlayback has ended naturally (reached end of media)CkPlayer backend trait - implemented by platform-specific \xe2\x80\xa6CjPlaylist entry \xe2\x80\x94 wraps a MediaItem with the Jellyfin \xe2\x80\xa6AnResponse for preload operationDbOne rung of the quality picker, as it applies to <em>this</em> \xe2\x80\xa6CgBudget for consecutive resume attempts that make no \xe2\x80\xa6AjOptions for search queriesAkRepresents a subtitle trackCfSync queue processor that handles retry logic with \xe2\x80\xa6BdSync queue item returned to frontendAgVideo playback settingsnVolume changedDeRecord an attempt at <code>position</code>, returning its 1-based \xe2\x80\xa6BlBits per second allotted to the audio track.ChCalculate progress percentage from position and durationAbCurrent item indexAjGet the current item index1DfA seek that arrived while opening. Applied on <code>FileLoaded</code>.ClGet or create the device ID. Device ID is a UUID v4 that \xe2\x80\xa6CjSet the device ID (primarily for testing or recovery). \xe2\x80\xa6AoQueue a media item for downloadChThe directory every download has to stay inside: the \xe2\x80\xa6CnCreate or resize the framebuffer. Reused across frames \xe2\x80\x94 \xe2\x80\xa6CnOptional emitter used to notify the frontend when the mode \xe2\x80\xa6AeGet the event emitterCbExecute a batch of SQL statements (for migrations)B`Jellyfin \xe2\x86\x92 domain translation.CkGet all downloads for a user, optionally filtered by statusCkEverything the viewer has favourited, across every library.CjFavourites held locally \xe2\x80\x94 the ones mirrored from the \xe2\x80\xa6BhTRACES: UR-067 | DR-115, JA-033 | UT-100AgTRACES: UR-067 | DR-115CaGet image URL (synchronous - just constructs URL)ChMake a GET request and deserialize JSON with a short \xe2\x80\xa6AaGet all librariesCkGet user data for an item (playback position, favorite, \xe2\x80\xa6CkGet image as base64 data URL, caching if not already cachedChThe last observed duration, if one was ever established.CnThe last observed position, with no live reading to prefer \xe2\x80\xa6DiA <code>MediaPlayer</code> over the old <code>PlayerBackend</code> trait.CnLoad and play an item without modifying the queue Use this \xe2\x80\xa6CnPut a row back in the queue untouched apart from its error \xe2\x80\xa6AeMark item as favoriteBnMarks the item as reported at the current timeDnClassify how <code>query</code> matches <code>name</code>, case-insensitively.CjVolume from either local player or remote session (0-1 \xe2\x80\xa6CiNormalize and validate server URL. Enforces HTTPS \xe2\x80\x94 \xe2\x80\xa6Cnmpv\xe2\x80\x99s update callback. Runs on an mpv thread, so it does \xe2\x80\xa6CjCache-first query: try cache, fall back to server on miss.CeWhat the server is doing to the source to produce it.CcPlayback-mode transfer commands (local \xe2\x86\x94 remote).DkISO-8601 release/air date (Jellyfin <code>PremiereDate</code>). Used to \xe2\x80\xa6AmProcesses the sync queue onceCmPlatform hook for OS-level remote volume routing (swapped \xe2\x80\xa6DhExpand <code>scope</code> into <code>include_item_types</code> in place.CmWhere to resume writing a partial download, given how the \xe2\x80\xa6CkLegacy Jellyfin duration in ticks (100 ns units). Being \xe2\x80\xa6CiSave browsed items to cache for faster subsequent loadingCdFull-text search over cached people (cast and crew).DkSeek to an <strong>absolute</strong> position on the item\xe2\x80\x99s own timeline.CmCore transition: update status and emit events only on an \xe2\x80\xa6CkChecks if enough time has elapsed since the last report \xe2\x80\xa6CcShuffled order of indices (used when shuffle is on)BfStorage limit in bytes (0 = unlimited)Ck<code>ToString::to_string</code>, but without panic on OOM.0000AdUpdate configurationCjWhether we\xe2\x80\x99re using keyring (true) or encrypted file \xe2\x80\xa6CjBits per second allotted to the video track: the total \xe2\x80\xa6CgThe native video surface mpv renders into (UR-080 / \xe2\x80\xa6CaCreates a new EventThrottler with custom intervalCkBackend-originated control command targeting the active \xe2\x80\xa6AoResult of a successful downloadCfDownload worker that handles individual download tasksCjEvent throttler to prevent spam from frequent position \xe2\x80\xa6ChSwap the video stream for an audio-only one and keep \xe2\x80\xa6DeClears <code>INDEX_IN_PROGRESS</code> however the pass leaves \xe2\x80\x94 \xe2\x80\xa6BjJellyfin API client for playback reportingBeConfiguration for Jellyfin API clientCmLive stream information returned from opening a Live TV / \xe2\x80\xa6CbUser selected a different track - don\xe2\x80\x99t autoplayCjPlayback position updated (emitted periodically during \xe2\x80\xa6BiHeader names whose value is a credential.AdSecurity status infoCdMedia session changed (activity context changed: \xe2\x80\xa6CkSleep timer mode - determines when playback should stop \xe2\x80\xa6BaThumbnail cache with LRU evictionAjGet current audio settings0CiAudio settings (EQ, normalisation, gapless) are honoured.BaClassify an error for retry logicBlConvert QueryParam to rusqlite::types::ValueDgDevice-profile policy: turning what a device <em>reports</em> about \xe2\x80\xa6BcQueue an entire album for download.CbDownload raw bytes from a URL using the shared \xe2\x80\xa60CkQueue a video item (movie or episode) for download with \xe2\x80\xa6CjEncryption key for file fallback (derived from machine ID)CkTrue when this rung\xe2\x80\x99s ceiling is at or above what the \xe2\x80\xa6CgRestrict the listing to favourited items. Backs the \xe2\x80\xa6BeGet current total cache size in bytesAiGet count of cached itemsBgHelper to get stream URL from MediaItemDcWhether <code>item</code> falls under one of <code>excluded</code>.CnIs this episode genuinely part-watched (not a false start, \xe2\x80\xa6AjCheck if an item is pinnedCiWhether a media type has a picture that backgrounding \xe2\x80\xa6CgRFC-3339 timestamp of the last successful sync, if any.CnMark server as reachable (called after successful API call \xe2\x80\xa6BdGet the maximum concurrent downloadsAlMaximum concurrent downloadsBkMaximum cache size in bytes (0 = unlimited)CiNormalized server URL with protocol and no trailing slashAdSearch offline itemsAaPause a download.AkQuery a single optional rowAoQueues operation for later syncDeRead the last-sync timestamp straight from <code>app_settings</code>.Dj<code>X-Emby-Token: abc</code> -> <code>X-Emby-Token: [REDACTED]</code>CeFeed a request outcome into the connectivity monitor.ClReport that a real server request succeeded (or that the \xe2\x80\xa6CaOne full-catalog indexing pass, shared by the \xe2\x80\xa6ChMake one part of a cache filename safe to put in a path.AgSave thumbnail to cacheCdSession polling manager for remote playback control.BkSet the Tauri app handle for event emissionChSet the Tauri app handle for event emission. Must be \xe2\x80\xa6CbSet the end reason for the next playback end eventChConfigure the media repository used for next-episode \xe2\x80\xa6AeUpdate the server URLCmThe source\xe2\x80\x99s own bitrate, when the server reported one. \xe2\x80\xa6CnStart downloading a file immediately This command actually \xe2\x80\xa6CnPosition (seconds) to resume the starting track from. Used \xe2\x80\xa6CgAsk the server to tear down a transcode this device \xe2\x80\xa6CiSync queue processor with retry logic and exponential \xe2\x80\xa6AhSyncs to Jellyfin serverClDownload and save a thumbnail to cache Returns the local \xe2\x80\xa6nToggle shuffleAcToggle shuffle modeBlVerify current session by fetching user infoBeError types for credential operationsAjCredential storage managerCfDatabase service trait - abstraction over database \xe2\x80\xa6BgWrapper for thread-safe database accessCcWhere logs live and how verbose they currently are.CfDownload manager coordinating downloads across workersBjRequest to get an image URL (with caching)AjOptions for querying itemsClHLS or direct stream with HTML5 - frontend handles seek, \xe2\x80\xa6AmLibrary browsing preferences.BnLocal file - always use native seek on backendCjRepository trait for media access (online, offline, or \xe2\x80\xa6CmLightweight media item for merged playback state Converts \xe2\x80\xa6CkA local favourite change still waiting to reach the server.BcRequest to play a single video itemAlPlayback context informationDkAlso where <code>update_progress</code> lands: replaying a mid-playback \xe2\x80\xa6BnRusqlite-based database service implementationBgJellyfin files specials under season 0.AkBackground session verifierCdRemote sessions updated (for cast/remote control UI)AaSleep timer stateAeSmartCache statisticsCkEverything a player backend needs to open a stream, and \xe2\x80\xa6CfWorker for downloading thumbnails from Jellyfin serverAgAdd items to a playlistCkWhether downloads may run right now given the wifi-only \xe2\x80\xa60CnInitialize the auth manager (call on app startup) Restores \xe2\x80\xa6DjBuild the full MPV <code>af</code> (audio filter) value from the audio \xe2\x80\xa6AaCancel a downloadEfFold <code>..</code> out of <code>candidate</code> and require what is left to sit \xe2\x80\xa6BcCreate a new playlist on the serverBbCurrent episode that just finishedAkDelete a completed downloadAaDelete a playlistCdQueue all episodes of a specific season for downloadBkQueue all episodes of a series for downloadDiPer-band gains in dB, one per <code>EQ_BANDS</code>. Normalised to 10 \xe2\x80\xa6ChEvict least recently used items to make space (async \xe2\x80\xa6CnThe favourites scope this library\xe2\x80\x99s contents fall under, \xe2\x80\xa6CeA selection for an item already sitting in the queue.BkBuild the X-Emby-Authorization header valueClGet cached thumbnail path, or None if not cached Updates \xe2\x80\xa6BaGet device name based on platform0DiQuery the JRay plugin for the actors on screen at time <code>t</code> \xe2\x80\xa6DfQuery the JRay plugin for actors on screen at time <code>t</code>. \xe2\x80\xa6CkCheck if a media item is an episode (has Jellyfin ID to \xe2\x80\xa6FcTrue while webview-rendered media (HTML5 <code><video></code>/<code><audio></code>) \xe2\x80\xa6AoCheck if currently transferringCnGet a reference to the Jellyfin client (for remote session \xe2\x80\xa6BmA playable URL for a downloaded file on disk.CnThe media source this selection is for, so a later re-open \xe2\x80\xa6DkCleared by <code>close()</code>, so an open still in flight cannot come \xe2\x80\xa6BjTurn a stored row into something pushable.BiRead the end reason WITHOUT consuming it.BhPlay items on a remote session (casting)CmSet the queue and start playing from the specified index, \xe2\x80\xa6CmThe transcode identity the server keyed this job by, when \xe2\x80\xa6AeCreate a new playlistAaDelete a playlistAaRename a playlistChRecord a position alone, e.g. straight after a seek, \xe2\x80\xa61CmWhat the renderer that will actually decode video on this \xe2\x80\xa6AiResume a paused download.BaWhere a viewer is in a TV series.BjSet the active audio track by stream index0CkReplace the sink playback reports go to. Tests capture; \xe2\x80\xa6CdSet sleep timer mode (in-memory only, not persisted)AlStop monitoring connectivityCjDelete all sync operations for a user (used during logout)BdGet and clear the current end reasonAbToggle play/pause.AgUnmark item as favoriteBbUn-favourite an item: the same \xe2\x80\xa6BiUpdates local database with playback infoC`Rewrite an audio-only stream URL to start at \xe2\x80\xa6AoStorage info for a single albumClAutoplay decision result - determines what happens after \xe2\x80\xa6CbAutoplay settings (controls next episode behavior)ChPayload emitted to the frontend when a native player \xe2\x80\xa6CgWhat the player should do when the app is backgrounded.BcItem-person association for cachingBhResult of a credential storage operationCkHybrid repository combining online and offline data sourcesCkPer-user state Jellyfin attaches to an item (favourite, \xe2\x80\xa6CkMedia session type tracking the high-level playback contextCjmpv\xe2\x80\x99s render context plus the framebuffer it draws into.CmOnline repository - fetches data from Jellyfin server via \xe2\x80\xa6CmQueue context for remote transfer - what type of queue is \xe2\x80\xa6B`Request to play a queue of itemsAfPlayback progress infoCmMain playback reporter that handles dual sync (local DB + \xe2\x80\xa6CgEverything the UI consumes, read as one coherent value.CcCentral player controller that coordinates playbackBfJSON keys whose value is a credential.DdA ceiling on how much bandwidth a <em>video</em> stream may consume.CbNumber of Jellyfin ticks per second (100ns units).C`Number of Jellyfin ticks per second (10 million)DaJellyfin item types whose download is a <em>video</em> stream \xe2\x80\xa6E`Ask the frontend webview <code><audio></code> element to load and play \xe2\x80\xa6AmCurrently active download IDsClQueue one download row per track and link every track to \xe2\x80\xa6AcGet current sessionCbSet current session (for restoration from storage)CbCached thumbnails are handed to the webview as \xe2\x80\xa6BjError message from last connectivity checkCaPath to the encrypted credentials file (fallback)CcFlat 10-band curve \xe2\x80\x94 the default equalizer state.CgPush every queued mutation for this user, oldest first.ClThe live reading if there is one, else the last observed \xe2\x80\xa6ChTotal media duration (seconds). Threaded through the \xe2\x80\xa6CmEnqueue a download with its resolved stream URL, then let \xe2\x80\xa6CiTimestamp of the first network failure in the current \xe2\x80\xa6CjFormat time in seconds to HH:MM:SS or MM:SS display stringBfEnable gapless playback between tracksDmEvery track of an album, asked of the <strong>server</strong> rather than \xe2\x80\xa6AmGet latest items in a libraryChWhat mpv calls to find GL entry points. Same rule as \xe2\x80\xa6BnGet resume items (continue watching/listening)CnContinue Watching: the items this user has started and not \xe2\x80\xa6ChGet subtitle URL (synchronous - just constructs URL) \xe2\x80\xa6CgWhether the webview element last reported itself as \xe2\x80\xa6CmDid this end-of-stream happen far enough short of the item\xe2\x80\xa6CaCheck if we\xe2\x80\x99re using the secure keyring backendBbOriginal Jellyfin ID for sync-backCgLibraries that failed to sync (e.g. server hiccup); \xe2\x80\xa6CcHelper function to map database row to DownloadInfoBdMark server as unreachable directly.CmMirror the server\xe2\x80\x99s per-user state for an item into the \xe2\x80\xa6CiNormalise a volume arriving over IPC to the 0.0..=1.0 \xe2\x80\xa6AkEnable volume normalizationCmOpen a live stream (Live TV channel or live channel item) \xe2\x80\xa6BiPlay a single media item (audio or video)CjThe playlist-scoped entry ID (Jellyfin\xe2\x80\x99s PlaylistItemId)ClThe live reading if there is one, else the last observed \xe2\x80\xa6Fl<code>MediaBrowser Token="abc"</code> -> <code>MediaBrowser Token="[REDACTED]"</code>DiRe-open the current stream at <code>position</code> after the network \xe2\x80\xa6BaConvert seconds to Jellyfin ticksCjSet the current queue item without loading it into the \xe2\x80\xa6BlSet UI hint for polling frequency adjustmentBcSet the transferring flag directly.BoStart the MPV event loop in a background threadBaStart the offline recovery probe.CkStart a TV show session Transitions: Any \xe2\x86\x92 TvShow(active)AnGet a single cached item by IDCgGet storage directory path (parent directory of the \xe2\x80\xa6AoGet database file size in bytesCjBackend-owned stream selection (UR-079 / DR-225). What \xe2\x80\xa6BjGet all pending sync operations for a userCbMark a sync operation as failed with error messageBaConvert Jellyfin ticks to secondsBhTotal bytes currently held by log files.CgEnd TV show session (series complete or user dismissed)BlA single item fetched by id is never hidden.AmRequest to add items to queueCnHLS or direct stream with native backend - backend handles \xe2\x80\xa6CgHow long an index stays fresh before a re-index is due.CjProgress of a background index pass, for the staleness \xe2\x80\xa6CmWhere an export landed, so the UI can tell the user where \xe2\x80\xa6CjOn-disk usage of downloaded content, for the Downloads \xe2\x80\xa6BiEnhanced response with pre-computed statsCkTranscoded non-HLS with HTML5 - reload stream, frontend \xe2\x80\xa6CkGuards against two passes running at once. Replaces the \xe2\x80\xa6CgHow many times a row may fail before it stops being \xe2\x80\xa6CaTrait for checking if data has meaningful contentBfContext information for track playbackCgRequest to play tracks by ID (backend fetches metadata)AhPlayback operation typesClEvents emitted by the player backend to the frontend via \xe2\x80\xa6AiRepository handle managerCiTauri event name carrying the merged (cache + server) \xe2\x80\xa6CdQuery-string parameters whose value is a credential.CiHow far a lockscreen skip-back jumps while background \xe2\x80\xa6DlThe viewer\xe2\x80\x99s <strong>durable</strong> bandwidth ceiling \xe2\x80\x94 the device \xe2\x80\xa6CmPayload for the deferred, merged search results pushed to \xe2\x80\xa6AiSleep timer state changedCkTime-based sleep timer expired: playback must stop. The \xe2\x80\xa6BmSmartCache wrapper for Tauri state managementCaTauri-based implementation of PlayerEventEmitter.BbResponse for video seek operationsCmSeek strategy for video playback, derived from a stream\xe2\x80\x99\xe2\x80\xa6CnThe queue is holding: WiFi-only is enabled and the current \xe2\x80\xa6DkThe position on the <strong>item\xe2\x80\x99s own timeline</strong>, whatever is \xe2\x80\xa6AeGet autoplay settingsBdDecide what backgrounding should do.CiWhat playback should do when the app stops being visible.BkBuild the X-Emby-Authorization header valueBeConnect to server and get server infoAmCountdown duration in secondsCjCountdown duration in seconds before auto-playing next \xe2\x80\xa6CfHelper function to create MediaItem from video requestCjDecrement episode counter, returns true if should stop \xe2\x80\xa6DkPeaking-EQ filter entries (unwrapped), one ffmpeg <code>equalizer</code>\xe2\x80\xa6CmEnable the graphic equalizer. When false, no EQ filter is \xe2\x80\xa6CbThe excluded set as currently applied, normalised.ChStable item ids of the folders/libraries hidden from \xe2\x80\xa6CjSnapshot of the excluded set, taken once per list so a \xe2\x80\xa6AoGet playback info for streamingAaGet resume moviesClContinue Watching, narrowed to movies \xe2\x80\x94 the home screen\xe2\x80\xa6BmGet similar/related items for a movie or showCiCheck if this is an active session (any type except Idle)CcGet the row ID of the most recent successful INSERTCnRemove a single LMS zone from its sync group (decouple one \xe2\x80\xa6CnRemove a single LMS player from whatever sync group it\xe2\x80\x99s \xe2\x80\xa6ChPlaying state from either local player or remote sessionCbWhether the video requires server-side transcoding0CkWhether the server is spending encoder time on this stream.0ClThe duration last reported by webview-rendered media, if \xe2\x80\xa6B`Get all offline items for a userCeHandle playback ended event - decides what to do nextCiConvert percentage volume (0-100) to normalized (0.0-1.0)BlSet the playback mode (internal/testing use)CiGet a reference to the playback reporter (for backend \xe2\x80\xa6AkPlay a queue of media itemsCgSmart video seeking that decides between native and \xe2\x80\xa6AnPrimary image tag for artwork.CiDeserializes from API\xe2\x80\x99s \xe2\x80\x9cPrimaryImageTag\xe2\x80\x9d field \xe2\x80\xa6ChLegacy Jellyfin primary image tag. Being replaced by \xe2\x80\xa6Dg<code>Self::parallel_race</code>, plus a callback fired on the fast \xe2\x80\xa6BgReduce a server URL to scheme and host.AmRegister a download as activeChThe registered handle, or null if no MPV backend was \xe2\x80\xa6BhRemaining seconds (for time-based timer)AnRemaining seconds in countdownCgReport an item that just finished as stopped at its \xe2\x80\xa6DhTell Jellyfin playback stopped at <code>position</code>, unless that \xe2\x80\xa6ClCreate a new repository instance Returns a handle (UUID) \xe2\x80\xa6AaSearch for items.C`Sanitize filename by removing invalid characters0ChSearch only the local SQLite cache (downloaded content).CdManually trigger a session poll (for refresh button)DjWire the event emitter so <code>set_mode</code> notifies the frontend. \xe2\x80\xa6BgSet the event emitter for notificationsCbSet event emitter for broadcasting session updatesClReport the device\xe2\x80\x99s current network transport (Android \xe2\x80\xa6AeGet sleep timer stateCnOrder episodes as the series is watched: season ascending, \xe2\x80\xa6BhGet cached items with optional filteringAfGet users for a serverAiSave an item to the cacheClSave a user account (token stored in secure storage, not \xe2\x80\xa6CiThe durable device default, ignoring any per-playback \xe2\x80\xa6C`Bandwidth ceiling applied to every video stream.CmThe <code>SubtitleProfile</code> entries to advertise, as \xe2\x80\xa6CmWalk every library on the server and persist all items to \xe2\x80\xa6CjTransfer playback from remote session back to local deviceCbWhether frontend should render HTML5 video elementCiConvert normalized volume (0.0-1.0) to percentage (0-100)CkAttach a connectivity reporter so server outcomes drive \xe2\x80\xa6C`Wrapper for AuthManager to manage in Tauri stateDbHow often the scheduler wakes to <em>check</em> staleness. Far \xe2\x80\xa6CmItem types worth caching for offline browsing: containers \xe2\x80\xa6AcConnectivity statusCjSomething the user may choose to hide: a library, or a \xe2\x80\xa6CnSQL fragment: the set of item ids that are \xe2\x80\x9con the device\xe2\x80\xa6CaMetadata for the lockscreen / media notification.DgManaged state. <code>None</code> when the server could not bind \xe2\x80\x94 \xe2\x80\xa6ClReference loudness the peak table is anchored at (Normal \xe2\x80\xa6EeReference peak (<code>dynaudnorm</code> <code>p</code>, linear amplitude) for the \xe2\x80\xa6CmJellyfin\xe2\x80\x99s sentinel for \xe2\x80\x9cnegotiate no subtitle stream \xe2\x80\xa6CfShared, mutable view of the current network transport.BiWhere the player\xe2\x80\x99s playback reports go.CaTrait for emitting player events to the frontend.AoPlayer state wrapper for Tauri.BgThread-safe wrapper for event emitters.DgThe <code>PlaySessionId</code> of the video transcode most recently \xe2\x80\xa6BdCalculates exponential backoff delayBeTrack recently played items per albumBcNumber of tracks already downloadedCiApply a deliberate reachability probe result (offline \xe2\x80\xa6CiOmitted so the server resolves the source\xe2\x80\x99s default \xe2\x80\xa6ChSimple timeout wrapper for cache queries (100ms timeout)CaCalculate polling interval based on mode and hintChCalculate progress percentage from position and durationCfCheck if storage limit allows download (async version)CnCheck if a new download can be started based on concurrent \xe2\x80\xa6AbCancel sleep timerCjDeliberately probe the server\xe2\x80\x99s reachability (manual \xe2\x80\xa6CdCrossfade duration in seconds (0 = disabled, max 12)CfSum of all downloaded leaf sizes \xe2\x80\x94 the device total.ClWrite a redacted diagnostics archive and return where it \xe2\x80\xa6DfSeconds reported by an engine, as a <code>Duration</code>, without \xe2\x80\xa6CjSend a transport intent to the webview element that is \xe2\x80\xa6BdEmit queue changed event to frontendCfGet playlist items with PlaylistItemId (needed for \xe2\x80\xa6CgInstall a panic hook that records the panic through \xe2\x80\xa6EcClassify a Jellyfin <code>Type</code> string into a neutral <code>MediaKind</code>.CkChannels the device\xe2\x80\x99s audio route can actually voice. \xe2\x80\xa6CmThe channel cap for this device, reading the platform\xe2\x80\x99s \xe2\x80\xa6BfMove a playlist item to a new positionClAsk the server what it will do with this item, under our \xe2\x80\xa6CbNormalize a username before it goes to the server.DgContainer id \xe2\x86\x92 true when it is only <em>partially</em> downloaded \xe2\x80\xa6C`Tauri commands for playback reporting operationsBcGet the current media session stateC`Play tracks by ID - backend fetches all metadataAgAdd items to a playlistBfGet playlist items with PlaylistItemId8CjGet a reference to the position throttler (for backend \xe2\x80\xa6CcMake authenticated POST request and return responseBhTRACES: UR-018, UR-055 | DR-173 | UT-170Gf<code>"AccessToken":"abc"</code> -> <code>"AccessToken":"[REDACTED]"</code>BaReport an HTML5 state change \xe2\x80\xa6AmDestroy a repository instanceCeMake a request with automatic retry on network errorsCdSearch only the live Jellyfin server (full library).DkThe audio codec the server would serve for <code>item_id</code> \xe2\x80\x94 the \xe2\x80\xa6CiThe codec of the audio track the server will actually \xe2\x80\xa6AnSet volume on a remote sessionCfSet audio settings (crossfade, gapless, normalization)ChApply audio settings (crossfade, gapless, normalization)BmApply EQ, normalisation and gapless settings.BdSet the maximum concurrent downloadsCjSet the active subtitle track by stream index (None to \xe2\x80\xa60CeCheck if album affinity threshold reached for cachingCkStart background timer thread for sleep timer countdown \xe2\x80\xa6AiGet a cached person by IDCcSubtitle tracks can be selected without re-opening.CjTransfer playback from local device to remote Jellyfin \xe2\x80\xa6CeUpdate audio session with new track (during playback)DoTrue when audio is rendered by a webview <code><audio></code> element \xe2\x80\xa6CkNarrow a detected audio-codec list to what the renderer \xe2\x80\xa6CgRequest to add a track by ID - backend fetches metadataAjAlbum affinity status infoAiAlbum recommendation infoCkTranscoded non-HLS with native backend - reload stream, \xe2\x80\xa6CmHow a background-audio handoff must start playback, given \xe2\x80\xa6CaKebab-case, per the project\xe2\x80\x99s event convention.CfConnectivity monitor for tracking server reachability.BbRequest payload for download_item.BgManages media session state transitionsCjWrapper for the current network transport, used by the \xe2\x80\xa6CgThe authoritative playback mode changed in the Rust \xe2\x80\xa6ClManages playback mode transfers between local and remote \xe2\x80\xa6BdRemote session status for UI updatesCnPlatform hook for attaching/detaching the OS remote-volume \xe2\x80\xa6CnQuery keys through which a stream URL can carry a subtitle \xe2\x80\xa6BdStatistics about the thumbnail cacheCdRe-authenticate with password (when session expired)AfVerify current sessionCkThe album\xe2\x80\x99s tracks as the local catalog cache knows them.CnReport the last-synced timestamp so the UI can show a hint \xe2\x80\xa6ClClaim a resume attempt for the current stream, returning \xe2\x80\xa6BlForget what webview-rendered media reported.CmErase the viewer\xe2\x80\x99s watch history for an item: clear its \xe2\x80\xa6Dk<code>DELETE /Users/{userId}/PlayedItems/{itemId}</code> \xe2\x80\x94 Jellyfin\xe2\x80\x99\xe2\x80\xa6CmSanitize a queued download\xe2\x80\x99s path and confine it to the \xe2\x80\xa6CnThe Jellyfin id of whatever is currently queued, if it has \xe2\x80\xa6CdDetect which audio system is available on the systemAiDownload with retry logicDkConstruct the tauri-specta command builder. Shared by <code>run()</code>\xe2\x80\xa6ChA short, non-identifying description of the environment.BcCalculate exponential backoff delayDdThe scope a library of this Jellyfin <code>CollectionType</code> \xe2\x80\xa6BnFormat time in seconds to MM:SS display stringBaGet items by person (filmography)CmA person\xe2\x80\x99s filmography \xe2\x80\x94 every item they are credited \xe2\x80\xa6DgA video item played through the native <em>audio</em> path \xe2\x80\x94 i.e. \xe2\x80\xa60BhWhether the Jellyfin server is reachableAmList current LMS sync groups.0CiMark movie session as inactive (playback ended) Movie \xe2\x80\xa6BaReport an HTML5 state change \xe2\x80\xa6CcRemove catalog entries the server no longer has \xe2\x80\xa6CdRemove catalog entries the server no longer has. \xe2\x80\xa6CeStart as many pending downloads as there are free \xe2\x80\xa6DaSort search results by relevance to <code>query</code>, in place.E`<code>?api_key=abc&x=1</code> -> <code>?api_key=[REDACTED]&x=1</code>BkSend a playback command to a remote sessionAhSeek on a remote sessionAgGet a single item by IDCjDecide whether a lockscreen skip advances the queue or \xe2\x80\xa6AoToggle mute on a remote sessionClConfigure the Jellyfin API client for automatic playback \xe2\x80\xa6BiAsk to be told when a new frame is ready.CmStart an audio session with a queue Transitions: Idle \xe2\x86\x92 \xe2\x80\xa6ChStart a movie session Transitions: Any \xe2\x86\x92 Movie(active)CiDelete a user account and their token from secure storageAeGet all saved serversBeMark item as played in local databaseBjMark pending sync as completed for an itemAjSave a person to the cacheCkSave a server connection Uses INSERT \xe2\x80\xa6 ON CONFLICT to \xe2\x80\xa6DlSet the watched flag locally for an item <strong>and everything </strong>\xe2\x80\xa6BbMark a sync operation as completedBcQueue a mutation for sync to serverEaHow long a temporary (<code>download_source = 'auto'</code>) download \xe2\x80\xa6AnGet thumbnail cache statisticsBjSet thumbnail cache storage limit in bytesC`Unregister a download when it completes or failsClHow many immediate children of a library the picker will \xe2\x80\xa6BoShared reachability state and transition logic.AoTRACES: UR-055 | DR-082, DR-083AkDownload manager statisticsBcRequest payload for download_video.CjThe codec claimed when a device reports nothing we can \xe2\x80\xa6CjA playlist item from Jellyfin \xe2\x80\x94 wraps a regular item \xe2\x80\xa6Dk<code>app_settings</code> key holding the persisted library preferences \xe2\x80\xa6CfWhat playback facilities this platform\xe2\x80\x99s backend \xe2\x80\xa6BiRequest body for reporting playback startClHow far a lockscreen skip-forward jumps while background \xe2\x80\xa6BoManages background polling of Jellyfin sessionsBlTauri state wrapper for SessionPollerManagerBfShow next episode popup with countdown0BfVideo settings state wrapper for TauriDkAudio codecs the webview\xe2\x80\x99s <code><video></code> element can decode.ClIds whose favourite state differs between what we showed \xe2\x80\xa6CeThe direct-play / direct-stream / transcode decision.AoDelete all downloads for a userBjCurrent log level and where the files are.CfExtract Jellyfin item IDs from queue items Returns \xe2\x80\xa6CjGet a clone of the active downloads set (for internal use)B`Get audio stream URL for a trackDjDownloaded-only browse: items under <code>parent_id</code> that are on \xe2\x80\xa6CnBrowse downloaded content only \xe2\x80\x94 the dedicated Downloads \xe2\x80\xa6CgImmediate children of a container with the user\xe2\x80\x99s \xe2\x80\xa6CeGet Live TV channels (broadcast / IPTV) for browsing.AdGet next up episodesCn\xe2\x80\x9cNext Up\xe2\x80\x9d: the episode that follows the ones this user \xe2\x80\xa6ClDecide what stream to play, and describe it fully enough \xe2\x80\xa6ClDecide what stream to play and describe it fully \xe2\x80\x94 the \xe2\x80\xa6ClGet a video stream URL (initial play, resume, transcoded \xe2\x80\xa6CjGet video stream URL. This method is online-only since \xe2\x80\xa6ChCheck if playback is currently active within the sessionBkThe library preferences currently in force.ChReplace the library preferences: apply them to every \xe2\x80\xa6AiMark a download as failedCgMerge cache and server search results into a single \xe2\x80\xa6BeCheck if an item is available offlineCaExtract a printable message from a panic payload.CfThe episode a viewer should land on when they open \xe2\x80\xa6AcMark item as playedCcResume position in milliseconds \xe2\x80\x94 the neutral \xe2\x80\xa6BfGet number of queue items to pre-cacheBhNumber of tracks to pre-cache from queueC`Remove items from a playlist using entry IDs \xe2\x80\xa6CgGet items in a container (library, folder, album, etc.)CiReset autoplay episode counter (called on manual play \xe2\x80\xa6CiResolve a cache filename against the cache directory, \xe2\x80\xa6AdResume audio sessionCiCache the full server genre catalog for a library, so \xe2\x80\xa6CmSend a full GeneralCommand to a remote session. Uses POST \xe2\x80\xa6BkSend a playback command to a remote sessionAkSave a library to the cacheAmSearch cached items using FTSBdMark a sync operation as in progressCjPush the queue now, on the user\xe2\x80\x99s say-so, instead of \xe2\x80\xa6CnGet cached thumbnail path, returns None if not cached Also \xe2\x80\xa6CkRequest to add multiple tracks by IDs - backend fetches \xe2\x80\xa6ClVolume level (0-100) the remote volume slider starts at. \xe2\x80\xa6DfPayload for <code>FAVORITES_CHANGED_EVENT</code> \xe2\x80\x94 the ids whose \xe2\x80\xa6Cjapp_settings key holding the RFC-3339 timestamp of the \xe2\x80\xa6CjAbove this fraction watched, an episode is effectively \xe2\x80\xa6ClBelow this fraction watched, a position is a false start \xe2\x80\xa6CnRequest to play a track from an album (backend fetches all \xe2\x80\xa6AmResult of creating a playlistCfJellyfin playlist items response \xe2\x80\x94 items include \xe2\x80\xa6Dk<code>app_settings</code> key holding the persisted streaming bandwidth \xe2\x80\xa6BcAudio track preference for a seriesCeResponse for a mid-playback streaming-quality change.CmJellyfin ticks per second (10 million). A tick is 100 ns. \xe2\x80\xa6BnWrapper for thread-safe thumbnail cache accessC`Audio tracks can be selected without re-opening.CaDecide the base and the seek for a handoff at \xe2\x80\xa6BoClear all stale pending/failed/paused downloadsCmOptional connectivity reporter. The session poller is the \xe2\x80\xa6CiCreate the appropriate player backend for the current \xe2\x80\xa6CaSet the log level, for this session and the next.CbStart the Android playback service and hand it \xe2\x80\xa6ChLeave a background-audio handoff, returning the base \xe2\x80\xa6BkEvery episode of a series, in series order.CnWhether downloads are currently permitted by the WiFi-only \xe2\x80\xa6ChGet albums the user has played, but not recently (\xe2\x80\x9c\xe2\x80\xa6AiGet SmartCache statisticsDkFuse LMS zones into a sync group. <code>master_mac</code> keeps playing \xe2\x80\xa6DkFuse LMS zones: create a sync group with <code>master_mac</code> as the \xe2\x80\xa6BdLoad and decrypt the credential map.BkThe stream selection for a downloaded file.CnRecord that playback is being stopped by an expiring sleep \xe2\x80\xa6AeReport playback startCjThe built-in equalizer presets and their per-band gain \xe2\x80\xa6DnTry to recover playback after a <strong>recoverable</strong> player error, \xe2\x80\xa6CkRemove items from a playlist (uses PlaylistItemId entry \xe2\x80\xa6ChReclaim temporary downloads whose life limit has passed.AoReport an HTML5 position tick.BaReport playback start to Jellyfin6AhGet genres for a libraryAbGet person detailsCnSet autoplay settings (in-memory only, persistence handled \xe2\x80\xa6CaReplace the excluded set. Ids are normalised, \xe2\x80\xa6CmConfigure the playback reporter for dual sync (local DB + \xe2\x80\xa6CkSet the durable device default. Applies to every stream \xe2\x80\xa6BfCheck if should pre-cache queue items.BeStart the background catalog indexer.CdSpawn the background worker for one download. On \xe2\x80\xa6BkDrain on every offline\xe2\x86\x92online transition.BgDelete a server and all associated dataBaGet cached libraries for a serverCgTrue when video can be rendered by a native surface \xe2\x80\xa6AkClear all cached thumbnailsBlDelete cached thumbnails for a specific itemBcJellyfin playlist creation responseBoWrapper for thread-safe credential store accessCeWrapper for DownloadManager to be used as Tauri stateCmWhether offline library queries may include catalog items \xe2\x80\xa6CcArgument struct for <code>set_network_state</code>.BkRequest body for reporting playback stoppedCdWrapper for SessionVerifier to manage in Tauri stateBoErrors that can occur during thumbnail downloadAoEnable album affinity detectionDdDecide whether we must transcode <em>regardless of what the </em>\xe2\x80\xa6CiMark audio session as inactive (playback ended, queue \xe2\x80\xa6C`Connect to a Jellyfin server and get server infoBdStop background session verificationCnMaximum number of episodes to auto-play consecutively (0 = \xe2\x80\xa6CaEnable auto-play of next episode (with countdown)CcBuild a safe FTS5 prefix query from raw user input.CbBuild the Jellyfin endpoint for a Next Up listing.ChHelper to compute download statistics from a list of \xe2\x80\xa6BiDelete all downloads for a specific albumCkRemove every completed download at or under a container \xe2\x80\xa6DjEnter a background-audio handoff at <code>position</code> (the video\xe2\x80\x99\xe2\x80\xa6ChGenerate a shuffle order, optionally starting from a \xe2\x80\xa6D`Get all tracked albums with their play counts Returns Vec<\xe2\x80\xa6AlGet SmartCache configurationCcBuild the URL a video download is fetched from. \xe2\x80\xa6AgTRACES: UR-071 | DR-123DaWhether offline <code>get_items</code> currently includes the \xe2\x80\xa6CkThe loudness-normalization filter entry (unwrapped), or \xe2\x80\xa6CaInitialize playback reporter (called after login)CmAdd a track to queue by ID - backend fetches metadata and \xe2\x80\xa6CcDismiss the current media session (returns to Idle)AmGet current sleep timer stateCiReport an HTML5 position tick (seconds). The adapter \xe2\x80\xa6ChSet the active audio track on a native backend directly.AdSet sleep timer modeClPush the remote session\xe2\x80\x99s now-playing onto the Android \xe2\x80\xa6AhEnable queue pre-cachingCaPlay items on a remote Jellyfin session (casting)CcReport that a real server request failed with a \xe2\x80\xa6CaSet the queue with new items and explicit contextBbCheck if we should show miniplayerBkDrain on every offline\xe2\x86\x92online transition.CmThe container can be repackaged without re-encoding \xe2\x80\x94 a \xe2\x80\xa6CjDelete completed sync operations older than specified daysBoGet count of pending sync operations for a userCfClamp countdown duration to valid range (5-30 seconds)CfClamp crossfade duration to valid range (0-12 seconds)BmConnectivity change event emitted to frontendCnChannel count assumed when the platform cannot tell us \xe2\x80\x94 \xe2\x80\xa6CnTauri event announcing that favourite state changed behind \xe2\x80\xa6BlRequest body for reporting playback progressBhTauri state wrapper for PlaybackReporterBeStart background session verificationBjPick the source for an audio-only handoff.CmFetch a folder\xe2\x80\x99s items from the live server and persist \xe2\x80\xa6BcGet the current connectivity statusCkQueue and start a download in a single atomic operation \xe2\x80\xa6CjPush pending favourite changes to the server and clear \xe2\x80\xa6BiEmit server reconnected event to frontendCfEnqueue a batch of already-queued video downloads, \xe2\x80\xa6ClOn-disk bytes for downloaded content, for the disk-usage \xe2\x80\xa6CkOn-disk usage of downloaded content, for the disk-usage \xe2\x80\xa6CnDissolve an entire LMS sync group, identified by its master\xe2\x80\xa60AlMark a download as completedCeHandle video playback ended from HTML5 video element.CkLegacy Jellyfin resume position in ticks. Being replaced byAgReport playback stoppedBmDisable Jellyfin automatic playback reportingBdGet current SmartCache configurationCiReport this platform\xe2\x80\x99s playback capabilities to the \xe2\x80\xa6ChThe on-disk path for a downloaded item, for playback \xe2\x80\xa6CjPlay a track from an album - backend fetches all album \xe2\x80\xa6CfPreload upcoming tracks from the queue This queues \xe2\x80\xa6AoUpdate SmartCache configurationBcReport playback stopped to Jellyfin8BjGet the root list of plugin \xe2\x80\x9cChannels\xe2\x80\x9dChResolve the current episode, fetching everything the \xe2\x80\xa6CjResolve the stream URL for every download row that was \xe2\x80\xa6CjCache the library (view) list from the server into the \xe2\x80\xa6CkControl whether offline library queries reveal the full \xe2\x80\xa6B`Get the active user for a serverCcGet people for an item (with person details joined)ChSet a user as active (and deactivate all other users \xe2\x80\xa6CmToggle favorite status for an item in local database This \xe2\x80\xa6CjWhether asking the server to serve this subtitle codec \xe2\x80\xa6BeAdvance to next episode in TV sessionBmResponse for audio track switching operationsClLimit concurrent image downloads to avoid saturating the \xe2\x80\xa6CkSeconds added per attempt before retrying a stream that \xe2\x80\xa6CnBelow this many seconds we treat the position as \xe2\x80\x9cat the \xe2\x80\xa6AgWrapper for Tauri stateCmEmitted after a drain so open views can re-read the queue \xe2\x80\xa6CeSession verification result event emitted to frontendCnTake ownership of a transcode this process did not build a \xe2\x80\xa6CkThreshold for album affinity (tracks played before caching)CgClaim a transcode identity for a stream about to be \xe2\x80\xa6CeBuild the Jellyfin endpoint for a favourites listing.CaBuild the Jellyfin endpoint for a folder listing.BiCheck if an item has a completed downloadDiDecide the <code>MaxAudioChannels</code> to advertise, given what the \xe2\x80\xa6BaConvert Jellyfin ticks to secondsCnTrue when the current item is a TV episode being played in \xe2\x80\xa6CgLog a backend-initialization failure and notify the \xe2\x80\xa6BjEmit connectivity change event to frontendBjEmit sleep timer changed event to frontendClQueue a watch position that could not be reported to the \xe2\x80\xa6CjFormat time in seconds to HH:MM:SS or MM:SS display stringChLibraries that contain at least one downloaded item. \xe2\x80\xa6ClLibraries that contain downloaded content (offline-only, \xe2\x80\xa6CiFavourites held locally, without touching the server. \xe2\x80\xa6CmIncrement autoplay episode counter. Returns true if limit \xe2\x80\xa6CnOne scheduler tick: check the preconditions, then index if \xe2\x80\xa6CcWrite the preferences to <code>app_settings</code>.CiStart a freshly-built queue on the active remote session.AhReport playback progressCiAdd multiple tracks to queue by IDs - backend fetches \xe2\x80\xa6ClExit background-audio mode: stop the native audio player \xe2\x80\xa6ClHandle playback ended event - triggers autoplay decision \xe2\x80\xa6BmPlay next episode (user confirmed from popup)DdWhere to re-open the current stream after a <em>recoverable</em> \xe2\x80\xa6BdReport playback progress to Jellyfin6CkEverything the viewer has favourited, across libraries, \xe2\x80\xa6AiGet image URL for an itemmGet librariesAhMark an item as favoriteCmResolve the on-disk file backing a completed download, if \xe2\x80\xa6CjRestore the persisted preferences at startup, into the \xe2\x80\xa6CdSet the connectivity monitor (for marking server \xe2\x80\xa6BdCheck if we should show video playerAoStart autoplay countdown threadBmGet user\xe2\x80\x99s access token from secure storageBeSave item-person associations (batch)CmMark TV show session as inactive (episode ended, awaiting \xe2\x80\xa6BmUpdate remaining seconds for time-based timerE`Whether the webview <code><video></code> element can decode this audio \xe2\x80\xa6ClValidate and clamp countdown seconds to reasonable range \xe2\x80\xa6CjDelay before the first staleness check, to let sign-in \xe2\x80\xa6CmSubtitle formats we can render ourselves, delivered as an \xe2\x80\xa6DgThe ceiling in force for <em>the playback happening right now</em>, \xe2\x80\xa6ClThe user asked to disconnect from the remote session and \xe2\x80\xa6CfHelper to convert CachedItem from storage to MediaItemB`Cancel active autoplay countdownBjCheck if the server is currently reachableCiConvert percentage volume (0-100) to normalized (0.0-1.0)CiGet album affinity status for all tracked albums This \xe2\x80\xa6BoGet album recommendations based on play historyCiFavourites straight from the server, persisted to the \xe2\x80\xa6AiGet recently played audioDjWrite the ceiling to <code>app_settings</code>. Failure is logged, not \xe2\x80\xa6AmGet the current playback modeBnThe per-playback override, if one is in force.BlDestroy playback reporter (called on logout)AbCancel sleep timerChConfigure Jellyfin API client for automatic playback \xe2\x80\xa6CmChange the bandwidth ceiling of the video that is playing \xe2\x80\xa6DiSet (or clear, with <code>None</code>) the active subtitle track on a \xe2\x80\xa6CkSwitch audio track - handles both HTML5 (stream reload) \xe2\x80\xa6AnSet volume on a remote sessionDeWhether the renderer that decodes <em>video</em> on this platform \xe2\x80\xa6CmReport that the HTML5 element finished loading and knows \xe2\x80\xa6BmSend a throttled progress report to Jellyfin.CnQuery the optional JRay plugin for the actors on screen at \xe2\x80\xa6ClRestore the persisted bandwidth ceiling at startup, into \xe2\x80\xa6DeA <em>server-side transcode</em> can be seeked without re-opening \xe2\x80\xa6BlSet polling frequency hint based on UI stateCmRecord the base offset of a background-audio handoff (the \xe2\x80\xa6CgWire the connectivity reporter so each poll outcome \xe2\x80\xa6DdClassify a Jellyfin media-stream <code>Type</code> string into a \xe2\x80\xa6CmUpdate the stream URL of the current item (for transcoded \xe2\x80\xa6AoUpdate SmartCache configurationDgNormalise the equalizer band vector to exactly <code>EQ_BANDS</code>\xe2\x80\xa6BmWrapper for ConnectivityMonitor managed stateChMedia session manager wrapper for Tauri state managementChWrapper for PlaybackModeManager to manage in Tauri stateDhSerialise <code>AudioSettings</code> into the JSON payload handed to \xe2\x80\xa6CdThe position to report when a stream ends naturally.AoGet download manager statisticsBdGet storage statistics for downloadsCjTrue while the native audio player owns playback via a \xe2\x80\xa6CiReport that the HTML5 finished loading and knows its \xe2\x80\xa6CkBuild the quality ladder as it applies to a source of a \xe2\x80\xa6AoToggle mute on a remote sessionAjUnmark an item as favoriteCfResolve the download URL for a video, applying the \xe2\x80\xa6CfSend volume command to remote session Commands: \xe2\x80\x9c\xe2\x80\xa6DfSet whether offline <code>get_items</code> includes non-downloaded \xe2\x80\xa6CnGet the active session (user + server + token) for session \xe2\x80\xa6CiWhether this stream can reach the app as a sidecar it \xe2\x80\xa6C`Read and clear the background-audio base offset.CnPush now-playing metadata to the Android lockscreen. No-op \xe2\x80\xa6CkRequest payload for download_item_and_start (bundled to \xe2\x80\xa6ClConsecutive resume attempts allowed at the same position \xe2\x80\xa6CnProduction hook: forwards to the Android JNI bridge; no-op \xe2\x80\xa6ChCountdown duration in seconds before auto-play (5-30 \xe2\x80\xa6CjBuild the Jellyfin endpoint for a \xe2\x80\x9crecently added\xe2\x80\x9d \xe2\x80\xa6CmMark the server as reachable (called after successful API \xe2\x80\xa6CaSet the server URL and trigger an immediate checkCmThe ceiling that actually applies to a stream opened now: \xe2\x80\xa6CnFetch next episode for a series by looking up the season\xe2\x80\x99\xe2\x80\xa6CfRe-point queued streaming items at completed local \xe2\x80\xa6AmGet latest items in a libraryBoGet resume items (continue watching/listening).BaGet subtitle URL for a media itemCdOpen a live stream for a Live TV channel / live itemChGet security status (keyring vs encrypted file fallback)CnUpper bound we are willing to claim. Jellyfin profiles top \xe2\x80\xa6CiPosition change that counts as \xe2\x80\x9cthis is a different \xe2\x80\xa6DdPerform the auto-advance for a <code>ShowNextEpisodePopup</code> \xe2\x80\xa6AlStop monitoring connectivityDhProbe (via <code>gst-inspect-1.0</code>, which ships with GStreamer) \xe2\x80\xa6BhTRACES: UR-040 | DR-052 | UT-061, IT-013AeGet autoplay settingsDcWould the <em>player\xe2\x80\x99s own</em> load-error retry restart this \xe2\x80\xa6BmSet autoplay settings and persist to databaseAmGet playback info for an itemAaGet resume moviesBjGet similar/related items for a media itemChCache playlist items from server into local database \xe2\x80\xa6BdSet the maximum concurrent downloadsCkMark the server as unreachable (called after failed API \xe2\x80\xa6CcStart monitoring connectivity with adaptive pollingCeDetermine the video seek strategy based on stream \xe2\x80\xa6CbGet total download size for a user (async version)CfCheck if currently transferring between playback modesCeEnter background-audio mode: hand playback of the \xe2\x80\xa6DkCore of <code>resume_queued_downloads</code>, factored out for testing: \xe2\x80\xa6CnMove <em>this playback</em> to a different ceiling without \xe2\x80\xa6BaGet playback progress for an itemCgSet the transferring flag on the playback mode manager.DiThe <code>SubtitleStreamIndex</code> to negotiate with: always \xe2\x80\x9cnone\xe2\x80\xa6CmThe bandwidth ceilings the quality picker may offer, each \xe2\x80\xa6BoErase the viewer\xe2\x80\x99s watch history for an item.BkGet items by person (actor, director, etc.)ClEvery episode of a series, across all seasons, in series \xe2\x80\xa6CmSet the base offset (seconds) added to positions reported \xe2\x80\xa6BoGet count of pending sync operations for a userClRewrite a stream URL so it asks for no subtitle, whoever \xe2\x80\xa6CnHow far short of the item\xe2\x80\x99s runtime a stream may end and \xe2\x80\xa6CkDrop any per-playback override, returning to the device \xe2\x80\xa6CiGet remote session status (for polling position/duration)CjTransfer playback from remote session back to local deviceB`Get audio stream URL for a trackClDownloaded-only browse: items under a container that are \xe2\x80\xa6CdGet Live TV channels (broadcast / IPTV) for browsingAeGet next up episodes.ChDecide what stream to play for a video, and describe it.AgGet a video stream URL.CkUpdate playback progress with context in local database \xe2\x80\xa6BhThe folders the user may choose to hide.ClTransfer playback from local device to a remote Jellyfin \xe2\x80\xa6B`Cancel active autoplay countdownCiGet albums the user hasn\xe2\x80\x99t listened to recently (\xe2\x80\x9c\xe2\x80\xa6AeReport playback startCcRequeue video downloads that were fetched as audio.CnUpdate playback progress in local database This stores the \xe2\x80\xa6CkThe absolute position to re-open the current stream at, \xe2\x80\xa6BjGet video download URL with quality presetCgConvert a live playback position (seconds) into the \xe2\x80\xa6CkAdvance to the next episode while playing audio-only in \xe2\x80\xa6CfOn-disk usage of downloaded content (device total, \xe2\x80\xa6AgReport playback stoppedCjGet an audio-only stream URL for a <em>video</em> item \xe2\x80\xa6CaGet an audio-only stream URL for a video item \xe2\x80\xa6CmDownloaded-only browse: libraries that contain downloaded \xe2\x80\xa6AhReport playback progressBoGet user\xe2\x80\x99s preferred audio track for a seriesClWhether a subtitle in this format can reach the app as a \xe2\x80\xa6ClWhether the current network permits downloads, given the \xe2\x80\xa6CmConfigure GStreamer (the media backend behind WebKitGTK\xe2\x80\x99\xe2\x80\xa6AiGet recently played audioC`Save user\xe2\x80\x99s preferred audio track for a seriesEdGet an <strong>audio-only</strong> stream URL for a <em>video</em> item, for the \xe2\x80\xa6ChThe episode a viewer should land on when they open a \xe2\x80\xa6;") |