import{H as e,It as t,Mt as n,Q as r,V as i,W as a,d as o,ft as s,jt as c,mt as l,pt as u,st as d,yt as f}from"../chunks/BA99CCI5.js";import"../chunks/xihTtKlq.js";import"../chunks/DGo8yE5j.js";import{t as p}from"../chunks/D1zkFcXr.js";import{t as m}from"../chunks/B66v-P2b.js";import{t as h}from"../chunks/CeT8iFb4.js";import{t as g}from"../chunks/DCohNkHF.js";import{t as _}from"../chunks/Cme17KJK.js";import{t as v}from"../chunks/D85sx3Na.js";import{l as y,s as b,t as x}from"../chunks/9MSyFmmd.js";var S=a(`<div slot="left"><h1 class="text-xl font-semibold text-neutral-900 dark:text-neutral-50">How Upgrades Work</h1></div>`),C=a(`<div slot="right"><!></div>`),w=a(`<div class="px-6 py-4"><p class="text-sm text-neutral-600 dark:text-neutral-400"> </p></div>`),T=a(`<!> <div class="p-8"><!> <div class="mt-6 space-y-8 px-4"><div class="text-neutral-600 dark:text-neutral-400"><p>Radarr and Sonarr don't search for the best release. They monitor RSS feeds and grab the
				first thing that qualifies as an upgrade. To get optimal releases, you need manual searches.
				This module automates that: <span class="font-medium text-neutral-700 dark:text-neutral-300">Filter</span> your library, <span class="font-medium text-neutral-700 dark:text-neutral-300">Select</span> items to
				search, then <span class="font-medium text-neutral-700 dark:text-neutral-300">Search</span> for better releases.</p></div> <section><h2 class="mb-3 text-lg font-semibold text-neutral-900 dark:text-neutral-100">Concepts</h2> <!></section> <section><h2 class="mb-3 text-lg font-semibold text-neutral-900 dark:text-neutral-100">Selectors</h2> <!></section> <section><h2 class="mb-3 text-lg font-semibold text-neutral-900 dark:text-neutral-100">Filter Modes</h2> <!></section> <section><h2 class="mb-3 text-lg font-semibold text-neutral-900 dark:text-neutral-100">Radarr Filter Fields</h2> <!></section> <section><h2 class="mb-3 text-lg font-semibold text-neutral-900 dark:text-neutral-100">Sonarr Filter Fields</h2> <!></section></div></div>`,1);function E(a,E){n(E,!1);let D=y(`radarr`),O=y(`sonarr`),k={boolean:`Yes/No`,select:`Selection`,text:`Text`,number:`Number`,date:`Date`},A=`inline-flex items-center rounded font-medium px-1.5 py-0.5 text-[10px]`,j=[{key:`label`,header:`Field`,sortable:!1},{key:`valueType`,header:`Type`,sortable:!1,cell:e=>({html:`<span class="${A} bg-accent-100 text-accent-800 dark:bg-accent-900 dark:text-accent-200">${k[e.valueType]||e.valueType}</span>`})},{key:`description`,header:`Description`,sortable:!1},{key:`operators`,header:`Operators`,sortable:!1,cell:e=>({html:e.operators.map(e=>`<span class="${A} bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300">${e.label}</span>`).join(` `)})}],M=[{key:`label`,header:`Selector`,sortable:!1},{key:`description`,header:`Description`,sortable:!1}],N=[{key:`label`,header:`Mode`,sortable:!1},{key:`description`,header:`Description`,sortable:!1}],P=[{id:`filters`,name:`Filters`,summary:`Rules that define what qualifies for upgrade`,details:`Combine conditions with AND/OR logic. Example: monitored = true AND cutoff met = false AND (popularity > 30 OR year >= 2020). Rules can be nested into groups for complex logic.`},{id:`selectors`,name:`Selectors`,summary:`How to prioritize from filtered results`,details:`After filtering narrows the pool, the selector picks which items actually get searched. Random spreads searches evenly over time. Oldest/Newest prioritizes by when items were added. Lowest Score targets items most in need of upgrades. Most/Least Popular lets you prioritize based on TMDb popularity.`},{id:`count-cooldown`,name:`Count & Cooldown`,summary:`Batch size and search throttling`,details:`Count limits how many items get searched per run - prevents overwhelming your indexers. Cooldown (in hours) prevents re-searching the same item too soon. Items are tagged with the search date so they're skipped until the cooldown expires.`},{id:`cutoff`,name:`Cutoff %`,summary:`Quality score threshold for the Cutoff Met field`,details:`The Cutoff Met filter field checks if an item's custom format score has reached this percentage of the profile's cutoff score. Radarr uses the movie file score; Sonarr uses the average score across every episode file in the series. Set to 80% means items below 80% of their cutoff will have "Cutoff Met = false".`},{id:`multiple-filters`,name:`Multiple Filters`,summary:`Different strategies for different content`,details:`Create separate filters for different upgrade strategies. A "High Priority" filter for popular recent content, a "Backlog" filter for older items. The filter mode controls which runs each cycle - round robin cycles through in order, random shuffle picks one at random.`},{id:`dry-run`,name:`Dry Run`,summary:`Test without downloading`,details:`Click the "Dry Run" button to test your filters. The full filter/select pipeline runs and searches your indexers for releases, but skips downloading. Check the run history to see what would have been upgraded. Note: dry runs are rate-limited to once every 10 minutes since they still search indexers.`}],F=[{key:`name`,header:`Concept`,sortable:!1},{key:`summary`,header:`Summary`,sortable:!1}];function I(){history.back()}o();var L=T(),R=u(L);g(R,{title:`Upgrades Help`});var z=l(R,2),B=s(z);v(B,{position:`top`,$$slots:{left:(t,n)=>{var r=S();e(t,r)},right:(n,r)=>{var i=C(),a=s(i);m(a,{text:`Back`,get icon(){return p},$$events:{click:I}}),t(i),e(n,i)}}});var V=l(B,2),H=l(s(V),2),U=l(s(H),2);h(U,{get columns(){return F},get data(){return P},getRowId:e=>e.id,emptyMessage:`No concepts`,chevronPosition:`right`,flushExpanded:!0,$$slots:{expanded:(n,a)=>{let o=f(()=>a.row);var c=w(),l=s(c),u=s(l,!0);t(l),t(c),d(()=>i(u,r(o).details)),e(n,c)}}}),t(H);var W=l(H,2),G=l(s(W),2);_(G,{get columns(){return M},get data(){return x},emptyMessage:`No selectors`}),t(W);var K=l(W,2),q=l(s(K),2);_(q,{get columns(){return N},get data(){return b},emptyMessage:`No modes`}),t(K);var J=l(K,2),Y=l(s(J),2);_(Y,{get columns(){return j},get data(){return D},emptyMessage:`No fields`}),t(J);var X=l(J,2),Z=l(s(X),2);_(Z,{get columns(){return j},get data(){return O},emptyMessage:`No fields`}),t(X),t(V),t(z),e(a,L),c()}export{E as component};