Files
jellytau/api/jellytau_lib/repository/capabilities/index.html
T

22 lines
7.0 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="What the server on the other end of the wire can actually do."><title>jellytau_lib::repository::capabilities - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-17e0aaed.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="jellytau_lib" data-themes="" data-resource-suffix="" data-rustdoc-version="1.97.1 (8bab26f4f 2026-07-14)" data-channel="1.97.1" data-search-js="search-fd9372ac.js" data-stringdex-js="stringdex-2da4960a.js" data-settings-js="settings-170eb4bf.js" ><script src="../../../static.files/storage-41dd4d93.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-fcd733ba.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-f7c3ffd8.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><a class="skip-main-content" href="#main-content">Skip to main content</a><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module capabilities</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../jellytau_lib/index.html">jellytau_<wbr>lib</a><span class="version">0.11.6</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module capabilities</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#why-flags-and-not-version-comparisons" title="Why flags and not version comparisons">Why flags and not version comparisons</a></li><li><a href="#why-an-unknown-version-resolves-forward" title="Why an unknown version resolves forward">Why an unknown version resolves forward</a></li></ul><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#constants" title="Constants">Constants</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In jellytau_<wbr>lib::<wbr>repository</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content" tabindex="-1"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">jellytau_lib</a>::<wbr><a href="../index.html">repository</a></div><h1>Module <span>capabilities</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/jellytau_lib/repository/capabilities.rs.html#1-416">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>What the server on the other end of the wire can actually do.</p>
<p>One <code>ServerCapabilities</code> value is resolved per connection, from the version
the server already reports at <code>/System/Info/Public</code>, and every decision that
depends on the server generation reads a <strong>named flag</strong> from it.</p>
<h2 id="why-flags-and-not-version-comparisons"><a class="doc-anchor" href="#why-flags-and-not-version-comparisons">§</a>Why flags and not version comparisons</h2>
<p>A <code>version &lt; N</code> written at the point of use re-derives a domain fact where it
is consumed — the same error as a Jellyfin taxonomy in the frontend, and the
reason <code>check:boundary</code> exists. It is also unreadable by its second
occurrence (<code>&lt; 11</code> says nothing about <em>what</em> changed), and it cannot express
a backport, where a behaviour appears in a patch release of an older line.</p>
<p>So the version → flags mapping lives in exactly one function
(<a href="struct.ServerCapabilities.html#method.for_version" title="associated function jellytau_lib::repository::capabilities::ServerCapabilities::for_version"><code>ServerCapabilities::for_version</code></a>) and nothing else in the crate compares
a version number.</p>
<h2 id="why-an-unknown-version-resolves-forward"><a class="doc-anchor" href="#why-an-unknown-version-resolves-forward">§</a>Why an unknown version resolves forward</h2>
<p>A server newer than this build resolves to the newest capability set we know
rather than being refused. Refusing would make every JellyTau release expire
the moment the server upgrades, which is the failure UR-085 exists to remove.
Refusal is reserved for a version <em>below</em> <a href="constant.MINIMUM_SUPPORTED_MAJOR_MINOR.html" title="constant jellytau_lib::repository::capabilities::MINIMUM_SUPPORTED_MAJOR_MINOR"><code>MINIMUM_SUPPORTED_MAJOR_MINOR</code></a>,
where failure is certain rather than merely likely.</p>
<p>TRACES: UR-085 | IR-035, DR-280</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.ServerCapabilities.html" title="struct jellytau_lib::repository::capabilities::ServerCapabilities">Server<wbr>Capabilities</a></dt><dd>The resolved answer, carried by <code>OnlineRepository</code> for the life of a
connection.</dd><dt><a class="struct" href="struct.ServerVersion.html" title="struct jellytau_lib::repository::capabilities::ServerVersion">Server<wbr>Version</a></dt><dd>A parsed server version.</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.ServerGeneration.html" title="enum jellytau_lib::repository::capabilities::ServerGeneration">Server<wbr>Generation</a></dt><dd>How this build classified the server it is talking to.</dd></dl><h2 id="constants" class="section-header">Constants<a href="#constants" class="anchor">§</a></h2><dl class="item-table"><dt><a class="constant" href="constant.MINIMUM_SUPPORTED_MAJOR_MINOR.html" title="constant jellytau_lib::repository::capabilities::MINIMUM_SUPPORTED_MAJOR_MINOR">MINIMUM_<wbr>SUPPORTED_<wbr>MAJOR_<wbr>MINOR</a></dt><dd>The oldest server this build will talk to, as <code>(major, minor)</code>.</dd></dl></section></div></main></body></html>