1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,826771,e=>{"use strict";let a=(0,e.i(596779).default)("bug",[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]]);e.s(["Bug",0,a],826771)},355570,e=>{"use strict";let a=(0,e.i(596779).default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);e.s(["Calendar",0,a],355570)},761339,213200,e=>{"use strict";var a=e.i(596779);let r=(0,a.default)("cat",[["path",{d:"M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z",key:"x6xyqk"}],["path",{d:"M8 14v.5",key:"1nzgdb"}],["path",{d:"M16 14v.5",key:"1lajdz"}],["path",{d:"M11.25 16.25h1.5L12 17l-.75-.75Z",key:"12kq1m"}]]);e.s(["Cat",0,r],761339);let t=(0,a.default)("clover",[["path",{d:"M16.17 7.83 2 22",key:"t58vo8"}],["path",{d:"M4.02 12a2.827 2.827 0 1 1 3.81-4.17A2.827 2.827 0 1 1 12 4.02a2.827 2.827 0 1 1 4.17 3.81A2.827 2.827 0 1 1 19.98 12a2.827 2.827 0 1 1-3.81 4.17A2.827 2.827 0 1 1 12 19.98a2.827 2.827 0 1 1-4.17-3.81A1 1 0 1 1 4 12",key:"17k36q"}],["path",{d:"m7.83 7.83 8.34 8.34",key:"1d7sxk"}]]);e.s(["Clover",0,t],213200)},555629,e=>{"use strict";let a=(0,e.i(596779).default)("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);e.s(["BarChart3",0,a],555629)},687060,e=>{"use strict";let a=(0,e.i(596779).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,a],687060)},590782,e=>{"use strict";let a=(0,e.i(596779).default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);e.s(["ChevronUp",0,a],590782)},672677,e=>{"use strict";var a=e.i(400900);e.s(["PlayCircle",()=>a.default])},420465,e=>{"use strict";let a=(0,e.i(596779).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);e.s(["Download",0,a],420465)},839475,e=>{"use strict";let a=(0,e.i(596779).default)("film",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M3 7.5h4",key:"zfgn84"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 16.5h4",key:"1230mu"}],["path",{d:"M17 3v18",key:"in4fa5"}],["path",{d:"M17 7.5h4",key:"myr1c1"}],["path",{d:"M17 16.5h4",key:"go4c1d"}]]);e.s(["Film",0,a],839475)},86502,e=>{"use strict";let a=(0,e.i(596779).default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);e.s(["Globe",0,a],86502)},758453,441586,e=>{"use strict";var a=e.i(596779);let r=(0,a.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);e.s(["Home",0,r],758453);let t=(0,a.default)("square-play",[["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}]]);e.s(["PlaySquare",0,t],441586)},117406,e=>{"use strict";let a=(0,e.i(596779).default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);e.s(["KeyRound",0,a],117406)},381013,e=>{"use strict";let a=(0,e.i(596779).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,a],381013)},928413,e=>{"use strict";let a=(0,e.i(596779).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",0,a],928413)},270221,e=>{"use strict";let a=(0,e.i(596779).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Settings",0,a],270221)},532157,e=>{"use strict";let a=(0,e.i(596779).default)("tv",[["path",{d:"m17 2-5 5-5-5",key:"16satq"}],["rect",{width:"20",height:"15",x:"2",y:"7",rx:"2",key:"1e6viu"}]]);e.s(["Tv",0,a],532157)},962413,601057,e=>{"use strict";var a=e.i(228219),r=e.i(687060),t=e.i(82515),s=e.i(236390),l=e.i(419573),d=e.i(312614),o=e.i(502502),i=e.i(86502),n=e.i(381013),c=e.i(402458),x=e.i(475529),g=e.i(227222),u=e.i(539710);let m=(0,d.memo)(({initialConfig:e})=>{let r=(0,x.useQueryClient)(),[t,s]=(0,d.useState)(e.sources||[]),o=(0,d.useDeferredValue)(t),[m,h]=(0,d.useState)(null),[y,p]=(0,d.useState)(!1),[b,f]=(0,d.useState)(!1),[v,k]=(0,d.useState)(null),[j,N]=(0,d.useState)("apikey"),{data:w}
1=(0,c.useQuery)((0,g.queryOptions)({queryKey:["emby","public-sources"],queryFn:async()=>{let e=await fetch("/api/emby/public-sources");return e.ok?e.json():{sources:[]}},staleTime:3e5})),I=w?.sources||[];(0,d.useEffect)(()=>{s(e.sources||[])},[e]);let[S,P]=(0,d.useState)({enabled:!0,removeEmbyPrefix:!1,appendMediaSourceId:!1,transcodeMp4:!1,proxyPlay:!1}),A=(0,d.useRef)(null),C=(0,d.useRef)(null),T=(0,d.useRef)(null),R=(0,d.useRef)(null),E=(0,d.useRef)(null),U=(0,d.useRef)(null),M=(0,d.useRef)(null),D=()=>{P({enabled:!0,removeEmbyPrefix:!1,appendMediaSourceId:!1,transcodeMp4:!1,proxyPlay:!1}),h(null),p(!1),N("apikey"),A.current&&(A.current.value=""),C.current&&(C.current.value=""),T.current&&(T.current.value=""),R.current&&(R.current.value=""),E.current&&(E.current.value=""),U.current&&(U.current.value=""),M.current&&(M.current.value="")},_=async e=>{if(!confirm("ç¡®å®è¦å é¤è¿ä¸ª Emby æºåï¼"))return;let a=t.filter((a,r)=>r!==e);s(a);try{await fetch("/api/user/emby-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:{sources:a}})}),u.toast.success("å 餿å"),r.invalidateQueries({queryKey:["user","emby-config"]})}catch{u.toast.error("å é¤å¤±è´¥")}},B=async e=>{let a=t[e];k(e);try{let e=await fetch("/api/emby/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),r=await e.json();r.success?u.toast.success(`è¿æ¥æåï¼ç¨æ·: ${r.user?.Name||"æªç¥"}`):u.toast.error(`è¿æ¥å¤±è´¥: ${r.error}`)}catch{u.toast.error("æµè¯è¿æ¥å¤±è´¥")}finally{k(null)}},O=async()=>{let e=A.current?.value||"",a=C.current?.value||"",l=T.current?.value||"",d=R.current?.value||"",o=E.current?.value||"",i=U.current?.value||"",n=M.current?.value||"";if(!e||!a||!l)return void u.toast.error("请填åå¿
å¡«åæ®µï¼æ è¯ç¬¦ãåç§°ãæå¡å¨å°å");if("apikey"===j&&!d)return void u.toast.error("使ç¨å¯é¥è®¤è¯æ¶ï¼API Key 为å¿
填项");if("password"===j&&!o)return void u.toast.error("使ç¨è´¦å·è®¤è¯æ¶ï¼ç¨æ·å为å¿
填项");if(null===m&&t.some(a=>a.key===e))return void u.toast.error("æ è¯ç¬¦å·²åå¨ï¼è¯·ä½¿ç¨å
¶ä»æ è¯ç¬¦");f(!0);try{let c={key:e,name:a,ServerURL:l,ApiKey:d,Username:o,Password:i,UserId:n,...S},x=null!==m?t.map((e,a)=>a===m?c:e):[...t,c],g=await fetch("/api/user/emby-config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:{sources:x}})}),h=await g.json();h.success?(s(x),u.toast.success("ä¿åæåï¼"),r.invalidateQueries({queryKey:["user","emby-config"]}),D()):u.toast.error(`ä¿å失败: ${h.error}`)}catch{u.toast.error("ä¿å失败ï¼è¯·éè¯")}finally{f(!1)}};return(0,a.jsxs)("div",{className:"space-y-4",children:[I.length>0&&!y&&null===m&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs font-medium text-purple-700 dark:text-purple-400 uppercase tracking-wide",children:[(0,a.jsx)(i.Globe,{className:"w-3.5 h-3.5"}),(0,a.jsx)("span",{children:"å
Œ
±æº"}),(0,a.jsx)("span",{className:"text-purple-400 dark:text-purple-600 normal-case font-normal",children:"ç±ç®¡çåæä¾ï¼èªå¨å¯ç¨"})]}),I.map(e=>(0,a.jsx)("div",{className:"p-3 border border-purple-200 dark:border-purple-800 rounded-lg bg-purple-50/50 dark:bg-purple-900/10",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h5",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:e.name}),(0,a.jsx)("span",{className:"px-1.5 py-0.5 text-xs bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300 rounded",children:"å
Œ
±"})]}),(0,a.jsx)("span",{className:"text-xs text-gray-400 dark:text-gray-500",children:"åªè¯»"})]})},e.key))]}),I.length>0&&o.length>0&&!y&&null===m&&(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),o.length>0&&!y&&null===m&&(0,a.jsxs)("div",{className:"space-y-3",children:[I.length>0&&(0,a.jsx)("div",{className:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide",children:"ç§äººæº"}),o.map((e,r)=>(0,a.jsx)("div",{className:"p-4 border border-gray-200 dark:border-gray-700 rounded-lg bg-gray-50 dark:bg-gray-800/50",children:(0,a.jsxs)("div",{className:"flex items-start justify-between",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h5",{className:"font-medium text-gray-900 dark:text-gray-100",children:e.name}),e.enabled?(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400 rounded",children:"å·²å¯ç¨"}):(0,a.jsx)("span",{className:"px-2 py-0.5 text-xs bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400 rounded",children:"å·²ç¦ç¨"})]}),(0,a.jsx)("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1",children:e.ServerURL}
1),(0,a.jsxs)("p",{className:"text-xs text-gray-500 dark:text-gray-500 mt-1",children:["æ è¯ç¬¦: ",e.key]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("button",{onClick:()=>B(r),disabled:v===r,className:"px-3 py-1 text-xs text-blue-600 hover:text-blue-700 dark:text-blue-400 border border-blue-200 dark:border-blue-800 rounded transition-colors disabled:opacity-50",children:v===r?"æµè¯ä¸...":"æµè¯"}),(0,a.jsx)("button",{onClick:()=>{let e;P({enabled:(e=t[r]).enabled??!0,removeEmbyPrefix:e.removeEmbyPrefix??!1,appendMediaSourceId:e.appendMediaSourceId??!1,transcodeMp4:e.transcodeMp4??!1,proxyPlay:e.proxyPlay??!1}),e.ApiKey?N("apikey"):e.Username?N("password"):N("apikey"),h(r),p(!1),setTimeout(()=>{A.current&&(A.current.value=e.key||""),C.current&&(C.current.value=e.name||""),T.current&&(T.current.value=e.ServerURL||""),R.current&&(R.current.value=e.ApiKey||""),E.current&&(E.current.value=e.Username||""),U.current&&(U.current.value=e.Password||""),M.current&&(M.current.value=e.UserId||"")},0)},className:"px-3 py-1 text-xs text-gray-600 dark:text-gray-400 border border-gray-200 dark:border-gray-700 rounded transition-colors",children:"ç¼è¾"}),(0,a.jsx)("button",{onClick:()=>_(r),className:"px-3 py-1 text-xs text-red-600 dark:text-red-400 border border-red-200 dark:border-red-800 rounded transition-colors",children:"å é¤"})]})]})},e.key))]}),!y&&null===m&&(0,a.jsxs)("button",{onClick:()=>{D(),p(!0)},className:"w-full px-4 py-2 text-sm font-medium text-blue-600 dark:text-blue-400 border-2 border-dashed border-blue-300 dark:border-blue-700 hover:border-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-lg transition-colors flex items-center justify-center gap-2",children:[(0,a.jsx)(n.Plus,{className:"w-4 h-4"}),"æ·»å Emby æº"]}),(y||null!==m)&&(0,a.jsxs)("div",{className:"p-4 border border-gray-200 dark:border-gray-700 rounded-lg space-y-3 bg-white dark:bg-gray-800",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h5",{className:"font-medium text-gray-900 dark:text-gray-100",children:null!==m?"ç¼è¾ Emby æº":"æ·»å Emby æº"}),(0,a.jsx)("button",{onClick:D,className:"text-gray-500 hover:text-gray-700 dark:text-gray-400",children:(0,a.jsx)(l.X,{className:"w-5 h-5"})})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"æ è¯ç¬¦ *"}),(0,a.jsx)("input",{ref:A,type:"text",disabled:null!==m,className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 disabled:opacity-50",placeholder:"ä¾å¦: wumei"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"åç§° *"}),(0,a.jsx)("input",{ref:C,type:"text",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",placeholder:"ä¾å¦: æ åEmby"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"æå¡å¨å°å *"}),(0,a.jsx)("input",{ref:T,type:"text",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",placeholder:"http://192.168.1.100:8096"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"è®¤è¯æ¹å¼ *"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>{N("apikey"),E.current&&(E.current.value=""),U.current&&(U.current.value="")},className:`flex-1 px-3 py-1.5 text-sm rounded-lg font-medium transition-colors ${"apikey"===j?"bg-blue-600 text-white":"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:"å¯é¥è®¤è¯"}),(0,a.jsx)("button",{type:"button",onClick:()=>{N("password"),R.current&&(R.current.value="")},className:`flex-1 px-3 py-1.5 text-sm rounded-lg font-medium transition-colors ${"password"===j?"bg-blue-600 text-white":"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600"}`,children:"è´¦å·è®¤è¯"})]})]}),"apikey"===j&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"API Key *"}),(0,a.jsx)("input",{ref:R,type:"text",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",placeholder:"å¨ Emby æ§å¶å°ç API å¯é¥é¡µé¢çæ"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"ç¨æ· IDï¼å¯éï¼"}),(0,a.jsx)("input",{ref:M,type:"text",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",placeholder:"ç空åèªå¨è·å"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"ä¸å¡«åèªå¨è·åï¼å¦
1éæå®å
¶ä»ç¨æ·å¯æå¨å¡«å"})]})]}),"password"===j&&(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"ç¨æ·å *"}),(0,a.jsx)("input",{ref:E,type:"text",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1",children:"å¯ç ï¼å¯éï¼"}),(0,a.jsx)("input",{ref:U,type:"password",className:"w-full px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",placeholder:"没æå¯ç å¯ç空"})]})]}),(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)("input",{type:"checkbox",checked:S.enabled,onChange:e=>P(a=>({...a,enabled:e.target.checked})),className:"w-4 h-4 text-green-500 border-gray-300 rounded focus:ring-green-500"}),(0,a.jsx)("span",{className:"text-gray-700 dark:text-gray-300",children:"å¯ç¨æ¤æº"})]}),(0,a.jsxs)("details",{className:"mt-2",children:[(0,a.jsx)("summary",{className:"text-xs text-gray-600 dark:text-gray-400 cursor-pointer hover:text-gray-800 dark:hover:text-gray-200",children:"é«çº§é项"}),(0,a.jsx)("div",{className:"mt-2 space-y-2 pl-2 border-l-2 border-gray-200 dark:border-gray-700",children:[{key:"transcodeMp4",label:"转ç mp4ï¼æ¨èMKVæ ¼å¼å¯ç¨ï¼"},{key:"proxyPlay",label:"è§é¢ææ¾ä»£ç"},{key:"removeEmbyPrefix",label:"ç§»é¤/embyåç¼"},{key:"appendMediaSourceId",label:"æ¼æ¥MediaSourceIdåæ°"}].map(({key:e,label:r})=>(0,a.jsxs)("label",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("input",{type:"checkbox",checked:S[e],onChange:a=>P(r=>({...r,[e]:a.target.checked})),className:"w-3 h-3 text-blue-500 border-gray-300 rounded focus:ring-blue-500"}),(0,a.jsx)("span",{className:"text-gray-600 dark:text-gray-400",children:r})]},e))})]}),(0,a.jsxs)("div",{className:"flex gap-2 pt-2",children:[(0,a.jsx)("button",{onClick:O,disabled:b,className:"flex-1 px-4 py-2 text-sm font-medium text-white bg-blue-500 hover:bg-blue-600 disabled:bg-gray-400 rounded-lg transition-colors",children:b?"ä¿åä¸...":"ä¿å"}),(0,a.jsx)("button",{onClick:D,className:"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-lg transition-colors",children:"åæ¶"})]})]})]})});var h=e.i(977456),y=e.i(974412);let p=(0,g.queryOptions)({queryKey:["user","emby-config"],queryFn:async()=>{let e=await fetch("/api/user/emby-config"),a=await e.json();return a.success&&a.config?a.config:{sources:[]}},staleTime:3e5,gcTime:18e5});function b(e){return(0,c.useQuery)({...p,enabled:e})}function f(e,a){let r=localStorage.getItem(e);if(null===r)return a;try{return JSON.parse(r)}catch{return r}}e.s(["useChangePasswordMutation",0,function(){return(0,h.useMutation)({mutationFn:async({oldPassword:e,newPassword:a})=>{let r=await fetch("/api/change-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({oldPassword:e,newPassword:a})}),t=await r.json();if(!r.ok)throw Error(t.error||"ä¿®æ¹å¯ç 失败");return t}})},"useEmbyConfigQuery",0,b,"useFavoritesQuery",0,function({enabled:e}){return(0,c.useQuery)({...(0,g.queryOptions)({queryKey:["favorites","userMenu"],queryFn:async()=>{let e=await fetch("/api/favorites");return e.ok?Object.entries(await e.json()).map(([e,a])=>({...a,key:e})).sort((e,a)=>a.save_time-e.save_time):[]},staleTime:12e4,gcTime:6e5}),enabled:e})},"useInvalidateUserMenuData",0,function(){let e=(0,x.useQueryClient)();return{invalidatePlayRecords:()=>{e.invalidateQueries({queryKey:["playRecords"]})},invalidateFavorites:()=>{e.invalidateQueries({queryKey:["favorites"]})},invalidateAll:()=>{e.invalidateQueries({queryKey:["playRecords"]}),e.invalidateQueries({queryKey:["favorites"]})}}},"usePlayRecordsQuery",0,function({enabled:e,enableFilter:a,minProgress:r,maxProgress:t}){return(0,c.useQuery)({...(0,g.queryOptions)({queryKey:["playRecords","userMenu",a,r,t],queryFn:async()=>{let e=await fetch("/api/playrecords");if(!e.ok)throw Error(`Failed to fetch play records: ${e.status}`);return Object.entries(await e.json()).map(([e,a])=>({...a,key:e})).filter(e=>{let s=0===e.total_time?0:e.play_time/e.total_time*100;return!(e.play_time<120)&&(!a||s>=r&&s<=t)}).sort((e,a)=>a.save_time-e.save_time).slice(0,12)},staleTime:12e4,gcTime:6e5}),enabled:e})},"useServerConfigQuery",0,function(){return(0,c.useQuery)((0,g.queryOptions)({queryKey:["serverConfig"],queryFn:async()=>{let e=await fetch("/api/server-config");return e.ok?{downloadEnabled:(await e.json()).DownloadEnabled??!0}:{downloadEnabled:!0}},staleTime:6e5,gcTime:18e5}))},"useVersionCheckQuery",0,function(){return(0,c.useQuery)((0,g.queryOptions)({queryKey:["versionCheck"],queryFn:()=>(0,y.checkForUpdates)(),staleTime:18e5,gcTime:36e5,retry:1}))},"useWatchRoomConfigQuery",0,function(){return(0,c.useQuery)((0,g.queryOptions)({queryKey:["watchRoomConfig"],queryFn:async()=>{let e=await fetch("/api/watch-room/config");return!0===(await e.json()).enabled},staleTime:6e5,gcTime:18e5}))}],601057);let v=[{value:"direct",label:"ç´è¿ï¼æå¡å¨ç´æ¥è¯·æ±è±ç£ï¼"},{value:"cors-proxy-zwei",label:"Cors Proxy By Zwei"},{value:"cmliussss-cdn-tencent",label:"è±ç£ CDN By CMLiussssï¼è
¾è®¯äºï¼"},{value:"cmliussss-cdn-ali",label:"è±ç£ CDN By CMLiussssï¼é¿éäºï¼"},{value:"cmliussss-unified",label:"è±ç£ CDN By CMLiussssï¼ç»ä¸ååï¼"},{value:"custom",label:"èªå®ä¹ä»£ç"}],k=[{value:"server",label:"æå¡ç«¯è½¬åï¼é»è®¤ï¼è®¿é®å®æ¹ api.bgm.tvï¼"},{value:"cmliussss",label:"Bangumi å代 By CMLiussssï¼è§£å³æå¡å¨è¢«å¢ï¼"},{value:"corsapi",label:"Cloudflare Worker 代ç By Smone"},{value:"sakura",label:"æ¡è²éåç«ï¼bangumi.lolï¼ç¬¬ä¸æ¹éåï¼"},{value:"custom",label:"èªå®ä¹å代å°å"}],j=[{value:"server",label:"æå¡å¨ä»£çï¼é»è®¤ï¼ç±æå¡å¨ä»£ç请æ±ï¼"},{value:"cmliussss",label:"Bangumi å¾ç CDN By CMLiussss"},{value:"corsapi",label:"Cloudflare Worker 代ç By Smone"},{value:"sakura",label:"æ¡è²éåç«ï¼bangumi.lolï¼ç¬¬ä¸æ¹éåï¼"},{value:"direct",label:"ç´è¿ï¼æµè§å¨ç´æ¥è¯·æ± lain.bgm.tvï¼"},{value:"custom",label:"èªå®ä¹ä»£ç"}],N=[{value:"direct",label:"ç´è¿ï¼æµè§å¨ç´æ¥è¯·æ±è±ç£ï¼"},{value:"server",label:"æå¡å¨ä»£çï¼ç±æå¡å¨ä»£ç请æ±è±ç£ï¼"},{value:"img3",label:"è±ç£å®æ¹ç²¾å CDNï¼é¿éäºï¼"},{value:"cmliussss-cdn-tencent",label:"è±ç£ CDN By CMLiussssï¼è
¾è®¯äºï¼"},{value:"cmliussss-cdn-ali",label:"è±ç£ CDN By CMLiussssï¼é¿éäºï¼"},{value:"baidu",label:"ç¾åº¦å¾ç代çï¼å¢å
CDNï¼Chromeå¯è½è§¦åä¸è½½ï¼"},{value:"custom",label:"èªå®ä¹ä»£ç"}],w=[{value:"standard",label:"é»è®¤æ¨¡å¼",description:"æ åç¼å²è®¾ç½®ï¼éåç½ç»ç¨³
1å®çç¯å¢",icon:"ð¯",color:"green"},{value:"enhanced",label:"å¢å¼ºæ¨¡å¼",description:"1.5åç¼å²ï¼éåå¶å°å¡é¡¿çç½ç»ç¯å¢",icon:"â¡",color:"blue"},{value:"max",label:"å¼ºåæ¨¡å¼",description:"3å大ç¼å²ï¼èµ·æç¨æ
¢ä½ææ¾æ´æµç
",icon:"ð",color:"purple"}];function I(e){switch(e){case"cors-proxy-zwei":return{text:"Thanks to @Zwei",url:"https://github.com/bestzwei"};case"cmliussss-cdn-tencent":case"cmliussss-cdn-ali":case"cmliussss-unified":return{text:"Thanks to @CMLiussss",url:"https://github.com/cmliu"};default:return null}}let S=(0,d.memo)(({checked:e,onChange:r})=>(0,a.jsx)("label",{className:"flex items-center cursor-pointer",children:(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{type:"checkbox",className:"sr-only peer",checked:e,onChange:e=>r(e.target.checked)}),(0,a.jsx)("div",{className:"w-11 h-6 bg-gray-300 rounded-full peer-checked:bg-green-500 transition-colors dark:bg-gray-600"}),(0,a.jsx)("div",{className:"absolute top-0.5 left-0.5 w-5 h-5 bg-white rounded-full transition-transform peer-checked:translate-x-5"})]})}));S.displayName="Toggle";let P=(0,d.memo)(({isOpen:e,onClose:i})=>{let[n,c]=(0,d.useState)(!0),[x,g]=(0,d.useState)(""),[u,h]=(0,d.useState)(!1),[y,p]=(0,d.useState)(!0),[P,A]=(0,d.useState)(!1),[C,T]=(0,d.useState)("standard"),[R,E]=(0,d.useState)("direct"),[U,M]=(0,d.useState)("direct"),[D,_]=(0,d.useState)(""),[B,O]=(0,d.useState)(5),[L,V]=(0,d.useState)(100),[$,H]=(0,d.useState)(!1),[z,W]=(0,d.useState)(!0),[F,G]=(0,d.useState)(!0),[Q,q]=(0,d.useState)(!1),[K,Y]=(0,d.useState)("TS"),[X,J]=(0,d.useState)(!0),[Z,ee]=(0,d.useState)(!1),[ea,er]=(0,d.useState)(!1),[et,es]=(0,d.useState)(!1),[el,ed]=(0,d.useState)(!1),[eo,ei]=(0,d.useState)("cmliussss"),[en,ec]=(0,d.useState)(""),[ex,eg]=(0,d.useState)("cmliussss"),[eu,em]=(0,d.useState)(""),{data:eh={sources:[]}}=b(e);(0,d.useEffect)(()=>{let e=window.RUNTIME_CONFIG||{};c(f("defaultAggregateSearch",!0)),h(f("enableOptimization",!1)),p(f("fluidSearch",!1!==e.FLUID_SEARCH)),A(f("liveDirectConnect",!1)),g(f("doubanProxyUrl",e.DOUBAN_PROXY||"")),E(localStorage.getItem("doubanDataSource")??e.DOUBAN_PROXY_TYPE??"direct"),M(localStorage.getItem("doubanImageProxyType")??e.DOUBAN_IMAGE_PROXY_TYPE??"server"),_(f("doubanImageProxyUrl",e.DOUBAN_IMAGE_PROXY||"")),ei(localStorage.getItem("bangumiApiType")??"cmliussss"),ec(f("bangumiApiProxy","")),eg(localStorage.getItem("bangumiImageProxyType")??e.BANGUMI_IMAGE_PROXY_TYPE??"cmliussss"),em(f("bangumiImageProxyUrl",e.BANGUMI_IMAGE_PROXY||"")),O(f("continueWatchingMinProgress",5)),V(f("continueWatchingMaxProgress",100)),H(f("enableContinueWatchingFilter",!1)),W(f("enableAutoSkip",!0)),G(f("enableAutoNextEpisode",!0)),q(f("requireClearConfirmation",!1));let a=localStorage.getItem("downloadFormat");("TS"===a||"MP4"===a)&&Y(a);let r=localStorage.getItem("exactSearch");null!==r&&J("true"===r),T(f("playerBufferMode","standard"))},[]);let ey=(e,a,r=!0)=>t=>{e(t),localStorage.setItem(a,r?JSON.stringify(t):String(t))},ep=ey(c,"defaultAggregateSearch"),eb=ey(h,"enableOptimization"),ef=ey(p,"fluidSearch"),ev=ey(A,"liveDirectConnect"),ek=ey(q,"requireClearConfirmation"),ej=ey(Y,"downloadFormat",!1),eN=ey(H,"enableContinueWatchingFilter");if(!e)return null;let ew=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:i,onTouchMove:e=>e.preventDefault(),onWheel:e=>e.preventDefault(),style:{touchAction:"none"}}),(0,a.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-xl max-h-[90vh] bg-white dark:bg-gray-900 rounded-xl shadow-xl z-1001 flex flex-col",children:(0,a.jsxs)("div",{className:"flex-1 p-6 overflow-y-auto","data-
1panel-content":!0,style:{touchAction:"pan-y",overscrollBehavior:"contain"},children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-6",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-gray-800 dark:text-gray-200",children:"æ¬å°è®¾ç½®"}),(0,a.jsx)("button",{onClick:()=>{let e=window.RUNTIME_CONFIG||{},a=e.DOUBAN_PROXY_TYPE||"direct",r=e.DOUBAN_PROXY||"",t=e.DOUBAN_IMAGE_PROXY_TYPE||"server",s=e.DOUBAN_IMAGE_PROXY||"",l=!1!==e.FLUID_SEARCH;c(!0),h(!1),p(l),A(!1),g(r),E(a),M(t),_(s),ei(e.BANGUMI_API_TYPE||"cmliussss"),ec(e.BANGUMI_API_PROXY||""),eg(e.BANGUMI_IMAGE_PROXY_TYPE||"cmliussss"),em(e.BANGUMI_IMAGE_PROXY||""),O(5),V(100),H(!1),W(!0),G(!0),T("standard"),Y("TS"),localStorage.setItem("defaultAggregateSearch",JSON.stringify(!0)),localStorage.setItem("enableOptimization",JSON.stringify(!1)),localStorage.setItem("fluidSearch",JSON.stringify(l)),localStorage.setItem("liveDirectConnect",JSON.stringify(!1)),localStorage.setItem("doubanProxyUrl",r),localStorage.setItem("doubanDataSource",a),localStorage.setItem("doubanImageProxyType",t),localStorage.setItem("doubanImageProxyUrl",s),localStorage.setItem("bangumiApiType",e.BANGUMI_API_TYPE||"cmliussss"),localStorage.setItem("bangumiApiProxy",e.BANGUMI_API_PROXY||""),localStorage.setItem("bangumiImageProxyType",e.BANGUMI_IMAGE_PROXY_TYPE||"cmliussss"),localStorage.setItem("bangumiImageProxyUrl",e.BANGUMI_IMAGE_PROXY||""),localStorage.setItem("continueWatchingMinProgress","5"),localStorage.setItem("continueWatchingMaxProgress","100"),localStorage.setItem("enableContinueWatchingFilter",JSON.stringify(!1)),localStorage.setItem("enableAutoSkip",JSON.stringify(!0)),localStorage.setItem("enableAutoNextEpisode",JSON.stringify(!0)),localStorage.setItem("requireClearConfirmation",JSON.stringify(!1)),localStorage.setItem("playerBufferMode","standard"),localStorage.setItem("downloadFormat","TS")},className:"px-2 py-1 text-xs text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 border border-red-200 hover:border-red-300 dark:border-red-800 dark:hover:border-red-700 hover:bg-red-50 dark:hover:bg-red-900/20 rounded transition-colors",title:"é置为é»è®¤è®¾ç½®",children:"æ¢å¤é»è®¤"})]}),(0,a.jsx)("button",{onClick:i,className:"w-8 h-8 p-1 rounded-full flex items-center justify-center text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors","aria-label":"Close",children:(0,a.jsx)(l.X,{className:"w-full h-full"})})]}),(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Embyç§äººå½±åº"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"é
ç½®ä½ çç§äºº Emby æå¡å¨"})]}),(0,a.jsx)(m,{initialConfig:eh})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"è±ç£æ°æ®ä»£ç"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"éæ©è·åè±ç£æ°æ®çæ¹å¼"})]}),(0,a.jsxs)("div",{className:"relative","data-dropdown":"douban-datasource",children:[(0,a.jsx)("button",{type:"button",onClick:()=>ee(!Z),className:"w-full px-3 py-2.5 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 shadow-sm hover:border-gray-400 dark:hover:border-gray-500 text-left",children:v.find(e=>e.value===R)?.label}),(0,a.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none",children:(0,a.jsx)(t.ChevronDown,{className:`w-4 h-4 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${Z?"rotate-180":""}`})}),Z&&(0,a.jsx)("div",{className:"absolute z-50 w-full mt-1 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-lg shadow-lg max-h-60 overflow-auto",children:v.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{var a;E(a=e.value),localStorage.setItem("doubanDataSource",a),ee(!1)},className:`w-full px-3 py-2.5 text-left text-sm transition-colors duration-150 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-700 ${R===e.value?"bg-green-50 dark:bg-green-900/20 text-green-600 dark:text-green-400":"text-gray-900 dark:text-gray-100"}`,children:[(0,a.jsx)("span",{className:"truncate",children:e.label}),R===e.value&&(0,a.jsx)(r.Check,{className:"w-4 h-4 text-green-600 dark:text-green-400 shrink-0 ml-2"})]},e.value))})]}),I(R)&&(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsxs)("button",{type:"button",onClick:()=>window.open(I(R).url,"_blank"),className:"flex items-center justify-center gap-1.5 w-full px-3 text-xs text-gray-500 dark:text-gray-400 cursor-pointer",children:[(0,a.jsx)("span",{className:"font-medium",children:I(R).text}),(0,a.jsx)(s.ExternalLink,{className:"w-3.5 opacity-70"})]})})]}),"custom"===R&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"è±ç£ä»£çå°å"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"èªå®ä¹ä»£çæå¡å¨å°å"})]}),(0,a.jsx)("input",{type:"text",className:"w-full px-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400 shadow-sm hover:border-gray-400 dark:hover:border-gray-500",placeholder:"ä¾
1å¦: https://proxy.example.com/fetch?url=",value:x,onChange:e=>{var a;g(a=e.target.value),localStorage.setItem("doubanProxyUrl",a)}})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"è±ç£å¾ç代ç"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"éæ©è·åè±ç£å¾ççæ¹å¼"})]}),(0,a.jsxs)("div",{className:"relative","data-dropdown":"douban-image-proxy",children:[(0,a.jsx)("button",{type:"button",onClick:()=>er(!ea),className:"w-full px-3 py-2.5 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 shadow-sm hover:border-gray-400 dark:hover:border-gray-500 text-left",children:N.find(e=>e.value===U)?.label}),(0,a.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none",children:(0,a.jsx)(t.ChevronDown,{className:`w-4 h-4 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${ea?"rotate-180":""}`})}),ea&&(0,a.jsx)("div",{className:"absolute z-50 w-full mt-1 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-lg shadow-lg max-h-60 overflow-auto",children:N.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{var a;M(a=e.value),localStorage.setItem("doubanImageProxyType",a),er(!1)},className:`w-full px-3 py-2.5 text-left text-sm transition-colors duration-150 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-700 ${U===e.value?"bg-green-50 dark:bg-green-900/20 text-green-600 dark:text-green-400":"text-gray-900 dark:text-gray-100"}`,children:[(0,a.jsx)("span",{className:"truncate",children:e.label}),U===e.value&&(0,a.jsx)(r.Check,{className:"w-4 h-4 text-green-600 dark:text-green-400 shrink-0 ml-2"})]},e.value))})]}),I(U)&&(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsxs)("button",{type:"button",onClick:()=>window.open(I(U).url,"_blank"),className:"flex items-center justify-center gap-1.5 w-full px-3 text-xs text-gray-500 dark:text-gray-400 cursor-pointer",children:[(0,a.jsx)("span",{className:"font-medium",children:I(U).text}),(0,a.jsx)(s.ExternalLink,{className:"w-3.5 opacity-70"})]})})]}),"custom"===U&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"è±ç£å¾ç代çå°å"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"èªå®ä¹å¾ç代çæå¡å¨å°å"})]}),(0,a.jsx)("input",{type:"text",className:"w-full px-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400 shadow-sm hover:border-gray-400 dark:hover:border-gray-500",placeholder:"ä¾å¦: https://proxy.example.com/fetch?url=",value:D,onChange:e=>{var a;_(a=e.target.value),localStorage.setItem("doubanImageProxyUrl",a)}})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Bangumi æ°æ®ä»£ç"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"æå¡å¨æ æ³è®¿é® api.bgm.tv æ¶å¯åæ¢å代"})]}),(0,a.jsxs)("div",{className:"relative","data-dropdown":"bangumi-api",children:[(0,a.jsx)("button",{type:"button",onClick:()=>es(!et),className:"w-full px-3 py-2.5 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 shadow-sm hover:border-gray-400 dark:hover:border-gray-500 text-left",children:k.find(e=>e.value===eo)?.label}),(0,a.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none",children:(0,a.jsx)(t.ChevronDown,{className:`w-4 h-4 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${et?"rotate-180":""}`})}),et&&(0,a.jsx)("div",{className:"absolute z-50 w-full mt-1 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-lg shadow-lg max-h-60 overflow-auto",children:k.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{var a;ei(a=e.value),localStorage.setItem("bangumiApiType",a),es(!1)},className:`w-full px-3 py-2.5 text-left text-sm transition-colors duration-150 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-700 ${eo===e.value?"bg-green-50 dark:bg-green-900/20 text-green-600 dark:text-green-400":"text-gray-900 dark:text-gray-100"}`,children:[(0,a.jsx)("span",{className:"truncate",children:e.label}),eo===e.value&&(0,a.jsx)(r.Check,{className:"w-4 h-4 text-green-600 dark:text-green-400 shrink-0 ml-2"})]},e.value))})]}),"cmliussss"===eo&&(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsxs)("button",{type:"button",onClick:()=>window.open("https://github.com/cmliu","_blank"),className:"flex items-center justify-center gap-1.5 w-full px-3 text-xs text-gray-500 dark:text-gray-400 cursor-pointer",children:[(0,a.jsx)("span",{className:"font-medium",children:"Thanks to @CMLiussss"}),(0,a.jsx)(s.ExternalLink,{className:"w-3.5 opacity-70"})]})})]}),"custom"===eo&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Bangumi å代å°å"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"ä¸å®æ¹ api.bgm.tv è·¯å¾å
¼å®¹çå代å°åï¼ä¸å«æ«å°¾ææ "})]}),(0,a.jsx)("input",{type:"text",className:"w-full px-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400 shadow-sm hover:border-gray-400 dark:hover:border-gray-500",placeholder:"ä¾
1å¦: https://bgm-proxy.example.com",value:en,onChange:e=>{var a;ec(a=e.target.value),localStorage.setItem("bangumiApiProxy",a)}})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Bangumi å¾ç代ç"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"éæ©è·å Bangumi å°é¢å¾ççæ¹å¼"})]}),(0,a.jsxs)("div",{className:"relative","data-dropdown":"bangumi-image-proxy",children:[(0,a.jsx)("button",{type:"button",onClick:()=>ed(!el),className:"w-full px-3 py-2.5 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 shadow-sm hover:border-gray-400 dark:hover:border-gray-500 text-left",children:j.find(e=>e.value===ex)?.label}),(0,a.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none",children:(0,a.jsx)(t.ChevronDown,{className:`w-4 h-4 text-gray-400 dark:text-gray-500 transition-transform duration-200 ${el?"rotate-180":""}`})}),el&&(0,a.jsx)("div",{className:"absolute z-50 w-full mt-1 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded-lg shadow-lg max-h-60 overflow-auto",children:j.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>{var a;eg(a=e.value),localStorage.setItem("bangumiImageProxyType",a),ed(!1)},className:`w-full px-3 py-2.5 text-left text-sm transition-colors duration-150 flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-700 ${ex===e.value?"bg-green-50 dark:bg-green-900/20 text-green-600 dark:text-green-400":"text-gray-900 dark:text-gray-100"}`,children:[(0,a.jsx)("span",{className:"truncate",children:e.label}),ex===e.value&&(0,a.jsx)(r.Check,{className:"w-4 h-4 text-green-600 dark:text-green-400 shrink-0 ml-2"})]},e.value))})]}),"cmliussss"===ex&&(0,a.jsx)("div",{className:"mt-3",children:(0,a.jsxs)("button",{type:"button",onClick:()=>window.open("https://github.com/cmliu","_blank"),className:"flex items-center justify-center gap-1.5 w-full px-3 text-xs text-gray-500 dark:text-gray-400 cursor-pointer",children:[(0,a.jsx)("span",{className:"font-medium",children:"Thanks to @CMLiussss"}),(0,a.jsx)(s.ExternalLink,{className:"w-3.5 opacity-70"})]})})]}),"custom"===ex&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Bangumi å¾ç代çå°å"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"èªå®ä¹å¾ç代çå°åï¼å¾ç URL å°ä»¥ç¼ç 形弿¼æ¥å¨åé¢"})]}),(0,a.jsx)("input",{type:"text",className:"w-full px-3 py-2.5 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400 shadow-sm hover:border-gray-400 dark:hover:border-gray-500",placeholder:"ä¾å¦: https://proxy.example.com/fetch?url=",value:eu,onChange:e=>{var a;em(a=e.target.value),localStorage.setItem("bangumiImageProxyUrl",a)}})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"é»è®¤èåæç´¢ç»æ"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"æç´¢æ¶é»è®¤ææ é¢å年份èåæ¾ç¤ºç»æ"})]}),(0,a.jsx)(S,{checked:n,onChange:ep})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"ä¼éåæµé"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¦åºç°ææ¾å¨å«æé®é¢å¯å
³é"})]}),(0,a.jsx)(S,{checked:u,onChange:eb})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"æµå¼æç´¢è¾åº"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¯ç¨æç´¢ç»æå®æ¶æµå¼è¾åºï¼å
³éå使ç¨ä¼ ç»ä¸æ¬¡æ§æç´¢"})]}),(0,a.jsx)(S,{checked:y,onChange:ef})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"精确æç´¢"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¼å¯åï¼æç´¢ç»æå°è¿æ»¤æä¸å
å«æç´¢è¯çå
容"})]}),(0,a.jsx)(S,{checked:X,onChange:e=>{J(e),localStorage.setItem("exactSearch",String(e))}})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"IPTV è§é¢æµè§å¨ç´è¿"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¼å¯ IPTV è§é¢æµè§å¨ç´è¿æ
1¶ï¼éè¦èªå¤ Allow CORS æä»¶"})]}),(0,a.jsx)(S,{checked:P,onChange:ev})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"ææ¾ç¼å²ä¼å"}),(0,a.jsx)("p",{className:"text-xs text-gray-400 dark:text-gray-500 mt-1",children:"æ ¹æ®ç½ç»ç¯å¢éæ©åéçç¼å²æ¨¡å¼ï¼åå°ææ¾å¡é¡¿"})]}),(0,a.jsx)("div",{className:"space-y-2",children:w.map(e=>{let r=C===e.value,t={green:{selected:"border-transparent bg-linear-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 ring-2 ring-green-400/60 dark:ring-green-500/50 shadow-[0_0_15px_-3px_rgba(34,197,94,0.4)] dark:shadow-[0_0_15px_-3px_rgba(34,197,94,0.3)]",icon:"bg-linear-to-br from-green-100 to-emerald-100 dark:from-green-800/50 dark:to-emerald-800/50",check:"text-green-500",label:"text-green-700 dark:text-green-300"},blue:{selected:"border-transparent bg-linear-to-r from-blue-50 to-cyan-50 dark:from-blue-900/20 dark:to-cyan-900/20 ring-2 ring-blue-400/60 dark:ring-blue-500/50 shadow-[0_0_15px_-3px_rgba(59,130,246,0.4)] dark:shadow-[0_0_15px_-3px_rgba(59,130,246,0.3)]",icon:"bg-linear-to-br from-blue-100 to-cyan-100 dark:from-blue-800/50 dark:to-cyan-800/50",check:"text-blue-500",label:"text-blue-700 dark:text-blue-300"},purple:{selected:"border-transparent bg-linear-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 ring-2 ring-purple-400/60 dark:ring-purple-500/50 shadow-[0_0_15px_-3px_rgba(168,85,247,0.4)] dark:shadow-[0_0_15px_-3px_rgba(168,85,247,0.3)]",icon:"bg-linear-to-br from-purple-100 to-pink-100 dark:from-purple-800/50 dark:to-pink-800/50",check:"text-purple-500",label:"text-purple-700 dark:text-purple-300"}}[e.color];return(0,a.jsxs)("button",{type:"button",onClick:()=>{var a;T(a=e.value),localStorage.setItem("playerBufferMode",a)},className:`w-full p-3 rounded-xl border-2 transition-all duration-300 text-left flex items-center gap-3 ${r?t.selected:"border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 hover:shadow-sm bg-white dark:bg-gray-800"}`,children:[(0,a.jsx)("div",{className:`w-10 h-10 rounded-lg flex items-center justify-center text-xl transition-all duration-300 ${r?t.icon:"bg-gray-100 dark:bg-gray-700"}`,children:e.icon}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsx)("span",{className:`font-medium transition-colors duration-300 ${r?t.label:"text-gray-900 dark:text-gray-100"}`,children:e.label})}),(0,a.jsx)("p",{className:"text-xs text-gray-400 dark:text-gray-500 mt-0.5 line-clamp-1",children:e.description})]}),(0,a.jsx)("div",{className:`w-5 h-5 rounded-full flex items-center justify-center transition-all duration-300 ${r?`${t.check} scale-100`:"text-transparent scale-75"}`,children:(0,a.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})})})]},e.value)})})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"è·³è¿ç头ç尾设置"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"æ§å¶ææ¾å¨é»è®¤çç头ç尾跳è¿è¡ä¸º"})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h5",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"å¯ç¨èªå¨è·³è¿"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¼å¯åå°èªå¨è·³è¿ç头çå°¾ï¼å
³éåæ¾ç¤ºæå¨è·³è¿æé®"})]}),(0,a.jsx)(S,{checked:z,onChange:e=>{W(e),localStorage.setItem("enableAutoSkip",JSON.stringify(e)),window.dispatchEvent(new Event("localStorageChanged"))}})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h5",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"çå°¾èªå¨ææ¾ä¸ä¸é"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¼å¯åçå°¾ç»ææ¶èªå¨è·³è½¬å°ä¸ä¸é"})]}),(0,a.jsx)(S,{checked:F,onChange:e=>{G(e),localStorage.setItem("enableAutoNextEpisode",JSON.stringify(e)),window.dispatchEvent(new Event("localStorageChanged"))}})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h5",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"æ¸
空记å½ç¡®è®¤æç¤º"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"å¼å¯åç¹å»æ¸
空æé®æ¶ä¼å¼¹åºç¡®è®¤å¯¹è¯æ¡ï¼é²æ¢è¯¯æä½"})]}),(0,a.jsx)(S,{checked:Q,onChange:ek})]}),(0,a.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:'ð¡ è¿äºè®¾ç½®ä¼ä½ä¸ºæ°è§é¢çé»è®¤é
ç½®ã对äºå·²é
ç½®çè§é¢ï¼è¯·å¨ææ¾é¡µé¢ç"è·³è¿è®¾ç½®"ä¸åç¬è°æ´ã'})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"ç»§ç»è§çè¿åº¦çé"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:'æ¯å¦å¯ç¨"ç»§ç»è§ç"çææ¾è¿åº¦çéåè½'})]}),(0,a.jsx)(S,{checked:$,onChange:eN})]}),$&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{children:(0,a.jsx)("h5",{className:"text-sm font-medium text-gray-600 dark:text-gray-400 mb-3",children:"è¿åº¦èå´è®¾ç½®"})}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-gray-600 dark:text-gray-400 mb-2",children:"æå°è¿åº¦ (%)"}),(0,a.jsx)("input",{type:"number",min:"0",max:"100",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",value:
1B,onChange:e=>{var a;O(a=Math.max(0,Math.min(100,parseInt(e.target.value)||0))),localStorage.setItem("continueWatchingMinProgress",a.toString())}})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-gray-600 dark:text-gray-400 mb-2",children:"æå¤§è¿åº¦ (%)"}),(0,a.jsx)("input",{type:"number",min:"0",max:"100",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-green-500 transition-all duration-200 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",value:L,onChange:e=>{var a;V(a=Math.max(0,Math.min(100,parseInt(e.target.value)||100))),localStorage.setItem("continueWatchingMaxProgress",a.toString())}})]})]}),(0,a.jsxs)("div",{className:"text-xs text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-800 p-3 rounded-lg",children:["å½åè®¾ç½®ï¼æ¾ç¤ºææ¾è¿åº¦å¨ ",B,"% - ",L,"% ä¹é´çå
容"]})]}),!$&&(0,a.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 bg-orange-50 dark:bg-orange-900/20 p-3 rounded-lg border border-orange-200 dark:border-orange-800",children:"çéå·²å
³éï¼å°æ¾ç¤ºææææ¾æ¶é´è¶
è¿2åéçå
容"})]}),(0,a.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"ä¸è½½æ ¼å¼"}),(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"éæ©è§é¢ä¸è½½æ¶çé»è®¤æ ¼å¼"})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,a.jsx)("button",{type:"button",onClick:()=>ej("TS"),className:`p-4 rounded-lg border-2 transition-all duration-200 ${"TS"===K?"border-green-500 bg-green-50 dark:bg-green-900/20":"border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"}`,children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)("div",{className:`text-2xl ${"TS"===K?"text-green-600 dark:text-green-400":"text-gray-500 dark:text-gray-400"}`,children:"ð¦"}),(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("div",{className:`text-sm font-semibold ${"TS"===K?"text-green-700 dark:text-green-300":"text-gray-900 dark:text-gray-100"}`,children:"TSæ ¼å¼"}),(0,a.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"æ¨èï¼å
¼å®¹æ§å¥½"})]}),"TS"===K&&(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-green-500 text-white flex items-center justify-center",children:(0,a.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})})]})}),(0,a.jsx)("button",{type:"button",onClick:()=>ej("MP4"),className:`p-4 rounded-lg border-2 transition-all duration-200 ${"MP4"===K?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"}`,children:(0,a.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,a.jsx)("div",{className:`text-2xl ${"MP4"===K?"text-blue-600 dark:text-blue-400":"text-gray-500 dark:text-gray-400"}`,children:"ð¬"}),(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("div",{className:`text-sm font-semibold ${"MP4"===K?"text-blue-700 dark:text-blue-300":"text-gray-900 dark:text-gray-100"}`,children:"MP4æ ¼å¼"}),(0,a.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"éç¨æ ¼å¼"})]}),"MP4"===K&&(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-blue-500 text-white flex items-center justify-center",children:(0,a.jsx)("svg",{className:"w-3 h-3",fill:"currentColor",viewBox:"0 0 20 20",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})})]})})]}),(0,a.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:"ð¡ TSæ ¼å¼ä¸è½½é度快ï¼å
¼å®¹æ§å¥½ï¼MP4æ ¼å¼ç»è¿è½¬ç ï¼ä½ç§¯ç¥å°ï¼å
¼å®¹æ§æ´å¹¿"})]})]}),(0,a.jsx)("div",{className:"mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 text-center",children:"è¿äºè®¾ç½®ä¿å卿¬å°æµè§å¨ä¸"})})]})})]});return(0,o.createPortal)(ew,document.body)});P.displayName="SettingsPanel",e.s(["SettingsPanel",0,P],962413)},144972,e=>{"use strict";var a=e.i(228219),r=e.i(555629),t=e.i(268919),s=e.i(355570),l=e.i(420465),d=e.i(689927),o=e.i(117406),i=e.i(529536),n=e.i(672677),c=e.i(270221),x=e.i(835813),g=e.i(532157),u=e.i(369924),m=e.i(495796),h=e.i(419573),y=e.i(589818),p=e.i(312614),b=e.i(502502),f=e.i(475529),v=e.i(386909),k=e.i(810239),j=e.i(974412),N=e.i(333947),w=e.i(426015),I=e.i(992824),S=e.i(962413),P=e.i(601057),A=e.i(734918);e.s(["UserMenu",0,()=>{let e=(0,y.useRouter)();(0,f.useQueryClient)();let[C,T]=(0,p.useState)(!1),[R,E]=(0,p.useState)(!1),[U,M]=(0,p.useState)(!1),[D,_]=(0,p.useState)(!1),[B,O]=(0,p.useState)(!1),[L,V]=(0,p.useState)(!1),[$,H]=(0,p.useState)(!1),[z,W]=(0,p.useState)(null),[F,G]=(0,p.useState)(()=>window.RUNTIME_CONFIG?.STORAGE_TYPE||"localstorage"),[Q,q]=(0,p.useState)(!1),[K,Y]=(0,p.useState)(()=>
1{try{let e=localStorage.getItem("moontv_dismissed_releases");return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}),X=z?.username&&"localstorage"!==F,{data:J}=(0,A.useWatchingUpdatesQuery)({enabled:X}),Z=(0,A.useRefreshWatchingUpdates)(),ee=J&&((J.updatedCount||0)>0||J.updatedSeries.filter(e=>e.hasNewRelease&&!K.has(`${e.sourceKey}+${e.videoId}`)).length>0),ea=(J?.updatedCount||0)+(J?.updatedSeries.filter(e=>e.hasNewRelease&&!K.has(`${e.sourceKey}+${e.videoId}`)).length||0),{data:er=!1}=(0,P.useWatchRoomConfigQuery)(),{data:et}=(0,P.useServerConfigQuery)(),es=et?.downloadEnabled??!0,{tasks:el,setShowDownloadPanel:ed}=(0,N.useDownload)(),{invalidatePlayRecords:eo}=(0,P.useInvalidateUserMenuData)();(0,p.useEffect)(()=>{if(R||U||B||L||$){let e=document.body,a=document.documentElement,r=e.style.overflow,t=a.style.overflow;return e.style.overflow="hidden",a.style.overflow="hidden",()=>{e.style.overflow=r,a.style.overflow=t}}},[R,U,B,L,$]);let[ei]=(0,p.useState)(()=>Number(localStorage.getItem("continueWatchingMinProgress"))||5),[en]=(0,p.useState)(()=>Number(localStorage.getItem("continueWatchingMaxProgress"))||100),[ec]=(0,p.useState)(()=>"true"===localStorage.getItem("enableContinueWatchingFilter")),[ex,eg]=(0,p.useState)(""),[eu,em]=(0,p.useState)(""),[eh,ey]=(0,p.useState)(""),[ep,eb]=(0,p.useState)(!1),[ef,ev]=(0,p.useState)(""),{data:ek=null,isLoading:ej}=(0,P.useVersionCheckQuery)(),eN=!!z?.username&&"localstorage"!==F,{data:ew=[]}=(0,P.usePlayRecordsQuery)({enabled:eN,enableFilter:ec,minProgress:ei,maxProgress:en}),{data:eI=[]}=(0,P.useFavoritesQuery)({enabled:eN}),eS=(0,P.useChangePasswordMutation)();(0,p.useEffect)(()=>{q(!0)},[]),(0,p.useEffect)(()=>{W((0,v.getAuthInfoFromBrowserCookie)())},[]);let eP=async()=>{let e=!C;T(e),e&&X&&(console.log("æå¼èåæ¶å¼ºå¶å·æ°è¿½çªæ´æ°..."),Z())},eA=()=>{T(!1)},eC=async()=>{try{await fetch("/api/logout",{method:"POST",headers:{"Content-Type":"application/json"}})}catch(e){console.error("注é请æ±å¤±è´¥:",e)}window.location.href="/"},eT=()=>{O(!1)},eR=()=>{V(!1)},eE=()=>{H(!1)},eU=e=>{let[a,r]=e.split("+");return{source:a,id:r}},eM=e=>0===e.total_time?0:e.play_time/e.total_time*100,eD=()=>{M(!1),eg(""),em(""),ey(""),ev("")},e_=async()=>{(ev(""),ex)?eu?eu.length<6?ev("æ°å¯ç è³å° 6 ä½"):eu===ex?ev("æ°å¯ç ä¸å¾ä¸æ§å¯ç ç¸å"):eu!==eh?ev("两次è¾å
¥çå¯ç ä¸ä¸è´"):(eb(!0),eS.mutate({oldPassword:ex,newPassword:eu},{onSuccess:async()=>{M(!1),await eC()},onError:e=>{ev(e.message||"ç½ç»é误ï¼è¯·ç¨åéè¯")},onSettled:()=>{eb(!1)}})):ev("æ°å¯ç ä¸å¾ä¸ºç©º"):ev("æ§å¯ç ä¸å¾ä¸ºç©º")},eB=z?.role==="owner"||z?.role==="admin",eO=z?.role!=="owner"&&"localstorage"!==F,eL=z?.username&&"localstorage"!==F;console.log("UserMenu æ´æ°æéè°è¯:",{username:z?.username,storageType:F,watchingUpdates:J,showWatchingUpdates:X,hasActualUpdates:ee,totalUpdates:ea});let eV=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-transparent z-1000",onClick:eA}),(0,a.jsxs)("div",{className:"fixed top-14 right-4 w-56 bg-white dark:bg-gray-900 rounded-lg shadow-xl z-1001 border border-gray-200/50 dark:border-gray-700/50 overflow-hidden select-none",children:[(0,a.jsx)("div",{className:"px-3 py-2.5 border-b border-gray-200 dark:border-gray-700 bg-linear-to-r from-gray-50 to-gray-100/50 dark:from-gray-800 dark:to-gray-800/50",children:(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider",children:"å½åç¨æ·"}),(0,a.jsx)("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded-full text-xs font-medium ${"owner"===(z?.role||"user")?"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300":"admin"===(z?.role||"user")?"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300":"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300"}`,children:(e=>{switch(e){case"owner":return"ç«é¿";case"admin":return"管çå";case"user":return"ç¨æ·";default:return""}})(z?.role||"user")})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{className:"font-semibold text-gray-900 dark:text-gray-100 text-sm truncate",children:z?.username||"default"}),(0,a.jsxs)("div",{className:"text-[10px] text-gray-400 dark:text-gray-500",children:["æ°æ®åå¨ï¼","localstorage"===F?"æ¬å°":F]})]})]})}),(0,a.jsxs)("div",{className:"py-1",children:[(0,a.jsxs)("button",{onClick:()=>{T(!1),E(!0)},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(c.Settings,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"设置"})]}),X&&(0,a.jsxs)("button",{onClick:()=>{T(!1),O(!0)},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm relative",children:[(0,a.jsx)(t.Bell,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"æ´æ°æé"}),ee&&ea>0&&(0,a.jsx)("div",{className:"ml-auto flex items-center gap-1",children:(0,a.jsx)("span",{className:"inline-flex items-center justify-center w-5 h-5 text-xs font-bold text-white bg-red-500 rounded-full",children:ea>99?"99+":ea})})]}),X&&(0,a.jsxs)("button",{onClick:()=>{T(!1),V(!0)},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm relative",children:[(0,a.jsx)(n.PlayCircle,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"ç»§ç»è§ç"}),ew.length>0&&(0,a.jsx)("span",{className:"ml-auto text-xs text-gray-400",children:ew.length})]}),X&&(0,a.jsxs)("button",{onClick:()=>{T(!1),H(!0)},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm relative",children:[(0,a.jsx)(d.Heart,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"æçæ¶è"}),eI.length>0&&(0,a.jsx)("span",{className:"ml-auto text-xs text-gray-400",children:eI.length})]}),eB&&(0,a.jsxs)("button",{onClick:()=>{T(!1),e.push("/admin")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(x.Shield,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"管ç颿¿"})]}),eL&&(0,a.jsxs)("button",{onClick:()=>{T(!1),e.push("/play-stats")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(r.BarChart3,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:z?.role==="owner"||z?.role==="admin"?"ææ¾ç»è®¡":"个人ç»è®¡"})]}),(0,a.jsxs)("button",{onClick:()=>{T(!1),e.push("/release-calendar")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(s.Calendar,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"䏿 æ¥ç¨"})]}),(0,a.jsxs)("button",{onClick:()=>{T(!1),e.push("/tvbox")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(g.Tv,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"TVBox é
ç½®"})]}),er&&(0,a.jsxs)("button",{onClick:()=>{T(!1),e.push("/watch-room")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(m.Users,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"è§å½±å®¤"})]}),es&&(0,a.jsxs)("button",{onClick:()=>{ed(!0),eA()},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(l.Download,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"ä¸è½½ç®¡ç"}),el.filter(e=>"downloading"===e.status).length>0&&(0,a.jsxs)("span",{className:"ml-auto flex items-center gap-1",children:[(0,a.jsxs)("span",{className:"relative flex h-2 w-2",children:[(0,a.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 opacity-75"}),(0,a.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2 bg-green-500"})]}),(0,a.jsx)("span",{className:"text-xs text-green-600 dark:text-green-400",children:el.filter(e=>"downloading"===e.status).length})]}),el.length>0&&0===el.filter(e=>"downloading"===e.status).length&&(0,a.jsx)("span",{className:"ml-auto text-xs text-gray-400",children:el.length})]}),eO&&(0,a.jsxs)("button",{onClick:()=>{T(!1),M(!0),eg(""),em(""),ey(""),ev("")},className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(o.KeyRound,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"}),(0,a.jsx)("span",{className:"font-medium",children:"ä¿®æ¹å¯ç "})]}),(0,a.jsx)("div",{className:"my-1 border-t border-gray-200 dark:border-gray-700"}),(0,a.jsxs)("button",{onClick:eC,className:"w-full px-3 py-2 text-left flex items-center gap-2.5 text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 transition-[background-color] duration-150 ease-in-out text-sm",children:[(0,a.jsx)(i.LogOut,{className:"w-4 h-4"}),(0,a.jsx)("span",{className:"font-medium",children:"ç»åº"})]}),(0,a.jsx)("div",{className:"my-1 border-t border-gray-200 dark:border-gray-700"}),(0,a.jsx)("button",{onClick:()=>{_(!0),eA()},className:"w-full px-3 py-2 text-center flex items-center justify-center text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors text-xs",children:(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsxs)("span",{className:"font-mono",children:["v",k.CURRENT_VERSION]}),!ej&&ek&&ek!==j.UpdateStatus.FETCH_FAILED&&(0,a.jsx)("div",{className:`w-2 h-2 rounded-full -translate-y-2 ${ek===j.UpdateStatus.HAS_UPDATE?"bg-yellow-500":ek===j.UpdateStatus.NO_UPDATE?"bg-green-400":""}`})]})})]})]})]}),e$=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:eD,onTouchMove:e=>{e.preventDefault()},onWheel:e=>{e.preventDefault()},style:{touchAction:"none"}}),(0,a.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-md bg-white dark:bg-gray-900 rounded-xl shadow-xl z-1001 overflow-hidden",children:(0,a.jsxs)("div",{className:"h-full p-6","data-
1panel-content":!0,onTouchMove:e=>{e.stopPropagation()},style:{touchAction:"auto"},children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-6",children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-gray-800 dark:text-gray-200",children:"ä¿®æ¹å¯ç "}),(0,a.jsx)("button",{onClick:eD,className:"w-8 h-8 p-1 rounded-full flex items-center justify-center text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors","aria-label":"Close",children:(0,a.jsx)(h.X,{className:"w-full h-full"})})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:"æ§å¯ç "}),(0,a.jsx)("input",{type:"password",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent transition-colors bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400",placeholder:"请è¾å
¥æ§å¯ç ",value:ex,onChange:e=>eg(e.target.value),disabled:ep})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:"æ°å¯ç "}),(0,a.jsx)("input",{type:"password",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent transition-colors bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400",placeholder:"请è¾å
¥æ°å¯ç ï¼è³å°6ä½ï¼",value:eu,onChange:e=>em(e.target.value),disabled:ep})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:"确认å¯ç "}),(0,a.jsx)("input",{type:"password",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-green-500 focus:border-transparent transition-colors bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-500 dark:placeholder-gray-400",placeholder:"è¯·åæ¬¡è¾å
¥æ°å¯ç ",value:eh,onChange:e=>ey(e.target.value),disabled:ep})]}),ef&&(0,a.jsx)("div",{className:"text-red-500 text-sm bg-red-50 dark:bg-red-900/20 p-3 rounded-md border border-red-200 dark:border-red-800",children:ef})]}),(0,a.jsxs)("div",{className:"flex gap-3 mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:[(0,a.jsx)("button",{onClick:eD,className:"flex-1 px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700 rounded-md transition-colors",disabled:ep,children:"åæ¶"}),(0,a.jsx)("button",{onClick:e_,className:"flex-1 px-4 py-2 text-sm font-medium text-white bg-green-600 hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-600 rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:ep||!ex||!eu||!eh,children:ep?"ä¿®æ¹ä¸...":"确认修æ¹"})]}),(0,a.jsx)("div",{className:"mt-4 pt-4 border-t border-gray-200 dark:border-gray-700",children:(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 text-center",children:"ä¿®æ¹å¯ç åéè¦éæ°ç»å½"})})]})})]}),eH=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:eT,onTouchMove:e=>{e.preventDefault()},onWheel:e=>{e.preventDefault()},style:{touchAction:"none"}}),(0,a.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-4xl max-h-[90vh] bg-white dark:bg-gray-900 rounded-xl shadow-xl z-1001 flex flex-col",children:(0,a.jsxs)("div",{className:"flex-1 p-6 overflow-y-auto","data-
1panel-content":!0,style:{touchAction:"pan-y",overscrollBehavior:"contain"},children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-6",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("h3",{className:"text-xl font-bold text-gray-800 dark:text-gray-200",children:"æ´æ°æé"}),(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400",children:J&&J.updatedCount>0&&(0,a.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,a.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full animate-pulse"}),J.updatedCount,"鍿æ°é"]})})]}),(0,a.jsx)("button",{onClick:eT,className:"w-8 h-8 p-1 rounded-full flex items-center justify-center text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors","aria-label":"Close",children:(0,a.jsx)(h.X,{className:"w-full h-full"})})]}),(0,a.jsxs)("div",{className:"space-y-8",children:[!ee&&(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("div",{className:"text-gray-500 dark:text-gray-400 text-sm",children:"ææ æ°å§éæ´æ°"}),(0,a.jsx)("div",{className:"text-xs text-gray-400 dark:text-gray-500 mt-2",children:"ç³»ç»ä¼å®ææ£æ¥æ¨è§çè¿çå§éæ¯å¦ææ°éæ°æ´æ°"})]}),J&&J.updatedSeries.filter(e=>e.hasNewRelease&&!K.has(`${e.sourceKey}+${e.videoId}`)).length>0&&(0,a.jsxs)("div",{className:"mb-8",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:"ð¬ æ°ä¸æ "}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,a.jsxs)("span",{className:"text-sm text-green-500 font-medium",children:[J.updatedSeries.filter(e=>e.hasNewRelease&&!K.has(`${e.sourceKey}+${e.videoId}`)).length,"鍿°ä¸æ "]})]})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-4",children:J.updatedSeries.filter(e=>e.hasNewRelease&&!K.has(`${e.sourceKey}+${e.videoId}`)).map((e,r)=>(0,a.jsxs)("div",{className:"relative group/card",children:[(0,a.jsx)("div",{className:"relative group-hover/card:z-5 transition-all duration-300",children:(0,a.jsx)(I.default,{title:e.title,poster:e.cover,year:e.year,source:e.sourceKey,source_name:e.source_name,episodes:e.totalEpisodes,id:e.videoId,onDelete:void 0,type:e.totalEpisodes>1?"tv":"movie",from:"favorite",remarks:e.remarks,releaseDate:e.releaseDate})}),(0,a.jsx)("div",{className:"absolute -top-2 -right-2 bg-green-600 text-white text-xs px-2 py-0.5 rounded-md shadow-lg animate-pulse z-10 font-bold",children:"æ°ä¸æ "}),(0,a.jsx)("button",{onClick:a=>{a.preventDefault(),a.stopPropagation(),((e,a)=>{let r=`${e}+${a}`,t=new Set(K);t.add(r),Y(t);try{localStorage.setItem("moontv_dismissed_releases",JSON.stringify([...t]))}catch(e){console.error("ä¿å已忽ç¥å表失败:",e)}})(e.sourceKey,e.videoId)},className:"absolute -top-2 -left-2 bg-gray-800/80 hover:bg-gray-900 text-white rounded-full p-1 shadow-lg z-10 opacity-0 group-hover/card:opacity-100 transition-opacity",title:"ä¸åæé",children:(0,a.jsx)(h.X,{className:"w-3 h-3"})})]},`release-${e.title}_${e.year}_${r}`))})]}),J&&J.updatedSeries.filter(e=>e.hasNewEpisode).length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:"æ°éæ´æ°"}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"w-2 h-2 bg-red-500 rounded-full animate-pulse"}),(0,a.jsxs)("span",{className:"text-sm text-red-500 font-medium",children:[J.updatedSeries.filter(e=>e.hasNewEpisode).length,"é¨å§éææ´æ°"]})]})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-4",children:J.updatedSeries.filter(e=>e.hasNewEpisode).map((e,r)=>(0,a.jsxs)("div",{className:"relative group/card",children:[(0,a.jsx)("div",{className:"relative group-hover/card:z-5 transition-all duration-300",children:(0,a.jsx)(I.default,{title:e.title,poster:e.cover,year:e.year,source:e.sourceKey,source_name:e.source_name,episodes:e.totalEpisodes,currentEpisode:e.currentEpisode,id:e.videoId,onDelete:void 0,type:e.totalEpisodes>1?"tv":"",from:"playrecord"})}),(0,a.jsxs)("div",{className:"absolute -top-2 -right-2 bg-red-600 text-white text-xs px-2 py-0.5 rounded-md shadow-lg animate-pulse z-10 font-bold",children:["+",e.newEpisodes]})]},`new-${e.title}_${e.year}_${r}`))})]})]}),(0,a.jsx)("div",{className:"mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 text-center",children:"ç¹å»æµ·æ¥å³å¯è§çæ°æ´æ°çå§é"})})]})})]}),ez=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:eR,onTouchMove:e=>{e.preventDefault()},onWheel:e=>{e.preventDefault()},style:{touchAction:"none"}}),(0,a.jsx)("div",{className:"fixed inset-x-4 top-1/2 transform -translate-y-1/2 max-w-4xl mx-auto bg-white dark:bg-gray-900 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 z-1001 max-h-[80vh] overflow-y-auto",onClick:e=>e.stopPropagation(),children:(0,a.jsxs)("div",{className:"p-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsxs)("h3",{className:"text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2",children:[(0,a.jsx)(n.PlayCircle,{className:"w-6 h-6 text-blue-500"}),"ç»§ç»è§ç"]}),(0,a.jsx)("button",{onClick:eR,className:"p-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors",children:(0,a.jsx)(h.X,{className:"w-5 h-5"})})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-4",children:ew.map(e=>{let{source:r,id:t}=eU(e.key),s=(e=>
1{if(!J||!J.updatedSeries)return 0;let{source:a,id:r}=eU(e.key),t=J.updatedSeries.find(e=>e.sourceKey===a&&e.videoId===r&&e.hasNewEpisode);return t&&t.newEpisodes||0})(e);return(0,a.jsxs)("div",{className:"relative group/card",children:[(0,a.jsx)("div",{className:"relative group-hover/card:z-5 transition-all duration-300",children:(0,a.jsx)(I.default,{id:t,title:e.title,poster:e.cover,year:e.year,source:r,source_name:e.source_name,progress:eM(e),episodes:e.total_episodes,currentEpisode:e.index,query:e.search_title,from:"playrecord",type:e.total_episodes>1?"tv":"",remarks:e.remarks})}),s>0&&(0,a.jsxs)("div",{className:"absolute -top-2 -right-2 bg-red-600 text-white text-xs px-2 py-0.5 rounded-md shadow-lg animate-pulse z-10 font-bold",children:["+",s]}),eM(e)>0&&(0,a.jsx)("div",{className:"absolute bottom-2 left-2 right-2 bg-black/50 rounded px-2 py-1",children:(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)("div",{className:"flex-1 bg-gray-600 rounded-full h-1",children:(0,a.jsx)("div",{className:"bg-blue-500 h-1 rounded-full transition-all",style:{width:`${Math.min(eM(e),100)}%`}})}),(0,a.jsxs)("span",{className:"text-xs text-white font-medium",children:[Math.round(eM(e)),"%"]})]})})]},e.key)})}),0===ew.length&&(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)(n.PlayCircle,{className:"w-16 h-16 text-gray-300 dark:text-gray-600 mx-auto mb-4"}),(0,a.jsx)("p",{className:"text-gray-500 dark:text-gray-400 mb-2",children:"ææ éè¦ç»§ç»è§ççå
容"}),(0,a.jsx)("p",{className:"text-xs text-gray-400 dark:text-gray-500",children:ec?`è§çè¿åº¦å¨${ei}%-${en}%ä¹é´ä¸ææ¾æ¶é´è¶
è¿2åéçå
容伿¾ç¤ºå¨è¿é`:"ææ¾æ¶é´è¶
è¿2åéçææå
容é½ä¼æ¾ç¤ºå¨è¿é"})]}),(0,a.jsx)("div",{className:"mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 text-center",children:"ç¹å»æµ·æ¥å³å¯ç»§ç»è§ç"})})]})})]}),eW=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:eE,onTouchMove:e=>{e.preventDefault()},onWheel:e=>{e.preventDefault()},style:{touchAction:"none"}}),(0,a.jsx)("div",{className:"fixed inset-x-4 top-1/2 transform -translate-y-1/2 max-w-4xl mx-auto bg-white dark:bg-gray-900 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 z-1001 max-h-[80vh] overflow-y-auto",onClick:e=>e.stopPropagation(),children:(0,a.jsxs)("div",{className:"p-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsxs)("h3",{className:"text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2",children:[(0,a.jsx)(d.Heart,{className:"w-6 h-6 text-red-500"}),"æçæ¶è"]}),(0,a.jsx)("button",{onClick:eE,className:"p-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors",children:(0,a.jsx)(h.X,{className:"w-5 h-5"})})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-4",children:eI.map(e=>{let{source:r,id:t}=eU(e.key),s=e.remarks,l=!1;if(e.releaseDate){let a=new Date;a.setHours(0,0,0,0);let r=Math.ceil((new Date(e.releaseDate).getTime()-a.getTime())/864e5);if(r<0){let e=Math.abs(r);s=`已䏿 ${e}天`,e<=7&&(l=!0)}else 0===r?(s="仿¥ä¸æ ",l=!0):s=`${r}天å䏿 `}return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(I.default,{id:t,title:e.title,poster:e.cover,year:e.year,source:r,source_name:e.source_name,episodes:e.total_episodes,query:e.search_title,from:"favorite",type:e.total_episodes>1?"tv":"",remarks:s,releaseDate:e.releaseDate}),l&&(0,a.jsx)("div",{className:"absolute top-2 left-2 bg-orange-500 text-white text-xs font-bold px-3 py-1 rounded-md shadow-lg animate-pulse z-40",children:"æ°ä¸æ "})]},e.key)})}),0===eI.length&&(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)(d.Heart,{className:"w-16 h-16 text-gray-300 dark:text-gray-600 mx-auto mb-4"}),(0,a.jsx)("p",{className:"text-gray-500 dark:text-gray-400 mb-2",children:"ææ æ
1¶è"}),(0,a.jsx)("p",{className:"text-xs text-gray-400 dark:text-gray-500",children:"å¨è¯¦æ
页ç¹å»æ¶èæé®å³å¯æ·»å æ¶è"})]}),(0,a.jsx)("div",{className:"mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:(0,a.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 text-center",children:"ç¹å»æµ·æ¥å³å¯è¿å
¥è¯¦æ
页é¢"})})]})})]});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{onClick:eP,className:"relative w-10 h-10 p-2 rounded-full flex items-center justify-center text-gray-600 hover:text-blue-500 dark:text-gray-300 dark:hover:text-blue-400 transition-all duration-300 hover:scale-110 hover:shadow-lg hover:shadow-blue-500/30 dark:hover:shadow-blue-400/30 group","aria-label":"User Menu",children:[(0,a.jsx)("div",{className:"absolute inset-0 rounded-full bg-linear-to-br from-blue-400/0 to-purple-600/0 group-hover:from-blue-400/20 group-hover:to-purple-600/20 dark:group-hover:from-blue-300/20 dark:group-hover:to-purple-500/20 transition-all duration-300"}),(0,a.jsx)(u.User,{className:"w-full h-full relative z-10 group-hover:scale-110 transition-transform duration-300"})]}),(ek===j.UpdateStatus.HAS_UPDATE||ee&&ea>0)&&(0,a.jsx)("div",{className:"absolute top-[2px] right-[2px] w-2 h-2 bg-yellow-500 rounded-full animate-pulse shadow-lg shadow-yellow-500/50"})]}),C&&Q&&(0,b.createPortal)(eV,document.body),R&&Q&&(0,a.jsx)(S.SettingsPanel,{isOpen:R,onClose:()=>{E(!1)}}),U&&Q&&(0,b.createPortal)(e$,document.body),B&&Q&&(0,b.createPortal)(eH,document.body),L&&Q&&(0,b.createPortal)(ez,document.body),$&&Q&&(0,b.createPortal)(eW,document.body),(0,a.jsx)(w.VersionPanel,{isOpen:D,onClose:()=>_(!1)})]})}])},426015,e=>{"use strict";var a=e.i(228219),r=e.i(826771),t=e.i(802972),s=e.i(82515),l=e.i(590782),d=e.i(420465),o=e.i(381013),i=e.i(652419),n=e.i(419573),c=e.i(312614),x=e.i(502502);let g=[{version:"6.6.5",date:"2026-10-01",added:["ð HLS å¹¶ååçé¢åï¼æ°å¢ OptimizedHlsLoaderï¼ä¸»
1å è½½åæ¶é¢ååç» 2-3 个åçï¼ç¼å²é度æå 2-4 åï¼ç¼åä¸é 50MBï¼è¿ç»å¤±è´¥ 3 次èªå¨çæï¼è·³è¿ Byte-Range åçï¼ä¿ç广åè¿æ»¤ä¸æºç«æ è¯","ð ç»ä¸è®¤è¯æ¨¡åï¼æ°å¢ src/lib/auth.tsï¼ç»å½/注å/OIDC/Telegram çè·¯ç±ç»ä¸ä½¿ç¨å¯ç åå¸ï¼HMAC-SHA256ï¼æ ¡éªä¸ç¾åçæé»è¾"],changed:["ð¦ ä¾èµå级ï¼Next.js 16.1.0â16.3.6ãReact/React-DOM 19.2.3â19.3.0ãhls.js 1.7.1â1.7.3ã@mui/material åçº§è³ 9.4.0ã@tanstack/react-virtual åçº§è³ 3.14.13ãframer-motion åçº§è³ 13.2.0ãTanStack Query ç³»ååçº§è³ 5.103.1ï¼ç§»é¤æªä½¿ç¨çä¾èµï¼æ°å¢ GitHub Actions CI é
ç½®","â¡ ææ¾ä½éªä¼åï¼æµééæä¸ºåºå®å¹¶å worker poolï¼é¿å
æºæ°é夿¶å建大é hls å®ä¾ï¼Wake Lock éæ¾æ¶æºç»ä¸ç§»è³ video:ended äºä»¶","ð¥ ä¸è½½æ§è½ä¼åï¼å¤§äº 512KB ç TS åçå
æ¢æµå¤§å°åå 4 å Range å¹¶åä¸è½½åå¹¶ï¼çªç ´æºç«åè¿æ¥ééï¼ä¸æ¯æ Range çæºç«ç´æ¥å¤ç¨å®æ´ååºï¼fMP4 BYTERANGE åºæ¯è·³è¿åå"],fixed:["ð¬ è§é¢ä»£çææ¾ä¿®å¤ï¼ä¿®å¤å¼å¯è§é¢ä»£çï¼Cloudflare Workerï¼å m3u8 æ æ³ææ¾çé®é¢ââ代çå°åä¼è¢« ArtPlayer è¯¯å¤æ ¼å¼èéååç video ææ¾ï¼å¯¼è´ hls.js æªå¯å¨ä¸é级ç´è¿æ°¸ä¸è§¦åï¼ç°å¯¹ m3u8 åå
¶ä»£çå°åæ¾å¼æå®ææ¾ç±»åï¼æ¢é/æ¢æºæ¶åæ¥æ´æ°ï¼å¹¶å¨ hls.js æªå¯å¨æ¶å
åºé级为ç´è¿","ð¡ï¸ å®å
¨å åºï¼ä¿®æ¹å¯ç æ¥å£å¢å æ§å¯ç æ ¡éªåæ°å¯ç åæ³æ§æ£æ¥ï¼å®æ¶ä»»å¡å¢å 5 åéæå°æ§è¡é´éèæµï¼å¾ç代çå¢å MIME ç±»åæ£æ¥ï¼é²æ¢ä¸æ¸¸è¿åéå¾çå
容ï¼HTTPS é¨ç½²æ¶ Cookie Secure 屿§å¨æå¤æï¼admin ä¸ä»£çè·¯ç±æ¹ç¨å叿 ¡éªæ¿ä»£æææ¯å¯¹"]},{version:"6.6.4",date:"2026-08-23",added:["ð CORSAPI Cloudflare Worker 代çï¼Bangumi æ°æ®/å¾ç代çãTMDB 请æ±åæ°å¢ Cloudflare Worker å éé项ï¼VideoProxyConfig å¼å
³åæ¶å é m3u8/è§é¢ææ¾æµï¼Emby æºè·³è¿ï¼éèªå®ä¹é´æå¤´ï¼","ð¬ Bangumi æ°æ®æºæ°å¢æ¡è²éåç«ï¼bangumi.lolï¼é项","ð¡ï¸ VOD ææ¾å®¹éï¼ç´è¿å¤±è´¥æ¶èªå¨é级å°ç¬¬ä¸æ¹ HLS 代çï¼å½¢æç´è¿ -> Worker ç´è¿ -> ç¬¬ä¸æ¹ä»£çä¸çº§ fallback"],changed:["ð¦ ä¾èµå级ï¼hls.js 1.6.16â1.7.1ãTanStack Query/react-virtual ç³»ååçº§è³ 5.102.0/3.14.10ã@mui/material åçº§è³ 9.3.1ãsonner åçº§è³ 2.0.8ãipaddr.js åçº§è³ 2.5.0ï¼EdgeOne Node.js çæ¬è°æ´ä¸º 22.11.0 LTS","â¡ ææ¾ä½éªä¼åï¼å
³éç¹æåºæ¯ lowLatencyMode åå°å¡é¡¿ï¼æ¢æºå弹广¹ä¸ºè·éå®é
åæ¢å®æè§¦åï¼æ¢æºæ¶æ¸
餿§ææ¾è®°å½æ¹ä¸ºå¼æ¥æ§è¡ï¼é¿å
é»å¡ç¶ææ´æ°","ð æ§è½ä¼åï¼éå
³é®ç»ä»¶æ¹ä¸ºå¨æå¯¼å
¥åå°é¦å± JS ä½ç§¯ï¼ååºç¼åçç¥ç»åï¼public/privateï¼ï¼æç´¢åæºè¶
æ¶ä» 20s éè³ 10sï¼ç»å
¥å°çä½ç½®æ¥è¯¢æ¹ä¸ºå¼æ¥æ§è¡ä¸é»å¡ç»å½"],fixed:["ð¡ï¸ å®å
¨å åºï¼æ£æµå¼±é»è®¤å¯ç 并跳转è¦å页ï¼ä»£çè·¯ç±ååºä½å 大å°ä¸é鲿¢å
åæçï¼ééæºä¿åæ°å¢ SSRF æ ¡éªï¼ç»å½æ¥å£å æ´åç ´è§£éæµ","ð EdgeOne é¨ç½²ä¿®å¤ï¼ä¿®å¤é¦é¡µæªè·³è½¬ /login å middleware/proxy æå»ºå²çªï¼ä¿®å¤ Next.js 16 proxy.ts 导è´ç /warning 误éå®åï¼ä¿®å¤ node:sqlite 导è´çé¨ç½²å´©æº","ð¬ ææ¾ä¿®å¤ï¼æ¯æé m3u8 URL å¹¶ä¿®å¤åå代ç端å£é®é¢ï¼ä¿®å¤åäº«é¡µé¾æ¥è¢«è¯¯å¤ä¼å
äºçå® m3u8 龿¥çé®é¢ï¼ä¿®å¤ corsapi bangumi 代çè·¯å¾æ¼æ¥é误","ð± UI/交äºä¿®å¤ï¼ä¿®å¤ç»å½/注å页é误æç¤ºå¨ç»éä½ï¼ä¿®å¤ iOS æ²æµ¸å¼ç¶ææ æªçæé®é¢ï¼ä¿®å¤åçä¸è½½å¤±è´¥æ¶ä»è¯¯æ¥âä¸è½½å®æâçé®é¢","ð§ å
¶ä»ä¿®å¤ï¼Spider JAR md5 éå®çæ¬å¹¶å å¹¶åå»éï¼é¿å
TVBox æ ¡éªä¸ä¸è´"]},{version:"6.6.3",date:"2026-06-26",added:["ð Nyaa æç´¢ä¸ä¸è½½å¯¼åºï¼æ¯æ Nyaa ç§åç«æç´¢åä¸è½½é¾æ¥å¯¼åº","ð PanSou è®¤è¯æ¯æï¼æ°å¢çæèº«ä»½è®¤è¯ï¼æ¯æéè¦ç»å½çç§ææç´¢æ¥å£","ð¼ï¸ Bangumi å¾ç代çï¼æ°å¢ Bangumi å°é¢å¾ç代çï¼æ¯æç¨æ·èªéä»£çæ¹å¼","ð HomeBanner TMDB Logoï¼é¦é¡µ HeroBanner æ°å¢ TMDB logo å±ç¤ºåæ¤éå é¤åè½","ðº Bangumi éæå¢å¼ºï¼ç®¡çåç¼å管ç卿°å¢ Bangumi ç¬ç«ç¼ååç±»ï¼ç§»å¨ç«¯æä½é¢æ¿å±ç¤ºçªå§è¯¦æ
","ð EdgeOne é¨ç½²æ¯æï¼æ°å¢è
¾è®¯äº EdgeOne é¨ç½²æ¹æ¡åæå»ºèæ¬","ð¡ TVBox 代çå¢å¼ºï¼æ°å¢ TVBox/Video 代ç端ç¹é
ç½®ãdetail æ¥å£åå§éæ 颿 ¼å¼å","ð¬ è§é¢åè¾¨çæ¨æä¸çéï¼èªå¨æ¨æè§é¢æµå辨çå¹¶æ¯ææå辨ççé","ð ç¿»è¯æä»¶æ£æµè¦åï¼æ£æµå°æµè§å¨ç¿»è¯æä»¶æ¶å¼¹åºå好æç¤º Toast","ð èªå®ä¹ X-Emby-Authorization 请æ±å¤´ï¼æ¯æç¨æ·èªå®ä¹ Emby é´æè¯·æ±å¤´","ðï¸ Next.js æå»ºé¶æ®µç¯å¢æ å¿ï¼standalone æ¨¡å¼æ°å¢æå»ºé¶æ®µç¯å¢åéæ è®°"],changed:["ð¦ @mui/material åçº§è³ 9.1.2","ð¦ @tanstack/react-virtual åçº§è³ 3.14.4","ð¦ TanStack Query åçº§è³ 5.101.0"],fixed:["ð¡ï¸ ç¿»è¯æä»¶ DOM å´©æºé²æ¤ï¼ä¸ºé¡µé¢æ ¹å®¹å¨å `translate='no'` å¹¶ç¨ DOMErrorBoundary å
裹å
容ï¼å¤å±é²æ¢æµè§å¨ç¿»è¯æä»¶ä¿®æ¹ DOM å¯¼è´ React å´©æºï¼ErrorBoundary æ°å¢ removeChild é误èªå¨æ¢å¤","ð Bangumi CN åºä¿®å¤ï¼ä¿®å¤ä¸å½åº API è¢«æ¦æªå¯¼è´é¦é¡µå´©æºé®é¢ï¼æ°å¢å¤å±æºè½é级çç¥ï¼ä¿®å¤ useState åå§å¼ãlocalStorage éç½®å管ç颿¿ç¼ºå°é»è®¤ cmliussss çé®é¢ï¼ä¿®å¤æå¡ç«¯æ¥å API è¿åéæ°ç»æ¶çé误","ðº çå§æ°æ®æºä¿®å¤ï¼è¿ç§»çå§ API æ°æ®æºå¹¶æ¯æååç±»ï¼é¦é¡µçé¨çå§è¿å空æ¶èªå¨åæ¢è³ç¬¬ä¸ä¸ªé空ååç±»ï¼å½ååç±»æ ç»ææ¶èªå¨è·³è½¬ä¸ä¸åç±»","ð è±ç£æ°æ®æ¸
çï¼è¿æ»¤æ¨è API è¿åç广ååææ¾å表æ¡ç®ï¼è¿æ»¤åè¡¨ä¸ null/undefined æ¡ç®é²æ¢ renderItem å´©æº","â© å¿«è¿/å¿«é徿 æ¹åä¿®å¤ï¼ä¿®å¤ææ¾å¨å¿«è¿å¿«éæé®å¾æ æ¹åé误","ð¼ï¸ å辨çä¸ TMDB Logo ä¿®å¤ï¼ä¿®å¤ä¸æ¸¸è§£æå±åè¾¨çæ æ³¨é®é¢ï¼ä¼å TMD
1B logo 卿·±è²èæ¯çæ¾ç¤ºææï¼é²æ¢æº¢åº","ð¨ ææ¾å¨é宿¨¡å¼ï¼é宿¨¡å¼ä¸å½»åºéèæ§å¶æ èæ¯","â¡ å¡çç¹å»æ§è½ä¼åï¼ä¼åå¡çç¹å»ååºé度并å 强 DOM é误追踪","ð§ 代ç端å£è½¬åä¿®å¤ï¼ä¿®å¤ä»£çå±ç«¯å£è½¬åé®é¢"]},{version:"6.6.2",date:"2026-05-30",added:["ð¬ PlayInfoPanel Hero Bannerï¼æ°å¢ TMDB backdrop èæ¯å¾ãlogo å¾çãæµ·æ¥ãè¯åãç®ä»å±ç¤ºï¼æ¯æå¤å£å¾½ç« ï¼å
±Xå£ï¼","ð è±ç£å¿«éä¿¡æ¯é¢æ¿ï¼æ°å¢è±ç£ quick-info å suggest APIï¼MobileActionSheet æ¥å
¥è±ç£è¯¦æ
","ð è±ç£ä»£çæ°å¢ cmliussss ç»ä¸ CDN é项","ðï¸ TMDB æå¡ç«¯ç¼åï¼TMDB backdrop API æ°å¢ db.getCache/setCache æå¡ç«¯ç¼åï¼tmdb- åç¼ï¼24å°æ¶ TTLï¼ï¼ä¸ç®¡çåç¼å管çéæ"],changed:["ð¬ PlayInfoPanel éæï¼ä»¥ TMDB backdrop 为主è§è§ï¼TMDB logo/poster/è¯å/ç®ä»ä¼å
å±ç¤ºï¼æ¶èæé®ç§»è³ç®ä»ä¸æ¹","ð TMDB æç´¢ä¼åï¼èªå¨æ¸
çæ é¢ä¸çã第Xå£ããSeason XããS1ãã年份ãçåç¼ï¼ç§»é¤å¹´ä»½åæ°é¿å
年份ä¸ä¸è´å¯¼è´æç´¢å¤±è´¥ï¼æ ¹æ® stypeï¼movie/tvï¼åªæå¯¹åºç«¯ç¹ï¼é¿å
çµè§å§æå°ååçµå½±","ð TMDB ä¸è±ç£æ°æ®è·åå®å
¨ç¬ç«ï¼ç§»é¤ loadingMovieDetails å®å«ï¼ä¸¤è
å¹¶è¡å è½½äºä¸é»å¡","ðº ç´æé¢éå±å¼è§¦ååºåï¼ç¼©å°ä¸ºä»
chevron æé®è§¦åå±å¼ï¼é¿å
误触"],fixed:["ðº ç´æé误è¦çï¼å¨ artplayer ready äºä»¶æ¸
é¤ unsupportedTypeï¼é¢éæ
¢éè¿æ¥æååä¸åæ¾ç¤ºé误è¦çå±","ð§ ç´æé¢éå¥åº·æ£æ¥ï¼ä¿®å¤ directPlaybackEnabled æªå å
¥ useCallback ä¾èµå¯¼è´çé®é¢","⡠管çåææ¾ç»è®¡ APIï¼å¹¶è¡åæ¯ç¨æ·æ°æ®åºæ¥è¯¢ï¼æåæ§è½","ð± ç»å
¥è¯¦æ
å¡çï¼ä¿®å¤ç§»å¨ç«¯å°åºå¾½ç« 溢åºé®é¢ï¼ä¼åç»å
¥ IP/设å¤ä¿¡æ¯ååºå¼å¸å±"]},{version:"6.6.1",date:"2026-05-29",added:["ð ç»å
¥è¿½è¸ªå¢å¼ºï¼è®°å½ç¨æ·æ¯æ¬¡ç»å
¥ç客æ·ç«¯IPãip-api.com å½å±å°ï¼åå¸/ç份/å½å®¶ï¼ã设å¤ç±»åï¼ææº/å¹³æ¿/æ¡é¢ï¼ãæµè§å¨åæä½ç³»ç»ï¼æ éå¤é¨ä¾èµæAPI Keyï¼è¦ç Redis/Upstash/SQLite ä¸ç§åå¨å端","ðï¸ SQLite åå¨åç«¯ï¼æ°å¢ SQLite åå¨å®ç°ï¼SqliteStorageï¼ï¼æ¯ææ éå¤é¨æ°æ®åºçæ¬å°é¨ç½²","ð è·¨æºè·³è¿é
ç½®å
±äº«ï¼æ°å¢ identityKey æ¯æï¼å
许ä¸åè§é¢æºå
±äº«åä¸å¥è·³è¿é
ç½®","ð å
¨å±æ¶éï¼å
¨å±ææ¾æ¨¡å¼ä¸æ¾ç¤ºå®æ¶æ¶éè¦çå±","ð¼ï¸ è¿åº¦æ¡ç¼©ç¥å¾é¢è§ï¼éæ artplayer-plugin-auto-thumbnailï¼è¿åº¦æ¡æ¬åæ¶æ¾ç¤ºè§é¢å¸§é¢è§","ð ç¨æ·ç®¡çæç´¢è¿æ»¤ï¼ç®¡çåç¨æ·ç®¡çè¡¨æ ¼æ°å¢ç¨æ·åæç´¢è¿æ»¤åè½","ð VirtualGrid æ»å¨ä½ç½®æä¹
åï¼è·¯ç±åæ¢åæ¢å¤æ»å¨ä½ç½®ï¼æ¯æè±ç£/æç´¢/çå§/Emby å个å表页ï¼30åéTTL","â¡ ChunkLoadError èªå¨æ¢å¤ï¼é¨ç½²åæ§ chunk å¤±ææ¶èªå¨è§¦å忬¡ç¡¬å·æ°ï¼10ç§TTL鲿¢æ é循ç¯","ð¡ï¸ å¯ä¿¡ç½ç»è®¿å®¢ç®¡çåè®¿é®æ¦æªï¼å¯ä¿¡ç½ç»èªå¨ç»å
¥ç访客å¯éæ©æ§å±è½ /admin 访é®ï¼å¯ç ç»å
¥çç«é¿ä¸åå½±å","ð Bangumi API 代çé
ç½®ï¼ç®¡çå颿¿åç¨æ·è®¾ç½®åå¯é
ç½® Bangumi API 代çï¼server/cmliussss/èªå®ä¹ï¼ï¼ç¨æ·è®¾ç½®ä¼å
","ð¡ DNS ç¼åä¸éè¯æºå¶ï¼æ°å¢ DNS ç¼åå请æ±éè¯æºå¶ï¼æåè§é¢æºè¿æ¥ç¨³å®æ§","𧪠è§é¢æºæµéä¸ç¶ææä¹
åï¼ä¼åè§é¢æºæµéæåºé»è¾ï¼source-browser 页颿°å¢ç鿡件ååç±»ç¶ææä¹
å"],changed:["ð³ Docker åºç¡éåå级ï¼ä» node:20-alpine åçº§è³ node:22-alpineï¼Node 22 LTSï¼SQLite DatabaseSync æ éå®éªæ§æ å¿ï¼","ð¦ @tanstack/react-query åçº§è³ 5.100.14ï¼TrustedNetworkConfig è¿ç§»è³ TanStack Query"],fixed:["ð¬ ç´è¿æ¨¡å¼ä¿®å¤ï¼ä¿®å¤ HLS loader 读åé误ç localStorage keyï¼æ·»å isLunaProxyUrl() å®å«é²æ¢ moontv-source åæ°æ³¨å
¥å¤é¨ CDN URLï¼ç´è¿æ¨¡å¼ä¸è·³è¿å¥åº·æ£æ¥","â¡ ææ¾éçä¿®å¤ï¼ä¿®å¤åæ¢è§é¢æºæå§éæ¶ææ¾éç被éç½®çé®é¢","ð¬ ææ¾å¨é宿¨¡å¼ä¿®å¤ï¼ç§»é¤é宿¨¡å¼ä¸çèæ¯æ¸åï¼ä¿®å¤æµ®å¨å¿«è¿æé®å¨é宿¶ä»æ¾ç¤ºçé®é¢","ð source-browser URL ç¶æä¿®å¤ï¼ä¿®å¤ URL åæ°ä¸ç¶æçåæ¥å¾ªç¯ï¼æ£ç¡®ä» URL æ¢å¤æ¥æºååç±»ï¼ä¿®å¤åç±»é«äº®ç±»åæ¯è¾åå è½½æ¶åç±»åæ°ä¸¢å¤±é®é¢","ð¡ï¸ æµè§å¨ç¿»è¯æä»¶å´©æºé²æ¤å åºï¼å¨ææé¡µé¢æ ¹å®¹å¨å translate='no'ï¼é²æ¢ Safari/Chrome ç¿»è¯æä»¶ä¿®æ¹ DOM å¯¼è´ React removeChild å´©æºï¼è¡¥å
layout.tsx ç html çº§é²æ¤ï¼","ð§ DOM èç¹å®å«ï¼ä¿®å¤ undefined å表åè¿æ DOM èç¹å¼ç¨å¯¼è´çå´©æº"]},{version:"6.6.0",date:"2026-05-09",added:["ð å¤é¨æµéçæ§ä¼åï¼è¿æ»¤æ æååï¼0.0.0.0ãlocalhostãå
ç½IPï¼æ¾ç¤º","ð 卿Cronéå¼ï¼åºäºå®é
ç¨æ·æ°å¨æè®¡ç®æ¥è¯¢éå¼","ð SSRFä¿æ¤ç»è¿ï¼ä¸ºç§æé¨ç½²æ·»å DISABLE_SSRF_PROTECTIONç¯å¢åé","ð¯ å§ééæ©å¨ï¼é度æµè¯åèªå¨æé度æåº","â±ï¸ APIç¼åç»ä¸ï¼ç»ä¸ææAPIç¼åæ¶é¿ä¸º2å°æ¶"],changed:["â¡ Cronæ§è½ä¼åï¼éè¿è¿ç¨çº§ç¼ååå°æ°æ®åºæ¥è¯¢94%ï¼466â28-30æ¥è¯¢ï¼","ð§ Croné
ç½®éä¸åï¼å建DEFAULT_CRON_CONFIGä½ä¸ºåä¸é
ç½®æº","ð Croné»è®¤å¼ä¼åï¼æ¹å¤ç大å°éè³50æ¡ï¼æ´»è·çªå£ç¼©çè³21天","ð TanStack Queryè¿ç§»ï¼YouTubeåBilibiliæç´¢è¿ç§»å°TanStack Query","ð è±ç£/çå§é¡µé¢ä¼åï¼è¿ç§»å°useInfiniteQuery + èææ»å¨"],fixed:["ð SSRé误å®å
¨ä¿®å¤ï¼ä¿®å¤æææå¡ç«¯æ¸²ææ¶è®¿é®æµè§å¨API导è´çå´©æºï¼utils.tsãdownload-idb.tsãstream-saver.tsãAnimatedCardGrid.tsxãHomeClient.tsxãHeroBanner.tsxï¼","ð æ°æ®è¿ç§»å¢å¼ºï¼APIè¯»åæ¶èªå¨å级æ§çç¨æ·æ°æ®å段","ð¨ UIä¼åï¼ææ¾æé®æ¬åæ¹ä¸ºè½®å»æ ·å¼ï¼æ©å¤§æ§å¶æ æ¬ååºå","ð æ°æ®å¯¼å
¥å¯¼åºï¼ä¿®å¤æéåè§é¢æºå¯¼å
¥å¯¼åºæ¶ç¼ºå¤±å段","ð è¿½çªæ´æ°ä¿®å¤ï¼ä¿®å¤ä¾èµæ¥è¯¢å è½½é»è¾åèªå¨å·æ°åè½","ð è±ç£æ éå è½½ä¿
1®å¤ï¼éè¿è®°å¿åendReachedåè°é²æ¢æ éå è½½"]},{version:"6.5.3",date:"2026-05-07",added:["ð¡ï¸ SSRFä¿æ¤éæï¼å°SSRFä¿æ¤éæå°ä»£ç端ç¹ï¼å¢å¼ºå®å
¨æ§","ð æä¹
å导èªShellï¼å®ç°éµå¾ªNext.jsæä½³å®è·µçæä¹
å导èªShell","â¡ è·¯ç±ä¼åï¼æ·»å é¢ååå è½½ç¶æçè·¯ç±ä¼å","ð¯ 请æ±å»éåè¶
æ¶ä¿æ¤ï¼æ·»å 请æ±å»éåè¶
æ¶ä¿æ¤æºå¶","ðï¸ TanStack Queryç¼åä¼åï¼ä½¿ç¨TanStack Queryä¼åæ°æ®æºæµè§å¨ç¼å","ð¨ å§ééæ©å¨å¢å¼ºï¼æ·»å æå¨é度æµè¯åç¶æå¾½ç« å°å§ééæ©å¨"],changed:["ð¦ ä¾èµæ´æ°ï¼æ´æ°ä¾èµå°ææ°çæ¬","ð TanStack Queryè¿ç§»ï¼å°æ°æ®è·ååç¼åè¿ç§»å°TanStack Query","⡠导èªä¼åï¼åå°å¯¼èªè¯·æ±é£æ´å¹¶ä¼åç¼å"],fixed:["ð è¿½çªæ´æ°åè½å®æ´è¿åï¼100%è¿åæ§watching-updates.tsé»è¾å°TanStack Queryå®ç°ï¼å
æ¬getOriginalEpisodesæ°æ®åºé读ãprotectedTotalEpisodesä¿æ¤æºå¶ãæ°ä¸æ æ£æ¥ãæåºé»è¾ãlocalStorageæä¹
åãCDNç¼åç»è¿çææåè½","ð§ 代çTavily APIä½¿ç¨æ¥è¯¢ï¼éè¿å端代çTavily APIä½¿ç¨æ¥è¯¢ä»¥é¿å
WAF黿¢","ð¡ï¸ æ¹è¿Tavily使ç¨APIé误å¤çï¼æ¹è¿WAF黿¢çé误å¤ç","ðï¸ å¯å¨æ¶é建缺失çè§é¢å
æ°æ®ï¼é²æ¢è¯¯å é¤ï¼ä¼å
ä½¿ç¨æ¬å°æä»¶ç¼å","ð¨ ç§»å¨ç»è´¨å¾½ç« ä½ç½®ï¼å°ç»è´¨å¾½ç« ç§»å°å³ä¸è§ï¼é¿å
ä¸å½åæºæ ç¾éå ","ð¥ï¸ ä¿®å¤ç»å½/注å页é¢å
¨å±æ¾ç¤ºï¼ä½¿ç¨fixedå®ä½å®ç°å
¨å±æ¾ç¤ºï¼ä¿®å¤z-indexé®é¢","ð è·³è¿è®¤è¯é¡µé¢çRouteWarmupï¼é²æ¢ç»å½å¹²æ°","â
æ·»å RouteWarmupè®¤è¯æ£æ¥ï¼æ·»å è®¤è¯æ£æ¥å°RouteWarmup","ð¬ ä¿®å¤è·¯ç±è¿æ¸¡çå è½½åéï¼å°CinematicLoadingFallbackå
è£
å¨fixed容å¨ä¸","ð± æ·»å play-stats页é¢åºé¨å
è¾¹è·ï¼ä¸ºç§»å¨å¯¼èªæ·»å åºé¨å
è¾¹è·ï¼å¹é
admin页颿¨¡å¼"]},{version:"6.5.2",date:"2026-05-06",added:["ð é¢åçURLçå½å¨ææ¶é´æ³æ¥å¿ï¼æ·»å 详ç»çæ¶é´æ³æ¥å¿è¿½è¸ªé¢åçURLçè·åãç¼ååå·æ°è¿ç¨","ð 客æ·ç«¯é误æ¥å¿ç³»ç»ï¼å®ç°å®¢æ·ç«¯å°æå¡ç«¯çé误æ¥å¿è®°å½åè½ï¼æ¯ææ é认è¯è®¿é®","ð¥ å´©æºçæ§ç³»ç»ï¼æ·»å 宿´çå´©æºçæ§ç³»ç»ï¼æ¯æç§»å¨ç«¯ååºå¼UI","ð¡ï¸ å
¨å±é误边çï¼å®ç°å
¨é¢çå´©æºçæ§ä¸å
¨å±é误边ç","ðï¸ å´©æºæ¥å¿æ°æ®åºåå¨ï¼å°å´©æºæ¥å¿è¿ç§»å°æ°æ®åºåå¨ï¼æ¯æèªå¨è¿ææ¸
ç","ðª è§å½±æ¿è§£æ£æé®ï¼ä¸ºæ¿ä¸»æ·»å æ¿é´å表ä¸çè§£æ£æ¿é´æé®","ð¥ ä¸è½½æºæ ååï¼æ·»å ä¸è½½æºæ åååè½å¹¶å¢å¼ºä»£çé误å¤ç","ð¬ M3U8代çReferer/Origin转åï¼æ·»å RefereråOrigin头转åå°M3U8代ç以æ¹åå
¼å®¹æ§","â±ï¸ æå¡ç«¯å¼ºå¶å·æ°å·å´ï¼æ·»å æå¡ç«¯å¼ºå¶å·æ°å·å´æºå¶é²æ¢é¢ç¹è¯·æ±"],changed:["ð¬ 使ç¨å½±çIDæ¿ä»£è§é¢IDä½ä¸ºè§é¢ç¼åKeyï¼ç¡®ä¿åä¸é¨å½±ççé¢åçæ°¸è¿ä½¿ç¨åä¸ä¸ªç¼åæä»¶ï¼movie_{doubanId}æ ¼å¼ï¼ï¼å³ä½¿è±ç£è¿åä¸åçè§é¢ID","ðï¸ æ¿æ¢TTLè§é¢ç¼å为LRU管çï¼ç§»é¤12å°æ¶TTLæºå¶ï¼æ¹ç¨LRUï¼æè¿æå°ä½¿ç¨ï¼çç¥ç®¡çè§é¢ç¼åï¼æå¤ä¿ç10个è§é¢æä»¶ï¼æ»å¤§å°éå¶2GB","ð ç§»é¤localStorageé¢åçURLä¾èµï¼å®å
¨ç§»é¤localStorageç¼åï¼ç»ä¸ä½¿ç¨React Queryå
åç¼å + Rediså
¨å±ç¼å","â¡ ä¼åå»¶è¿å è½½çç¥ï¼ä»
é¢å è½½å½ååä¸ä¸å¼ å¹»ç¯çï¼ä»3å¼ åå°å°2å¼ ï¼ï¼åå°ä¸å¿
è¦çAPI请æ±","ð¦ ç§»é¤Puppeteerä¾èµï¼ç§»é¤Puppeteerä¾èµä»¥åå°æå
ä½ç§¯","ð¦ å级@mui/materialè³v9.0.0ï¼ä»æ§çæ¬å级å°v9.0.0","ð§ å级GitHub Actionsè³Node.js 24ï¼å级GitHub Actionså°Node.js 24å
¼å®¹çæ¬ï¼å¼ºå¶ä½¿ç¨Node.js 24"],fixed:["ð§ 使ç¨å
±äº«dbå®ä¾å é¤video-proxyä¸çRedisç¼åï¼ä¿®å¤ç¼åå é¤ä½¿ç¨é误çRediså®ä¾å¯¼è´å é¤å¤±è´¥çé®é¢","ðï¸ è§é¢æä»¶ç¼ºå¤±ä¸URLè¿ææ¶æ¸
é¤Redis URLç¼åï¼å½è§é¢URLè¿å403ä¸è§é¢æä»¶ä¸å卿¶ï¼èªå¨æ¸
é¤Redisä¸çè¿æURLç¼åï¼ä¸æ¬¡è¯·æ±ä¼è·åæ°URL","ð ä¼å
æ£æ¥æä»¶å卿§ï¼ç¼ºå¤±å
æ°æ®æ¶èªå¨é建ï¼ä¿®å¤Rediséå¯åå
æ°æ®ä¸¢å¤±ä½æä»¶åå¨å¯¼è´çç¼åæªå½ä¸é®é¢ï¼ç°å¨ä¼èªå¨é建å
æ°æ®","ð¥ URLè¿ææ¶è¿åç¼åè§é¢æä»¶èéå é¤ï¼å½è§é¢URLè¿å403æ¶ï¼ä¼å
æ£æ¥è§é¢æä»¶æ¯å¦åå¨ï¼å¦æåå¨åè¿åç¼åæä»¶ï¼é¿å
ä¸å¿
è¦çéæ°ä¸è½½","ð 鲿¢æ érefresh-trailer请æ±ï¼å®ç°è¯·æ±å»éæºå¶ï¼é²æ¢åä¸ä¸ªIDçéå¤è¯·æ±å¯¼è´APIéæµ","ðï¸ ç§»é¤çæé误douban_æ ¼å¼çæ§ç¼åè¿ç§»ï¼å é¤å转è¿ç§»å½æ°ï¼é²æ¢å°æ£ç¡®çmovie_æ ¼å¼è½¬æ¢åé误çdouban_æ ¼å¼","â±ï¸ 鲿¢è§é¢ç¼åTTLå¨è®¿é®æ¶éç½®ï¼ç§»é¤è®¿é®æ¶éç½®TTLçé»è¾ï¼é¿å
çé¨è§é¢æ°¸ä¹
å ç¨ç¼å空é´","ð 强å¶å·æ°åæ£æ¥è§é¢æä»¶ç¼åï¼å¨å¼ºå¶å·æ°åå
æ£æ¥è§é¢æä»¶æ¯å¦åå¨ï¼å¦æåå¨åè·³è¿å¼ºå¶å·æ°ï¼é¿å
ä¸å¿
è¦çAPI请æ±","ð¨ è®°å¿åenableVideo鲿¢HeroBanneréæ°æè½½ï¼ä½¿ç¨useMemoä¼åenableVideoï¼é²æ¢ä¸å¿
è¦çç»ä»¶éæ°æ¸²æ","ð¬ è®°å¿åHeroBanner items鲿¢ä¸å¿
è¦çéæ°æ¸²æï¼ä½¿ç¨useMemoä¼åHeroBanner itemsï¼åå°ç»ä»¶éæ°æ¸²æ","ð æä¹
å强å¶å·æ°å·å´è·¨ç»ä»¶éæ°æè½½ï¼ä¿®å¤å¼ºå¶å·æ°å·å´å¨ç»ä»¶éæ°æè½½å丢失çé®é¢","ð« æ·»å å
¨é¢çéçéå¶é²æ¢è±ç£APIèæµï¼å®ç°å¤å±éçéå¶æºå¶é²æ¢è±ç£APIéæµ","ð æ·»å 请æ±å»é鲿¢è±ç£APIéçéå¶ï¼å®ç°è¯·æ±å»éæºå¶é²æ¢éå¤è¯·æ±","ðª ç¡®ä¿HomeClientä¸Hookè°ç¨é¡ºåºä¸è´ï¼ä¿®å¤Hookè°ç¨é¡ºåºä¸ä¸è´å¯¼è´çReacté误","ð¬ æ·»å CinematicLoadingFallbackå°é¦é¡µSuspenseè¾¹çï¼ä¿®å¤é¦é¡µå è½½æ¶çSuspenseè¾¹çé®é¢","ð§ ç¨
1³å®useHomePageQueriesä¸çconfig对象å¼ç¨ï¼é²æ¢Hook计æ°ä¸å¹é
é®é¢","ð¥ æ·»å 详ç»çè§é¢é误æ¥å¿å¹¶è¿æ»¤éç½ç»éè¯¯ï¼æ¹è¿è§é¢é误æ¥å¿è®°å½åè¿æ»¤","ð æ·»å è§é¢onError鲿åkeyä¼åï¼ä¼åè§é¢é误å¤çåç»ä»¶key管ç"]},{version:"6.5.1",date:"2026-05-04",added:["ðï¸ Rediså
¨å±ç¼åé¢åçURLï¼å®ç°åºäºRedisçå
¨å±ç¼åæºå¶ï¼åå°å¯¹è±ç£APIçè¯·æ±æ¬¡æ°ï¼ææç¨æ·å
±äº«ç¼åï¼æ¯æKvrocksåUpstashï¼24å°æ¶TTL"],changed:[],fixed:["ð ä¿®å¤å è½½å±å¹å¯¼è´ç»ä»¶éå¤æè½½é®é¢ï¼å°CinematicLoadingFallback仿¿æ¢æ´ä¸ªé¡µé¢æ¹ä¸ºoverlayè¦çæ¹å¼ï¼é²æ¢HeroBannerçç»ä»¶å¨loadingæ¶è¢«å¸è½½åéæ°æè½½","ð ä¿®å¤æ étrailer URL请æ±é®é¢ï¼è§£å³å ç»ä»¶é¢ç¹mount/unmount导è´çç¯ç请æ±è±ç£APIé®é¢ï¼é¿å
IP被å°","ð« 鲿¢å¤±è´¥é¢åçæ ééè¯ï¼ä¸ºæ²¡æé¢åççè§é¢æ·»å NO_TRAILERæ è®°ï¼24å°æ¶åéè¯ï¼ï¼ä¸ºæå¡ç«¯é误添å FAILEDæ è®°ï¼5åéåéè¯ï¼ï¼é¿å
éå¤è¯·æ±å¯¼è´APIéæµ","â±ï¸ éå¶é¢åç请æ±é¢çï¼æ¯æ¬¡æå¤è¯·æ±3个é¢åçï¼è¯·æ±ä¹é´å»¶è¿2ç§ï¼é²æ¢çæ¶é´å
è¿ç»è¯·æ±è§¦åè±ç£APIéæµ","ð§ ä¿®å¤æææ¨¡åçmount/unmounté®é¢ï¼ç§»é¤HeroBanneråå³å°ä¸æ 模åç!loadingæ¡ä»¶ï¼ä½¿ç¨useRefä¿çæ°æ®é¿å
refetchæ¶ç»ä»¶å¸è½½ï¼å½»åºè§£å³éå¤è¯·æ±é®é¢","ð¬ ä¼åç»å½æ³¨å页é¢ä½éªï¼è½¬æ¢æ³¨å页é¢ä¸ºæå¡ç«¯ç»ä»¶ï¼æ¶é¤ç½å±éªçï¼æ·»å æ¸åèæ¯å°å è½½ç¶æï¼ä¼å页é¢å¯¼èªè¿æ¸¡ææ","ð¨ ä¿®å¤Bilibiliç»è®¡æ¾ç¤ºï¼å½æ°å¼ä¸ºé¶æ¶éèBilibiliç»è®¡ä¿¡æ¯ä»¥æ¹åç¨æ·ä½éª"]},{version:"6.5.0",date:"2026-05-02",added:["ð¬ çµå½±ä¸»é¢å è½½å±å¹ï¼å®ç°çµå½±ä¸»é¢å è½½ä½éªï¼å
å«Bingæ¯æ¥å£çº¸èæ¯ãè¶çå·è½´å¨ç»ãæè½¬è¶£å³æ¶æ¯ãç§»å¨ç«¯ååºå¼è®¾è®¡","ðº Bilibiliæç´¢åææ¾éæï¼æ·»å Bilibiliæç´¢åææ¾åè½ï¼æ¯æUP主è§é¢ãè§é¢ç»è®¡ãQRç ç»å½ãCookieè¿æè¿½è¸ª","ð¥ Bilibiliçé¨è§é¢ï¼æ·»å Bilibiliçé¨è§é¢ä½ä¸ºé»è®¤è§å¾ï¼æ¯ææç´¢/ç鍿¨¡å¼åæ¢ãå页å è½½ãç¼å管ç","ð YouTubeçé¨è§é¢ï¼æ·»å YouTubeçé¨è§é¢åè½ï¼æ¯æå¯æç´¢çå°åºéæ©å¨ãæåæ¯æåº","ð é¦é¡µæ¨¡å忢ï¼å®ç°é¦é¡µæ¨¡å忢åè½ï¼ç®¡çå坿§å¶é¦é¡µæ¾ç¤ºç模å","ðï¸ æ§å¶æ éæåº¦æ§å¶ï¼æ·»å æ§å¶æ 鮿¡åº¦è®¾ç½®ï¼10-80%ï¼ï¼æ¯æå®æ¶è°æ´éæåº¦åæ¨¡ç³ææä»¥æ¹ååå¹å¯è§æ§"],changed:["ð¦ å级@tanstack/react-queryè³5.100.6ï¼ä»5.100.5å级å°5.100.6","ð¨ ä¼åçµå½±ä¸»é¢å è½½å¨ç»ï¼åå°è§è§å¼ºåº¦ï¼ä¼åå¨ç»ææ","ð éæå è½½é»è¾ï¼ä½¿ç¨isFetchingæ¿ä»£isLoadingæ¾ç¤ºå è½½å±å¹ï¼æ£ç¡®æ£æµç©ºæ°æ®ç¶æ","ð¯ æ§å¶æ 设置éå½åï¼å°è®¾ç½®éå½å为'æ§å¶æ 鮿¡åº¦'以æé«æ¸
æ°åº¦"],fixed:["ð± ä¿®å¤ç§»å¨ç«¯å
å®¹æªæï¼ä¸ºå¤ä¸ªé¡µé¢æ·»å åºé¨padding鲿¢å
容被åºé¨å¯¼èªæ æªæï¼playãdoubanãshortdramaãtvboxãsource-browserãembyãsearchï¼","ð¬ ä¿®å¤éª¨æ¶å±é®é¢ï¼ä½¿ç¨isFetchingåæ°æ®æ£æ¥é²æ¢éª¨æ¶å±æ¾ç¤ºï¼æ¾ç¤ºå è½½ç´å°æææ°æ®åå¤å°±ç»ª","ð¼ï¸ ä¿®å¤Bingå£çº¸æ¾ç¤ºï¼ç§»é¤å¯¼è´å£çº¸æ æ³æ¾ç¤ºçwallpaperLoadedç¶æï¼æ·»å å¹³æ»æ·¡å
¥è¿æ¸¡é²æ¢éªç","ðï¸ ä¿®å¤å è½½å¨ç»éªçï¼ä½¿ç¨åºå®Film徿 æ¶é¤å¨ææ§éªç","â¡ ä¼å导èªé度ï¼ç§»é¤æå¡ç«¯é¢åä¼åå·²ç»å½ç¨æ·ç导èªé度ï¼åå°é¢åè¶
æ¶ä»3ç§å°1ç§","ð ä¿®å¤å®¢æ·ç«¯å¼å¸¸ï¼ç§»é¤å¯¼è´å®¢æ·ç«¯å¼å¸¸çéå¤å è½½æ£æ¥ï¼æ¢å¤æ£ç¡®ä½ç½®çå è½½æ£æ¥","ðº ä¿®å¤Bilibiliåè½ï¼ä¿®å¤æç´¢è§¦åãæ ç¾è¡ä¸ºãUP主è§é¢ææ¾ãå页éå¤é®é¢ã模å¼åæ¢ç¶æéç½®","ð¼ï¸ ä¿®å¤Bilibiliå°é¢å¾çï¼ä½¿ç¨å¾ç代çå¤çBilibiliå°é¢å¾ç","ð¨ ä¿®å¤å
¨å±æ¾ç¤ºé®é¢ï¼ä½¿ç¨æ¸åå å é¿å
backdrop-filterå å ä¸ä¸æé®é¢","ð ä¿®å¤æç´¢å岿¾ç¤ºï¼å¨YouTube/Bilibiliæç´¢æ¨¡å¼æ ç»ææ¶æ¾ç¤ºæç´¢åå²","ðï¸ ä¿®å¤æ§å¶æ éæåº¦ï¼è°æ´æ¨¡ç³ææåéæåº¦ä»¥æ¹ååå¹å¯è§æ§","ð ä¿®å¤æå¡ç«¯æ°æ®è·åï¼ä¿®å¤é¦é¡µãçå§ãè±ç£çæå¡ç«¯æ°æ®é¢åé®é¢","ð ä¿®å¤æ é循ç¯ï¼ä»useEffectä¾èµä¸ç§»é¤å è½½ç¶æé²æ¢æ é循ç¯","ð¬ ä¼åå¼¹å¹å¯åº¦ï¼åå°å
¨å±æ¨¡å¼ä¸çå¼¹å¹å¯åº¦ä»¥æ¹åæ§å¶ååºæ§"]},{version:"6.4.0",date:"2026-04-27",added:["ð¥ è§å½±æ¿å±å¹å
±äº«åè½ï¼å®ç°å®æ´çå±å¹å
±äº«è§å½±å®¤åè½ï¼æ¯æWebRTC宿¶ä¼ è¾ãç»è´¨é¢è®¾éæ©ï¼æµç
/髿¸
/è¶
æ¸
ï¼ãèªå¨æåè¿æ¥å¤ç","ð¨ å±å¹å
±äº«é¡µé¢æ²æµ¸å¼è®¾è®¡ï¼å
¨å±æ¸åèæ¯å¸å±ãç»çæææã宿¶ç
1¶ææç¤ºå¨ï¼å
±äº«æ¶é¿ãè§ç人æ°ãè¿æ¥ç¶æï¼ãæ¯æææä¸»é¢åæ¢","â© è§é¢ææ¾å¿«è¿å¿«éæé®ï¼æ·»å å¯èªå®ä¹çå¿«è¿å¿«éæé®ï¼æ¯æèªå®ä¹æ¶é´é´éãååºå¼å¸å±ãNetflix飿 ¼è®¾è®¡","ðº ç´ææºå¯¼å
¥å¯¼åºåè½ï¼æ¯æM3U/M3U8æ ¼å¼å¯¼å
¥ãèªå®ä¹æºå¯¼åºãæºéªè¯å管ç","âï¸ å
é¸äºå卿¯æï¼éæå
é¸äºå卿å¡","ðï¸ å¿«è¿å¿«éè®¾ç½®é¢æ¿ï¼æ·»å å¿«è¿å¿«éæé®è®¾ç½®é¢æ¿ï¼æ¯æèªå®ä¹æ¶é´åå¸å±é项"],changed:["ð¦ å级@tanstack/react-queryè³5.100.5ï¼ä»5.96.1å级å°5.100.5","ð¦ å级@tanstack/react-virtualè³3.13.24ï¼ä»3.13.23å级å°3.13.24","ð¦ å级hls.jsè³1.6.16ï¼æ¹è¿HLSææ¾å
¼å®¹æ§"],fixed:["ð§ ä¿®å¤é请ç ç¦ç¨æ£æ¥ååªè´´æ¿é误误æ¥ï¼è§£å³é请ç ç³»ç»çæ£æ¥é»è¾ååªè´´æ¿é误æç¤ºé®é¢","ð æ·»å Rediså
¼å®¹éé
å¨ï¼æ¯æUpstashåioredis APIå
¼å®¹","ð¬ ä¿æåæ¢è§é¢æ¶çææ¾éçï¼è§é¢åæ¢åä¿æç¨æ·è®¾ç½®çææ¾éç","ð
ä¿®å¤å叿¥åworkeræ¶åºé®é¢ï¼åºç¨æ¶åºä¿®å¤å°å叿¥åworkerï¼ä¿®æ£æ¥ææ ¼å¼ä¼ é","ð ä¿®å¤é³é颿¿æ¬åé®é¢ï¼è§£å³é³é颿¿é¼ æ ç§»å¨æ¶æ¶å¤±çé®é¢ï¼æ·»å è¿æ¸¡å»¶è¿åæ©å±ç¹å»åºåï¼é²æ¢åéå§éè·³è¿","ð¯ ä¿®å¤ææ¾é¡µå¹´ä»½å¹é
ï¼æ¹è¿å¹´ä»½å¹é
é»è¾","ð¨ ä¿®å¤OIDCæä¾åç¼è¾æ¨¡ææ¡æº¢åºé®é¢ï¼è§£å³ç¼è¾æ¨¡ææ¡å
å®¹æº¢åºæ¾ç¤ºé®é¢","ðº ä¿®å¤M3U导å
¥æ¨¡ææ¡z-indexé®é¢ï¼ä½¿ç¨createPortal鲿¢z-indexå±çº§é®é¢","ð± æ¹è¿ç§»å¨ç«¯å¿«è¿å¿«éæé®ï¼éç¨Netflix飿 ¼å¸å±ãåç´åä¾§è®¾è®¡ãæ¹è¿å¯è§æ§åå®ä½","â¡ ä¼åç§»å¨ç«¯å¿«è¿å¿«éæé®æ§è½ï¼ä»
å¨å¸å±ååæ¶é建ï¼å®ç°å®æ¶è®¾ç½®æ´æ°","ð¬ ä¿®å¤å¼¹å¹åå°å¨æé®éèï¼å¼ºå¶éèå¼¹å¹åå°å¨æé®é²æ¢åå§åæ¶éªç","ð¤ ä¿®å¤ç´ææºå¯¼åºåéªè¯ï¼å¯¼åºåéªè¯èªå®ä¹æºæææ§"]},{version:"6.3.0",date:"2026-04-03",added:["ðµ Embyå¤é³è½¨æ¯æï¼ä¸ºEmbyææ¾æ·»å å¤é³è½¨åæ¢æ¯æï¼èªå¨éæ©æµè§å¨å
¼å®¹çé³è½¨ï¼æ¯æå§é卿é³è½¨è·å","ð å³å°ä¸æ å
容æéç³»ç»ï¼å®ç°å®æ´çå³å°ä¸æ å
容å
³æ³¨å表åæ
1éç³»ç»ï¼æ¯æéé徿 æéãèªå¨åå¸éç¥åå
³éåè½","ð¨ UIå¢å¼ºï¼æ·»å GlobalErrorèªå¨å
³éåè½å¹¶å¢å¼ºå¼¹å¹å§ééæ©å¨","ð¦ TVBoxåè½å¢å¼ºï¼æ·»å èªå®ä¹JARé
ç½®ãå¢å¼ºJAR代çè¯æåè½å¹¶æ´æ°éåæº","ðï¸ éè¯·ç æ³¨åç³»ç»ï¼æ·»å 宿´çéè¯·ç æ³¨åç³»ç»ï¼æ¯æé请ç è¾å
¥é¡µé¢ãåå²è®°å½åç¦ç¨åè½"],changed:["ð¦ å级@tanstack/react-queryè³5.96.1ï¼å级@tanstack/react-queryä»5.95.0å°5.96.1","ð è¿ç§»å°TanStack Query queryOptions模å¼ï¼éæä¸ºä½¿ç¨TanStack QueryçqueryOptions模å¼","ð ç¦ç¨å¤ç¨APIå§é计æ°ç«¯ç¹ï¼ç¦ç¨å¤ç¨APIå§é计æ°ç«¯ç¹ä»¥åå°æ¥å¿åªé³"],fixed:["ðµ ä¿®å¤Embyé³é¢åæµåªä½é®é¢ï¼ä¿®å¤æµURLåæ°ç¼ç ãæ·»å é³é¢æµè·åå°è¯¦æ
APIãè§£å³æ éå è½½é®é¢","ð ä¿®å¤æ°åå¸éç¥ç³»ç»ï¼ä¿®å¤éé徿 æ¾ç¤ºãæéç¶æå è½½ãæ ææ¾è®°å½æ¶çæ£æ¥ãæ¥æè®¡ç®æ¶åºé®é¢åå叿¥ææ ¼å¼ç»ä¸","ðï¸ ç§»é¤å¤±æççå§APIï¼ç§»é¤å·²å¤±æççå§API","ð ä¿®å¤TVBoxæºé®é¢ï¼æ·»å ghproxy.vipä½ä¸ºä¸»è¦å½å
CDNãç§»é¤ééæºãæ´æ°æºè½å¥åº·æ£æ¥JARæº","ð¾ ä¿®å¤éè¯·ç æ°æ®ç±»åï¼å°éè¯·ç æ°æ®è½¬æ¢ä¸ºå符串以å
¼å®¹Redis hSet","ð¬ ä¿®å¤ArtPlayeråå°é³é¢é®é¢ï¼å¨æ¸
çè§é¢åHLSä¹å鿝ArtPlayerä
1»¥é²æ¢åå°é³é¢ææ¾"]},{version:"6.2.1",date:"2026-03-21",added:["ð ä¸è½½Toastéç¥ï¼ä¸è½½å¼å§æ¶æ¾ç¤ºå³æ¶Toastéç¥ï¼æåä¸è½½ä½éª","ð¯ å¿«éè·³è¿é¢è®¾ï¼æ·»å çµæ´»çç头ç尾快éè·³è¿é¢è®¾åè½","ð éèçå§APIé
ç½®ï¼ä»ç®¡çåå°éèçå§APIé
置项","ð¥ï¸ è¶
宽æ¾ç¤ºå¨è§é¢æ¾ç¤ºæ¨¡å¼ï¼æ·»å è¶
宽æ¾ç¤ºå¨è§é¢æ¾ç¤ºæ¨¡å¼æ§å¶","ð Embyå
å¯ç»å½ï¼æ¯æEmbyå
å¯ç»å½å¹¶æ·»å è®¤è¯æ¨¡å¼åæ¢å¨","ð æç´¢å表è§å¾æ¨¡å¼ï¼æ·»å 带å¾çé¢è§çæç´¢å表è§å¾æ¨¡å¼ï¼æ¯æåè¡¨é¡¹ææ¾æé®","ð¾ ææ¾éçæä¹
åï¼æä¹
åææ¾éç设置ï¼å¢å¼ºè·³è¿é¢è®¾éªè¯å导å
¥å¯¼åºåè½"],changed:["ð è¿ç§»UserEmbyConfigå°sonner toaståºï¼éæUserEmbyConfigç»ä»¶ä½¿ç¨sonner toastéç¥åº","ð¦ å级TanStackå
ï¼@tanstack/react-queryä»5.90.21å级å°5.91.0ï¼@tanstack/react-virtualä»3.13.22å级å°3.13.23","ð é¨ç½²ææ¡£æ´æ°ï¼ç§»é¤Zeaburï¼æ·»å Vercel/Renderé¨ç½²æå","ð¬ å级ArtPlayerè³5.4.0å弹广件è³5.3.0","ð éææç´¢ï¼å°EventSourceè¿ç§»å°experimental_streamedQuery","ð¯ éæè·³è¿é¢è®¾ï¼ä»å¿«éè·³è¿æé®éæ°è®¾è®¡ä¸ºç头ç尾模æ¿"],fixed:["ð¥ ä¿®å¤çå§ä¸è½½ç³»ç»ï¼ä¿®å¤çå§ä¸è½½åè½ãIndexedDBåºååé®é¢åAESå å¯ä»»å¡åºååéè¯¯ï¼æ¹åä¸è½½UX","ð§ ä¿®å¤çå§å类端ç¹ä½¿ç¨é
ç½®ççå§æºï¼ä½¿ç¨å·²é
ç½®ççå§æºè¿è¡å类端ç¹è¯·æ±","ð ä¿®å¤EmbyClientæå»ºæµURLåç¡®ä¿è®¤è¯ï¼å¨æå»ºæµåªä½URLä¹åç¡®ä¿å·²å®æè®¤è¯","ð ä¿®å¤çå§å°é¢å¾SSLè¯ä¹¦é®é¢ï¼ä»£ççå§å°é¢å¾çç»è¿è¿æSSLè¯ä¹¦ï¼è¯ä¹¦æ ææ¶èªå¨åéHTTPå è½½","ð ä¿®å¤è¯¦æ
è·åæç´¢å¤±è´¥æ¶åéç´æ¥IDæ¥æ¾ï¼æç´¢æ¹å¼è·å详æ
失败æ¶åéå°ç´æ¥IDæ¥æ¾","ð¬ ä¿®å¤HeroBannerå°éDISABLE_HERO_TRAILERç¯å¢åéï¼HeroBanneræ£ç¡®ååºç¦ç¨é¢åçç¯å¢åé","â¤ï¸ ä¿®å¤åæ¢è§é¢æºåæ¶èç¶æä¸¢å¤±ï¼åæ¢æºåæ£ç¡®ä¿ææ¶èç¶æï¼éè¿æ é¢åéå¹é
并使ç¨å®é
åå¨é®åæ¢æ¶è","ð¤ ä¿®å¤AIç³»ç»å¤é¡¹é®é¢ï¼æ£ç¡®å¤çæµå¼APIååºå¹¶è¿æ»¤thinkåï¼åè½ç¦ç¨æ¶é»æ¢æªææAPIè°ç¨ï¼ç§»é¤å¯¼è´è¿å¤è°ç¨çAPIå¥åº·æ£æ¥","ð é䏿¥è¯¢ç¼å失æå°QueryProviderï¼å¨QueryProviderä¸éä¸ç®¡çæ¥è¯¢ç¼å失æ","ð§ ä¿®å¤ç»å½é¡µç¨æ·ååæ®µï¼éè¿NEXT_PUBLICç¯å¢åéå¨æå»ºæ¶è§£æshouldAskUsernameï¼æ¶é¤ç¨æ·ååæ®µæ¸²æå»¶è¿"]},{version:"6.2.0",date:"2026-03-01",added:["ð Embyç§æåºæ¯æï¼éæEmbyç§æåºæ¯æï¼æ¯æèªå¨åå§ååé
ç½®UIæ¹è¿","âï¸ Embyé«çº§é项ï¼å¨é
ç½®UI䏿·»å Embyé«çº§é项设置","ð Embyæç´¢åè½ï¼ä¸ºç§æåºæ·»å 宿¶Embyæç´¢åè½ï¼éç¨ç°ä»£åUI设计ï¼ä½¿ç¨æ¬å°å
¨æç´¢å¼æ¯ææ¨¡ç³å¹é
","ð¤ Embyç¨æ·é
ç½®ï¼å®ç°æ¯ç¨æ·ç¬ç«çEmbyé
置系ç»ï¼æ¯ææµè¯APIåè½","ð Embyç©ºç¶æUIï¼ä¸ºæ æç´¢ç»ææ·»å ç©ºç¶æUIæç¤º","ð Embyå
Œ
±æºï¼æ·»å 管çåå
Œ
±æºåè½","ð¾ ç§æåºåè½å¢å¼ºï¼localStorageæä¹
åæåºåå¥½ï¼æå¨å·æ°æé®ï¼ç§»å¨ç«¯æ¾ç¤ºåç±»æ»æ°","ðï¸ EnableWebLiveå¼å
³ï¼æ·»å EnableWebLiveå¼å
³æ§å¶ç´ææµè®¿é®","ð¼ï¸ çå§å¾çç¼åï¼å®ç°çå§å¾çç¼ååä¼å
å è½½","â¾ï¸ èææ»å¨æ ç¼å è½½ï¼ä¸ºEmbyåçå§å®ç°èææ»å¨æ ç¼æ éå è½½ï¼æ¯æè§å£æç¥endReachedéå¼åèªéåºoverscan"],changed:["ð·ï¸ éå½å'ç§äººå½±åº'为'Emby'ï¼æåæ¸
æ°åº¦åç¨æ·çè§£ï¼è·¯ç±éå½å为/emby","ð éæSettingsPanelç»ä»¶ï¼æå设置å°ç¬ç«çSettingsPanelç»ä»¶ï¼ä½¿ç¨TanStack Query管çEmbyé
ç½®","â¡ è¿ç§»ç§æåºå°TanStack Queryï¼ä½¿ç¨TanStack Queryéæç§æåºæ°æ®ç®¡ç","ð æ°æ®åºè¿ç§»ï¼å°æå¹³Redisé®è¿ç§»å°Hashç»æï¼ä½¿ç¨scryptåå¸å¯ç ","ð¦ èæç½æ ¼éæï¼éè¿ç»ä¸VirtualGridå°react-windowè¿ç§»å°@tanstack/react-virtual"],fixed:["ð ä¿®å¤æºæ¥æ¾å详æ
APIï¼ä¿®å¤æå®æºåIDçæºæ¥æ¾é»è¾ï¼å¸¸è§APIæºä½¿ç¨åºäºæç´¢ç详æ
è·åï¼ç»ä¸/api/detailä¸çEmbyæºè¯¦æ
å¤ç","ð ä¿®å¤ææ¾é¡µåå§åï¼ä¿®å¤detailDataç©ºå¼æ£æ¥ååå°å è½½ç¶æï¼ä¼åææ¾é¡µåå§åä»¥æ¯æç´æ¥æºè®¿é®","ð ä¿®å¤Emby详æ
åè·¯ç±ï¼ä¿®å¤Emby详æ
APIè¿åSearchResultæ ¼å¼ï¼ä¿®å¤Embyæºè¯¦æ
请æ±è·¯ç±å°æ£ç¡®çAPI端ç¹","ð ä¿®å¤Emby认è¯ç³»ç»ï¼ä¿®å¤APIå¯é¥åç¨æ·å/å¯ç åéè®¤è¯æ¯æï¼ä½¿ç¨/Users/Me端ç¹è¿è¡APIå¯é¥è®¤è¯ï¼ä¿®å¤getCurrentUseræ¹æ³ä¸çAPIå¯é¥è®¤è¯å¤ç","ð¾ ä¿®å¤Embyé
置管çï¼ä¿®å¤Embyé
ç½®æ¶èªå¨è·åå¹¶ä¿åUserIdï¼ç¨æ·æ´æ°é
ç½®æ¶æ¸
é¤EmbyClientç¼å以ç«
1å³åºç¨æ´æ¹ï¼å¨è¯¦æ
APIä¸ä½¿ç¨ç¨æ·ç¹å®é
ç½®èéå
¨å±é
ç½®","â¡ ä¼åUserEmbyConfigæ§è½ï¼éå为éåæ§è¾å
¥ä»¥æ¶é¤å»¶è¿ï¼ä¼åè¡¨åæ§è½ï¼ä¿®å¤æ¯ç¨æ·Embyé
置并添å 宿´UIï¼æ¹è¿ä¿åUXä½éª","ð¨ ä¿®å¤Embyç§æåºUIï¼ä¿®å¤èªå¨åå§ååé
ç½®UIæ¹è¿ï¼ä¿®å¤å¯¼èªå¯è§æ§åç¨æ·ç¹å®å®¢æ·ç«¯è§£æï¼æ¹è¿ç§»å¨ç«¯UXä½éª","ðµ ä¿®å¤Embyææ¾é®é¢ï¼å¨HLS转ç URL䏿·»å PlaySessionId以解å³ç段å è½½é误ï¼ä½¿ç¨å¼ºå¶é³é¢è½¬ç çHLSè§£å³EAC3/TrueHDææ¾é®é¢","ð ä¿®å¤Embyæç´¢åè¿æ»¤ï¼å°æç´¢ç»æèå´éå®å°éå®çåºæä»¶å¤¹ï¼ä¿®å¤ç¹ä½ä¸ææç´¢æ æ³å¹é
ç®ä½æ é¢çé®é¢","ð·ï¸ ä¿®å¤ç§æåºæ¾ç¤ºé®é¢ï¼ä¼ éEmbyæºåç§°ä»¥é²æ¢æ¶è夹䏿¾ç¤º'å³å°ä¸æ 'æ ç¾ï¼åæ¥æ¶èç¶æåæç´¢å¡ççæ¬åç±å¿æ¾ç¤ºï¼ä¿®å¤å³é®è§¦åææ¾é®é¢","ð§ æ´æ°å¨æè·¯ç±åæ°ä»¥å
¼å®¹Next.js 15","ð¬ ä¿®å¤å¸¸è§APIæºåè§é¢å è½½è¦çå±z-indexé®é¢","â
ç§»é¤fetchSourceDetailä¸çå§ééªè¯","ð¯ æ¢å¤CapsuleSwitchä¸å¿å¯¹é½ï¼ç¨max-w-fullæ¿æ¢w-full","ð¼ï¸ ä¼åå¾çå è½½æ§è½ï¼å®ç°æ¨¡å级å¾çç¼åç³»ç»ï¼å¨VideoCardåuseImagePreloadä¹é´å
±äº«ç¼åï¼é²æ¢èææ»å¨éæ°æè½½æ¶éªçï¼ç¨ä»
éæåº¦è¿æ¸¡æ¿æ¢æ¨¡ç³/缩æ¾è¿æ¸¡ï¼ç¨onLoadæ¿æ¢Next.js 15+å·²åºå¼çonLoadingComplete","ð¬ ä¿®å¤è±ç£èææ»å¨é®é¢ï¼ä¿®å¤èææ¨¡å¼åéæ éæ»å¨è§¦åï¼
1éè¿å¨flushSyncå
鿾鿶é¤å è½½æ´å¤éªçï¼ä½¿ç¨åæ¥refé鲿¢é¡µé¢è·³è¿ï¼é²æ¢å è½½æ´å¤æ¶åå
æ ¼éæ°æè½½éªçåå¸å±è·³å¨","â¡ ä¼åèææ»å¨æ§è½ï¼ä½¿ç¨ç»ä¸å®¹å¨åç§»éæåVirtualGridæ§è½ï¼å¢å åå§é¡µé¢å¤§å°ä»¥å¡«å
è§å£ï¼å¨è§å£ç»æå800pxé¢å è½½æ°æ®å®ç°æ ç¼æ»å¨"]},{version:"6.1.3",date:"2026-02-23",added:["ð¬ WebSRè¶
å辨çï¼å级è³v0.0.15ï¼ç¨WebSRæ¿æ¢Anime4K-WebGPUå®ç°å¤å
容类åè¶
å辨çï¼æ·»å ç»çæè®¾è®¡é£æ ¼è®¾ç½®é¢æ¿","ð¬ 弹广å¨å¹é
ï¼æ·»å æå¨å¼¹å¹å¹é
åè½ï¼æ¯ææç´¢çªå§ãéæ©å§éãè¦çèªå¨å¹é
ç»æ","ð¥ M3U8ä¸è½½å¨å¢å¼ºï¼å¨UserMenuæ·»å ä¸è½½ç®¡çå¨å
¥å£ï¼æ¯æIndexedDBæä¹
ååStorage Bucketsï¼é¡µé¢å·æ°å坿¢å¤ä¸è½½ä»»å¡","ð 精确æç´¢è¿æ»¤ï¼æ·»å 精确æç´¢è¿æ»¤åè½","ðº FLVç´æCORSä»£çæ¯æï¼ä¸ºFLVç´ææµæ·»å CORSä»£çæ¯æ"],changed:["â¡ TanStack Queryå
¨é¢è¿ç§»ï¼å
¨é¢ç¨useQuery/useQueries/useMutationæ¿æ¢ææ¾é¡µãé¦é¡µãHeroBannerãå叿¥åãæç´¢å»ºè®®ãææ¾ç»è®¡ãç»§ç»è§çãUserMenuçæ°æ®è·åé»è¾ï¼éæprefetchingåä¹è§æ´æ°","â¡ é¦é¡µæ ç¾åæ¢éé»å¡ä¼åï¼ä½¿ç¨useTransitionå®ç°é¦é¡µæ ç¾åæ¢éé»å¡æ¸²æ"],fixed:["ð¬ ä¿®å¤ç´æææ¾å¨é误è¦çå±é®æ¡è§é¢ç»é¢","ð¨ è¿ç§»ææå·²åºå¼çTailwind v4 opacityå·¥å
·ç±»å°ææ è¯æ³ï¼ä¿®å¤YouTube缩ç¥å¾è¢«ä¸éæè¦çå±é®æ¡çTailwind v4ç ´åæ§åæ´å¯¼è´çæ ·å¼é®é¢","ð¬ ä¿®å¤WebSRè®¾ç½®é¢æ¿å¤é¡¹é®é¢ï¼å
³éæé®pointer-eventsã颿¿ç»æä¸å¼¹å¹é¢æ¿å¯¹é½ã徿 æ¾ç¤º","ð åå°åªé³é误弹çªï¼ä»
å¯¹ç¨æ·ä¸»å¨æä½å¤±è´¥æ¾ç¤ºé误æç¤º","ð§ ä¿®å¤/api/cache 401é误ãhydrationé误418åCMS代çReferer/Origin头缺失é®é¢","ð ä¿®å¤æºæç´¢ç²¾ç¡®æ é¢å¹é
ä¼å
äºåå符串å¹é
","ð ä¿®å¤ææ¾è®°å½ä¹è§æ´æ°åæ¥å°continueWatchingæ¥è¯¢é®åwatching updatesæ£æ¥æ»å¾ªç¯","ð¬ ä¿®å¤å¼¹å¹ç³»ç»å¤é¡¹é®é¢ï¼å è½½åæªæ¸
ç©ºæ§æ°æ®å¯¼è´éå¤ãæ¨¡ææ¡å
¨å±portalContainer渲æãæå¨å¹é
æåå¾çURLãæç´¢è¿æ©è¿æ»¤æ éæ°çªå§ãç§»å¨ç«¯ååºå¼åiPhoneå®å
¨åºåéé
","ð¥ ä¿®å¤ä¸è½½ç³»ç»å¤é¡¹é®é¢ï¼è¿åº¦æ¾ç¤ºä¼åã页é¢å·æ°åæ¢å¤è¿åº¦åä»»å¡ãæ¢å¤æ¶ä¸èªå¨å¼¹åºé¢æ¿","ð¤ ä¿®å¤UserMenuåå§åæ¶å¼ºå¶å·æ°é®é¢"]},{version:"6.1.2",date:"2026-02-09",added:["ðº FLVç´ææµæ¯æï¼éæflv.jså®ç°FLVæ ¼å¼ç´ææµææ¾åè½","ð¯ ä¸é®æ ææºéæ©ï¼æ·»å ä¸é®éæ©æ ææºåè½ï¼ç°ä»£åæé®UI设计","ð¬ ææ¾å¨é误UIè¦çå±ï¼æ·»å 带éè¯æé®çææ¾å¨é误æç¤ºçé¢","ð¦ TVBox Vercel Blob CDNï¼ä¸ºspider JARæ·»å Vercel Blob CDNæ¯æ","ð¨ å¼¹å¹è®¾ç½®é¢æ¿2026 UI/UXå级ï¼éç¨2026å¹´æä½³UI/UX设计å®è·µï¼æ¯æå
¨å±Portal渲æ","ð¬ å¼¹å¹ç³»ç»å¢å¼ºï¼éè¯¯ç¶ææ¾ç¤ºãèªå¨éè¯ãå è½½å
æ°æ®è·è¸ªåæ¹è¿çéæ°å è½½åé¦","ðº Chromecastå¢å¼ºï¼å
æ°æ®æ¯æãæå¼è¿æ¥åæ¢åææ¾æ¢å¤åè½","ð±ï¸ Material UI Tabsææ½æ»å¨ï¼æ·»å ææ½æ»å¨åè½åæ»å¨æå è½½å¥åº·æ£æ¥","ð¥ é¢éå¥åº·æ£æ¥ç³»ç»ï¼æ·»å é¢éå¥åº·æ£æ¥ç³»ç»åå¢å¼ºçå类管ç","ð æ¼åä½åAPIï¼æ·»å 带åç¬è«ä¿æ¤çæ¼åä½åAPIåä¸å±åéæç´¢æºå¶","ð¥ è§å½±æ¿ç´æé¢é忥ï¼ä¸ºè§å½±æ¿æ·»å ç´æé¢é忥åè½","ð¬ å
¨å±ææ¾ä¿¡æ¯è¦çå±ï¼å
¨å±ææ¾æ¶æ¾ç¤ºæ é¢åå§éä¿¡æ¯"],changed:["ð¦ å
导å
¥ä¼åï¼ä½¿ç¨optimizePackageImportsä¼åæå
ä½ç§¯","ð è±ç£HTMLè§£æä¼åï¼ä½¿ç¨splitæ¿ä»£æ£åè¡¨è¾¾å¼æåè§£ææ§è½","ð¦ TVBox Spider JARä¸è½½çç¥ï¼éè¿æå¡å¨ä»£çææspider JARä¸è½½è¯·æ±"],fixed:["ð± ç§»å¨ç«¯åºé¨å
è¾¹è·åææ¬æº¢åºï¼æ¹è¿ç§»å¨ç«¯åºé¨å
è¾¹è·åææ¬æº¢åºæ¾ç¤ºé®é¢","ð¦ TVBoxå¤é¡¹ä¿®å¤ï¼æ¹è¿é
ç½®APIå
¼å®¹æ§åç½ç»å¯é æ§ãspider.jar IP访é®å
¼å®¹æ§","â¡ æ§è½çæ§ç³»ç»ä¿®å¤ï¼ç¯å¢æ£æ¥ãCPUåºçº¿åå§åãæå è½½åå§å鲿¢æ¨¡åå è½½é误","ðï¸ é
ç½®æºæ°æ®åºæ¸
çï¼ä»æ°æ®åºä¸ç§»é¤å·²å é¤çé
ç½®æº","ð® ææ¾å¨å
¨å±æ§å¶èªå¨éèï¼è¿å
¥å
¨å±åèªå¨éèææ¾å¨æ§å¶æ ","ð¬ å¼¹å¹ç³»ç»ä¿®å¤ï¼ä¿®å¤å è½½é®é¢ãè®¾ç½®é¢æ¿æ»åéªçãPortalæ¸²ææ¯æå
¨å±","ð±ï¸ Tabsææ½æ»å¨ä¿®å¤ï¼ä¿®å¤æ»å¨æé®ååãæ ç¾ç¹å»å²çªé®é¢","ð¬ è天åéæé®æ¾ç¤ºï¼é²æ¢åéæé®è¢«æ¨åºè§å¾å¤","ð¬ å
¨å±æ é¢å±æ¸²æä¿®å¤ï¼ä¿®å¤åå§HTMLå
容忏²ææ¶æºé®é¢","ð¨ Portalé离å
è£
å¨åä½ï¼æ¢å¤portalé离å
è£
å¨çfont-family设置","ð å§éæ»æ°è®¡ç®ï¼å¨latestTotalEpisodes计ç®ä¸å
å«newRecord.total_episodes"]},{version:"6.1.1",date:"2026-02-01",added:["ð æç´¢åå²UXä¼åï¼æ¸
空è¾å
¥æ¶å§ç»æ¾ç¤ºæç´¢åå²","ð¾ ACGæç´¢æ°æ®åºç¼åï¼ä¸ºACGæç´¢æ·»å æ°æ®åºç¼åï¼æåæç´¢ä½éª","âï¸ è§é¢æºç¼è¾åè½ï¼æ·»å è§é¢æºç¼è¾åè½ï¼æ¹è¿çå§å¤çé»è¾","ð æ§è½çæ§å¢å¼ºï¼æ¾ç¤ºCPUæ ¸å¿æ°ååå·åç§°ï¼æ·»å è¿ç¨çº§ææ ","ð é¦é¡µæ°æ®ç¼åï¼å®ç°GlobalCacheContexté¦é¡µæ°æ®å
¨å±ç¼å","ð¬ å¼¹å¹ç³»ç»å¢å¼ºï¼é²éå å¼å
³ã宿¶æ»åæ§å¶ãèªå®ä¹å¼¹å¹APIæ¯æ","ð¦ è§é¢ç¼åLRUæ·æ±°ï¼å®ç°è§é¢ç¼åLRUæ·æ±°çç¥","ð ä¿¡ä»»ç½ç»æ¨¡å¼ï¼å
ç½é¨ç½²å
1¯è·³è¿ç»å½è®¤è¯ï¼æ¯æIPv6ç½åå","âï¸ è§é¢æºæé/ä¼å
级系ç»ï¼æ·»å æºæéç³»ç»ä¼åææ¾æºéæ©","ð Bangumi APIä¼å
ï¼å¨æ¼«å
容详æ
ä¼å
使ç¨Bangumi API","ð æºè½æç´¢å使£æµï¼æ·»å æºè½æç´¢å使£æµï¼æ¯æå¹¶è¡æ§è¡","ð¹ çå§å¤ç¨APIï¼æ·»å çå§æ¨èåå表çå¤ç¨APIæ¯æ","ð¬ DISABLE_HERO_TRAILERç¯å¢åéï¼æ·»å ç¯å¢åéæ§å¶é¢åçææ¾","ð é¨ç½²ææ¡£æ´æ°ï¼æ·»å HF SpaceåEdgeOne Pagesé¨ç½²æå"],changed:["ð¨ éæçå§æºèåï¼å¨æåç±»æ£æµï¼æ¹è¿çå§æºèåé»è¾","â¡ Cron APIå
¨é¢ä¼åï¼å¹¶åå¤çãè¶
æ¶æ§å¶ãçæ§ãéè¯æºå¶ãä»»å¡ç»è®¡åå¹¶è¡å","â¡ ç´æé¢éæ§è½ä¼åï¼æ·»å è¶
æ¶æ§å¶åEPGç¼å","â¡ AIæ¨è请æ±ä¼åï¼ä»
å¨åå°å¼å
³å¯ç¨æ¶åéAIæ¨è请æ±","â¡ Redisä¼åï¼KEYSæ¿æ¢ä¸ºSCANé¿å
é»å¡ï¼Upstashåå°å½ä»¤ä½¿ç¨é","â¡ è±ç£é¡µé¢æºè½é²æï¼æ·»å æºè½é²æåflushSyncä¼å","â¡ è§é¢ç¼åä¼åï¼ä¼åæ¸
çé»è¾ãé误å¤çï¼å¢å ç¼åä¸é","â¡ ä¿¡ä»»ç½ç»ç¼åä¼åï¼24å°æ¶ç¼åï¼éè¿cookieçæ¬å·ç«å³å·æ°é
ç½®"],fixed:["ð ä¿®å¤UserMenu导èªå¡æ»ï¼éè¿routerä¼åè§£å³å¯¼èªå¡æ»é®é¢","ð ä¿®å¤ACGæç´¢æé®æ¾ç¤ºï¼æ¹è¿å¨æ¼«å
容çACGæç´¢æé®æ¾ç¤ºé»è¾","ð ä¿®å¤çå§ç³»ç»ï¼æ¿æ¢å¤±æAPIãè§£å³CORSé®é¢ãéªè¯ç©ºæ°æ®ãä¿®å¤å段æ å°ãèªå¨éæ©åç±»ãéèé¶è¯åã鲿¢ç©ºç¼å","ð ä¿®å¤é
置订é
è¦çï¼ä¿çç¨æ·æå¨ä¿®æ¹çé
ç½®","ð ä¿®å¤æºè¯¦æ
æå设置ï¼ç§»é¤fetchSourceDetailä¸è¿æ©çsetAvailableSourcesè°ç¨","ð ä¿®å¤çéæ ç¾æåºéæ©ï¼å§ç»æ¾ç¤ºæåºéæ©","ð ä¿®å¤Cronæ§è½éå¼ï¼ä½¿ç¨å®½æ¾çæ§è½éå¼è¯ä¼°ä»»å¡","ð ä¿®å¤ææ¾è®°å½ä¼ åï¼å°douban_idåtypeä¼ éå°VideoCard","ð ä¿®å¤ç§»å¨ç«¯ååºå¼ï¼Spider Jarç¶ææº¢åºãTVBoxå®å
¨é
ç½®ãä¿¡ä»»ç½ç»é
ç½®ã管ç页é¢åºé¨å
è¾¹è·ãçå§å¡çå¾½ç« éå ","ð ä¿®å¤å¼¹å¹ç³»ç»ï¼è¿æ»¤å ä½ç¬¦å¼¹å¹ãçº æ£ååºéªè¯åè¶
æ¶è¾å
¥UX","ð ä¿®å¤ä¸ææµè§å¨æ·±è²æ¨¡å¼ï¼æ·»å color-scheme metaæ ç¾","ð ä¿®å¤æµå¼ä»£çå¹¶å请æ±ï¼é²æ¢å¹¶å请æ±ï¼ç§»é¤Content-Length头","ð ä¿®å¤Vercelé¢åç带宽ï¼Vercelç¯å¢ç¦ç¨é¦é¡µé¢åçè§é¢","ð ä¿®å¤Kvrocksæä¹
åï¼ç¦ç¨å¤é¨æµéçæ§åæ§è½çæ§çæä¹
å"]},{version:"6.1.0",date:"2026-01-26",added:["ð¤ çå§å¡çAIè天åè½ï¼ä¸ºShortDramaCardç»ä»¶æ·»å AIè天åè½","ð± çå§å¡çå³é®åé¿æèåï¼æ°å¢çå§å¡ççå³é®åé¿æä¸ä¸æèååè½","ð æ§è½çæ§ç³»ç»ï¼ä¸ºç®¡çåå°æ·»å 宿´çæ§è½çæ§ä»ªè¡¨æ¿ï¼æ¯æææAPIï¼è±ç£ãæç´¢ãå表ã详æ
ãææ¾è®°å½ãæ¶èãè·³è¿é
ç½®ãçå§ï¼çæ§è½çæ§ï¼å¸¦è¿æ»¤æ¯æåè¡ä¸åºåè¯çº§ç³»ç»","ð æµéçæ§ç³»ç»ï¼æ·»å ç宿µéçæ§ãå¤é¨æµéåååè§£ã请æ±å表æ¾ç¤ºå坿å åºå","ðª è±ç£Cookiesè®¤è¯æ¯æï¼ä¸ºè¯¦æ
åè¯è®ºAPIæ·»å è±ç£Cookiesè®¤è¯æ¯æ","ð¾ Kvrocksæä¹
ååçæ§ï¼ä¸ºcronãè±ç£æç´¢APIåå¤é¨æµéçæ§æ·»å Kvrocksæä¹
å","ð Cronçæ§åAPIè¿æ»¤ï¼æ·»å cronçæ§ãAPIè¿æ»¤å48å°æ¶èªå¨æ¸
çåè½","âï¸ å¯é
ç½®Cronä»»å¡ä¼åï¼æ·»å å¯é
ç½®çcronä»»å¡ä¼å以åå°åºç«æµé","ð TanStack Queryå
¨å±ç¶æç®¡çï¼å®ç°TanStack Queryè¿è¡å
¨å±ç¶æç®¡ç","ð¡ï¸ è±ç£åç¬è«éªè¯æºå¶ï¼æ·»å è±ç£åç¬è«éªè¯æºå¶","ð¯ 广åè¿æ»¤å¢å¼ºï¼åºäºå
³é®è¯çå¹¿åæ£æµåè½","ð¸ Mikan Projectéæï¼æ·»å ACGæç´¢åæºç³»ç»ï¼ACG.RIPåMikan Projectï¼ï¼æ¯ææºåæ¢ãç»ä¸ååºæ ¼å¼å宿´ç§åå
æ°æ®ï¼æ¹è¿é度æµè¯åç¡®æ§é²æ¢æµè§å¨ç¼åå½±å","ð¾ è§é¢ç¼åç³»ç»ï¼å®ç°12å°æ¶TTLçè§é¢ç¼åç³»ç»å¹¶æ·»å æä½ç³»ç»è¦æ±"],changed:["â¡ ä¼åç§»å¨ç«¯æ»å¨æ§è½ï¼ä½¿ç¨GPUå éåiOS momentum scrollingä¼åç§»å¨ç«¯æ»å¨ä½éª","â¡ ä¼åé¦é¡µæ§è½ï¼ä½¿ç¨useReducerä¼åç¶æç®¡çï¼ä½¿ç¨useMemoä¼åæè´µçè®¡ç®æä½","â¡ ä¼åææå®æä»»å¡ï¼å°ææå®æä»»å¡ä¼å为1å°æ¶é´é","â¡ ä¼åæ§è½çæ§ï¼ä½¿ç¨ç宿°æ®æ¶éä¼åæ§è½çæ§ï¼æ¹è¿åç¡®æ§å¹¶ä¼åé¦é¡µAPI请æ±","â¡ ä¼åæ°æ®å è½½ï¼ç§»é¤æå¨è
1ææ¹å¤çï¼ä½¿ç¨react-windowåçèæå","â¡ ä¼åAnime4K requestAnimationFrameï¼åå°CPU使ç¨çï¼æåè§é¢è¶
åè¾¨çæ§è½","ð¨ éæææ¾é¡µç»ä»¶ï¼æåè¯è®ºåºãå è½½å±å¹ãè¿å顶鍿é®ãæ¶èæé®ãä¸è½½æé®åVideoInfoSection为ç¬ç«ç»ä»¶ï¼æå代ç å¯ç»´æ¤æ§","ð¨ éæå¼¹å¹é»è¾ï¼æåå¼¹å¹é»è¾å°useDanmuèªå®ä¹Hook","ð¨ éæDockeré
ç½®ï¼ç§»é¤Puppeteer/Chromiumå¹¶éè管çUIé
ç½®","ð¨ éææç´¢é¡µé¢ï¼ç§»é¤æ¸è¿å¼å è½½ï¼ä¼åèææ»å¨æ§è½åå è½½æç¤ºå¨","ð§ æ´æ°user-agentåç¬¦ä¸²ï¼æ´æ°å°ææ°æµè§å¨çæ¬"],fixed:["ð ä¿®å¤è§é¢ç¼åç³»ç»ï¼æ·»å è°è¯æ¥å¿åDockerç®å½æéï¼æ¯æRange请æ±ç¼åï¼å¤çReadableStreamæ¶è´¹é误ï¼ä½¿ç¨douban_idæ¿ä»£URLåå¸ä¼å","ð ä¿®å¤Cronä»»å¡è¶
æ¶ï¼å°cronä»»å¡è¶
æ¶ä»30ç§å¢å å°5åé","ð ä¿®å¤é¦é¡µåºé¨å
è¾¹è·ï¼æ·»å åºé¨å
è¾¹è·é²æ¢å
å®¹æªæ","ð ä¿®å¤å¤é¨æµéè¯çº§æ åï¼è°æ´å¤é¨æµéè¯çº§æ åå¹¶ä¿®å¤ShortDramaCardæªæé®é¢","ð ä¿®å¤Kvrocksæ°æ®ç®¡çï¼å¯¹æææµéæ¾ç¤ºåºç¨formatTrafficï¼æ£ç¡®æ¸
ççæ§æ¨¡åä¸çæ§æ°æ®","ð ä¿®å¤ç»è®¡è®¡ç®ä¸æ¾ç¤ºéå¶å离ï¼å°ç»è®¡è®¡ç®ä¸æ¾ç¤ºéå¶å离","ð ä¿®å¤è¯·æ±å表è¿åéå¶ï¼è¿åæ¶é´èå´å
çææè¯·æ±èééå¶ä¸º100æ¡","ð ä¿®å¤ç¼åæ¸
çåå建快ç
§ï¼å¨ç¼åæ¸
çåå建快ç
§ä»¥é²æ¢æ°æ®ä¸¢å¤±","ð ä¿®å¤æ§è½çæ§æ°æ®æä¹
åï¼è§£å³ç«ææ¡ä»¶é®é¢ï¼ç¡®ä¿Dockeréå¯åæ°æ®æä¹
åå宿¶ç»è®¡ï¼é²æ¢æ°æ®ä¸¢å¤±","ð ä¿®å¤æ§è½çæ§CPU使ç¨çç¾åæ¯è®¡ç®ï¼çº æ£CPU使ç¨çç¾åæ¯è®¡ç®æ¹æ³","ð ä¿®å¤ç®¡çåå°ç§»å¨ç«¯å¸å±ï¼æ¹è¿ç§»å¨ç«¯å¸å±å¹¶æ·»å APIæ§è½çæ§ï¼æå两个æ ç¾é¡µç°å¨å¯è®¿é®","ð ä¿®å¤æ°æ®ä¸å¯ç¨æ¶éèæ¼ååè¯è®ºåºï¼å½æ°æ®ä¸å¯ç¨æ¶éèæ¼ååè¯è®ºåº","ð ä¿®å¤é¶æ¶é¿æ¾ç¤ºï¼éèé¶æ¶é¿å¹¶æ·»å æ§è½çæ§","ð ä¿®å¤bangumiæ¥åå è½½é®é¢ï¼è§£å³bangumiæ¥åå è½½é®é¢å¹¶ä¸ºæ§è½çæ§æ·»å ç§»å¨ç«¯ååºå¼è®¾è®¡","ð ä¿®å¤VirtualDoubanGridæ éæ»å¨è§¦åé®é¢ï¼è§£å³æ»å¨å è½½å¼å¸¸","ð ä¿®å¤çå§å¡çä¸ä¸æèåï¼æ·»å æµ·æ¥åæ´å¤æä½å°ä¸ä¸æèå","ð ä¿®å¤ShortDramaCardç§»å¨ç«¯é¿æå²çªï¼ä½¿ç¨divårouterå¯¼èªæ¿ä»£Linkï¼é²æ¢ç§»å¨ç«¯é¿æå²çª","ð ä¿®å¤transform translateZ导è´çæ¨¡ææ¡å±å ä¸ä¸æé®é¢ï¼ç§»é¤å¯¼è´æ¨¡ææ¡æ¾ç¤ºå¼å¸¸çtransform屿§","ð ä¿®å¤å
¬åæ¨¡ææ¡z-indexé®é¢ï¼è§£å³ç§»å¨ç«¯å¯¹è¯æ¡ä¸å¯è§çé®é¢"]},{version:"6.0.0",date:"2026-01-22",added:["â¨ ç¨æ·ä½éªå¢å¼ºï¼å é¤ç¨æ·å è½½ç¶ææç¤ºå¨åç»è´¨å¾½ç« èªå¨éèåè½","ð Puppeteeråç¬è«ç³»ç»ï¼å
¨é¢æ¯æè±ç£åç¬è«ç»è¿ï¼å
æ¬Docker/Vercelç¯å¢åè¯è®ºAPIï¼ï¼éæåæºå¨äººæ£æµãéè¯æºå¶å页é¢å è½½ç¨³å®æ§å¢å¼º","ð± è±ç£ç§»å¨ç«¯APIåéæºå¶ï¼æ·»å å¤ç¨æ°æ®æºåè¯¦ç»æ¥å¿è¿½è¸ª"],changed:["⡠主页å è½½æ§è½ä¼åï¼å®æ½åæ¹å è½½çç¥ï¼7个请æ±å3æ¹ï¼ãå»¶è¿å è½½éå
³é®æ°æ®ãWeb Workerå¤çå³å°ä¸æ æ°æ®ãReact.memoä¼åç»ä»¶ï¼CPU使ç¨ä»200-300%éè³50-80%","â¡ ç®æ³ä¼åï¼å³å°ä¸æ ç®æ³å¤æåº¦ä»O(n²)ä¼åå°O(n)ï¼ä½¿ç¨Mapæ¿ä»£reduce+find","ð User-Agent管çéæï¼ç»ä¸ç®¡çå¹¶æ¢å¤æ§çUser-Agent以å
¼å®¹ç§»å¨ç«¯çå§API","â¬ï¸ ä¾èµå级ï¼puppeteer-coreä»24.35.0å级å°24.36.0","ð§ æ¶æä¼åï¼MobileActionSheet使ç¨ç¬ç«Portal容å¨ãå
å®¹ç±»åæ£æµä»scraperç§»è³AI orchestrator鲿¢è¶
æ¶","â¡ ææ¾è¿åº¦æ¢å¤ï¼åæ¢å§éæ¶èªå¨æ¢å¤ææ¾è¿åº¦"],fixed:["ð ä¿®å¤ç¨æ·å é¤åè½ï¼å®åå 餿µç¨å¹¶ä¿®æ£Redisæ¹æ³å½åé误","ð ä¿®å¤AIç±»åæ£æµï¼æ¹è¿çµå½±/çµè§å§ç±»åæ£æµç®æ³ï¼é²æ¢è¯¯è¯å«","ð ä¿®å¤åè¾¨çæ£æµï¼ä½¿ç¨è§é¢å®½åº¦èéé«åº¦è¿è¡æ£æµ","ð ä¿®å¤Husky hookså
¼å®¹æ§ï¼æ´æ°shebangæ¯æWindowsç³»ç»","ð ä¿®å¤è±ç£APIé®é¢ï¼å¤ç302éå®åã429éæµãç§»å¨ç«¯APIååºæ ¼å¼ãçµè§å§å§éæ°æ®ã请æ±å¤´è®¾ç½®ï¼é²æ¢éè¯å¾ªç¯åæ ææ°æ®å¾ªç¯"]},{version:"5.9.3",date:"2026-01-13",added:["ð± ç´æé¿é¢éåç¹å»å±å¼åè½ï¼ä¸ºç§»å¨ç«¯é¿é¢éåæ·»å ç¹å»å±å¼/æ¶èµ·åè½","â¡ ä¸è½½åè½å¢å¼ºï¼æ·»å çæ®µæ¶é¿è¿½è¸ªãæ¶é´èå´å宿´è§é¢æ»æ¶é¿æ¾ç¤º","ð ç¹ä½ä¸ææç´¢æ¯æï¼æ·»å ç¹ä½ä¸ææç´¢åè½ï¼æåç¹ä½ç¨æ·æç´¢ä½éª","ð
2026年份çéé项ï¼ä¸ºè±ç£å
容添å 2026年份çéåè½","ð fnOSé¨ç½²æåï¼æ·»å é£çNASï¼fnOSï¼é¨ç½²æåå°READMEææ¡£","ðº TVBoxæºç®¡çå¢å¼ºï¼æ·»å æå¨å¼å
³å宿´æºè§£ææ¯æ","ð¼ï¸ ç¾åº¦å¾ç代çé项ï¼ä¸ºè±ç£å¾çæ·»å ç¾åº¦å¾ç代çéé¡¹ï¼æä¾æ´å¤ä»£çæ¹å¼"],changed:["â¡ ç¹ä½ä¸ææç´¢å
¨é¢ä¼åï¼éç¨è½»é级switch-chineseåºãtree-shakeable导å
¥ãå便¨¡å¼ãå¤çç¥æç´¢ãéå¶è½¬æ¢èå´ï¼å3个åä½ï¼ãç§»é¤åä½detect()è°ç¨","ð§ TVBoxä¼åï¼User-Agentæ´æ°ä¸ºokhttp/4.1.0ï¼ä¼å管çåå°å¼å
³å¸å±","ð User-Agentå
¨é¢åçº§ï¼æ´æ°ææUser-Agentå°2026å¹´ææ°çæ¬ï¼Chrome 135, Firefox 146, Safari 26, Edge 143ï¼","â¡ å¾çä»£çæ§è½ä¼åï¼æ¹è¿å¾çä»£çæ§è½åç¼åçç¥"],fixed:["ð ä¿®å¤ç´æç§»å¨ç«¯é¢éåæ¾ç¤ºï¼ä¼åç§»å¨ç«¯é¢éåæ¾ç¤ºï¼æ·»å chevronæç¤ºå¨ç¨äºå¯å±å¼åç§°","ð ä¿®å¤HeroBanneræ 颿º¢åºé®é¢ï¼ç§»é¤æå¤§å®½åº¦éå¶ï¼é²æ¢æ 颿ªæå溢åºå®¹å¨","ð ä¿®å¤Tavily APIå¯é¥æªä¿åæéï¼æ·»å æªä¿åæ´æ¹è¦å","ð ä¿®å¤EPGé¢éè§£æï¼æ¯æå¤è¡XMLæ ¼å¼çé¢éè§£æ","ð ä¿®å¤æ¶é´èå´æ¾ç¤ºæ¡ä»¶è¿ç®ç¬¦ä¼å
级é®é¢ï¼çº æ£æ¶é´èå´æ¾ç¤ºçæ¡ä»¶å¤æé»è¾","ð ä¿®å¤ç¹ç®è½¬æ¢åºç¨èå´ï¼å°ç¹ä½è½¬ç®ä½è½¬æ¢åºç¨å°æææç´¢åä½ï¼ç¡®ä¿æç´¢å®æ´æ§","ð ä¿®å¤æ ç¾æé®å¯è§æ§åç§»å¨ç«¯ååºå¼ï¼å¢å¼ºæ ç¾æé®å¨ä¸å设å¤ä¸çå¯è§æ§åååºå¼å¸å±","ð ä¿®å¤æç´¢åç±»æé®æ·±è²æ¨¡å¼å¯¹æ¯åº¦ï¼æ¹è¿æ·±è²æ¨¡å¼ä¸æç´¢åç±»æé®ç对æ¯åº¦åå¯è¯»æ§","ð ä¿®å¤ScrollableRowéèæé®æè·æéäºä»¶ï¼é²æ¢ä¸å¯è§æé®ååºç¹å»äºä»¶","ð ä¿®å¤Zeaburé¨ç½²standalone模å¼ï¼å¯ç¨Next.js standalone模å¼ä»¥æ¯æZeaburé¨ç½²","ð ä¿®å¤Firefoxæ¬åæ¶å¤±é®é¢ï¼ä
1½¿ç¨box-shadowæ¿ä»£drop-shadowè§£å³Firefoxæµè§å¨æ¬åæææ¶å¤±","ð ä¿®å¤TVBoxé
ç½®åè§£æï¼æ¯æå å¯é
ç½®ï¼Base64ï¼ãJSON注éè§£æãM3U8ä»£çæºé®ä¼ éã宿´URLè§£æä¿®å¤ç´æç段500é误","ð ä¿®å¤TVBoxåè½é®é¢ï¼AdminConfigç±»åå®ä¹ãç¼è¾æ¨¡å¼å¼å
³ç¶ææ´æ°ãè§£æåææ¾æ¨¡å¼æ¹è¿","ð ä¿®å¤ç¨æ·èåç¾åº¦å¾ç代çé项ï¼å¨ç¨æ·èå䏿·»å ç¾åº¦å¾ç代çé项","ð ä¿®å¤ææ¾é¡µé¢ä¸è½½é
ç½®å¼å
³ï¼ç¡®ä¿ä¸è½½é
ç½®å¼å
³å¨ææ¾é¡µé¢æ£ç¡®çæ"]},{version:"5.9.2",date:"2026-01-05",added:["ð¬ è±ç£é¢åçç³»ç»å¢å¼ºï¼æ·»å ç§»å¨APIèªå¨å·æ°ãä¸ç¨å·æ°ç«¯ç¹ãlocalStorageæä¹
åãèªå¨éè¯æºå¶ãæ§è½æ¥å¿è¿½è¸ªï¼æ¯æçµè§å§å
容","ð¾ V2ç¨æ·æ°æ®å¤ä»½æ¯æï¼å¤ä»½/è¿ç§»ç³»ç»æ·»å V2ç¨æ·æ°æ®æ¯æ","ð¯ 卿¼«åç±»é»è®¤æåºï¼ä¸ºå¨æ¼«å类页é¢é»è®¤ä½¿ç¨'æè¿ç度'æåº","ð¥ æ°ç¨æ·é»è®¤ç¨æ·ç»ï¼ä¸ºæ°æ³¨åç¨æ·æ·»å é»è®¤ç¨æ·ç»åè½","ð 设计åå®ç°åèææ¡£ï¼æ·»å 设计åå®ç°åèç« è","ð± TVBoxè¯æç§»å¨ç«¯ååºå¼ä¼åï¼ä¼åTVBoxè¯æé¡µé¢ç§»å¨ç«¯å¸å±","ð 管çåå°ç¨æ·ç»çéï¼ä¸ºç®¡çåå°ç¨æ·å表添å ç¨æ·ç»çéåè½","ð§ 代çé
置系ç»ï¼æ·»å TVBoxåè§é¢ææ¾ç¬ç«ä»£çé
ç½®ï¼æ¯ææºè½URLæ¿æ¢ãç¶ææ£æµãé
ç½®æåææ¡£","â¡ M3U8ä¸è½½å¨å级ï¼å级M3U8ä¸è½½å¨å¹¶åä¸è½½é度æå6åï¼æ·»å ä¸è½½è®¾ç½®UIåè¾¹ä¸è¾¹åèªå¨æ£æµ","ðº EPGç³»ç»å¢å¼ºï¼æ·»å è°è¯API端ç¹ã宿´è§£æè°è¯ä¿¡æ¯ãåç§°åéå¹é
ï¼ä¿ætvg-idä¼å
ï¼ãLogoæåæ¾ç¤ºååé徿 ã夿¾ç¤ºåç§°æ¯æ","â¡ ç´æç´è¿æ¨¡å¼ï¼æ·»å 带æºè½CORSæ£æµçç´æç´è¿ææ¾æ¨¡å¼ï¼å¨ç®¡çåå°æ·»å CORSç»è®¡é¢æ¿"],changed:["ð± ç§»å¨å¯¼èªå
¨é¢é设计ï¼åºé¨å¯¼èªéç¨Netflix飿 ¼å
¨å®½å¸å±ï¼æµ®å¨è¶åâåºé¨åé âå
¨å®½ï¼ï¼ModernNavé设计为å
¨å®½æ ·å¼","â¡ å¯¼èªæ§è½ä¼åï¼æ·»å prefetch={false}ãæµ
è²æ¨¡å¼æ¯æãåºäºtransitionçFastLinkç»ä»¶","â¡ è±ç£åç±»éæ©å¨æ»å¨ä¼åï¼ä½¿ç¨requestAnimationFrameä¼åæ»å¨æ§è½","â±ï¸ å叿¥åç¼åæ¶é¿è°æ´ï¼å°ç¼åæ¶é¿ä»24å°æ¶åå°å°8å°æ¶","â¡ çæ¬æ£æ¥åå±ç¼åï¼æ·»å åå±ç¼åå请æ±å»éä¼å","ðº EPGåç§°å¹é
ä¼åï¼ä½¿ç¨ååæ å°ä¼åEPGåç§°å¹é
æ§è½"],fixed:["ð ä¿®å¤HeroBannerå¤é¡¹é®é¢ï¼èæ¯å¾å§ç»ä½¿ç¨é«æ¸
çæ¬ãææé¢åçURL渲æãé³éæé®ä½ç½®é¿å
éå ãlocalStorageè¿æURLæ¸
çå¹¶éè¯å·æ°","ð ä¿®å¤ç§»å¨ç«¯æ§è½åé¢åç缺失ï¼ä¼åç§»å¨ç«¯æ§è½å¹¶è§£å³é¢åç丢失é®é¢","ð ä¿®å¤å¨æ¼«é¡µé¢æåºåå§åï¼å¨ç»ä»¶æè½½æ¶åå§åé»è®¤æåºå¼","ð ä¿®å¤å叿¥å<dl>ç»ææ¯æï¼ç¬è«æ·»å 对<dl>ç»æçæ¯æ","ð ä¿®å¤TVBoxè¯æç§»å¨ç«¯ææ¬æº¢åºï¼é²æ¢ç§»å¨ç«¯ææ¬æº¢åºï¼å®æææç»ä»¶ç§»å¨ç«¯ååºå¼ä¿®å¤ï¼è§£å³é¢å¤ç溢åºé®é¢","ð ä¿®å¤ç¨æ·ç»åAPIæéï¼é¢éç¨æ·ç»APIãæ¾ç¤ºç»åæéãå¤çRedisæ ç¾åºåå","ð ä¿®å¤è®¢é
æºæ¿æ¢é»è¾ï¼æ¿æ¢è®¢é
æºèéåå¹¶","ð ä¿®å¤è§é¢ä»£çåºç¨ï¼å°è§é¢ä»£çé
ç½®åºç¨å°æºéªè¯ç«¯ç¹åæºæµè¯APIï¼å¨æºçº§å«èé请æ±çº§å«åºç¨","ð ä¿®å¤çè§é¢è·³è¿æ£æµï¼ä¼åçè§é¢çè·³è¿æ£æµé»è¾","ð ä¿®å¤æºåæ¢è¿åº¦ä¿çï¼åæ¢è§é¢æºæ¶ä¿çææ¾è¿åº¦","ð ä¿®å¤è±ç£å页忰æ®ï¼ç»ä¸å页常é鲿¢ä¸ä¸è´ãæ·»å å»éé»è¾é²æ¢éå¤ãä¼åå¾çé¢å è½½åAPI代çç¡®ä¿CORSå®å
¨","ð ä¿®å¤æµå¼ä¸è½½å¹¶ååå
¥ï¼è§£å³è¾¹ä¸è¾¹åå¹¶ååå
¥æ°æ®ä¸¢å¤±é®é¢","ð ä¿®å¤EPGå¤é¡¹é®é¢ï¼èç®å¹é
åæ¶éææé¢éæ ç¾ãæ°æ®ååå°ææM3Ué¢éåç§°åä½ãå¤çåè¡programmeå
ç´ å
ètitleæ ç¾ãè°è¯å½æ°åºç¨ååæ å°ä¼å","ð ä¿®å¤ç´æCORSæ£æµï¼ä¼åCORSæ£æµå¤çæ··åå
容ï¼Mixed Contentï¼æ
åµ","ð ä¿®å¤ç´æé¡µé¢ç§»å¨ç«¯ææ¬æ¾ç¤ºï¼ä¼åé¿é¢éåå¨ç§»å¨ç«¯çæ¾ç¤ºï¼ä½¿ç¨line-clamp-1 md:line-clamp-2ååºå¼æªæï¼ç§»é¤ä¸éç¨äºç§»å¨ç«¯çhoveræ»å¨å¨ç»ï¼æ·»å title屿§æ¾ç¤ºå®æ´ææ¬ï¼ç¡®ä¿ç´è¿/ä»£çæ¨¡å¼æç¤ºå¨å§ç»å¯è§"]},{version:"5.9.1",date:"2025-12-31",added:["ð¨ ç»çæè®¾è®¡åºç¨å°æ§å¶æé®ï¼ä¸ºæ§å¶æé®åºç¨ç»çæè®¾è®¡ææ","ð CMS代çåæäººå
å®¹è¿æ»¤å¢å¼ºï¼æ·»å CMS代çåè½å¹¶å¢å¼ºæäººå
å®¹è¿æ»¤","â¡ å¾ç代çè¶
æ¶åCORSæ¯æä¼åï¼ä¼åå¾ç代çï¼æ·»å è¶
æ¶æ§å¶åCORSæ¯æ","ð ACGç§åæç´¢éæï¼æ·»å ACGç§åæç´¢åè½","ð ï¸ cn()å·¥å
·å½æ°ï¼æ·»å ç¨äºTailwindç±»åå¹¶çcn()å®ç¨å½æ°","ð å¤Provider OIDCç¼è¾å¨åè°URLå¤å¶æé®ï¼ä¸ºç®¡çåå°OIDCç¼è¾å¨æ·»å åè°URLä¸é®å¤å¶åè½","ð¯ è±ç£ä»£çAPIï¼æ·»å 带unstable_cacheçè±ç£ä»£çAPIåuseDoubanInfo hook","ð è±ç£24å°æ¶ç¼ååå¢å¼ºå¤´åæåï¼ä¸ºè±ç£æ°æ®æ·»å 24å°æ¶ç¼åå¹¶å¢å¼ºæ¼å头åæå","ð¨ CategoryBar Material UI Tabsï¼ä¸ºç´æåææ¾é¡µé¢æ·»å å·¥ä¸é£CategoryBarï¼ä½¿ç¨Material UI Tabså®ç°å¯é æ»å¨åååºå¼åç±»éæ©å¨","ð¬ Netflix飿 ¼å¾½ç« ç³»ç»ï¼ç»ä¸ææå¾½ç« ï¼å§éå¾½ç« ãéç¥å¾½ç« ãæºæç¤ºå¨ï¼ä¸ºNetflix飿 ¼è®¾è®¡","ð
å³å°ä¸çº¿æ ç¾é¡µï¼æ·»å å³å°ä¸çº¿å
容æ ç¾é¡µåè½","ð¤ AIåè½å
¨é¢å¢å¼ºï¼æ·»å æµå¼ä¼ è¾ãç¼æå¨ãè§é¢ä¸ä¸ææ¯æï¼éæè±ç£åTMDBæ°æ®ï¼æ¯æID缺失æ¶èªå¨TMDBæç´¢","ð èªå®ä¹ç¡®è®¤å¯¹è¯æ¡ï¼ä¸ºæ¸
餿ä½åç»§ç»è§çè®°å½æ¸
餿·»å å¯éç¡®è®¤å¯¹è¯æ¡","ð¤ Tavilyä»
æ¨¡å¼æ¯æï¼æ¯ææ éAI APIçTavilyæç´¢æ¨¡å¼ï¼æä¾çµæ´»çAPIéªè¯","ð¬ Netflix飿 ¼HeroBannerï¼æ·»å 带é¢åçåèæ¯å¾çNetflix飿 ¼æ¨ªå¹
ï¼æ¯æbackdropå ä½ç¬¦","ð¥ è§é¢ä»£çåå¾çURLéå®åä¿®å¤ï¼æ·»å è§é¢ä»£çåè½å¹¶ä¿®å¤å¾çURLéå®å","ð è°è¯æ¨¡å¼æ§å¶å°åæ¢ï¼æ·»å 带æ§å¶å°åæ¢çè°è¯æ¨¡å¼ï¼
1å¯ç»è¿ç¼å","ð¥ è§å½±æ¿æºåæ¢ç¡®è®¤å¯¹è¯æ¡ï¼ä¸ºè§å½±æ¿æ·»å æºåæ¢ç¡®è®¤åè½ï¼ææ¾è®°å½æ·»å douban_idæ¯æ","â¡ Netflix飿 ¼æºè½é度æµè¯ï¼æ·»å 带æºè½æå忢ç宿¶é度æµè¯åè½","ð Tavily API使ç¨è¿½è¸ªï¼å¨AIé
ç½®ä¸æ·»å Tavily APIä½¿ç¨æ
åµè¿½è¸ªï¼æ¯æå个å¯é¥å·æ°","ð 2026å¹´å叿°æ®ç¬è«ï¼æ·»å é¦é¡µç¬è«è·å2026å¹´å叿°æ®"],changed:["ð± ææ¾é¡µUIå¢å¼ºï¼ç§»å¨ç«¯ä¼å
设计并éç»æ§å¶å¨å¸å±","ð¨ LinuxDo OIDC Logoæ´æ°ï¼ä½¿ç¨å®æ¹è®¾è®¡Logoå¹¶éé
UI","â¡ Tailwind v4è§èç±»è¯æ³å级ï¼å级å°Tailwind v4è§èè¯æ³","ð æ¿æ¢æå¨æ»å¨ä¸ºåçscrollIntoView APIï¼ä½¿ç¨æµè§å¨åçAPIæ¿ä»£æå¨æ»å¨å®ç°","ð ç§»é¤CategoryBarï¼æ¢å¤å°ä¹åçæ¬ï¼æ´æ°è§å½±æ¿ææ¡£ä¸ºå¤å¹³å°Dockeréå","â¡ æç´¢æ§è½ä¼åï¼ä¼åå£åº¦æç´¢æ°ååä½çæååä½æç´¢çç¥ï¼æåæç´¢é度","ð ç¨èªå®ä¹ConfirmDialogæ¿ä»£åçconfirmï¼ä½¿ç¨èªå®ä¹ç¡®è®¤å¯¹è¯æ¡ç»ä»¶","â¡ é¦é¡µææScrollableRowå¯ç¨èæåï¼ä¿®å¤ç§»å¨ç«¯å¡é¡¿é®é¢","âï¸ HeroBannerä¼åï¼æ ååç¼åæ¶é¿ä¸º4å°æ¶ï¼éææ§è½å¹¶æåèªå®ä¹hooks","ð æåAIæéæ£æ¥å°é¡µé¢çº§å«ï¼å®ç°ä¸è´çç¶æç®¡ç","ð å级ææç¬è«å代çå°2025æä½³å®è·µï¼å
¨é¢ä¼åç¬è«å代çå®ç°"],fixed:["ð ä¿®å¤è§å½±æ¿é
ç½®ä¿ååè¿æ©è·åç»è®¡ä¿¡æ¯ï¼å离已ä¿åé
ç½®åæ¬å°è¾å
¥ç¶æï¼é²æ¢è¿æ©APIè°ç¨","ð ä¿®å¤OIDCç¨æ·ç»å½æ¶é´è®°å½ï¼ä¸ºç°æåæ°ç¨æ·ç«å³è®°å½ç»å½æ¶é´ï¼è§£å³æ¾ç¤ºæªç¥æ¶é´åå¾
æ¿æ´»ç¶æé®é¢","ð ä¿®å¤æ§çç§»å¨æµè§å¨backdrop-filterå
¼å®¹æ§ï¼ä½¿ç¨95%ä¸éæåº¦å®å¿èæ¯æ¿ä»£æ¨¡ç³ææï¼èªå¨ä¿®å¤36个使ç¨backdrop-blurç±»çæä»¶ï¼ç¡®ä¿æ§çç§»å¨ç³»ç»UI宿´æ¸²æ","ð ä¿®å¤ç¼ºå¤±ææ ææµ·æ¥å¾çæ¾ç¤ºï¼VideoCardå¨å¾çå 载失败å设置fallback SVGå ä½ç¬¦ï¼è¿æ»¤ç©ºç½vod_picåæ®µï¼ç¡®ä¿ææè§é¢å¡çæ¾ç¤ºæ£ç¡®å ä½ç¬¦èé空ç½","ð ä¿®å¤æ¨¡ææ¡å
å®¹æªæé®é¢ï¼ä¿®å¤Tailwindæ¨¡ææ¡ç»æãOIDCæ¨¡ææ¡ãOIDCæä¾åæ¨¡ææ¡æ¡é¢ç«¯æ»å¨çå
å®¹æªæé®é¢ï¼ä½¿ç¨æ£ç¡®ç»æåmin-h-0","ð æ¹è¿ç§»å¨ç«¯ååºå¼ï¼ä¼å认è¯é¡µé¢ãè§å½±æ¿åOIDCé
ç½®çç§»å¨ç«¯æ¾ç¤ºåå¸å±","ð ä¿®å¤æç´¢ç»æäººå·¥éå¶ä¸¢å¼ææå¹é
ï¼ç§»é¤äººä¸ºè®¾ç½®çç»ææ°ééå¶","ð ä¿®å¤ç´æCategoryBaræ»å¨é®é¢ï¼è§£å³å¯¹è±¡ä¾èµå¯¼è´çæ»å¨å¾ªç¯ãæ»å¨è·³è·ãæå¨/èªå¨å²çªçé®é¢","ð ä¿®å¤è¿å顶鍿é®ï¼ä¿®å¤ææ¾é¡µé¢ACGè¿å顶鍿é®åç½çæ¨¡ææ¡è¿å顶鍿é®çå®ä½ååè½","ð ç®åéæ´»è·ç¨æ·æ¸
çé»è¾ï¼ä»
æ£æ¥æåç»å½æ¶é´","ð ä¿®å¤Dockerç¸å
³é®é¢ï¼è§£å³çå§APIé®é¢ãHTTPSæ¯æãé
ç½®ç¼åé®é¢çDockeré¨ç½²ç¸å
³å¤ä¸ªé®é¢","ð ç»ä¸é¦é¡µåUserMenuå叿¥æè®¡ç®ï¼ç»ä¸è·¨ç»ä»¶çæ¥æè®¡ç®é»è¾","ð 为æ®éç¨æ·ç»è®¡VideoCardå
ç¯æææ·»å æ¬å缩æ¾å¨ç»ï¼æ¹è¿äº¤äºææ","ð¤ AIåè½ä¿®å¤åæ¹è¿ï¼ä¿®å¤æ¨èæåãYouTubeè§£æãæµå¼æ¨¡å¼ãMarkdown渲æãTavily APIå¯é¥è¾å
¥ãæ¬¢è¿æ¶æ¯ãè天åå²åæ¥çå¤ä¸ªAIåè½é®é¢","ð¤ Tavilyæç´¢æ¨¡å¼ä¼åï¼æ¯æSSEæµå¼ä¼ è¾ãç§»é¤é»è®¤å¼åéãæ¹è¿ç¨æ·æå¯¼åå好æç¤º","ð¤ AIæµå¼ä¼ è¾ä¼åï¼ç«å³æ¾ç¤ºèå¤©æ¶æ¯ãMarkdownæ ¼å¼æ¬¢è¿æ¶æ¯ãæ¾ç¤ºé¢è®¾æé®","ð¤ AI婿卿éé
ç«ç¹åç§°ï¼ä½¿AI婿èªå¨éåºç«ç¹åç§°","ð¨ ä¿®å¤ç²æ§çéæ é®é¢ï¼ä½¿ç¨è´è¾¹è·ææ¯æ¶é¤é´éãä¿®å¤å
容穿éã使ç¨ç²¾ç¡®ååºå¼è´topå¼ä¼åä¸åå±å¹å°ºå¯¸æ¾ç¤º","ð¬ ä¿®å¤åæ¢è§é¢æºæ¶ä¿çå§éç¼å·ï¼è§£å³æºåæ¢åå§éç¼å·ä¸¢å¤±é®é¢","ð¬ ä¿®å¤HeroBanneré®é¢ï¼ä¿®å¤é¦æ¬¡å è½½è§é¢èªå¨ææ¾ãè°æ´æ¨ªå¹
é«åº¦ãå¯ç¨è§é¢ã使ç¨å§ç
§ä½ä¸ºèæ¯ãä¿®å¤å¨æ¼«åç±»","ð¥ ä¿®å¤è§å½±æ¿æºåæ¢é®é¢ï¼æ¹è¿æºåæ¢æ£æµã使ç¨doubanIdåæ é¢å 年份å¹é
è§é¢ã使ç¨ç¶æå¼å¹é
ã使ç¨router.push带reloadæ å¿ãéæ°å è½½è§é¢æ°æ®ã使ç¨React key prop强å¶ç»ä»¶éæ°æè½½","ð± ä¿®å¤æ§çiOS Safari认è¯é¡µé¢å´©æºï¼è§£å³iOS Safariå
¼å®¹æ§é®é¢","ð¬ ä¿®å¤è±ç£é¢åçç¼åé®é¢ï¼è§£å³é¢åçURLè¿æé®é¢ï¼è°æ´CDNç¼ååunstable_cacheçç¥ï¼å°CDNç¼åä»24å°æ¶éè³30åé"]},{version:"5.9.0",date:"2025-12-27",added:["ð å¤Provider OIDCæ¯æï¼æ·»å å¤Provider模å¼ï¼æ¯æåæ¶é
ç½®å¤ä¸ªOAuthæä¾å","ð Facebook OAuthç»å½æ¯æï¼éæFacebook OAuth认è¯","ð 微信åApple OAuthç»å½æ¯æï¼æ·»å 微信åApple Sign In认è¯","ð Apple JWKS URIæ¯æï¼ä¸ºApple Sign Inæ·»å JWKS URIé
ç½®","ð OIDC认è¯åV2ç¨æ·åå¨ï¼å®ç°OIDC认è¯å¹¶è¿ç§»å°V2ç¨æ·åå¨ç³»ç»","ð¥ è§å½±æ¿åè½ï¼æ·»å å¤é¨æå¡å¨éæçå¤äººè§å½±æ¿åè½","ð¥ è§å½±æ¿ç¦»å¼/è§£æ£åè½ï¼æ¯ææ¿é´ç®¡çåhook顺åºä¼å","ð¥ è§å½±æ¿éæå°ææ¾é¡µï¼å¨ææ¾é¡µé¢éæè§å½±æ¿åè½","ð¥ è§å½±æ¿åæ¥å¢å¼ºï¼æ·»å è§é¢å±ç¤ºåæºè½æ§å¶","ð¥ è§å½±æ¿æé®å
¨å±å¸å±ï¼å°è§å½±æ¿æé®ç§»è³å
¨å±å¸å±","ð¥ M3U8客æ·ç«¯ä¸è½½åè½ï¼æ·»å M3U8è§é¢å®¢æ·ç«¯ä¸è½½æ¯æ","ð¥ æ¹éå§éä¸è½½åè½ï¼æ¯ææ¹éä¸è½½å¤ä¸ªå§é","ð¬ ææ¾å¨ç¼å²ä¼åï¼æ·»å ä¸ç§ç¼å²æ¨¡å¼ä¼å","ð¨ Anime4Kè¶
å辨çï¼ä½¿ç¨WebGPUå®ç°è§é¢è¶
å辨ç","ð¯ èªå®ä¹å¹¿åè¿æ»¤ä»£ç ï¼æ·»å èªå®ä¹å¹¿åè¿æ»¤è§ååè½","ð æ¶èAPIæ§è½çæ§ï¼ä¸ºæ¶èåè½æ·»å æ§è½çæ§","ð èªå®ä¹å¹¿åè¿æ»¤éç½®æé®ï¼æ·»å ç¬ç«çéç½®åæ¢å¤é»è®¤æé®"],changed:["ð è¿ç§»å°V2ç¨æ·åå¨ï¼ä½¿ç¨SHA256å å¯çV2ç¨æ·åå¨ç³»ç»","ð¥ éæè§å½±æ¿å
¨å±ç¶æç®¡çï¼æ¹è¿è¿æ¥åç¶æç®¡ç","ð¥ ä¼åå§éæ¾ç¤ºåç¨æ·åå è½½ï¼æ¹åè§å½±æ¿ç¨æ·ä½éª","ð ä¼åæ¶è忥è¶
æ¶ï¼ç§»é¤è¿å¤çé误æç¤º","ðª æ¹è¿C
1ookieå è½½æ£æµï¼ä½¿ç¨æä¹
è½®è¯¢æ£æµ","ð¯ è§å½±æ¿è§é¢å¡çæ¾ç¤ºï¼æ¾ç¤ºå¸¦æµ·æ¥çè§é¢å¡ç"],fixed:["ð æ¹è¿GitHub OAuthç¨æ·ä¿¡æ¯å¤çï¼æ·»å GitHubä¸ç¨API headersï¼æ¯æç§æé®ç®±è·å","ð ä¿®å¤GitHub OAuthéæé®é¢ï¼ä½¿ç¨æ£ç¡®çscopeåAccept headerï¼æé¤id_tokenéªè¯","ð ä¿®å¤OIDC redirect_uriï¼æ¯ææ¬å°å¼åååå代çç¯å¢çæ£ç¡®éå®å","ð æ·»å Apple Sign InçPOSTå¤çå¨ï¼æ¯æform_postååºæ¨¡å¼","ð ä¿®å¤Apple Sign InçOIDCåç°ï¼æ¹è¿Apple OAuthé
ç½®","ð ä¿®å¤Zeaburååå代ççOIDC redirect_urié®é¢ï¼è§£å³é¨ç½²ç¯å¢çéå®åé®é¢","ð ä¿®å¤OIDC Provideræ£æµï¼éè¿issueræ£ç¡®è¯å«Provider","ð ä¿®å¤OIDC注ååç¨æ·åæ¥ï¼ç¡®ä¿æ°ç¨æ·æ£ç¡®åå»ºåæ¾ç¤º","ð ä¿®å¤admin颿¿å
å«V2ç¨æ·ï¼getAllUsers()ç°å¨å
å«OIDCç¨æ·","ð ä¿®å¤æ³¨ååèªå¨ç»åºï¼æ¹è¿é
ç½®ç¼åå¤±ææºå¶","ð ä¿®å¤æ³¨ååç»å½Cookieåç§°ä¸ä¸è´ï¼ç»ä¸Cookieå½å","ð ä¿®å¤å®¢æ·ç«¯è·¯ç±æ³¨åCookieæªåºç¨ï¼ç¡®ä¿Cookieæ£ç¡®è®¾ç½®","ð æ·»å oidc-registerå°ä¸é´ä»¶æé¤å表ï¼å
许OIDC注å页é¢è®¿é®","ð ä¿®å¤ç¨æ·æ³¨ååå建é®é¢ï¼ç¡®ä¿æ°ç¨æ·æ£ç¡®å建","ð æ¢å¤V1ç¨æ·åå¨ï¼ä¸ºææç¨æ·ä½¿ç¨V1åå¨","ð¥ ä¿®å¤Windowsä¸çM3U8ä¸è½½åhuskyï¼æ¹è¿Windowså
¼å®¹æ§","ð¼ï¸ ä¿®å¤å¾çé¢å è½½ä¸çquerySelectoré误ï¼å¤çæ ¼å¼é误çURL","ð¥ ä¿®å¤æåç¦»å¼æ¿é´åææ¾åæ¥é®é¢ï¼æ¹è¿åæ¥æºå¶","ð¥ 导åºWatchRoomContextTypeå¹¶æ·»å è¿æ¥ç¶ææç¤ºå¨ï¼æ¹è¿ç±»åå®å
¨","ð¥ ä¿®å¤æ¿é´å建/å å
¥ç«å³æ´æ°UIç¶æï¼æ¹åç¨æ·åé¦","ð¥ ä¿®å¤stats API使ç¨POSTæ¹æ³ï¼æ´æ°APIè°ç¨æ¹å¼","ð¥ ä¿®å¤è§å½±æ¿ç¨æ·å硬ç¼ç é®é¢ï¼å¨æä»auth cookiesè·åç¨æ·å","ð¥ ä¿®å¤å§é忢忥ï¼ä½¿ç¨URL videoIdèédetail.vod_id","ð¥ ä¿®å¤å§é忢èªå¨è·éæ¿ä¸»ï¼æ é确认","ð¥ ä¿®å¤å§é忢忥并éé
watch-room-serveræéï¼æ¹è¿æéå¤ç","ð¥ ä¿®å¤è§å½±æ¿é¦æ¬¡è®¿é®401å访客æ¾ç¤ºé®é¢ï¼æ¹è¿è®¤è¯åæ¾ç¤º","ð¥ å¯ç¨å§é忢忥ï¼è¯»åURL indexåæ°","ð¥ è°æ´è§å½±æ¿æé®ä½ç½®ï¼ä½äºè¿å顶鍿é®ä¸æ¹","ð¥ ä¿®å¤è·éæ¿ä¸»æ¶é¿å
éåºæ¿é´ï¼é²æ¢é¡µé¢å·æ°","ð¥ ä¿®å¤ç¨æ·åæ¾ç¤ºé®é¢ï¼æ¹è¿è§é¢å¡çé»è¾","ð¯ ä¿®å¤SSR导è´ç¨æ·åé»è®¤ä¸ºguestï¼è§£å³æå¡ç«¯æ¸²æé®é¢","ð ä¿®å¤é¦æ¬¡å å
¥æ¿é´çgueståç§°é®é¢ï¼æ¹è¿ç¨æ·ååå§å","ð æ·»å ç¨æ·ååå§åé®é¢çè¯¦ç»æ¥å¿ï¼ä¾¿äºè°è¯","ð¨ ä¿®å¤èªå®ä¹å¹¿åè¿æ»¤ä¿åï¼æ£ç¡®çHTTPæ¹æ³å请æ±è´è½½","ð¡ï¸ 为CustomAdFilterConfigæ·»å JSONè§£æé误å¤çï¼å¢å¼ºç¨³å®æ§"]},{version:"5.8.0",date:"2025-12-24",added:["ð¯ AIæ¨èæé®ï¼å¨ModernNavå¯¼èªæ æ·»å AIæºè½æ¨èæé®ï¼å
¨å±å¯ç¨","ð¬ çå§èªå¨è·³éï¼å¤ç¨APIéæ°ä¸å¯ç¨æ¶èªå¨è·³å°ä¸ä¸é","â¡ å级å°Next.js 16.1 + Tailwind CSS 4.1 + React 19ï¼äº«åææ°æ¡æ¶æ§è½æå","ð TMDBæ¼åä½åå¤ç¨ï¼æ·»å TMDBä½ä¸ºæ¼åä½åæç´¢çå¤ç¨æ°æ®æº","ð¾ æ¼åä½åç¼åï¼ç¼åæ¼åä½åä¿¡æ¯2å°æ¶ï¼åå°API请æ±","ð¬ æ¼åä½åå
èæ¾ç¤ºï¼ä½¿ç¨æç´¢API卿æ¾é¡µé¢å
èæ¾ç¤ºæ¼åä½å","ð¨ 交äºå¼æ¼åä½åæ¥çå¨ï¼å¨ææ¾é¡µé¢æ·»å 交äºå¼æ¼åä½åæµè§åè½","âï¸ å¼¹å¹ç»¼åè®¾ç½®ï¼æ·»å 宿´çå¼¹å¹è®¾ç½®é¢æ¿ï¼æ¯æé度ãéæåº¦ãåä½çé
ç½®","ð¨ å¼¹å¹è®¾ç½®éæï¼å°å¼¹å¹é
ç½®éæå°å
¨å±è®¾ç½®é¢æ¿"],changed:["â¡ AIè天æ§è½ä¼åï¼ä¼åèå¤©å¼¹çªæ§è½ï¼æ¶é¤è¾å
¥å»¶è¿","æ·»å 100ms鲿æ»å¨ï¼åå°è¿åº¦æ»å¨å¨ç»","使ç¨requestIdleCallbackå®ç°300ms鲿ç弿¥localStorageåå
¥","使ç¨useCallbackè®°å¿åææäºä»¶å¤ç彿°","å建记å¿åMessageItemç»ä»¶ï¼ä½¿ç¨useMemoç¼åæ ¼å¼åå
容","è¾å
¥å»¶è¿åå°85-90%ï¼æ¶æ¯é渲æåå°70-85%","ð¨ VideoCard容卿¥è¯¢ï¼ä¸ºVideoCardæ·»å Tailwind 4容卿¥è¯¢æ¯æ","â¡ React 19æ§è½ä¼åï¼ä½¿ç¨useTransitionä¼åéç´§æ¥æ´æ°ï¼æ·»å å¾çä¼å
级","â¡ æ¶èä¹è§æ´æ°ï¼ä½¿ç¨React 19çuseOptimisticä¼åæ¶èåè½ï¼åå¹¶éå¤useEffect","ð±ï¸ ç¨æ·è忬åä¼åï¼ä¼åç¨æ·è忬åè¿æ¸¡æ§è½","ð¨ Tailwind CSS 4.1ä¼åï¼ä¼åglobals.css以éé
Tailwind CSS 4.1","ð§ Telegramç¨æ·èªå¨æ¸
çï¼ä¸ºTelegramç¨æ·æ·»å createdAtåæ®µä»¥å¯ç¨èªå¨æ¸
ç"],fixed:["ð çå§éè¯¯ä¿¡æ¯æ¾ç¤ºï¼å¨çå§ææ¾å¨ä¸æ¾ç¤ºå®é
çAPIé误信æ¯","ð§ å¤ç¨APIé误å¤çï¼æ¹è¿å¤ç¨APIå符串ååºçé误å¤ç","ð¯ AIæ¨¡ææ¡å±
ä¸ï¼ä¿®å¤AIæ¨¡ææ¡å±
ä¸é®é¢ï¼ç¡®ä¿AIæé®å
¨å±å¯ç¨","ð¼ï¸ TMDB APIç½å±ä¿®å¤ï¼ä½¿ç¨TMDB APIè·¯ç±æ¿ä»£å®¢æ·ç«¯å¯¼å
¥ï¼è§£å³ç½å±é误","ð æ¼åç¼å鮿 ¼å¼ï¼ä¿®æ£æ¼åç¼å鮿 ¼å¼é®é¢","ð® å¼¹å¹é度设置ï¼ä¿®å¤å¼¹å¹é度设置以å¹é
åçæä»¶æ°å¼"]},{version:"5.7.1",date:"2025-12-13",added:["ð¨ æ¯ç»çæææ§å¶æ æä»¶ï¼ä¸ºææ¾å¨æ·»å ç°ä»£åæ¶²æç»çï¼liquid-glassï¼æ¬æµ®æ§å¶æ ææ","ð¬ è±ç£ç¨æ·è¯è®ºåè½ï¼å¨ææ¾é¡µé¢å±ç¤ºè±ç£çè¯ï¼æä¾ç¨æ·çå®è§å½±è¯ä»·åè","â å
¨å±æ¶èæé®ï¼ä¸ºææè§é¢å¡çåçå§å¡çæ·»å æ¶èæé®ï¼å¿«éæ¶èåç±å
容","ð èªå¨åæ¥æ¶èå
æ°æ®ï¼ä»ææ¾é¡µé¢èªå¨åæ¥æ´æ°æ¶èå
容çå
æ°æ®","ð å¤ç¨APIæ¯æï¼ä¸ºçå§æ·»å å¤ç¨APIæ¯æï¼å¢å¼ºçå§å
æ°æ®è·åè½å","ð æ¶èè¿æ»¤ãæåºåç»è®¡ï¼æ¯ææç±»åè¿æ»¤ãå¤ç§æåºæ¹å¼å详ç»ç»è®¡ä¿¡æ¯","ð 卿¼«åç±»æ¯æï¼å¨æ¶èè¿æ»¤ä¸æ·»å 卿¼«ï¼animeï¼ç±»å«"],changed:["â¡ é¦å±å¾çå è½½ä¼åï¼ä¼åé¦å±å
容çå¾çå è½½çç¥ï¼æåé¦å±æ¸²æ
1é度","ð¯ å¯éèæåæ»å¨ï¼ä¸ºScrollableRowæ·»å å¯éçèæåæ¯æï¼æåé¿å表æ§è½","â±ï¸ å»¶è¿è¯¦æ
请æ±ï¼ä½¿ç¨requestIdleCallbackå»¶è¿è¯¦æ
请æ±ï¼ä¼åä¸»çº¿ç¨æ§è½","ð¨ VideoCard渲æä¼åï¼ä¼åVideoCardç»ä»¶æ¸²ææ§è½ï¼åå°ä¸å¿
è¦ç鿏²æ","ð¬ ç¦ç¨å¡çå¨ç»ï¼ç¦ç¨å¡çå¨ç»å¹¶ç®åmotioné
ç½®ï¼æåæ´ä½æµç
度"],fixed:["ð§ æ§å¶æ å¸å±ä¿®å¤ï¼åå½å®æ¹liquid-glasså®ç°ï¼ä¿®å¤æå¨è¿åº¦æ¡æ¶æ§å¶æ æ¼ç§»çé®é¢ï¼éè¿æé®èªå¨ç¼©å°é²æ¢æº¢åº","ðº çå§å¡çéæ°æ¾ç¤ºï¼å§ç»è·åå¹¶æ¾ç¤ºçå§ççå®éæ°","ð æ¶èå
å®¹ææ¾ä¿®å¤ï¼ä¸ºæ¶èå
å®¹çææ£ç¡®çææ¾URL","ð è±ç£æºåæ°ä¿®å¤ï¼é²æ¢è±ç£æºåæ°å¯¼è´ææ¾é¡µé¢å´©æº","ð¯ åç±»è¿æ»¤ä¿®å¤ï¼æé¤ç´æé¢éåçªå§ï¼ä¿®æ£çµè§å§typeåæ®µï¼æ¹åæ¶èåç±»åç¡®æ§","ð éæ°å¾½ç« æ¾ç¤ºï¼APIå¯ç¨æ¶ç«å³æ¾ç¤ºéæ°ï¼å¤±è´¥æä»
1éæ¶éèå¾½ç« ","ð·ï¸ ç±»åè¯å«å¢å¼ºï¼æ£ç¡®è¯å«çå§ã综èºçç±»åï¼é²æ¢ç©ºå符串导è´åç±»é误","ð çå§æç´¢ç«ææ¡ä»¶ï¼è§£å³æ¸
空æç´¢æ¶çç«ææ¡ä»¶é®é¢","ð å¤ç¨APIä¼åï¼æ·»å ä¸ç¨ä»£çãHTTPS转æ¢ãæ°æ®éªè¯çï¼æåçå§å
容è·åæåç"]},{version:"5.7.0",date:"2025-12-06",added:["ð æ¼å头å忍èå½±çåè½ï¼å¨ææ¾é¡µé¢å±ç¤ºæ¼å头ååç±»ä¼¼å½±çæ¨è","ð ç´ææºæ ç¾é¡µæç´¢åè½ï¼ä¸ºç´ææºæ ç¾é¡µæ·»å æç´¢åè½ï¼å¿«éæ¥æ¾ç´æé¢é"],changed:["ð¼ï¸ é»è®¤å¾çä»£çæ¨¡å¼æ¹ä¸º serverï¼å¨ææç»ä»¶ä¸å°é»è®¤å¾ç代çä» direct æ¹ä¸º server 模å¼","ð
æ¼åä¿¡æ¯æ¾ç¤ºä¼åï¼ä¸ºæ¼åå§ååè§è²æ·»å tooltipï¼é²æ¢ææ¬æªæ","ð¦ å级ä¾èµï¼å级 hls.js å° v1.6.15"],fixed:["ð¼ï¸ ä¿®å¤æ¼åå¤´åæ¾ç¤ºé®é¢ï¼","æ¯æ `/celebrity/` å `/personage/` URL æ ¼å¼","è¿æ»¤é»è®¤å ä½ç¬¦å¤´å","å®ç°å¾ç代çèªå¨ä¿®å¤ï¼ä» direct è¿ç§»å° server 模å¼ï¼","èªå¨è¿ç§»æ§ç localStorage é
ç½®","ð± ä¿®å¤æ¨èå¡çç§»å¨ç«¯å¯¼èªé®é¢ï¼","ä½¿ç¨æè·é¶æ®µäºä»¶ç嬿¦æª VideoCard å
é¨äºä»¶","æ·»å é¿ææ£æµï¼500msï¼ä»¥ä¿çæä½èååè½","ä¿®å¤ç§»å¨ç«¯ç¹å»è·³è½¬å°é¡µé¢é¡¶é¨çé®é¢","ä¿çææ VideoCard hover ææå UI æ¾ç¤º","ð¯ ä¿®å¤æ¨èå¡çäºä»¶å²çªï¼","ä½¿ç¨ `addEventListener` çæè·æ¨¡å¼ä¼å
æ¦æªäºä»¶","æ·»å `stopImmediatePropagation` 鲿¢äºä»¶å¹²æ°","çæè·³è½¬ï¼é¿ææ¾ç¤ºèåï¼å®ç¾å
¼å®¹ç§»å¨ç«¯åæ¡é¢ç«¯","ð§ ä¿®å¤æ¥æè®¡ç®ä¸ä¸è´æ§ï¼ä¿®å¤é¦é¡µåå叿¥åä¹é´çæ¥æè®¡ç®å·®å¼"]},{version:"5.6.3",date:"2025-11-17",added:["ð çå§å¤æºæç´¢åè½ï¼ä¸ºçå§å
容å¯ç¨å¤æºæç´¢ï¼æ¯æä»æ¨ªå¹
åå¡ç触åç详æ
éæ","ð¨ èææ»å¨å¢å¼ºåè½ï¼æ·»å èªå¨æ»å¨åå¾çé¢å è½½ï¼æåæµè§ä½éª","ð æºè½åå¸ç®æ³ï¼ä¸ºå³å°ä¸æ é¨åå®ç°æºè½æ¶é´åå¸ç®æ³"],changed:["ð SessionTrackerå
¼å®¹æ§å¢å¼ºï¼åæ¶æ¯æauthåuser_auth cookiesï¼æåä¼è¯è¿½è¸ªç¨³å®æ§","ð å叿¥åAPIéå¶æåï¼ä»20å¢å å°100ï¼æ¾ç¤ºæ´å¤å³å°ä¸æ å
容","ð å³å°ä¸æ æ¶é´èå´æ©å±ï¼ä»30天æ©å±å°90å¤©ï¼æä¾æ´é¿æçå
容é¢è§","ð
仿¥åå¸ç¡¬æ§éå¶ï¼é²æ¢ä»æ¥åå¸å
容å¨å³å°ä¸æ é¨åå 主导å°ä½","ð å³å°ä¸æ æ¶é´åå¸ç®æ³æ¹è¿ï¼ä¼åå³å°ä¸æ å
容çå±ç¤ºåå¸","ðº é¢éåç§°æ»å¨å¨ç»ï¼ä¸ºç´æ
1è§å¾ä¸çé¢éåç§°æ·»å æ»å¨æåå¨ç»"],fixed:["ð§ ä¿®å¤videoDoubanIdæ£æ¥æ¶æ¸²æ0å¼çé®é¢ï¼é²æ¢è±ç£ID为0æ¶çé误æ¾ç¤º","ð¯ æºè½æºè¿æ»¤å®ç°ï¼èªå¨è¿æ»¤classåæ®µåæºä¸çé¶å¼ä»¥åæ éæ°çè§é¢æº","ð« è¿æ»¤æ ææ°æ®ï¼æ¸
çclassåæ®µä¸çé¶å¼å没æéæ°çæº","ðº æ´æ°availableSourcesç¶æï¼ç¡®ä¿æºéæ©å¨ä»
æ¾ç¤ºææè§é¢æº","ð æ¹è¿å
¨å±æé®å¯è§æ§ï¼ä¼åå°å±å¹è®¾å¤ä¸å
¨å±æé®çæ¾ç¤º","ðª éèæ¶èä¸çå ä½éæ°ï¼é¿å
æ¾ç¤ºçå§ç99éå ä½ç¬¦è¯¯å¯¼ç¨æ·","ð« 鲿¢çå§æºé误添å ï¼ç¡®ä¿çå§æºä¸è¢«æ·»å å°éçå§å
容","ð¯ ä¿®å¤VideoCardå¾½ç« æ¾ç¤ºï¼æ¯æææåå¸ç¶æç±»åçå¾½ç« æ£ç¡®æ¾ç¤º","â° è§£å³æ¥ææ¯è¾æ¶åºé®é¢ï¼ä¿®å¤å³å°ä¸æ è¿æ»¤ä¸çæ¶åºå¯¼è´çæ¥æå¤æé误","ð ä¿®å¤HeroBannerææ¾é¾æ¥ï¼æ·»å stypeåæ°ç¡®ä¿æ£ç¡®è·³è½¬","ð¯ ä¿®å¤HeroBanneræç´¢å¹é
ï¼ä½¿ç¨douban_idæ¿ä»£æ é¢å¹é
ï¼æåæç´¢åç¡®æ§","ð¬ æ¹è¿ççæ é¢æç´¢ï¼ä¼åççæ é¢çæ¨¡ç³æç´¢ç®æ³åç¡®æ§","ð ä¿®å¤è·³è¿æé®z-indexï¼é²æ¢è·³è¿æé®è¦çå¯¼èªæ ","ð ä¿®å¤è·³è¿æé®å®ä½ï¼ç¡®ä¿è·³è¿æé®ä¿æå¨ææ¾å¨å®¹å¨å
çåºå®ä½ç½®","â¤ï¸ æ·»å ä¸ç¨æ¶èå¿å½¢æé®ï¼ä¸ºæ¶è颿¿æ·»å ä¸ç¨å¯ç¹å»å¿å½¢æé®","ð¯ éèæ¶èæ¬åæé®ï¼é²æ¢æµ®å¨å¿å½¢æé®å¹²æ°ç¨æ·æä½","ðï¸ ç§»é¤æ¶è颿¿éå¤å
ç´ ï¼æ¸
çæ¶è颿¿ä¸çéå¤å¿å½¢åæ¥ææ ç¾","ð§¹ æ¸
ç已䏿 å
å®¹ææ¾URLï¼ç¡®ä¿å·²ä¸æ çå³å°ä¸æ å
容坿£å¸¸ææ¾","ð·ï¸ æºè½æºæ ç¾ç³»ç»ï¼æ¯æå¨æç¶æåé
è²ä¸»é¢çæºæ ç¾","ð¨ 卿åå¸å¾½ç« ï¼æ ¹æ®åå¸ç¶æå¨ææ¾ç¤ºå¾½ç« å¹¶éèå ä½éæ°","â¶ï¸ å¯ç¨å·²ä¸æ æ¶èææ¾ï¼æºè½æ£æµå³å°ä¸æ å
容æ¯å¦å·²ä¸æ å¹¶å¯ç¨ææ¾","ð æºè½å»éåå¨æç¶æï¼ä¼åå³å°ä¸æ å
容çå»éåç¶ææ´æ°é»è¾","ð¯ å¢å¼ºM3U8广åè¿æ»¤ï¼æ·»å SCTE-35æ£æµæå广åè¿æ»¤ææ","ð§ ä¿®å¤å¸¦å¯æ é¢çå»éé»è¾ï¼æ¹è¿æ é¢é夿£æµç®æ³","ð ä¿®å¤å¡çz-indexå²çªï¼é²æ¢ææå¡çç»ä»¶è¦çå¯¼èªæ ","ð± ä¿®å¤VideoCardæ¬åz-indexï¼è§£å³VideoCardæ¬å/ç¹å»æ¶è¦çå¯¼èªæ çé®é¢","ð¯ ä¿®å¤å·¥å
·æç¤ºz-indexå²çªï¼ç¡®ä¿VideoCardå·¥å
·æç¤ºä¸ä¸å¯¼èªæ å²çª","ð§ ä¿®å¤çå§æºæ¾ç¤ºé®é¢ï¼ç¡®ä¿çå§æºæ£ç¡®æ¾ç¤ºå¨æºéæ©å¨ä¸"]},{version:"5.6.2",date:"2025-11-06",added:["ð¬ è±é横å¹
å
¨åç±»å
å®¹æ¯æï¼ä¸ºææå
容类åï¼çµå½±ãå§éã综èºãçå§ãçªå§ï¼æ·»å 详æ
æè¿°å°è±é横å¹
","ð
å³å°ä¸æ æ¥ååè½ï¼æ°å¢å³å°ä¸æ sectionï¼å±ç¤ºæªæ¥30天å
ççµå½±åçµè§å§ä¸æ ä¿¡æ¯","ð¼ï¸ å叿¥åæµ·æ¥å¾çæåï¼å®ç°ä»manmankanç½ç«æåå³å°ä¸æ å
容çå°é¢å¾çï¼æ¯ææå è½½data-originalï¼","ð¨ Auroraç½æ ¼æ¸åèæ¯ï¼ä¸ºå叿¥å页é¢å®ç°Aurora Mesh Gradientèæ¯ï¼å¢å å¨ç»blobææ","ð± ç§»å¨ç«¯æ¨ªå¹
æ»å¨å¡çå¸å±ï¼å®ç°ç§»å¨ç«¯å好ç坿»å¨å¡ç弿¨ªå¹
å¸å±ï¼æ¯æè§¦æ¸æå¿å¯¼èª","ð å³å°ä¸æ ç±»åå¾½ç« ï¼ä¸ºå³å°ä¸æ å¡çæ·»å çµå½±/çµè§å§ç±»åæ è¯å¾½ç« ï¼å·¦ä¸è§ï¼","â å³å°ä¸æ æ¶èåè½ï¼æ¯ææ¶èå³å°ä¸æ å
容ï¼ä¸æ åèªå¨åä¸ºå¯ææ¾ç¶æ","ð æ¶èéæ°èªå¨æ´æ°ï¼ææ¾é¡µé¢èªå¨æ´æ°æ¶èçå ä½ç¬¦éæ°ï¼99éï¼ä¸ºçå®éæ°","ðº ç´ææµDVRåå è½½æ£æµï¼","ææ¾å¨å è½½å使ç¨video.seekable APIæ£æµDVR/æ¶ç§»æ¯æ","æ£æµå°å¯seekèå´è¶
è¿60ç§æ¶æ¾ç¤ºéç¥æ¨ªå¹
","æ·»å å¯ç¨è¿åº¦æ¡æé®ä»¥DVR模å¼éæ°å è½½ææ¾å¨ï¼isLive: falseï¼","æ¾ç¤ºå¯seekæ¶é´èå´ï¼åéï¼ä¾ç¨æ·åè","ä»
卿ªå¯ç¨DVRæ¨¡å¼æ¶æ£æµï¼é¿å
å使£æ¥"],changed:["ð¨ å叿¥å页é¢UIç¾åï¼ä¼åå叿¥å页é¢è§è§ææï¼æ·»å æ¸åèæ¯åç°ä»£å设计","ð± 大å±å¹ååºå¼å¸å±ä¼åï¼æ¹è¿å¤§å±å¹è®¾å¤ä¸çååºå¼å¸å±ææ","ð¯ å³å°ä¸æ å
容å»éï¼åºäºæ é¢å¯¹å³å°ä¸æ æ°æ®è¿è¡å»éï¼ä¿çææ©ä¸æ æ¥æ","ð« å³å°ä¸æ å
容ç¦ç¨ææ¾ï¼æªä¸æ å
容æ¾ç¤ºæ¬è¯·æå¾
èéææ¾æé®ï¼é²æ¢ç¨æ·å°æ","ðï¸ éèå³å°ä¸æ éæ°å¾½ç« ï¼ä¸æ¾ç¤ºå³å°ä¸æ å
容çå ä½ç¬¦éæ°ï¼é¿å
è¯¯å¯¼ç¨æ·","â¡ ææ¾è¿åº¦ä¿åé¢çä¼åï¼å¢å ææ¾è¿åº¦ä¿åé´é以åå°ç½ç»å¼é","ð æ°éæ°æ£æµä¼åï¼è·³è¿ææ¾æé´çåä½fetch请æ±ï¼ä¼åæ§è½","ð ææ¾è®°å½è¯·æ±ä¼åï¼åå°ææ¾è®°å½API请æ±é¢çï¼éä½ç½ç»è´æ
"],fixed:["ð¼ï¸ manmankanå¾çä»£çæ¯æï¼æ·»å manmankan.comçRefereræ¯æå°å¾ç代çï¼ç»è¿é²çé¾","ð§ è±ç£è¯¦æ
å§æ
æè¦æåä¿®å¤ï¼ä¿®å¤ä»è±ç£è¯¦æ
䏿å宿´å§æ
æè¦çé®é¢","ðï¸ è±ç£è¯¦æ
ç¼å失æå¤çï¼å½plot_summary缺失æ¶èªå¨å¤±æç¼åï¼ç¡®ä¿æ°æ®å®æ´æ§","ð çå§æ¨ªå¹
æ´å¤æé®é¾æ¥ä¿®å¤ï¼ä¿®æ£çå§ç±»å«å¨è±é横å¹
ä¸çæ´å¤æé®è·³è½¬é¾æ¥","ð ææ¾é¡µè¿å顶鍿é®ä½ç½®ä¿®å¤ï¼è°æ´è¿å顶鍿é®å¨ç§»å¨ç«¯çååºå¼ä½ç½®ï¼é²æ¢ä¸æ´å¤èåéå ","ð æç´¢é¡µz-indexä¿®å¤ï¼é²æ¢åºé¨å¯¼èªè¢«è¿å顶鍿é®é®æ¡","ð¬ æ¨ªå¹
å
å®¹æªæä¿®
1å¤ï¼é²æ¢æè¿°è¿é¿æ¶è±é横å¹
å
å®¹è¢«æªæ","ð® è§é¢ææ¾å¨z-indexä¿®å¤ï¼ä¿®å¤ç§»å¨ç«¯åºé¨èå被è§é¢ææ¾å¨é®æ¡çé®é¢","ð ç§»å¨ç«¯çå§æç´¢åæ°ä¿®å¤ï¼ä½¿ç¨æ£ç¡®çqueryåæ°è¿è¡ç§»å¨ç«¯çå§æç´¢","ð isUpcomingåé声æé¡ºåºä¿®å¤ï¼ç§»å¨isUpcoming声æå°useEffectä¹åï¼è§£å³ç¼è¯é误","ð¦ getAllFavorites导å
¥ä¿®å¤ï¼ä½¿ç¨æ£ç¡®çéæå¯¼å
¥æ¿ä»£å¨æimportï¼ä¿®å¤TypeScriptç¼è¯é误","ð¯ 弿¥è¯¦æ
è·åä¿®å¤ï¼ä¿®æ£ææè±é横å¹
项ç®ç弿¥è¯¦æ
è·åé»è¾"]},{version:"5.6.1",date:"2025-11-01",added:["ð¨ è±é横å¹
åç°ä»£å导èªUIï¼æ·»å èªå¨è½®æçè±é横å¹
忏åèæ¯ï¼éæ°è®¾è®¡å¯¼èªï¼æ¡é¢ç«¯æ°´å¹³é¡¶é¨æ +ç§»å¨ç«¯Liquid Glassåºé¨å¯¼èªï¼","ð¯ TVBoxæºè½æç´¢ä»£çï¼æ·»å TVBoxæºè½æç´¢ä»£çåè½ï¼æ¯ææäººå
å®¹è¿æ»¤åUIæ§å¶","ð å¿«éå¤å¶TVBoxé
ç½®æ¨¡å¼æé®ï¼æ°å¢TVBoxé
置模å¼çå¿«éå¤å¶æé®ï¼ç®åé
ç½®æµç¨","ð§ æäººå
容路å¾åç¼æ¯æï¼ä¸ºæäººå
å®¹è¿æ»¤æ·»å è·¯å¾åç¼æ¯æåè½","ð¤ è§é¢æºå¯¼åºæ ¼å¼éæ©ï¼æ°å¢å¯¼åºæ ¼å¼éæ©ï¼æ¯ææ°ç»åé
ç½®æä»¶æ ¼å¼","â±ï¸ æ¹éæäººå
容æ è®°æåæç¤ºèªå¨å
³éï¼ä¸ºæ¹éæäººå
容æ è®°æåæç¤ºæ·»å èªå¨å
³é计æ¶å¨"],changed:["ð± ä¿®å¤ç§»å¨ç«¯é¡µé¢è¿åº¦é´è·é®é¢ï¼åå°ç§»å¨ç«¯å¤´é¨é«åº¦å¹¶åºç¨æ´ç´§åçå¸å±ï¼ä¿®å¤ææé¡µé¢çè¿åº¦é´è·","ð¨ ä¼åçå§é¡µé¢å è½½æç¤ºå¨ï¼æ¹è¿çå§é¡µé¢å¨æµ
è²æ¨¡å¼ä¸çå è½½æç¤ºå¨æ¾ç¤ºææ"],fixed:["ð§ ä¿®å¤å¡çåå¾½ç« çz-indexå±çº§é®é¢ï¼çº æ£å¡çåå¾½ç« çz-indexå±çº§ï¼é²æ¢åºç°å å æ¾ç¤ºé®é¢","ð éä½å§éå¾½ç« z-indexï¼éä½å§éå¾½ç« çz-indexå¼ï¼é²æ¢é®æ¡æ¨¡ææ¡","ð± å¢å ç§»å¨ç«¯PageLayoutåºé¨å
è¾¹è·ï¼å¢å ç§»å¨è®¾å¤ä¸PageLayoutçåºé¨å
è¾¹è·ï¼æ¹åå¸å±","ð æé«AIæ¨èæ¨¡ææ¡z-indexï¼æé«AIæ¨èæ¨¡ææ¡çz-indexå¼ï¼é²æ¢å¾½ç« éå ","ð¼ï¸ ä¿®å¤è±ç£æµ·æ¥å¾ç403é误ï¼éè¿ä»£çè·¯ç±è±ç£æµ·æ¥å¾çï¼é²æ¢åºç°403ç¦æ¢è®¿é®é误","ð¬ ç§»é¤çå§é¡µé¢ç½è²èæ¯æ¡ï¼ç§»é¤çå§é¡µé¢çç½è²èæ¯æ¡ï¼ä¼åè§è§ææ","ð è¿åçå§å è½½æç¤ºå¨æ ·å¼æ¹è¿ï¼è¿å对çå§å è½½æç¤ºå¨å¨æµ
è²æ¨¡å¼ä¸çæ ·å¼æ¹è¿","ð ä¿®å¤Webkitå
æ åiPadOSè¿åº¦æ¡é®é¢ï¼ä¿®å¤Webkitæµè§å¨çå
æ æ¾ç¤ºåiPadOS设å¤çè¿åº¦æ¡äº¤äºé®é¢"]},{version:"5.6.0",date:"2025-10-27",added:["ð Telegram Magic Link身份éªè¯ï¼å®ç°åºäºTelegramçMagic Link认è¯åè½ï¼æä¾æ´å®å
¨ä¾¿æ·çç»å½æ¹å¼","ð¤ èªå¨è®¾ç½®Telegram Webhookï¼çæMagic Linkæ¶èªå¨é
ç½®Telegram webhookï¼ç®åé¨ç½²æµç¨","ð èµæºæç´¢ç«¯ç¹æééªè¯ï¼ä¸º/api/search/resourcesç«¯ç¹æ°å¢ç¨æ·èº«ä»½éªè¯æ£æ¥ï¼æåAPIå®å
¨æ§","ð¯ æºæµè§å¨å®æ´åè½éæï¼æ°å¢æºæµè§å¨åæµè¯æ¨¡åå°ç®¡çåå°ï¼æ¯ææºç«æµè¯å管ç","ð¨ æºæµè§å¨å¢å¼ºUI设计ï¼ä¼åæºæµè§å¨åæµè¯æ¨¡åUIçé¢ï¼æåç¨æ·ä½éª"],changed:["ð± æºæµè§å¨ç§»å¨ç«¯å¸å±ä¼åï¼æ¹è¿ç§»å¨ç«¯æç´¢æ§å¶åååºå¼å¸å±ï¼éé
åç§å±å¹å°ºå¯¸","ð¯ ä¾§æ½å±æ¿ä»£å±
ä¸å¼¹çªï¼ç¨ä¾§è¾¹æ½å±æ¿ä»£æºæµè¯ç»æçå±
ä¸å¼¹çªæ¾ç¤ºï¼ä¼å空é´å©ç¨","ð æ½å±å¡çå¸å±ä¼åï¼ä¼åæ½å±æ¨¡å¼ä¸çå¡çå¸å±åé´è·"],fixed:["ð§ 鲿¢Upstashç¨æ·èªå¨å é¤ï¼ä¿®å¤Upstashç¯å¢ä¸ç¨æ·è¢«èªå¨å é¤çé®é¢ï¼å¹¶æ¸
çç»å½ç»è®¡æ°æ®","ð æ½å±z-indexå±çº§ä¿®å¤ï¼å¢å æ½å±z-index鲿¢ç§»å¨ç«¯å¯¼èªæ è¦çé®é¢","ð 鲿¢æºç«è·³è½¬é®é¢ï¼ä¿®å¤æºæµè§å¨ä¸çæºç«æå¤è·³è½¬é®é¢","ðª Portal渲æä¿®å¤è§å£å®ä½ï¼ä½¿ç¨Portalæ¸²ææ½å±ä»¥ä¿®å¤è§å£å®ä½é®é¢","ð± é¢è§å¼¹çªz-indexä¿®å¤ï¼ä¿®å¤æºæµè§å¨é¢è§å¼¹çªz-index鲿¢è¢«å¤´é¨è¦ç","ð ç§»å¨ç«¯åºé¨å¯¼èªé®æ¡é®é¢ï¼é²æ¢ç§»å¨ç«¯åºé¨å¯¼èªæ 鮿¡é¢è§å¼¹çªå
容","⨠移é¤çå§åç±»æé®éªçææï¼ç§»é¤çå§åç±»æé®çéªçå¨ç»ææï¼ä¼åè§è§ä½éª"]},{version:"5.5.8",date:"2025-10-16",added:["ð¬ æ°å¢è§é¢æºå¯¼å
¥/导åºåè½ï¼æ¯ææ¹é管çè§é¢æºé
ç½®ï¼ä¾¿äºå¤ä»½åè¿ç§»"],changed:["ð¨ ä¼åVideoCardå¾½ç« å¸å±åå®ä½ï¼æ¹è¿è§é¢å¡çå¾½ç« çè§è§ææåä½ç½®","ð± ä¼åè¿å顶鍿é®ä½ç½®ï¼è°æ´æé®ä½ç½®æ´è´´è¿åºé¨ï¼æåç§»å¨ç«¯ä½éª","â¡ ä¼åçå§å页åç±»UIéªçé®é¢ï¼éè¿æºè½å è½½ç¶æç®¡çï¼åæ¢åç±»æ¶ä¿ææ§å
容æ¾ç¤ºç´å°æ°å
容å è½½å®æï¼å¤§å¹
åå°UIéªç"],fixed:["ð§ ä¿®å¤çå°¾èªå¨ææ¾å¯¼è´è·³è·2éçé®é¢ï¼","æ·»å å·å´æºå¶é²æ¢åéè·³è¿","å¨SkipControlleræ·»å episodeIndex propä¿®å¤å§é忢æ¶çèªå¨è·³è¿","鲿¢è§é¢ç»ææ¶ä¿åææ¾è¿åº¦ä»¥é¿å
䏿£ç¡®çæ¢å¤ä½ç½®","éç½®lastProcessedSegmentRefç¶æé²æ¢éå¤å¤ççæ®µ","æ·»å 详ç»è°è¯æ¥å¿å婿æ¥å¹é
失败","ä¼åå§é忢åçèªå¨è·³è¿éç½®æºå¶","ð¯ ä¿®å¤VideoCardè£
饰å
ç´ çæ¬å缩æ¾åz-index忥é®é¢","ð æ¹è¿è§é¢å¡çè£
饰è¦çå±çæ¬åææåæ¥","ð ä¼åè§é¢å¡çå¾½ç« åè£
饰è¦çå±çz-indexå±çº§","ð±ï¸ ä¿®å¤VideoCardå·¥å
·æç¤ºå®ä½åå¸å±é®é¢","ð¨ ä¿®å¤è¿å顶鍿é®çå®ä½åå¯è§æ§é®é¢","ð ä¿®å¤å è½½æè½¬å¨è¾¹æ¡åå·¥å
·æç¤ºæ¾ç¤ºé®é¢","ð ä¿®å¤Docker工使µèªå¨æå»ºçæ¬æ ç¾åè½","ð ä¿®å¤merge jobä¸çæ¬æ£æµæ»æ¯ååçé®é¢","ð ï¸ ä¸ºmerge jobçæ¬æ£æ¥æ·»å è°è¯è¾åº"]},{version:"5.5.7",date:"2025-10-11",added:["ð¨ ç»çææ¸åUIå
¨é¢å级ï¼ä¸ºé¦é¡µãä¾§è¾¹æ ãè§é¢å¡çãææ¾é¡µãçå§é¡µé¢çåºç¨ç»çæè®¾è®¡ãæ¸å主é¢åæµç
å¨ç»ææ","ð TVBoxç¨æ·ä¸å±Tokenç³»ç»ï¼æ°å¢æ¯ä¸ªç¨æ·ç¬ç«çTVBox tokenåè§é¢æºè®¿é®éå¶åè½","ð Dockerèªå¨çæ¬æ ç¾ï¼ä¸ºCI/CDæµæ°´çº¿æ·»å èªå¨çæ¬æ£æµåè½ï¼å®ç°Dockeréåèªå¨ææ ç¾"],changed:["ð¯ å§ééæ©å¨åè§é¢æºåæ¢å¨UIå¢å¼ºï¼ä¼åå§ééæ©å¨åè§é¢æºåæ¢å¨çè§è§ææï¼æ·»å æ¸ååå¨ç»","ð¬ ææ¾é¡µUIä¼åï¼ä¸ºç§»å¨ç«¯åæ¡é¢ç«¯ææ¾é¡µé¢å¢å¼ºUIä½éªï¼æ·»å æ¸åææ","ð± è±ç£é¡µé¢çé颿¿ç¾åï¼ä¼åè±ç£é¡µé¢çé颿¿ååé¡µç¶æçè§è§è®¾è®¡","ð çå§é¡µé¢UIç¾åï¼ä¸ºçå§é¡µé¢åºç¨æ¸å设计åå¨ç»ææ","ð ï¸ ç®¡çåå°å è½½åç©ºç¶æç¾åï¼ä¼å管ç页é¢çå è½½åç©ºç¶ææ¾ç¤ºææ","ð ææ¾é¡µè¿å顶鍿é®ä½ç½®è°æ´ï¼å°è¿å顶鍿é®ç§»è³å³ä¸è§ä½ç½®","ð¯ VirtualDoubanGridå®ææ¶æ¯ä¼åï¼æ¹è¿Bangumi模å¼ä¸ç宿æç¤ºæ¶æ¯"],fixed:["ð¥ å½»åºä¿®
1å¤çå°¾èªå¨ææ¾åéè·³è·é®é¢ï¼éè¿å¤å±é²æ¤æºå¶å®å
¨è§£å³çå°¾èªå¨ææ¾æ¶è·³2éçbug","æ·»å `lastProcessedSegmentRef`é²éå¤è§¦åæºå¶ï¼ç¡®ä¿åä¸ç段åªå¤ç䏿¬¡","æ·»å `videoEndedHandledRef`鲿¢åä¸video:endedäºä»¶è¢«å¤ä¸ªçå¬å¨éå¤å¤ç","ç§»é¤SkipControllerä¸ç1ç§å»¶è¿ï¼é¿å
å»¶è¿æé´è§¦åvideo:endedäºä»¶","å»¶è¿éç½®`isSkipControllerTriggeredRef`æ å¿è³2ç§ï¼éé
çå§å¼æ¥URLè§£æ","ð å§é鿩卿 ç¾é¡µæåä¸å¯è§é®é¢ï¼ä¿®å¤å§ééæ©å¨ä¸æ ç¾é¡µææ¬éå½¢çé®é¢","ð è·³è¿é
置段è½é¿åº¦æªå®ä¹é误ï¼ä¿®å¤SkipControllerä¸segments.lengthæªå®ä¹å¯¼è´çé误","âï¸ è·³è¿è®¾ç½®å¯¹è¯æ¡UXä¼åï¼æ°å¢å¤ç§å
³éé项æåç¨æ·ä½éª","ð¯ 忢鿰æ¶èªå¨è·³è¿è®¾ç½®éç½®é®é¢ï¼ä¿®å¤åæ¢éæ°æ¶è·³è¿è®¾ç½®è¢«éç½®çé®é¢ï¼ç¡®ä¿ç¨æ·è®¾ç½®æä¹
å","ð è·¨ç»ä»¶èªå¨è·³è¿è®¾ç½®åæ¥ï¼ä¿®å¤ææUIç»ä»¶ä¹é´çèªå¨è·³è¿è®¾ç½®åæ¥é®é¢","ð ç¨æ·è®¾ç½®è·¨éæ°åè·¨è¿åº¦ä¿æï¼ä¿®å¤ç¨æ·è·³è¿è®¾ç½®å¨seekå忢鿰æ¶çæä¹
åé®é¢","ð çªå§æ¨¡å¼ç»§ç»è§çå¡çéæ°æ¾ç¤ºï¼ä¿®å¤ç»§ç»è§çå¡ççéæ°æ¾ç¤ºä¸ææ¾ç»è®¡é¡µé¢ä¿æä¸è´"]},{version:"5.5.6",date:"2025-10-08",added:["ð¯ ç头ç尾跳è¿å®æ¶æ è®°æé®ï¼æ°å¢å®æ¶æ è®°ç头çå°¾æ¶é´ç¹çäº¤äºæé®ï¼æ¹ä¾¿ç¨æ·å¿«éé
置跳è¿è®¾ç½®","ð® 坿æ½è·³è¿é
ç½®æ¬æµ®çªï¼æ°å¢å¯ææ½çè·³è¿é
ç½®æ¬æµ®çªç»ä»¶ï¼æ¯æè§¦æ¸æä½åä½ç½®æä¹
ååå¨","ð± ç§»å¨ç«¯è·³è¿è®¾ç½®æé®æ¾ç¤ºï¼ä¿®å¤ç§»å¨ç«¯è®¾å¤ä¸è·³è¿è®¾ç½®æé®çæ¾ç¤ºé®é¢","ð¬ çå°¾å©ä½æ¶é´æ¨¡å¼è·¨éæ°æ¯æï¼å®ç°ç尾跳è¿é
ç½®çå©ä½æ¶é´æ¨¡å¼å¨åæ¢éæ°æ¶çæ£ç¡®å¤ç","ð ç»§ç»è§çå¡çå®ç»å¾½ç« ï¼ä¸ºææç»§ç»è§çé¨åæ·»å å·²å®ç»ç³»åå¾½ç« æ¾ç¤º","ð TVBox深度JARè¯æç³»ç»ï¼æ°å¢JARæä»¶å¤´éªè¯çæ·±åº¦è¯æç³»ç»åæºè½å¥åº·æ£æ¥"],changed:["ð 坿æ½è·³è¿é
ç½®æ¬æµ®çªè¾¹çéå¶ï¼ä¼åæ¬æµ®çªææ½è¾¹çéå¶åä½ç½®æä¹
åæºå¶","ð¨ Zeaburé¨ç½²æåç®åï¼ç®åZeaburé¨ç½²æå为ä»
Dockeréåæ¹å¼ï¼ç§»é¤å¤æçGitHubéæé¨ç½²","ð Zeaburé¨ç½²æåKVRocksé
ç½®æ´æ£ï¼ä¿®æ£KVRocksæä¹
åå·è·¯å¾è¯´æï¼ä»`/data`æ¹ä¸ºæ£ç¡®ç`/var/lib/kvrocks/db`","ð Zeaburä¸é®é¨ç½²æ¨¡æ¿é¾æ¥æ´æ°ï¼æ´æ°READMEä¸çZeaburä¸é®é¨ç½²æ¨¡æ¿é¾æ¥","ð Zeaburé¨ç½²å®æååå设置æéï¼æ·»å é¨ç½²å®æåéè¦è®¾ç½®è®¿é®ååçéè¦æç¤º","ð READMEéç¹é¾æ¥ä¿®å¤ï¼ä¿®å¤è®¾ç½®è®¿é®ååé¨åçéç¹é¾æ¥"],fixed:["ð§ original_episodesæååæ éAPI请æ±é²æ¤ï¼é²æ¢original_episodesæ°æ®æå导è´çæ éAPI请æ±é®é¢","ð¡ï¸ å§éæ£æµæ¶èªå¨original_episodesæ´æ°é²æ¤ï¼é²æ¢å§éæ£æµè¿ç¨ä¸original_episodes被èªå¨æ´æ°","ð å§éæ´æ°æ£æµæ¶original_episodesè¦ç鲿¤ï¼é²æ¢å§éæ´æ°æ£æµæ¶original_episodesåæ®µè¢«æå¤è¦ç","ð¬ ç尾跳è¿å©ä½æ¶é´æ¨¡å¼è·¨éæ°ä¿®å¤ï¼ä¿®å¤ç尾跳è¿é
ç½®å¨å©ä½æ¶é´æ¨¡å¼ä¸åæ¢éæ°æ¶çå¤çé»è¾ï¼å¤æ¬¡ä¼åï¼","ð KVRocksè·³è¿é
ç½®é¦æ¬¡å è½½é®é¢ï¼ä¿®å¤KVRocksç¯å¢ä¸è·³è¿é
ç½®é¦æ¬¡å è½½ä¸çæçé®é¢","ð è·³è¿é
ç½®æ¶æéæï¼éç¨æ°çè·³è¿é
ç½®æ¶æè®¾è®¡ï¼å®ç°æ´ç¨³å®å¯é çç头ç尾跳è¿åè½","ð¯ è§çæ´æ°å¡çéªçä¼åï¼éè¿æåºupdatedSeries鲿¢ç»§ç»è§çå¡çéªç","ð Zeaburé¨ç½²æååæ¼ç¤ºç«ç¹æ´æ°ï¼æ´æ°Zeaburé¨ç½²æåå
å®¹å¹¶æ·»å ææ°æ¼ç¤ºç«ç¹é¾æ¥"]},{version:"5.5.5",date:"2025-10-06",added:["ð¯ TVBoxè¯æå¢å¼ºï¼æ°å¢å®æ´è¯æè¯¦æ
å±ç¤ºå°ç¨æ·é¡µé¢å管çåå°ï¼å
æ¬åºæ¬ä¿¡æ¯ãSpiderç¶æãé
ç½®åæ®µç","ð Spider管çç³»ç»ï¼å®ç°Spideræ¢æµãç¼åãéçº§ä»£çæºå¶ï¼æ¯æå¤ä¸ªSpider JARå¤ä»½æº(gaotianliuyunä½ä¸ºç¬¬ä¸å¤ä»½æº)","ð 管çç»è®¡å¡çå¢å¼ºï¼æ°å¢æ°å§éå¡çåç»§ç»è§çå¡çå°ç®¡çåç»è®¡é¡µé¢ï¼ä¼åå¸å±æ¾ç¤º","ð¬ å·²å®ç»ç³»åå¾½ç« ï¼åºäºvod_remarksæ·»å å·²å®ç»ç³»åå¾½ç« åè½ï¼æ¯ææç´¢APIå详æ
APIçremarksæ£æµ","ð åè¯READMEå宿´ææ¡£ï¼æ°å¢CC BY-NC-SA 4.0å议声æãVercelé¨ç½²æåãSeleneç§»å¨åºç¨è¯´æãéè¦å£°æç« è","ð Spiderç¶æAPIï¼æ°å¢Spiderç¶ææ¥è¯¢ç«¯ç¹ï¼å¢å¼ºTVBoxè¯æUIæ¾ç¤º"],changed:["â¡ Spider JARä¼åï¼ä¼å
使ç¨GitHub rawæºä»¥åå°å¤±è´¥å°è¯ï¼å®ç°å¿«é模å¼åæ¬å°ä»£çé级","ð ç¼åæºå¶ä¼åï¼Kvrocks/Upstash使ç¨å
åç¼åä»¥è§£å³æ
¢å è½½é®é¢ï¼é²æ¢localStorageåå
¥","ð¯ åå§éæ°é»è¾æ¹è¿ï¼ä¿¡ä»»å®¢æ·ç«¯æä¾çoriginal_episodesï¼ä½¿ç¨recordKey精确å¹é
source+idèéæ é¢å¹é
","ð æç´¢APIä¼å
级ï¼ä¼å
ä½¿ç¨æç´¢APIçremarksèé详æ
APIæ¥å¤æå®ç»ç¶æ","ð TVBoxç«ç¹åç§°å¨æåï¼ä½¿ç¨å¨æç«ç¹åç§°æ¿ä»£ç¡¬ç¼ç çLunaTV","ð¦ react-windowå级è³v2.2.0ï¼åçº§èææ»å¨ç»ä»¶è³ææ°çæ¬","ð¨ READMEä¼åï¼ä¿®å¤ç®å½éç¹é¾æ¥ï¼
1æ´æ°Dockeré
置说æï¼æ·»å Seleneç§»å¨åºç¨ç« è"],fixed:["ð§ original_episodesæ´æ°é»è¾å®åï¼èªå¨ä¿®æ£æ æçoriginal_episodeså¼(大äºtotal_episodesæ¶)ï¼å½ç¨æ·è§çæ°å§éæ¶æ´æ°ï¼ä¿çåå§å¼ä¸è¢«è¦ç","ð¾ ç¼åæ´æ°æ¶åºä¿®å¤ï¼å¨æ°æ®åºæ´æ°æå忏
é¤ç¼åèéä¹åï¼ç¡®ä¿æ°æ®ä¸è´æ§","ð ææ¾è®°å½ç¼åå·æ°ï¼å½original_episodesæ´æ°æ¶å¼ºå¶å·æ°ææ¾è®°å½åwatching-updatesç¼å","ð± QuotaExceededErrorä¿®å¤ï¼watching-updates使ç¨å
åç¼åè§£å³localStorageé
é¢è¶
éé®é¢","âï¸ ESLintè§èä¿®å¤ï¼å°siteExtæ¹ä¸ºconst以修å¤prefer-constè¦å","ð¯ 宿¶æ°æ®åæ¥ï¼ä¸ºKvrockså卿¨¡å¼ç¡®ä¿å®æ¶æ°æ®åæ¥ï¼ä¼åææ¾è®°å½åwatching-updates忥æºå¶","ð 强å¶å·æ°åæ°ï¼ä¸ºcheckWatchingUpdatesåUserMenuæ·»å forceRefresh忰以ç»è¿ç¼å","ðï¸ æ°æ®åºoriginal_episodesè·åï¼æ»æ¯ä»æ°æ®åºè·åæ°é²çoriginal_episodesæ°æ®ï¼ç¡®ä¿æ´æ°æ£æµåç¡®","ð TVBoxé
ç½®é®é¢ï¼ä¿®å¤yingshicang模å¼ä¸ç硬ç¼ç spider jaré®é¢ï¼ä¿®å¤é¿URLæº¢åºæ¾ç¤ºï¼ä¼åTVBox页é¢å¸å±","ð localStorageåå
¥éå¶ï¼é²æ¢saveUserCacheå¨ä½¿ç¨Kvrocks/Upstashæ¶åå
¥localStorage","ð UserMenuåå¨ç±»ååå§åï¼ä¼ååå¨ç±»ååå§å以鲿¢å使¸²æ"]},{version:"5.5.4",date:"2025-10-03",added:["ð TVBoxæ®éç¨æ·è®¿é®æ¯æï¼æ°å¢/api/tvbox-config端ç¹ï¼å
许ææç»å½ç¨æ·è®¿é®TVBoxé
ç½®","ð¨ ç»å½æ³¨åçé¢ç°ä»£åï¼å级ç»å½/注å页é¢ï¼æ·»å å¨æéæºå£çº¸åç°ä»£åUI设计","ð¾ æ¥åç¼åæ°æ®åºè¿ç§»ï¼å°æ¥åç¼åä»localStorageè¿ç§»è³æ°æ®åºï¼æ¯æè·¨è®¾å¤åæ¥"],changed:["ð¯ ç»å½æ³¨å龿¥å¡çåï¼å°ç»å½/注å龿¥å级为æ¸åæé®å¡çæ ·å¼","ð åç«¯æ°æ®åºç¼åä¼åï¼å®ç°åç«¯æ°æ®åºç¼åä¼åï¼æä¾å³æ¶å è½½ä½éª","ð¦ react-windowå级è³v2.2.0ï¼åçº§èææ»å¨ç»ä»¶è³ææ°çæ¬"],fixed:["ð åå§éæ°æ´æ°é»è¾ä¿®å¤ï¼ä¿®å¤æ°å§é追踪çoriginal_episodesæ´æ°é»è¾","ð é夿æ¾è®°å½é®é¢ï¼è§£å³é夿æ¾è®°å½åé误original_episodeså¼çé®é¢","ðï¸ Upstash对象ååºå忝æï¼ä¿®å¤æ¥åç¼åçUpstash对象ååºååé®é¢","ð èªå¨æ´æ°æ£æµoriginal_episodesä¿çï¼é²æ¢auto-updateæ£æµæ¶è¦çoriginal_episodesåæ®µ","ð ç¨æ·æ³¨ååUpstash主ä»åæ¥çå¾
ï¼ä¿®å¤Upstash主ä»åæ¥å»¶è¿é®é¢","ð« Next.jså¨æè·¯ç±è¦åæ¶é¤ï¼ä¸ºå¨æAPIè·¯ç±æ·»å force-dynamic声æï¼æ¸
çæ§å¶å°è¦å"]},{version:"5.5.3",date:"2025-09-30",added:["ð¯ ç¨æ·ç级系ç»ï¼æ°å¢ç¨æ·ç级系ç»å代大æ°åç»å½æ¬¡æ°æ¾ç¤ºï¼æä¾æ´å好çç¨æ·ä½éª","ð
ç»å½æ¶é´è¿½è¸ªï¼å®ç°ç»å½æ¶é´è·è¸ªåè½ï¼å¢å¼ºç®¡çåç¨æ·æ¸
çé
ç½®ååæè½å"],changed:["ð·ï¸ ç¨æ·ç级æ¾ç¤ºé»è¾ï¼ç¨æ·ç级ä»é¦æ¬¡ç»å½æ¶å¼å§æ¾ç¤ºï¼é¿å
0ç»å½è¾¹çæ
åµ","ð 管çå页颿æ¡ï¼æ´æ°ç®¡ç页颿æ¬ä»¥åæ åºäºç»å½çç¨æ·å é¤é»è¾"],fixed:["ð ææ¾è®°å½åå§éæ°ä¿®å¤ï¼èªå¨ä¿®å¤å岿æ¾è®°å½ä¸ç¼ºå¤±çoriginal_episodesåæ®µï¼æ¶é¤æ°æ®è¦å","ðº ç»§ç»è§çå¡çå»éï¼ä¿®å¤éå¤çç»§ç»è§çå¡çé®é¢ï¼ç¡®ä¿ä¼ éæ£ç¡®çæ°æ®æºåç§°","ð® ç¨æ·ç级系ç»è¾¹çå¤çï¼ä¿®å¤ç¨æ·ççº§ç³»ç»æ¾ç¤ºé®é¢å0ç»å½è¾¹çæ
åµçå¤çé»è¾","ð¡ï¸ TVBox IPç½ååè§£æä¼åï¼ä¿®å¤x-forwarded-for头é¨è§£æé®é¢ï¼æåTVBoxé
ç½®å¨ä»£çç¯å¢ä¸ç访é®åç¡®æ§"]},{version:"5.5.2",date:"2025-09-27",added:["â¡ react-windowå级è³2.1.2çæ¬ï¼åçº§èææ»å¨åºè³ææ°çæ¬ï¼å©ç¨ResizeObserverä¼åæåæ§è½","ð¨ èææ»å¨å¼å
³çé¢ç¾åï¼ä¸ºèææ»å¨åèåå¼å
³æ·»å æ¸åæ ·å¼ã徿 åå¨ç»ææï¼æåç¨æ·çé¢ä½éª","ð é¦é¡µç»§ç»è§çæ°å§éå¾½ç« ï¼ä¸ºé¦é¡µç»§ç»è§çé¨åæ·»å æ°å§éæéå¾½ç« "],changed:["ð¯ èææ»å¨ç½æ ¼å°ºå¯¸ä¼åï¼æ·»å æç¡®çé«åº¦å宽度设置ï¼é¿å
ä¸å¿
è¦çResizeObserverè°ç¨ï¼æ¹åæ»å¨ä½éª","ð overscanCountåæ°ä¼åï¼å°overscanæ°éä»1è°æ´ä¸º3ï¼å®æ¹é»è®¤å¼ï¼ï¼åå°æ»å¨æ¶çè§è§éªç","ð ç»§ç»è§çç»ä»¶ä¸»å¨æ´æ°æ£æµï¼ä¼åç»§ç»è§çç»ä»¶ç䏻卿´æ°æ£æµæºå¶","ð¤ ç¨æ·èå峿¶æ´æ°æ£æµï¼ä¿®å¤ç¨æ·èåç»ä»¶ç峿¶æ´æ°æ£æµé»è¾","ð
TMDBæåºä¼åï¼ä¿®å¤TMDBæåºé»è¾ï¼ä½¿ç¨æ£ç¡®çæ¥æé¡ºåºï¼ææ°ä¼å
ï¼","ð¯ ç¨æ·èå宿¶æ´æ°å¢å¼ºï¼ä¸ºç¨æ·èååç»ä»¶æ·»å å
¨é¢ç宿¶æ´æ°åè½","ð ç»§ç»è§çè¿åº¦è¿æ»¤å®å¶åï¼æ·»å å¯å®å¶çè¿åº¦è¿æ»¤å¨ï¼ç§»é¤95%ä¸ééå¶"],fixed:["ð 跨设å¤åæ¥åå§éæ°è¿½è¸ªï¼ä¿®å¤è·¨è®¾å¤original_episodes忥é®é¢ï¼ç¡®ä¿æ°å§éæ£æµçåç¡®æ§","ðº å叿¥åç½æ ¼è§å¾å»éï¼ä¸ºå叿¥åç½æ ¼è§å¾æ·»å å»
1éé»è¾ï¼é¿å
é夿¡ç®æ¾ç¤º","ð react-window 2.1.2å è½½åæ»å¨é®é¢ï¼åºäºæºç åæä¿®å¤å级åçå è½½åæ»åæ»å¨å¼å¸¸é®é¢","ð¤ èææ»å¨é»è²èæ¯ä¼ªå½±ï¼æ¶é¤èææ»å¨è¿ç¨ä¸åºç°çé»è²èæ¯åºå","ð± Gridæ»å¨æªæé®é¢ï¼ä¿®å¤Gridå
æ»å¨æ¶æåä¸è¡è¢«æªæçæ¾ç¤ºé®é¢ï¼ä¼åé«åº¦è®¡ç®åè¾¹è·è®¾ç½®","ð é夿æ¾è®°å½é®é¢ï¼ä¿®å¤æ´æ°å§éæ°éæ¶äº§çé夿æ¾è®°å½çé®é¢","ð ææ¾è®°å½å§éæ°é忥ï¼ç¡®ä¿ææ¾è®°å½çå§éæ°é䏿°å§éæ£æµä¿æåæ¥"]},{version:"5.5.1",date:"2025-09-25",added:[],changed:[],fixed:["ð§ Bangumiæ¨èæ¥å£é误å¤çå¢å¼ºï¼ä¿®å¤bangumi APIè¿ånullæ°æ®æ¶å¯¼è´é¦é¡µå´©æºçé®é¢ï¼ä½¿ç¨Promise.allSettled鲿¢å个APIå¤±è´¥å½±åæ´ä¸ªé¦é¡µ","ð¡ï¸ Bangumiæ°æ®ç»æç±»åå®å
¨ä¿®å¤ï¼æ´æ°BangumiCalendarDataæ¥å£å®ä¹ï¼å°ææå¯è½ç¼ºå¤±çåæ®µæ 记为å¯é屿§ï¼ç¡®ä¿ç±»åå®å
¨","ð¼ï¸ Bangumiå¾çæ°æ®ç©ºå¼å®å
¨æ£æ¥ï¼æ·»å å¯é龿ä½ç¬¦å¤çanime.imageså¯è½ä¸ºnullçæ
åµï¼æä¾é»è®¤å ä½å¾çä½ä¸ºfallback","ð¯ é¦é¡µæ¨èæ°æ®å¥å£®æ§æåï¼ä¸ºæææ¨èAPIï¼çµå½±ãå§éã综èºãçå§ãbangumiï¼æ·»å é误å¤çåé»è®¤å¼ï¼ç¡®ä¿é¡µé¢å¨é¨åAPI失败æ¶ä»è½æ£å¸¸æ¾ç¤º","ð ç»§ç»è§çåè½æ´æ°æéä¼åï¼ä»ç¨æ·èåæ´æ°æéä¸ç§»é¤ç»§ç»è§çåè½ï¼é¿å
åè½éå¤åç¨æ·å°æ","ð± 跨设å¤åå§éæ°è¿½è¸ªæºå¶ï¼æ·»å 跨设å¤åå§éæ°è¿½è¸ªåè½ï¼é²æ¢APIç¼åé®é¢å¯¼è´çéè¯¯æ´æ°æé","ðª è§çæ´æ°æ£æµé»è¾å®åï¼ä¿®å¤è§çæ´æ°æ£æµé»è¾ï¼ç¡®ä¿æ´æ°éç¥çåç¡®æ§åå¯é æ§"]},{version:"5.5.0",date:"2025-09-24",added:["ð TMDBæ¼åæç´¢ç³»ç»ï¼å®ç°å®æ´çæ¼åæç´¢åè½ï¼æ¯æè¿æ»¤åç¼åæºå¶","ð å叿¥ååå³å°ä¸çº¿ç³»ç»ï¼ä¸ºç¨æ·æä¾å³å°åå¸çå½±è§å
容é¢è§åè·è¸ªåè½","ð å叿¥åè¿å顶鍿é®ï¼ä¸ºå叿¥å页颿·»å å¿«æ·è¿åé¡¶é¨åè½ï¼æåæµè§ä½éª","ð¯ éæ´»è·ç¨æ·èªå¨æ¸
çåè½ï¼å®ç°æºè½çéæ´»è·è´¦æ·èªå¨æ¸
çæºå¶ï¼å
å«è¯¦ç»é
ç½®åæ¥å¿è®°å½","ð ç¨æ·èåæ´æ°æéåè½ï¼æ°å¢æ´æ°æéæé®ï¼æ¯æå®æ¶éç¥å§éæ´æ°åç»§ç»è§ç","â¶ï¸ ç¨æ·èåç»§ç»è§çåè½ï¼æ°å¢ç»§ç»è§çå¿«æ·å
¥å£ï¼å±ç¤ºææ¾è¿åº¦åå¾
ç»çå
容","â¤ï¸ ç¨æ·èåæçæ¶èåè½ï¼æ°å¢æ¶èå¿«æ·å
¥å£ï¼ä¾¿æ·è®¿é®æ¶èçå½±è§å
容","ð ç§»é¤GitHub龿¥ï¼æ¸
çç»å½å注å页é¢çGitHubç¸å
³é¾æ¥ï¼ç®åçé¢è®¾è®¡","ð± ç§»å¨ç«¯å¼¹å¹é
ç½®ä¼åï¼å°å¤é¨å¼¹å¹é»è®¤è®¾ç½®ä¸ºç¦ç¨ç¶æï¼ä¼åç§»å¨è®¾å¤çå¼¹å¹é
ç½®åæ¬åç¨³å®æ§","ð¬ è§é¢ææ¾å¢å¼ºï¼å级HLS.jså°v1.6.13çæ¬ï¼æ¹è¿é误å¤çåææ¾ç¨³å®æ§"],changed:["ð 管çåç¯å¢åéä½¿ç¨æ ååï¼ç»ä¸ç®¡çåç¸å
³çç¯å¢åé使ç¨è§è","âï¸ é³éæ§å¶æ¬ååºåä¼åï¼åå°é³éæ§å¶çæ¬å触ååºåï¼é²æ¢æå¤æ¿æ´»å¹¶ä¼åæ£æµç²¾åº¦","ðï¸ å¼¹å¹é
ç½®é¢æ¿äº¤äºæ¹è¿ï¼éè¿å»¶è¿æºå¶æ¹è¿å¼¹å¹é
ç½®é¢æ¿çæ¬åç¨³å®æ§å精确æ§å¶","ð
å叿¥åè§å¾æ°æ®æ¾ç¤ºæ¹è¿ï¼è§£å³æ¥åè§å¾æ°æ®å±ç¤ºé®é¢å¹¶å¢å å°åºä¿¡æ¯æ¾ç¤º","ð¨ TMDBå¡ççé¢ç®åï¼ç®åTMDBå¡ç设计并å¢å¼ºæ¥åè§å¾äº¤äºä½éª","ð TMDBèææ»å¨ç¹å»ææ¾ä¼åï¼ä¿®å¤èææ»å¨ç¯å¢ä¸çç¹å»ææ¾åè½é®é¢"],fixed:["ð§ TMDBç¼å管çåæç´¢éå¶ä¿®å¤ï¼è§£å³TMDBç¼åæä½é®é¢å¹¶ç§»é¤æç´¢éå¶","ð å³å°ä¸çº¿åå¸é¨å馿¬¡API失败修å¤ï¼è§£å³å叿¥å忬¡å è½½æ¶çAPIè°ç¨å¤±è´¥é®é¢","ð¯ ææ¾ç»è®¡å¼ºå¶ç¼åæ¸
é¤ä¿®å¤ï¼è§£å³è®°å½å 餿¶çç¼åæ¸
é¤é®é¢ï¼ç¡®ä¿UI宿¶æ´æ°","ð± ç»§ç»è§çå¡ç宿¶æ´æ°ä¿®å¤ï¼æ¹è¿ææ¾ç»è®¡çæ°æ®å·æ°å宿¶æ´æ°æºå¶","ð è±è¯æç´¢å¹é
ç®æ³éæï¼ä½¿ç¨åºäºè¯æ±çç®æ³æ¹è¿è±è¯æç´¢å¹é
åç¡®æ§","ð è¯è¨æç¥æç´¢è¿æ»¤å®ç°ï¼å®ç°è¯è¨ç¸å
³çæç´¢è¿æ»¤ä»¥æé«æç´¢ç»æç¸å
³æ§","ð« æç´¢å使 æä¹è¯æ±è¿æ»¤ï¼è¿æ»¤æç´¢åä½ä¸çæ æä¹è¯æ±ä»¥é²æ¢ä¸ç¸å
³å¹é
","ðº ææ¾é¡µé¢æç´¢åè½ä¿®å¤ï¼ç§»é¤æ°ååä½å¹¶æ¹è¿ä¸æçµå½±æ é¢çæ¨¡ç³æç´¢","â¡ æç´¢æ§è½ä¼åï¼ç§»é¤æ©æéåºçç¥ï¼ä¼åæç´¢ç¸å
³æ§è¯åååæ¥ææ¾é¡µé¢é»è¾","ðµ 䏿çµå½±æ 颿¨¡ç³æç´¢æ¹è¿ï¼æ¹è¿å¸¦æ ç¹ç¬¦å·åæ°ååä½ç䏿æ 颿¨¡ç³æç´¢","ð¯ æºè½æ¨¡ç³æç´¢ç¸å
³æ§è¯åï¼å®ç°å¸¦ç¸å
³æ§è¯åçæºè½æ¨¡ç³æç´¢ç³»ç»","ð¢ æ°ååç¼æ é¢å¹é
ä¼å
级修å¤ï¼ä¿®å¤æç´¢ä¼å
级以å¹é
带æ°ååç¼çæ é¢","ð è§çæ´æ°æ£æµé»è¾ä¼åï¼å¼å
¥åå§éæ°ä¿æ¤æºå¶ï¼é²æ¢APIç¼åé®é¢å¯¼è´çéè¯¯æ´æ°æé","ð è§çæ´æ°ç®æ³å®åï¼æ¹è¿æ°éæ°æ£æµåç»§ç»è§çæéç夿é»è¾ï¼ç¡®ä¿æ´æ°éç¥åç¡®æ§"]},{version:"5.4.4",date:"2025-09-22",added:["ð¬ ææ¾ç»è®¡é¡µé¢VideoCardè§çæ´æ°æ¾ç¤ºç³»ç»ï¼ä½¿ç¨VideoCardç»ä»¶æ¾ç¤ºè§çæ´æ°ï¼æä¾æ´ç´è§çç¨æ·ä½éª","ð ææ¾ç»è®¡é¡µé¢åéæéç³»ç»ï¼æ°å¢æ°å§éåç»§ç»è§çç¬ç«åç±»ï¼çº¢è²ä¸»é¢æ¾ç¤ºæ°å§éæ´æ°ï¼èè²ä¸»é¢æ¾ç¤ºç»§ç»è§çæé","ð¨ ææ¾ç»è®¡é¡µé¢è§è§ææå¢å¼ºï¼ä¸ºè§çæ´æ°å¡çæ·»å 红/èå
ç¯ææãæ¸åå¾½ç« åå¨ç»ï¼æåçé¢ç¾è§åº¦","ð ææ¾ç»è®¡é¡µé¢ç¨æ·æ´»å¨åæå¢å¼ºï¼æ°å¢ç»å½å¤©æ°è®¡ç®ï¼åºäºfirstWatchDateé»è¾è¡¥å
ç°ææ³¨åå¤©æ°æ°æ®","ð ï¸ ææ¾ç»è®¡é¡µé¢è°è¯åè½å®åï¼ä¸ºç¼å读åæä½æ·»å è¯¦ç»æ¥å¿è®°å½ï¼å¢å¼ºè°è¯è½ååæ
éææ¥","ð 管çå个人ç»è®¡é项å¡ï¼ä¸ºç®¡çåç»è®¡é¡µé¢æ·»å é项å¡åæ¢åè½ï¼æ¯æå
¨å±ç»è®¡å个人ç»è®¡è§å¾","ð ææ¾ç»è®¡é¡µé¢API端ç¹å®å
¨æ§ï¼æ°å¢/api/sources端ç¹ï¼å®å
¨å°å客æ·ç«¯æ´é²å¯ç¨æ°æ®æº"],changed:["ð ææ¾ç»è®¡é¡µé¢ç§»é¤å¼¹çªå¼æ´æ°ï¼å®å
¨ç§»é¤åºäºå¼¹çªçè§çæ´æ°æ¾ç¤ºæ¹å¼ï¼æ¹ç¨VideoCardç´æ¥å±ç¤º","ð§ ææ¾ç»è®¡é¡µé¢ç§»é¤æµè¯æé®ï¼ç§»é¤å¼¹çªæ¾ç¤ºè°è¯çæµè¯æé®ï¼ç®åçé¢","ð ææ¾ç»è®¡é¡µé¢WatchingUpdateæ¥å£æ©å±ï¼ä¸ºæ¥å£æ·»å cover屿§åcontinueWatchingCountåæ®µï¼å¢å¼ºæ°æ®ç»æ","ð¯ ææ¾ç»è®¡é¡µé¢æ´æ°æ£æµé»è¾ä¼åï¼ç®åshouldShowUpdateæ¡ä»¶ï¼ç§»é¤å¤æçuserWatchedLatestæ£æ¥é»è¾","ð§ ææ¾ç»è®¡é¡µé¢åæ°ä¿®æ£ï¼ä¿®å¤VideoCardçsource/idåæ°ä½¿ç¨æ£ç¡®çsourceKeyåvideoIdå¼","â¡ ææ¾ç»è®¡é¡µé¢æ°æ®å·æ°æºå¶ä¼åï¼å¢å¼ºå·æ°æ°æ®æé®åè½ï¼æ¯ææ¸
é¤ç¼å并强å¶éæ°æ£æ¥æ´æ°","ð ææ¾ç»è®¡é¡µé¢ç»è®¡è®¡ç®æ ååï¼ç»ä¸ç®¡çåå个人ç»è®¡é¡µé¢ç注å天æ°è®¡ç®é»è¾ï¼ä½¿ç¨PROJECT_START_DATEä½ä¸ºfallback","ð ææ¾ç»è®¡é¡µé¢APIæºæ å°çç¥ï¼ä»ååºå¼æ¹ä¸ºä¸»å¨å¼æºåç§°å°APIå¯é¥æ å°ï¼é¢é²APIè°ç¨é误"],fixed:["ð¢ ä¿®å¤ææ¾ç»è®¡é¡µé¢ç»§ç»è§ç计æ°é误ï¼çº æ£ç»§ç»è§çæ°é计ç®é»è¾ï¼æ¾ç¤ºæ£ç¡®çç»è®¡å¼","ð
ä¿®å¤ææ¾ç»è®¡é¡µé¢æ³¨å天æ°è®¡ç®ä¸ä¸è´ï¼è§£å³ç®¡çåç»è®¡æ¾ç¤º7天è个人ç»è®¡æ¾ç¤º1天çå·®å¼é®é¢","âï¸ ä¿®å¤ææ¾ç»è®¡é¡µé¢æ°ç¨æ·å建æ¶é´æ³ï¼ä¸ºèªæ³¨åå管çååå»ºçæ°ç¨æ·æ£ç¡®è®¾ç½®createdAtåæ®µ","ð ä¿®å¤ææ¾ç»è®¡é¡µé¢APIæºæ å°é®é¢ï¼å®ç°ä¸»å¨æºåç§°å°APIå¯é¥æ å°ï¼é¿å
400é误并修å¤Upstashç¯å¢åéé误","ð ä¿®å¤ææ¾ç»è®¡é¡µé¢æ°æ®æºæ å°é»è¾ï¼æ¹è¿æºåç§°ä¸APIé
ç½®çæºè½å¹é
ï¼å¤çæ¾ç¤ºåç§°ä¸å
é¨APIå¯é¥å·®å¼","ð« ä¿®å¤ææ¾ç»è®¡é¡µé¢ESLintåè§æ§ï¼ç§»é¤ç©ºç®å¤´å½æ°ä»¥ç¬¦åESLintè§èè¦æ±","ð ä¿®å¤ææ¾ç»è®¡é¡µé¢ownerç¨æ·ç»è®¡APIï¼ç¡®ä¿ä¸ªäººç»è®¡API使ç¨å®é
ç¨æ·createdAtèéå½åæ¶é´","ð ä¿®å¤ææ¾ç»è®¡é¡µé¢æ´æ°æ£æµé»è¾ï¼ç¡®ä¿åªè¦latestEpisodes > record.total_episodes峿¾ç¤ºæ´æ°ï¼æ¯æå¤å§éæ´æ°æ£æµ"]},{version:"5.4.3",date:"2025-09-20",added:["ð¯ æ©å±Bangumi IDæ¯æèå´ï¼ä»ä»
æ¯æ6使°åæ©å±è³æ¯æ3-6使°åï¼å
¼å®¹æ´å¤Bangumi主é¢ID"],changed:[],fixed:["ð§ ä¿®å¤å¼¹å¹èåé¿æ¶é´ææ¾åæ¬å失æé®é¢ï¼æ¢å¤åç
1ArtPlayeræ¬åæºå¶å¤ç弹广§å¶","ð±ï¸ è§£å³pointer-events黿¡å¯¼è´çæ¬åæ£æµå¤±è´¥ï¼æ·»å 卿æ§ç¶æéç½®é²æ¢é¿æDOM污æ","ð® å®ç°ç²¾ç¡®è¿åº¦æ¡å²çªè§£å³æ¹æ¡ï¼ç¡®ä¿æ¬ååè½å¨æ®éåå
¨å±æ¨¡å¼ä¸åæ£å¸¸å·¥ä½","â¡ å级react-windowè³v2.1.1ï¼éç¨åè¡ç½æ ¼ä¼åæ¹åå¸å±å¤ç","ð ç¡®ä¿åè¡ç½æ ¼é«åº¦çº¦æï¼å½rowCount === 1æ¶å©ç¨react-window 2.1.1ä¿®å¤","ðº ä¿®å¤å§éåæ¢ææ¾æ¶é´ä¸éç½®é®é¢ï¼æ·»å å§éåæ´æ£æµæ å¿","ð¯ åºåå§éåæºåæ¢é»è¾ï¼å§é使ç¨switchUrl()éç½®è³0ï¼æºä½¿ç¨switchQuality()ä¿ææ¶é´","ð§¹ å®åæ å¿æ¸
çæºå¶ï¼ç¡®ä¿ææè·¯å¾ä¸çç¶ææ å¿æ£ç¡®æ¸
ç"]},{version:"5.4.2",date:"2025-09-19",added:["ð¯ ç½çæç´¢ç»ææ é¢å±å¼æ¶èµ·åè½å¢å¼ºï¼æ¯æç§»å¨ç«¯30åç¬¦ãæ¡é¢ç«¯80å符ååºå¼å±å¼","ð± ç½çæç´¢ç»æç§»å¨ç«¯æ¾ç¤ºä¼åï¼é¿æ é¢èªå¨æªæå¹¶æä¾å±å¼æé®åè½"],changed:["ð¨ ç½çæç´¢ç»ææ 颿鮿 ·å¼å级ï¼éç¨èè²è¶åæé®è®¾è®¡ï¼æ¯ææ¬åææåæè½¬å¨ç»å¾æ ","ð± ç§»å¨ç«¯è§é¢æ§å¶å¨æç¹ä¼åï¼ä»768pxè°æ´è³1024pxï¼æ´å¥½æ¯æç°ä»£ææºå±å¹","ð ç§»å¨ç«¯æ§å¶å¨è·¨æ¹åååºæ§æ¹è¿ï¼ç§»é¤æ¹åéå¶ï¼å¨æææ¹åä¸é½åºç¨ç§»å¨ç«¯ä¼å","â¡ å¼¹å¹æ§è½ä¼åï¼æºåæ¢æ¶çæ¹éå¤çåå»éä¼å"],fixed:["ð§ ä¿®å¤å¼¹å¹æ¸
çåºå鲿¢éå¤ï¼æ£ç¡®ä½¿ç¨å¼¹å¹æä»¶æ¸
çæµç¨","ð® ä¿®å¤ArtPlayer弹广件APIè°ç¨ï¼ç§»é¤æ æè°ç¨å¹¶ä½¿ç¨æ£ç¡®çAPIæ¹æ³","ðµ è§£å³è§é¢æºåæ¢æ¶å¼¹å¹éå¤åå»¶è¿ï¼æ·»å æºåæ¢æ å¿ä½é²æ¢éå¤å è½½ï¼ä¼åç¶æç®¡ç","ðº ä¿®å¤é¦é忢æ¶å¼¹å¹ä¸æ´æ°ï¼é置弹å¹å è½½ç¶æï¼æ¸
çæ§æ°æ®é²æ¢ç«ææ¡ä»¶","ð± ç®åè§é¢æ§å¶å¨åªä½æ¥è¯¢é²æ¢æé®æº¢åºï¼ç§»é¤æ¬ååæééå¶ï¼ç¡®ä¿ä¸è´çUIè¡ä¸º","ð¥ï¸ ä¿®å¤æ¡é¢æµè§å¨çªå£ç¼©å°æ¶çæ§å¶æé®æº¢åºé®é¢ï¼å¨1024px以ä¸éèç¹å®æ§ä»¶"]},{version:"5.4.1",date:"2025-09-17",added:["ð 弹广§è½æ¿è¿ä¼åï¼æºè½å段å 载系ç»ï¼æ5åéåæ®µç®¡ç弹广°æ®","ð¯ è®¾å¤æ§è½èªå¨æ£æµï¼æ ¹æ®ç¡¬ä»¶æ§è½èªå¨è°æ´å¼¹å¹æ¸²æçç¥","ð¡ 卿弹å¹å¯åº¦æ§å¶ï¼å®æ¶çæ§å±å¹å¼¹å¹æ°éï¼èªå¨ä¸¢å¼è¿éå¼¹å¹ä¿ææµç
","ð§ ç¨æ·ç»æéç³»ç»ï¼ä¸ºAI婿åYouTubeåè½æ·»å ç¨æ·ç»æéæ§å¶"],changed:["ð® TVBoxé
置移å¨ï¼ä»å¯¼èªæ ç§»è³ç¨æ·èåï¼ä¼åçé¢å¸å±","â¡ å¼¹å¹æ°ééå¶ç§»é¤ï¼åæ¶10000æ¡ç¡¬ç¼ç éå¶ï¼æ¯æå¤ç大é弹广°æ®","ð¯ å¼¹å¹è¿æ»¤çç¥åçº§ï¼æ´ä¸¥æ ¼çè´¨éè¿æ»¤ï¼æºè½éæ ·ä¿ææ¶é´åå¸åå","ð çå§ç¼åç³»ç»å¢å¼ºï¼èªå¨æ¸
çæºå¶åHTTPç¼åä¼å"],fixed:["ð TVBox APIè·¯ç±å
¼å®¹æ§ï¼ä¿®å¤å¨æåç±»è·ååé
ç½®åæ®µå
¼å®¹é®é¢","ð± çå§ç§»å¨ç«¯ç¼åï¼è§£å³ç¼åå·æ°é®é¢ï¼æåç§»å¨ç«¯ä½éª","ð¬ YouTubeæµé说æï¼ä¿®å¤ç®¡ç颿¿ä¸çæµéè§£éæ¾ç¤º","ðï¸ ææ¾ç»è®¡å¯¼èªï¼ä¿®å¤activePath屿§ï¼ç¡®ä¿å¯¼èªé«äº®æ£ç¡®","â¡ è¿åº¦è·³è½¬å¡é¡¿ï¼éè¿ç¡¬ä»¶å éåæ¹é
1å¤ç大å¹
æ¹åææ½æ§è½","ð 鿰忢ä¼åï¼é²æå¤çåç¶æç®¡çï¼åå°åæ¢æ¶çå»¶è¿"]},{version:"5.4.0",date:"2025-09-14",added:["ð¬ çå§å®æ´åè½éæï¼å
¨é¢éæçå§æç´¢ãææ¾ã详æ
å±ç¤ºåè½","ð± çå§ç§»å¨ç«¯API代çè·¯ç±ï¼ä¸ºç§»å¨ç«¯æä¾ä¸ç¨ççå§API代çï¼è§£å³è·¨åé®é¢","ð¾ çå§ç¼åç³»ç»ï¼éæçå§ç¼åå°ç®¡çåç³»ç»ï¼æä¾å®æ´çç¼å管çåè½","ð¯ çå§ä¸ç¨è¯¦æ
页é¢å¸å±ï¼é¿å
ä¸è±ç£è¯¦æ
å²çªï¼æä¾ä¸é¨ççå§å±ç¤ºçé¢","ð ææ¾ç»è®¡ç³»ç»ï¼å®æ´çææ¾æ°æ®ç»è®¡ååæåè½","ð® å¼¹å¹é¢æ¿ç§»å¨ç«¯ä¼åï¼åºäºArtPlayeræè½½é»è¾ç精确å®ä½"],changed:["ð çå§å
å®¹è¿æ»¤ä¼åï¼é²æ¢çå§æ¾ç¤ºè±ç£/Bangumiæ°æ®ï¼ç¡®ä¿æ°æ®æºçº¯å","ð ç§»å¨ç«¯å¼¹å¹é¢æ¿å®ä½é»è¾ï¼æ¹è¿CSSå®ä½ç®æ³ï¼æåç§»å¨ç«¯ä½éª","ðµ ç§»å¨ç«¯å¼¹å¹é¢æ¿æä½ï¼ç®å为ç¹å»åæ¢æºå¶ï¼é¿å
夿æå¿å²çª","ð å
容çéåè½ä¼åï¼ç§»é¤ææå
容类åï¼çµå½±ãå§éã综èºã卿¼«ï¼çå¿«æ·çéåè½ï¼é¿å
䏿®éçéå²çª","ðï¸ ä¾§è¾¹æ é«äº®ä¿®å¤ï¼æ¹è¿å¯¼èªç¶æåæ¥æºå¶"],fixed:["ð§ çå§APIè·¯ç±ç¼åé®é¢ï¼æ·»å HTTPç¼åæ§å¶å¤´ï¼è§£å³ç§»å¨ç«¯ç¼åä¸å·æ°é®é¢","ð± ç§»å¨ç«¯API代ç循ç¯ä¾èµï¼è§£å³çå§åè½ç循ç¯ä¾èµé®é¢","ð¯ çå§è¯¦æ
æ¾ç¤ºä¼åï¼é²æ¢æ¾ç¤º0éæ°ï¼æ·»å åéä¿æ¤æºå¶","â çå§è¯åæ¾ç¤ºï¼éèé¶è¯åå
容ï¼ä¼åç¨æ·ä½éª","ð® ææ¾ç»è®¡Redisé误ï¼ä¿®å¤KVRocks JSONè§£æé误","ð ç§»å¨ç«¯å¼¹å¹é¢æ¿å®ä½ï¼ä¿®å¤é³éæ§å¶æ¬åç¶æçå®ä½é®é¢","ð é³éæ§å¶äº¤äºä¼åï¼ä¿®å¤ç§»å¨ç«¯é³éæé®hoverç¶æå¼å¸¸é®é¢","ð è§é¢ææ¾å¨é®é¢ï¼ä¿®å¤å¨æ¼«çéåè§é¢ææ¾ç¸å
³bug"]},{version:"5.3.2",date:"2025-09-13",added:["ð¯ å¼¹å¹è®¾ç½®èå交äºä¼åï¼æ·»å æ¡é¢ç«¯hoverå»¶è¿äº¤äºæºå¶ï¼300msæ¾ç¤ºï¼500mséèï¼","â¡ å¼¹å¹èåæ§è½å¤§å¹
ä¼åï¼å®ç°é²ææºå¶ï¼è§£å³å¼å¯å¼¹å¹æ¶è°èåå¹å¤§å°å¡é¡¿é®é¢","ð äºä»¶çå¬å¨å
¨é¢ä¼åï¼ä¸ºä½ç½®è°æ´ãæ¹åååãDOMè§å¯å¨æ·»å 鲿å¤çï¼æåæ´ä½æ§è½","ð® AIæ¨èç³»ç»ä»¤çä¼åï¼é»è®¤æå¤§ä»¤çæ°ä»1000æåè³3000ï¼æ¹åAIååºè´¨é"],changed:["ð ï¸ åºäºArtPlayeråçææ½é»è¾å®ç°ç²¾ç¡®å¼¹å¹èåä¿®å¤","ð DOMè§å¯å¨ä¼åï¼åå°çå¬èå´ï¼ä»
è§å¯å¿
è¦çclassåå","â±ï¸ å¢å¼ºå®æ¶å¨æ¸
çæºå¶ï¼é²æ¢å
åæ³æ¼ï¼ç¡®ä¿ææå®æ¶å¨æ£ç¡®éæ¾","ð å¼¹å¹é¢æ¿ä½ç½®ç®æ³éæï¼ä½¿ç¨CSSé»è®¤å®ä½æ¿ä»£å¤æçæå¨è®¡ç®"],fixed:["ð§ ä¿®å¤å¼¹å¹é
ç½®èåå
¨å±æ¨¡å¼å®ä½é®é¢ï¼æ¹è¿CSSå®ä½ç®æ³ï¼ç¡®ä¿åç§å±å¹æ¨¡å¼ä¸æ£ç¡®æ¾ç¤º","ð±ï¸ è§£å³è¿åº¦æ¡ææ½ä¸å¼¹å¹èåå²çªï¼åºäºArtPlayeråçææ½é»è¾å®ç°ç²¾ç¡®ä¿®å¤","ð± ä¿®å¤ç§»å¨ç«¯å¼¹å¹èåå®ä½ç®æ³ï¼çº æ£ä½ç½®è®¡ç®é»è¾ï¼éé
ä¸å设å¤å±å¹","ð¯ å¼¹å¹é¢æ¿ç¹å»äºä»¶å²å»ä¿®å¤ï¼è§£å³å¼¹å¹é¢æ¿é»æ¡è¿åº¦æ¡ç¹å»çæ ¸å¿é®é¢","ð§¹ AIè天åå²èªå¨æ¸
çæºå¶ä¿®å¤ï¼ä¼ååå²è®°å½ç®¡ç忏
çé»è¾","ð ç§»é¤ææ¾å¨è®¾ç½®ä¸çéå¤å¼¹å¹åæ¢é项ï¼ç®åç¨æ·çé¢","ð¡ å¼¹å¹èåCSS hoverå²çªè§£å³ï¼ç²¾ç¡®æ§å¶hoverç¶æä¸è¿åº¦æ¡ææ½ç交äº","ð å®åå¼¹å¹èåhoverè¡ä¸ºï¼ç»ä¸ç§»å¨ç«¯åæ¡é¢ç«¯äº¤äºé»è¾ï¼æä¾ä¸è´ç¨æ·ä½éª"]},{version:"5.3.1",date:"2025-09-11",added:["ð¥ AIæ¨èç³»ç»YouTubeè§é¢é¾æ¥è§£æï¼æ¯æç´æ¥è§£æYouTubeè§é¢é¾æ¥å¹¶è·åè§é¢ä¿¡æ¯","ð AIæ¨èå¡çä¸ç§ç±»åæ¯æï¼å½±è§æ¨èå¡çãYouTubeè§é¢å¡çãè§é¢é¾æ¥è§£æå¡ç","ð å级react-windowå°v2.1.0ï¼æ§è½ä¼åæåèææ»å¨æç","ðº å级hls.jså°v1.6.12ï¼æ¹è¿è§é¢ææ¾ç¨³å®æ§åå
¼å®¹æ§","ð¬ YouTubeæç´¢åè½å¢å¼ºï¼æ¯ææ¶é´çéåæåºé项","ð ç´ææºèªå¨å·æ°åè½ï¼æ¯ælocalStorageæä¹
åé
ç½®","ð¯ çµå½±å¿«éçéæé®ï¼æ°å¢ç±»åå¿«é访é®åè½","ð± TVèç®å综èºèç®çéæ©å±ï¼å®åçéåè½è¦ç","ð® YouTubeç´æææ¾å¨ä¼åï¼å®æ¶è§é¢ä¿¡æ¯è·ååè½"],changed:[],fixed:["ð§ ä¿®å¤AIè天åè¡¨é¡¹ç©ºæ ¼è¿å¤é®é¢ï¼ä¼åmarkdownæ ¼å¼å¤çé»è¾","ð è§£å³AIååºä¸é¡¹ç®ç¬¦å·é´è·è¿å¤§
1é®é¢ï¼ç§»é¤å¤ä½çmargin-bottomæ ·å¼","ðµ ä¿®å¤å¤é¨å¼¹å¹ææ½è¿åº¦æ¡åæ¾ç¤ºå¼å¸¸é®é¢ï¼æ¹è¿å¼¹å¹åæ¥æºå¶","ð ä¿®å¤YouTubeæç´¢ç¼åé®åå
容类åçéé®é¢ï¼ä¼åç¼å管ççç¥","ðº ä¿®å¤TVèç®å综èºèç®MultiLevelSelector缺失initialValues屿§é®é¢","ð ï¸ è§£å³DoubanSelectorä¸çTypeScriptç¼è¯é误","ð¯ ä¿®å¤å¹³å°çéç¶æåæ¥é®é¢ï¼æ¹è¿TVèç®çéå¨ç¶æç®¡ç","ð 使ç¨YouTubeæ cookieååï¼åå°æºå¨äººéªè¯é®é¢","ð ä¿®å¤æç´¢å岿¾ç¤ºé®é¢ï¼ä¼ååå²è®°å½å±ç¤ºé»è¾","ð ä¿®å¤ææ¾é¡µé¢è¿å顶鍿鮿¾ç¤ºé®é¢"]},{version:"5.3.0",date:"2025-09-10",added:["ð¥ YouTubeéæ: 宿´çYouTubeæç´¢åç´æææ¾åè½","éæYouTube Data API v3æç´¢åè½","æ¯æiframeç´æ¥ææ¾YouTubeè§é¢","管çåå°YouTube APIé
ç½®é¢æ¿","YouTubeç¼å管çç³»ç»ï¼åèç½çå®ç°ï¼","YouTubeæç´¢ç»æç¼åç»è®¡å管ç","ð§ AIæ¨èç³»ç»: å¢å¼ºçAIå
容æ¨èåè½","卿æç¤ºè¯å模å管çä¼å","æ¯æGPT-5/oç³»åæ¨¡åçmax_completion_tokens","æ¹è¿æ¨èUIåå¡çæ¾ç¤ºè®¡æ°å¨","ä¼åæ¨ç模å空ååºå¤ç","ð± TVBoxå®å
¨é
ç½®: å
¨é¢çTVBoxéæ","éè¿ç®¡çåå°å®æ´é
ç½®TVBoxå®å
¨è®¾ç½®","APIä¼ååå®å
¨æ§å¢å¼º","é
ç½®é¢æ¿ç§»å¨ç«¯UIä¼å","ð¬ iPad/iOSè§é¢ææ¾ä¼å: å
¨é¢çç§»å¨ç«¯ææ¾æ¹è¿","åºäºArtPlayerå
¼å®¹æ§æ¨¡å¼çæºè½è®¾å¤æ£æµ","iOSç¹å®èªå¨ææ¾çç¥ï¼éé³å¯å¨+é³éæ¢å¤ï¼","åºäºå®æ¹æºç ä¼åçHLS.jsé
ç½®","å¤éå°è¯èªå¨ææ¾éè¯æºå¶ï¼æåæåç","ç§»å¨è®¾å¤å
å管çä¼å"],changed:["ð æç´¢æ§è½: æºè½æç´¢ä¼ååç¶æç®¡ç","忢æç´¢ç±»åæ¶æ¸
é¤ç½çæç´¢ç¶æ","åè½åæ¢æ¶çç¼åç»è¿æ¹è¿","鲿¢åè½ç¦ç¨æ¶çæ ééè¯å¾ªç¯","ð¯ ç§»å¨ç«¯UI: ååºå¼è®¾è®¡æ¹è¿","TVBoxé
置移å¨ç«¯æ¾ç¤ºä¼åï¼tokenå¤å¶/éæ°çææé®ï¼","é
ç½®é¢æ¿ç§»å¨ç«¯å¸å±æ¹è¿","ð¾ ç¼å管ç: ç»ä¸ç¼åç³»ç»å¢å¼º","管çå端ç¹ç¼ºå¤±çé
ç½®ç¼åæ¸
ç","YouTubeéæå°å®æ´ç¼å管çåºç¡è®¾æ½","æææç´¢ç±»åçæ°æ®åºç¼åç»è®¡ï¼YouTubeãç½çãè±ç£ãå¼¹å¹ï¼","ðï¸ HLS.jsä¼å: åºäºå®æ¹æºç çç§»å¨è®¾å¤æµåªä½æ¹è¿","ç¼å²çç¥ï¼iOS13+ 8ç§ï¼iOS 10ç§ï¼æ¡é¢30ç§","å
å管çï¼iOS13+ 20MBï¼iOS 30MBç¼å²å¤§å°","å è½½çç¥ï¼ç§»å¨ç«¯ä¼åçè¶
æ¶åéè¯çç¥","ABRä¼åï¼ç§»å¨è®¾å¤æ´å¿«çç ç忢","ð§ 代ç è´¨é: å¢å¼ºçTypeScriptæ¯æåé误å¤ç","EventListener APIå
¼å®¹æ§æ¹è¿","夿彿°ä¸çåéä½ç¨å管çä¼å","æ¹è¿é误边çååéæºå¶","ð¦ æ¶æ: éµå¾ªç°ææ¨¡å¼ç模ååYouTubeéæ","ä¸å
¶ä»æç´¢åè½ä¸è´çAPI端ç¹ç»æ","è·¨æææç´¢ç±»åçç»ä¸ç¼å管ç","éµå¾ªæ¢å®æ¨¡å¼çé
置管ç"],fixed:["ð ä¿®å¤åè½ç¦ç¨æ¶ç½çæç´¢å¡æ»é®é¢","ð ï¸ è§£å³åè½ç¦ç¨åºæ¯ä¸çæ ééè¯å¾ªç¯","ð§ ä¿®å¤TVBoxå®å
¨é
置移å¨ç«¯UIæªæé®é¢","ð± ä¿®æ£AIæ¨èå¡çæ¾ç¤ºå¹¶é²æ¢æ æé¾æ¥ç¹å»","ðµ ä¿®å¤GPT-5/æ¨ç模åå tokenéå¶å¯¼è´ç空ååº","ð¨ è§£å³EventListenerOptionsçTypeScriptç¼è¯é误","ð ä¿®å¤ç®¡ç颿¿ä¸YouTubeç¼åç»è®¡æ¾ç¤ºé®é¢","ð æ¹è¿é
ç½®ç¼å管ççé误å¤ç"]},{version:"5.2.1",date:"2025-09-08",added:[],changed:[],fixed:["ð§ ä¿®å¤ ArtPlayer 5.3.0 SSR å
¼å®¹æ§é®é¢ï¼éè¿å¨æå¯¼å
¥è§£å³æå¡ç«¯æ¸²ææ¶ç window 对象访é®é误","ð± ä¿®å¤ç´æé¡µé¢ ArtPlayer SSR é®é¢ï¼å®ç°ç¸åç卿坼å
¥çç¥ï¼é¿å
Cannot read properties of undefined é误","ð ï¸ ä¿®å¤ TypeScript ç¼è¯é误ï¼ä¸º onSwitch 彿°åæ°æ·»å æ£ç¡®çç±»åæ³¨è§£","ð ä¿®å¤ searchFromApi 彿°ä½ç¨åé®é¢ï¼è§£å³ apiBaseUrl åé访é®èå´å¯¼è´çç¼è¯é误","ð¾ ä¿®å¤ Docker æå»ºç¼åé®é¢ï¼æ·»å æ ç¼åæ å¿åä¾èµéªè¯ï¼ç¡®ä¿æ°çæ¬ä¾èµæ£ç¡®åºç¨","ð¬ ä¿®å¤ ArtPlayer 5.3.0 鿝åºåé误ï¼ä¼åææ¾å¨å®ä¾æ¸
çæµç¨ï¼é²æ¢è¿è¡æ¶é误","ð« ç§»é¤ä¸å¿
è¦çè§é¢å
ç´ å卿§æ£æ¥ï¼ç®å鿝æµç¨ï¼æé«ç¨³å®æ§","ð¯ å®ç°æºè½æç´¢ä¼åï¼æ°å¢æç´¢æ¥è¯¢åä½çæå¨ï¼èªå¨å°è¯å¤ç§æç´¢æ¨¡å¼æé«å½ä¸ç","ð ä¼åè±ç£/bangumi ç¹å»æç´¢ï¼è§£å³æå¨æç´¢è½æ¾å°ä½ç¹å»æ¾ä¸å°çæ é¢ç©ºæ ¼å¹é
é®é¢","â¡ æºè½æç´¢å使¯æï¼èªå¨çæå»ç©ºæ ¼ãå
³é®è¯ç»åçæç´¢åä½ï¼æ¯æä¸é¤å
第ä¹å£âä¸é¤å
第ä¹å£ç转æ¢","ð¬ ææ¾é¡µé¢æç´¢å¢å¼ºï¼å¨ææ¾é¡µé¢éææºè½æç´¢åä½ï¼æåè±ç£å
容ççæºæç´¢æåç","ð¬ 弹广件 v5.2.0 ä¼åï¼","å¯ç¨ useWorker: true å®ç°åºäº Web Worker çå¼¹å¹ä½ç½®è®¡ç®","åå° lockTime: 2 é使æ½å»¶è¿ï¼æå交äºååºæ§","å®ç°åºäºè®¾å¤æ§è½çæºè½é
ç½®ï¼","髿§è½è®¾å¤ï¼å¯ç¨å®æ´åè½ï¼å
å«é²éå ç®æ³ + Worker","ä¸çæ§è½è®¾å¤ï¼éæ©æ§é²éå + Worker","使§è½è®¾å¤ï¼ç¦ç¨é²éå ä½ä¿æåæ¥ + Workerï¼å
1å° maxLength è³ 30","ä¿æ synchronousPlayback: true ç¡®ä¿ææè®¾å¤çä¸è´ç¨æ·ä½éª","ä¼åææ½/çªå£ååäºä»¶å¤çï¼æ¹è¿é²ææºå¶","ðï¸ ArtPlayer 卿坼å
¥æ¶æï¼éæææ¾å¨åå§åæµç¨ï¼æ¯æå®¢æ·ç«¯åªå è½½ï¼å®å
¨å
¼å®¹ Next.js SSR","ð¨ 代ç è´¨éä¼åï¼ä¿®å¤ ESLint 导å
¥æåºè¦åï¼ä¼ååé声æè§è","ð¦ ä¾èµçæ¬åæ¥ï¼ç¡®ä¿ package.json å pnpm-lock.yaml çæ¬ä¸è´æ§","ðï¸ æ¹è¿ Docker æå»ºæµç¨ï¼ä¼åç¼åçç¥ï¼ç¡®ä¿ä¾èµæ´æ°çå¯é æ§","ð ææ¾å¨å®ä¾ç®¡çä¼åï¼æ¹è¿å¤å®ä¾å²çªå¤çå DOM æ¸
çé»è¾"]},{version:"5.2.0",date:"2025-09-07",added:["ð¬ åçº§ææ¾å¨æ ¸å¿ï¼å° Artplayer ä» 5.2.5 åçº§å° 5.3.0ï¼æåææ¾ç¨³å®æ§åæ§è½","ð¬ åçº§å¼¹å¹æä»¶ï¼å° artplayer-plugin-danmuku ä» 5.1.8 åçº§å° 5.2.0ï¼ä¼å弹广¾ç¤ºææ","ð± ç§»å¨ç«¯åºé¨å¯¼èªå¢å¼ºï¼TVBox 设置éæå°ç§»å¨ç«¯åºé¨å¯¼èªï¼æåç§»å¨ç«¯ç®¡çä¾¿å©æ§","ð PanSou ç½çæç´¢éæï¼éæé«çº§çéåç¨æ·ä½éªä¼åçç½çæç´¢åè½","ðï¸ ç½çæç´¢ä¼åï¼ä¼åæç´¢ç®æ³åç¼å管çï¼æåæç´¢ååºé度ååç¡®æ§","ð¥ è§é¢è¯¦æ
页ç½çæç´¢ï¼å¨ææ¾/详æ
页é¢ç´æ¥éæç½çæç´¢åè½ï¼ä¸ç«å¼è§å½±ä½éª","ð Upstash Redis ç¼åéæï¼å®æ´éæ Upstash Redis ç¼åç³»ç»ï¼æåæ°æ®è®¿é®æ§è½","â¡ KVRocks ç¼åå
¼å®¹ï¼æ°å¢ KVRocks åå¨ç±»åç¹å®å¤çï¼å®åç¼åå
¼å®¹æ§æ¯æ"],changed:[],fixed:["ð§ ä¿®å¤ TVB
1ox é
ç½®çæé误ï¼è§£å³ undefined API 导è´çé
ç½®çæå¤±è´¥é®é¢","ð¾ ä¿®å¤åå¨ç±»åå¤çï¼å®å Upstash å KVRocks ç¼åå
¼å®¹æ§å¤çé»è¾"]},{version:"5.1.0",date:"2025-09-05",added:["ð æ°å¢è±ç£å¼¹å¹APIåIPå°éä¼åï¼æºè½å»¶è¿çç¥é²æ¢é¢ç¹è¯·æ±è¢«å°","ð æ°å¢IPTVé¢éå½åæºå
æç´¢åè½ï¼æ¯æå¨å½åç´ææºä¸å¿«éæç´¢é¢é","ð± æ°å¢è±ç£é¡µé¢èææ»å¨æ¯æï¼æå大éå
容å è½½æ§è½åç¨æ·ä½éª","ðµ æ°å¢EXT-X-MEDIA URIå¤çï¼é²æ¢HLSé³è½¨å è½½éè¯¯å¯¼è´ææ¾å¤±è´¥","ð æ°å¢Bangumi APIéæï¼å®ç°å¨æ¼«å
容æºè½æ£æµåä¿¡æ¯è·å","ð¾ æ°å¢Bangumi APIç¼åæºå¶ï¼æå卿¼«ä¿¡æ¯è·åé度ï¼åå°éå¤è¯·æ±","ðª è¿ç§»å°ç»ä¸åå¨ç¼åï¼è®¾ç½®ç´è¿ä»£ç为é»è®¤é项ï¼ä¼åç½ç»æ§è½","ð¦ æ°å¢TVBox宿´APIå
¼å®¹æ¯æï¼å®ç°å®æ´çTVBoxåè½æ¥å£","ðº å®ç°ç´ææºèååè½ï¼è§£å³å¤æºéå¶é®é¢ï¼æåç´æä½éª","ð§ æ´æ°è§é¢è§£æå¨æ¥å£ï¼æ°å¢å¥åº·æ£æ¥æºå¶ï¼æåè§£æç¨³å®æ§"],changed:["â¡ ä¼åè±ç£APIè¯·æ±æºè½å»¶è¿çç¥ï¼æ ¹æ®è¯·æ±é¢çå¨æè°æ´å»¶è¿æ¶é´","ð¡ï¸ æ¹è¿HLSé误å¤çï¼é²æ¢keyLoadError导è´é¡µé¢å»ç»ï¼æåææ¾ç¨³å®æ§","âï¸ é»è®¤ç¦ç¨æºä¼ååé度æµè¯ï¼åå°ä¸å¿
è¦çç½ç»è¯·æ±ï¼æåå¯å¨é度","ð« ç¦ç¨TVBox APIç¼åï¼æé¤ä¸é´ä»¶è®¤è¯ï¼ä¼åTVBoxå
¼å®¹æ§"],fixed:["ð ä¿®å¤èåæç´¢ç»æä¼ édouban_idåæ°å°ææ¾é¡µé¢çé®é¢","ð± ä¿®å¤ç§»å¨ç«¯æä½é¢æ¿å¨èææ»å¨æ¨¡å¼ä¸çæªæé®é¢"]},{version:"5.0.0",date:"2025-08-30",added:["ð å
¨æ°è±ç£è¯¦æ
å¢å¼ºæ¾ç¤ºï¼ææ¾é¡µé¢æ°å¢ä¸°å¯çè±ç£çµå½±/å§éä¿¡æ¯å±ç¤º","â è±ç£è¯åæ¾ç¤ºï¼å¸¦æçº§å¾æ çç´è§è¯åå±ç¤º","ð 宿´æ¼è人åä¿¡æ¯ï¼å¯¼æ¼ãç¼å§ã主æ¼ç详ç»ä¿¡æ¯","ð
馿/䏿 æ¥æï¼æºè½åºåçµå½±åå§éæ¾ç¤ºæ ¼å¼","â±ï¸ æ¶é¿ä¿¡æ¯ï¼æ¯æçµå½±æ»çé¿åå§éåéæ¶é¿æ¾ç¤º","ð å¶ä½ä¿¡æ¯ï¼å½å®¶/å°åºãè¯è¨ãéæ°çæ ç¾å±ç¤º","ð§ è±ç£APIè§£æå¼æå®å
¨éæï¼åºäºçå®HTMLç»æç²¾ç¡®è§£æ","ðº å§éæ¯æï¼å®ç¾è§£æä¸å½çµè§å§ä¿¡æ¯ï¼å¦ãçä¸ç©ãï¼","ð¥ çµå½±æ¯æï¼åç¡®æåå½é
çµå½±æ°æ®ï¼å¦ãåèèç2ãï¼","ð¨ 卿¼«æ¯æï¼å
¨é¢å
¼å®¹æ¥æ¬å¨ç»ä½åï¼å¦ãæªå
½8å·ãï¼","ð¥ 夿¼åå¤çï¼æ£ç¡®è§£æå¤å¯¼æ¼ãå¤ç¼å§ã大忼åéµå®¹","ð å¤è¯è¨éé
ï¼æ¯æä¸æãè±æãæ¥æçä¸åè¯è¨å
容"],changed:[],fixed:["ð ä¿®å¤è±ç£è¯¦æ
APIè§£æå¤±è´¥é®é¢ï¼éæ°è®¾è®¡HTMLç»æå¹é
ç®æ³","ð è§£å³é¦ææ¥æé夿¾ç¤ºé®é¢ï¼ä¼åæ¥ææåé»è¾ï¼é¿å
'馿:馿:'æ ¼å¼é误","â¨ ä¿®å¤æ¼è人åä¿¡æ¯ç¼ºå¤±ï¼ä½¿ç¨ç²¾ç¡®çCSSéæ©å¨å¹é
è±ç£é¡µé¢çå®ç»æ","ð¯ ä¼åè±ç£è¯åæ¾ç¤ºï¼æ°å¢æçº§å¾æ åé¢è²åºåï¼æåè§è§ä½éª","ð¨ ä¸»çæ¬å级è³5.0.0ï¼è±ç£è¯¦æ
ç³»ç»é大æ¹è¿ï¼APIååºæ ¼å¼ä¼å","ð è±ç£è¯¦æ
æ°æ®ç»æè°æ´ï¼æ°å¢å¤ä¸ªå段ï¼å é¤éå¤å
容æ¾ç¤º"]},{version:"4.3.7",date:"2025-08-30",added:["ð 髿§è½å¼¹å¹ç³»ç»ä¼åï¼å®ç°åºäºè®¾å¤æ§è½çæºè½å¼¹å¹æ¸²æçç¥ï¼èªå¨æ£æµCPUæ ¸å¿æ°ãå
å容éå设å¤ç±»å","ð¯ è®¾å¤æ§è½å级渲æï¼é«æ§è½è®¾å¤å¯ç¨å®æ´åè½ï¼ä¸çæ§è½è®¾å¤é度ä¼åï¼ä½æ§è½è®¾å¤æ¿è¿ä¼åï¼ç¡®ä¿æµç
ææ¾","ð» Web端ä¸ç¨å¼¹å¹è¾å
¥æé®ï¼æ°å¢ç®æ´çå¼¹åæé®ï¼æ¯æä¸é®å¿«éåéå¼¹å¹ï¼ä»
å¨Webæµè§å¨æ¾ç¤ºï¼é¿å
ç§»å¨ç«¯UIæ¥æ¤","â¡ CSS硬件å éä¼åï¼ä¸ºä½æ§è½è®¾å¤å¯ç¨GPU硬件å éï¼ä½¿ç¨transformåwill-change屿§ä¼åå¼¹å¹å¨ç»æ§è½","ð§ æºè½å¼¹å¹è¿æ»¤å¨ï¼ä¿æå®æ´å¼¹å¹æ°éçåæ¶ï¼åªè¿æ»¤å¯è½å½±åæ§è½çè¶
é¿å¼¹å¹åç¹æ®å符弹å¹","ð¨ èªéåºå¼¹å¹é
ç½®ï¼æ ¹æ®è®¾å¤æ§è½èªå¨è°æ´é²éå ç®æ³ãåæ¥ææ¾ç计ç®å¯éååè½çå¯ç¨çç¥"],changed:["ðï¸ å¼¹å¹æ¸²æçç¥éæï¼ä»åå°å¼¹å¹æ°éæ¹ä¸ºä¼åæ¸²ææ§è½ï¼ç¡®ä¿ç¨æ·ä½éªä¸åå½±å","ð¥ï¸ ååºå¼UI设计ï¼å¼¹å¹è¾å
¥åè½ä»
å¨Web端å¯ç¨ï¼ç§»å¨ç«¯ä¸æ³¨äºææ¾ä½éªï¼é¿å
UIå
ç´ å²çª","âï¸ è®¾å¤æ£æµç®æ³ï¼åºäºç¡¬ä»¶å¹¶åæ°ãå
åéå¶å设å¤ç±»å计ç®ç»¼åæ§è½è¯åï¼å®ç°ç²¾åçæ§è½å级","ð ï¸ TypeScriptç±»åå®å
¨ï¼ä¿®å¤å¼¹å¹æä»¶ç±»åå®ä¹å
¼å®¹æ§é®é¢ï¼ä½¿ç¨const assertionç¡®ä¿ç±»åæ£ç¡®æ§","ð§ 代ç
1æ¶æä¼åï¼éæå¼¹å¹æ§è½æ£æµé»è¾ï¼éç¨å·¥åæ¨¡å¼æ ¹æ®è®¾å¤æ§è½çææä¼é
ç½®","ð æ§è½çæ§å¢å¼ºï¼æ·»å 详ç»çæ§è½ç级æ¥å¿è¾åºï¼ä¾¿äºè°è¯åæ§è½åæ"],fixed:[]},{version:"4.3.6",date:"2025-08-30",added:["ð æ°å¢èææ»å¨åè½ï¼æç´¢ç»ææ¯æèæå渲æï¼æ¾èæå大éç»æçå è½½æ§è½","ð± æºè½ååºå¼ç½æ ¼ï¼æ ¹æ®å±å¹å°ºå¯¸èªå¨è°æ´åæ°ï¼2-8åï¼ï¼å®ç¾éé
ææºå°æ¡é¢ç«¯","â¡ æ¸è¿å¼å è½½ï¼æç´¢ç»æåæ¹å è½½ï¼åå§12é¡¹ï¼æ»å¨æ¶èªå¨å è½½æ´å¤ï¼ï¼ä¼åé¦å±ä½éª","ðï¸ èææ»å¨å¼å
³ï¼ç¨æ·å¯å¨æç´¢é¡µé¢èªç±åæ¢èææ»å¨åä¼ ç»ç½æ ¼æ¾ç¤ºæ¨¡å¼","ð§ æºè½å®¹å¨å°ºå¯¸æ£æµï¼éç¨ResizeObserverçå¬å®¹å¨ååï¼ç¡®ä¿å¸å±å§ç»åç¡®"],changed:["ð¨ ä¼åæç´¢ç»ææ¸²ææ§è½ï¼ä½¿ç¨react-window 2.0.0è¿è¡DOMèç¹èæåï¼åå°å
åå ç¨","ð æ¹è¿ååºå¼å¸å±ç®æ³ï¼åºäºå®é
容å¨å®½åº¦å¨æè®¡ç®æä¼åæ°å项ç®å°ºå¯¸","ð å级å è½½ç¶ææ¾ç¤ºï¼æ°å¢å®¹å¨å°ºå¯¸åå§åè¿åº¦æç¤ºï¼æåç¨æ·ä½éª"],fixed:["ð ä¿®å¤é¦æ¬¡æç´¢æ¶èææ»å¨å¸å±åç§»é®é¢ï¼è§£å³å®¹å¨å°ºå¯¸è®¡ç®æ¶åºå¯¼è´çåå§å¸å±é误","â±ï¸ ä¿®å¤å®¹å¨å¼ç¨æè½½æ¶æºé®é¢ï¼ä¼åuseLayoutEffectæ§è¡é¡ºåºï¼ç¡®ä¿DOMå
ç´ æ£ç¡®ç»å®","ð§ ä¿®å¤react-window 2.0.0 APIå
¼å®¹æ§ï¼éé
æ°çæ¬çcellComponentåcellPropsåæ°ç»æ"]},{version:"4.3.5",date:"2025-08-29",added:["æ°å¢Chromecastæå±åè½ï¼æ¯æå°è§é¢å
容æå°å°Chromecast设å¤","Chromecastæºè½æµè§å¨æ£æµï¼ä»
å¨çæ£çChromeæµè§å¨ä¸æ¾ç¤ºChromecastæé®","æé¤ååæµè§å¨æ¾ç¤ºChromecastï¼èªå¨è¯å«å¹¶æé¤OPPOãå°ç±³ãå为ã䏿çååæµè§å¨"],changed:["ä¼å弹广§å¶æé®æ¾ç¤ºçç¥ï¼åªæ¾ç¤ºé
ç½®æé®ï¼éè忢æé®ååå°å¨ä»¥èç空é´"],fixed:["ä¿®å¤å°å±å¹è®¾å¤æ§å¶æ æé®è¢«æ¨åºç»é¢çé®é¢ï¼ä¼å弹广件æ§å¶æé®å ç¨ç©ºé´","ä¿®å¤ç§»å¨ç«¯å¼¹å¹é
ç½®æé®ä¸æ¾ç¤ºçé®é¢ï¼è°æ´widthåæ°ç¡®ä¿ç§»å¨ç«¯æ£ç¡®æ¾ç¤º","ä¿®å¤OPPOçååæµè§å¨é误æ¾ç¤ºChromecastæé®çé®é¢ï¼å¢å OppoBrowseråHeyTapBrowserè¯å«"]},{version:"4.3.4",date:"2025-08-28",added:["æ°å¢å¼¹å¹æ°æ®æºè½ç¼åæºå¶ï¼æ¯ælocalStorageæä¹
ååå¨ï¼30åéç¼åæææ","ç¼åæ¯æé¡µé¢å·æ°ä¿æï¼éæ°æå¼é¡µé¢æ¶èªå¨å¤ç¨ç¼åæ°æ®ï¼é¿å
éå¤è¯·æ±","æºè½ç¼åé®çæï¼åºäºå½±çæ é¢ã年份ãè±ç£IDãéæ°çæå¯ä¸ç¼åæ è¯","æºè½è¿ææ¸
çæºå¶ï¼æ¯æ¬¡ç¼åæ´æ°æ¶èªå¨æ¸
çè¿ææ°æ®ï¼ä¿ælocalStorageæ´æ´"],changed:["ä¼å忢鿰æ¶çå¼¹å¹å è½½é»è¾ï¼ç»ä¸ä½¿ç¨ç¼åä¼å
çç¥ï¼æå忢é度","æ¹è¿å¼¹å¹APIè°ç¨æ§è½ï¼ç¸åéæ°éå¤è®¿é®æ¶ç´æ¥ä½¿ç¨ç¼åï¼åå°æå¡å¨åå","å¢å¼ºç¶æåæ¥æºå¶ï¼å¼¹å¹ç¼åé®ä½¿ç¨ææ°stateå¼èérefå¼ï¼ç¡®ä¿æ°æ®ä¸è´æ§"],fixed:["ä¿®å¤åæ¢éæ°æ¶å¼¹å¹æ°æ®æªæ¸
空çé®é¢ï¼ç°å¨ä½¿ç¨æ£ç¡®çload()æ¹æ³æ¸
空弹å¹","ä¿®å¤é¡µé¢å·æ°åç¼å失æçé®é¢ï¼æ¹ç¨localStorageæ¿ä»£å
åç¼å","ä¿®å¤ç¼åé®çææ¶æºè¿æ©å¯¼è´çç¼åæªå½ä¸é®é¢","ä¿®å¤ESLintç¼è¯é误ï¼è§èåé声æåMapè¿ä»£è¯æ³"]},{version:"4.3.3",date:"2025-08-28",added:["æ°å¢å¼¹å¹åå·å¨æè°æ´ï¼æ¯æå°å·(18px)ãé»è®¤(25px)ã大å·(32px)ãç¹å¤§(40px)åç§è§æ ¼","æ°å¢å¼¹å¹æ¾ç¤ºåºåæ§å¶ï¼æ¯æ1/4å±å¹ã1/2å±å¹ã3/4å±å¹ãå
¨å±åç§æ¾ç¤ºèå´ï¼é¿å
鮿¡éè¦ç»é¢","æ°å¢å¼¹å¹é度è°èï¼æ¯æææ
¢(10ç§)å°æå¿«(1ç§)äºæ¡£éåº¦ï¼æ»¡è¶³ä¸åè§çä¹ æ¯","æ°å¢å¼¹å¹éæåº¦è®¾ç½®ï¼ä»å®å
¨éæ(10%)å°å®å
¨ä¸éæ(100%)äºæ¡£éæåº¦éæ©","æ°å¢æç±»åèè½åè½ï¼æ¯æéæ©æ§éèæ»å¨ãé¡¶é¨ãåºé¨å¼¹å¹ï¼ç¨æ·å¯æ ¹æ®åå¥½è¿æ»¤å¼¹å¹ç±»å","æ°å¢å¼¹å¹é²éå å¼å
³ï¼å¯å¼å¯/å
³éå¼¹å¹éå 鲿¤ï¼ä¼åå¯é弹广¾ç¤ºææ","æ°å¢å®åçå¼¹å¹é
ç½®é误å¤çæºå¶ï¼é²æ¢è®¾ç½®è°æ´æ¶ææ¾å¨å´©æº","ä¼åå¤é¨å¼¹å¹å¼å
³æ§è½ï¼ä½¿ç¨Promise.resolve()æ¿ä»£setTimeout()å®ç°æ´å¥½ç弿¥å¤ç","æ¹è¿å¼¹å¹æ¾ç¤ºåºåé
ç½®ï¼ä½¿ç¨ç¾åæ¯å¼æ¿ä»£åºå®åç´ å¼ï¼æåä¸åå±å¹å°º
1寸éé
æ§","å¢å¼ºç¶æåæ¥æºå¶ï¼é²æ¢Reactç¶ææ´æ°åArtPlayeræä»¶ç¶æä¸ä¸è´å¯¼è´çæ¾ç¤ºé®é¢","ææå¼¹å¹è®¾ç½®åæ¯æå®æ¶è°æ´ï¼æ éå·æ°é¡µé¢å³å¯çå°ææ"],changed:[],fixed:["ä¿®å¤å¤é¨å¼¹å¹å¼å
³æé®ç¹å»å»¶è¿åæ ååºé®é¢ï¼ç°å¨åæ¢æ´å æµç
","ä¿®å¤å
³éå¤é¨å¼¹å¹å仿¾ç¤ºå¼¹å¹çé®é¢ï¼ç°å¨ä¼å®å
¨æ¸
ç©ºå¼¹å¹æ°æ®","ä¿®å¤å¿«é忢å¤é¨å¼¹å¹å¼å
³æ¶çç«ææ¡ä»¶é®é¢ï¼é¿å
ç¶æä¸ä¸è´","ä¿®å¤å¼¹å¹æ¾ç¤ºåºåè°æ´æ æçé®é¢ï¼ç°å¨å¯ä»¥æ£ç¡®æ§å¶å¼¹å¹æ¾ç¤ºèå´","æ¢å¤å¼¹å¹å è½½æç¤ºåè½ï¼ç°å¨ä¼æ¾ç¤º'å·²å è½½ X æ¡å¼¹å¹'æ'ææ å¼¹å¹æ°æ®'"]},{version:"4.3.2",date:"2025-08-27",added:["éæç¬¬ä¸æ¹å¼¹å¹APIåè½ï¼æ¯æä»å¤ä¸ªè§é¢å¹³å°è·å弹广°æ®","æ°å¢caiji.cyou APIéæï¼æ¯ææç´¢çå®è§é¢å
容èéé¢åç","æ¯æè
¾è®¯è§é¢ãç±å¥èºãä¼é
·ãBç«ç主æµå¹³å°å¼¹å¹è·å","æºè½å
容å¹é
ï¼èªå¨è¿æ»¤è§£è¯´ãé¢åçä¸ç¸å
³å
容","æ¯æå¤å¹³å°å¼¹å¹æ°æ®åå¹¶åæ¶é´æåº"],changed:["ä¼åå¼¹å¹APIè¶
æ¶æºå¶ï¼ç±å¥èº30ç§ãä¼é
·25ç§ãå
¶ä»å¹³å°20ç§","æ¹è¿å¼¹å¹æ°æ®æ ¼å¼è½¬æ¢ï¼ç¡®ä¿ä¸ArtPlayerå
¼å®¹","ç§»é¤ä¸åéçæµè¯å¼¹å¹fallbacké»è¾"],fixed:["ä¿®å¤å¼¹å¹APIéæ°åæ°ä¼ éé®é¢ï¼ç°å¨åæ¢éæ°æ¶è½æ£ç¡®è·å对åºéæ°çå¼¹å¹","æ¹è¿éæ°å¹é
é»è¾ï¼æ¯æå¤ç§URLæ ¼å¼","ä¿®å¤è±ç£é¾æ¥è§£æåªè·åå°é¢åççé®é¢","æ·»å 宿¶ä»»å¡ç¨æ·å¤çè°è¯ä¿¡æ¯ï¼ä¾¿äºææ¥å é¤ç¨æ·ä»åºç°çé®é¢"]},{version:"4.3.1",date:"2025-08-27",added:["æ°å¢ç¨æ·èªè¡æ³¨ååè½","注å页颿¯æç¨æ·åãå¯ç éªè¯","管çåå¯é
ç½®æ¯å¦å
è®¸ç¨æ·æ³¨å","注åæååèªå¨ç»å½"],changed:["ç»å½é¡µé¢å¨æ°æ®åºæ¨¡å¼ä¸æ¾ç¤ºæ³¨å龿¥","å¢å¼ºç¨æ·åæ ¼å¼éªè¯ï¼3-20ä½åæ¯æ°åä¸å线ï¼","å¯ç é¿åº¦è¦æ±è³å°6ä½"],fixed:[]},{version:"4.3.0",date:"2025-08-26",added:["æ¯æå° IPTV é¢éæ·»å å°æ¶èä¸"],changed:["ç¦ç¨ flv ç´æï¼ä»
æ¯æ m3u8 ç´æ","éä½ä»£ç ts åççå
åå ç¨"],fixed:[]},{version:"4.2.1",date:"2025-08-26",added:[],changed:[],fixed:["ä¿®å¤ç´ææºå 载失败æç¦»å¼é¡µé¢åä¾ç¶æ éå è½½çé®é¢"]},{version:"4.2.0",date:"2025-08-26",added:["æ¯æ flv ç´æåç´æå°åè§£æå° mp4 çå¤ç","å¢å ç´æå°æ ç proxy 以鲿¢ cors","æ¯æææ¾é¡µééåç»çæ»å¨ç¿»é¡µ"],changed:["管çåå°é¡µé¢çæé®å¢å å è½½ä¸ç UI"],fixed:["/api/proxy/m3u8 ä»
对 m3u8 å
容ååºååï¼éä½å
åå CPU æ¶è"]},{version:"4.1.1",date:"2025-08-25",added:[],changed:["å¢å 对 url-tvg åå¤ epg url çæ¯æ"],fixed:["ä¿®å¤ epg æ°æ®æ¸
æ´ä¸å»éå é»è¾æªèèæ¥æå¯¼è´çé®é¢"]},{version:"4.1.0",date:"2025-08-24",added:["è§£æ m3u èªå¸¦ç epg åèªå®ä¹ epgï¼å¢å 仿¥èç®å"],changed:["ç´ææºæ°æ®å·æ°æ¹ä¸ºå¹¶åå·æ°"],fixed:[]},{version:"4.0.0",date:"2025-08-24",added:["å¢å iptv 订é
åææ¾åè½"],changed:["æç´¢é¡µé¢è§é¢å¡çç§»å¨ç«¯/å³é®èåæ·»å è±ç£é¾æ¥","æç´¢å»ºè®®éµå¾ªè²æ
è¿æ»¤"],fixed:[]},{version:"3.2.1",date:"2025-08-22",added:[],changed:["æ°å¢è²è²è¿æ»¤åç±»","è°æ´æç´¢å»ºè®®æ¡å±çº§"],fixed:[]},{version:"3.2.0",date:"2025-08-22",added:["è§é¢æºç®¡çæ¯ææ¹éå¯ç¨ãç¦ç¨ãå é¤","ç¨æ·ç®¡çæ¯ææ¹éè®¾ç½®ç¨æ·ç»","è§é¢å¡çå³é®/é¿æè忰墿°æ ç¾é¡µææ¾"],changed:["è§é¢å¡çç§»å¨ç«¯ hover æ¶ä»
ä¿çææ¾æé®","å¾®è°ç®¡çé¡µé¢ UI åè§é¢å¡çå³é®/é¿æèåä¸çæ¶èæ ·å¼"],fixed:["ä¿®å¤äºæç´¢æ enter é®èªå¨éä¸ç¬¬ä¸ä¸ªå»ºè®®é¡¹çé®é¢"]},{version:"3.1.2",date:"2025-08-22",added:[],changed:[],fixed:["ä¿®å¤ç§»å¨ç«¯å¡çæ æ³ç¹å»çé®é¢"]},{version:"3.1.1",date:"2025-08-21",added:[],changed:[],fixed:["ä¿®å¤äºè§é¢å¡ç hover çéææ¾æé®ç¹å»åè¿å
¥ææ¾é¡µçé®é¢"]},{version:"3.1.0",date:"2025-08-21",added:["å¢å ç¨æ·ç»ç®¡çåç¨æ·ç»ææ¾æºéå¶","å¢å 管ç颿¿è§é¢æºæææ§æ£æ¥","æç´¢æ å¢å ä¸é®å 餿é®"],changed:["æ¾å®½ææå¿è·³å¯¹äºç½ç»é®é¢ç夿æ å","ç»ä¸ç®¡ç颿¿å¼¹çªä½¿ç¨ createPortal","VideoCard å
许移å¨ç«¯ååº hover äºä»¶","ç§»å¨ç«¯å¸å± header å¸¸é©»ï¼æç´¢æé®ç§»å¨å° header å³ä¾§","è°å¤§æç´¢æ¥å£è¶
æ¶æ¶é´"],fixed:["ä¿®å¤ bangumi è¿åçæ´æ°è¯åæ å°æ°å¯¼è´ UI ä¸å¯¹é½çé®é¢"]},{version:"3.0.2",date:"2025-08-20",added:[],changed:["ä¼åæºå¨ç çæé»è¾"],fixed:["ä¿®å¤ redis url 䏿¯æ rediss åè®®çé®é¢"]},{version:"3.0.1",date:"2025-08-20",added:[],changed:[],fixed:["ä¿®å¤ææåå§åé误"]},{version:"3.0.0",date:"2025-08-20",added:["é²çåå åº","æ¯æèªå®ä¹ç¨æ·å¯ç¨è§é¢æº"],changed:["å³é®è§é¢å¡çå¯å¼¹åºæä½èå"],fixed:["è¿æ»¤æéæ°ä¸º 0 çæç´¢ç»æ"]},{version:"2.7.1",date:"2025-08-17",added:[],changed:[],fixed:["ä¿®å¤ iOS ä¸çæ¬é¢æ¿å¯ç©¿éæ»å¨è
1æ¯çé®é¢"]},{version:"2.7.0",date:"2025-08-17",added:["è§é¢å¡çæ°å¢ç§»å¨ç«¯æä½é¢æ¿ï¼ä¼å触æ§å±æä½ä½éª"],changed:["ä¼åéæ°æ é¢çå¹é
åå±ç¤ºé»è¾"],fixed:["ä¿®å¤è®¾ç½®é¢æ¿åä¿®æ¹å¯ç 颿¿èæ¯å¯è¢«æå¨çé®é¢"]},{version:"2.6.0",date:"2025-08-17",added:["æ°å¢æç´¢æµå¼è¾åºæ¥å£ï¼å¹¶è®¾ç½®æµå¼æç´¢ä¸ºé»è®¤æç´¢æ¥å£ï¼ä¼åæç´¢ä½éª","æ°å¢æºç«æç´¢ç»æå
åç¼åï¼ç²åº¦ä¸ºæºç«+å
³é®è¯+页æ°ï¼ç¼å 10 åé","æ°å¢è±ç£ CDN provided by @JohnsonRan"],changed:["æç´¢ç»æé»è®¤ä¸ºæ æåºç¶æï¼ä¸åé»è®¤æç
§å¹´ä»½æåº","å¸¸è§æç´¢æ¥å£æ ç»ææ¶ï¼ä¸å设置ååºçç¼å头","ç§»é¤è±ç£æ°æ®æºä¸ç cors-anywhere æ¹å¼"],fixed:["æ°æ®å¯¼åºæ¶å¯¼åºç«é¿å¯ç ï¼ä¿è¯è¿ç§»å°æ°è´¦æ·æ¶åç«é¿ç¨æ·å¯æ£å¸¸ç»å½","èåå¡çä¼åç§»å¨ç«¯æºä¿¡æ¯å±ç¤º"]},{version:"2.4.1",date:"2025-08-15",added:[],changed:[],fixed:["对导å
¥å db 读åçé
ç½®æä»¶åèªæ£ï¼é²æ¢ USERNAME ä¿®æ¹å¯¼è´ç¨æ·ç¶æå¼å¸¸"]},{version:"2.4.0",date:"2025-08-15",added:["æ¯æ kvrocks åå¨ï¼æä¹
å kv åå¨ï¼"],changed:[],fixed:["ä¿®å¤æç´¢ç»ææåºä¸ç¨³å®çé®é¢","导å
¥æ°æ®æ¶åæ¶æ´æ°å
åç¼åç管çåé
ç½®"]},{version:"2.3.0",date:"2025-08-15",added:["æ¯æç«é¿å¯¼å
¥å¯¼åºæ´ç«æ°æ®"],changed:["ä»
å
许ç«é¿æä½é
ç½®æä»¶","å¾®è°æç´¢ç»æè¿æ»¤é¢æ¿çç§»å¨ç«¯æ ·å¼"],fixed:[]},{version:"2.2.1",date:"2025-08-14",added:[],changed:[],fixed:["ä¿®å¤äºçé panel æå¼æ¶æ»å¨é¡µé¢ panel ä¸è·éçé®é¢"]},{version:"2.2.0",date:"2025-08-14",added:["æç´¢ç»ææ¯ææææ¾æºãæ é¢å年份çéï¼æ¯ææå¹´ä»½æåº","æç´¢çé¢è§é¢å¡çå±ç¤ºå¹´ä»½ä¿¡æ¯ï¼èåå¡çå±ç¤ºææ¾æº"],changed:[],fixed:["ä¿®å¤ /api/search/resources è¿å空çé®é¢","ä¿®å¤ upstash å®ä¾æ æ³ç¼è¾èªå®ä¹åç±»çé®é¢"]},{version:"2.1.0",date:"2025-08-13",added:["æ¯æéè¿è®¢é
è·åé
ç½®æä»¶"],changed:["å¾®è°é¨åææ¡å UI","å é¤é¨åæ ç¨ä»£ç "],fixed:[]},{version:"2.0.1",date:"2025-08-13",added:[],changed:["çæ¬æ£æ¥ååæ´æ¥å¿è¯·æ± Github"],fixed:["å¾®è°ç®¡ç颿¿æ ·å¼"]},{version:"2.0.0",date:"2025-08-13",added:["æ¯æé
ç½®æä»¶å¨çº¿é
ç½®åç¼è¾","æç´¢é¡µæç´¢æ¡å®æ¶èæ³","å»é¤å¯¹ localstorage 模å¼çæ¯æ"],changed:["ææ¾è®°å½å 餿鮿¹ä¸ºå徿¡¶å¾æ 以æ¶é¤æ§ä¹"],fixed:["éå¶è®¾ç½®é¢æ¿çæå¤§é¿åº¦ï¼é²æ¢è¶
åºè§å£"]},{version:"1.1.1",date:"2025-08-12",added:[],changed:["ä¿®æ£ zwei æä¾ç cors proxy å°å","ç§»é¤åºå¼ä»£ç "],fixed:["[è¿ç»´] docker workflow release æ¥æä½¿ç¨ä¸å
«åºæ¥æ"]},{version:"1.1.0",date:"2025-08-12",added:["æ¯æ¥æ°çªæ¾éåè½ï¼å±ç¤ºæ¯æ¥æ°çªæ¾éççªå§"],changed:[],fixed:["ä¿®å¤è¿ç¨ CHANGELOG æ æ³æååæ´å
容çé®é¢"]},{version:"1.0.5",date:"2025-08-12",added:[],changed:["å®ç°åºäº Git æ ç¾çèªå¨ Release 工使µ"],fixed:[]},{version:"1.0.4",date:"2025-08-11",added:["ä¼åçæ¬ç®¡ç工使µï¼å®ç°åç¹ä¿®æ¹"],changed:["çæ¬å·ç°å¨ä» CHANGELOG èªå¨æåï¼æ éæå¨ç»´æ¤ VERSION.txt"],fixed:[]},{version:"1.0.3",date:"2025-08-11",added:[],changed:["åçº§ææ¾å¨ Artplayer è³çæ¬ 5.2.5"],fixed:[]},{version:"1.0.2",date:"2025-08-11",added:[],changed:["çæ¬å·æ¯è¾æºå¶æ¢å¤ä¸ºæ°åæ¯è¾ï¼ä»
彿æ°çæ¬å¤§äºæ¬å°çæ¬æ¶æè®¤ä¸ºææ´æ°","[è¿ç»´] èªå¨æ¿æ¢ version.ts ä¸ççæ¬å·ä¸º VERSION.txt ä¸ççæ¬å·"],fixed:[]},{version:"1.0.1",date:"2025-08-11",added:[],changed:[],fixed:["ä¿®å¤çæ¬æ£æ¥åè½ï¼åªè¦ä¸ææ°çæ¬å·ä¸ä¸è´å³è®¤ä¸ºææ´æ°"]},{version:"1.0.0",date:"2025-08-10",added:["åºäº Semantic Versioning ççæ¬å·æºå¶","çæ¬ä¿¡æ¯é¢æ¿ï¼å±ç¤ºæ¬å°åæ´æ¥å¿åè¿ç¨æ´æ°æ¥å¿"],changed:[],fixed:[]}];var u=e.i(810239),m=e.i(974412);e.s(["VersionPanel",0,({isOpen:e,onClose:h})=>{let[y,p]=(0,c.useState)(!1),[b,f]=(0,c.useState)([]),[v,k]=(0,c.useState)(!1),[j,N]=(0,c.useState)(""),[w,I]=(0,c.useState)(!1);(0,c.useEffect)(()=>(p(!0),()=>p(!1)),[]),(0,c.useEffect)(()=>
1{if(e){let e=document.body,a=document.documentElement,r=e.style.overflow,t=a.style.overflow;return e.style.overflow="hidden",a.style.overflow="hidden",()=>{e.style.overflow=r,a.style.overflow=t}}},[e]),(0,c.useEffect)(()=>{e&&S()},[e]);let S=async()=>{try{let e=Date.now(),a=await fetch(`https://raw.githubusercontent.com/SzeMeng76/LunaTV/refs/heads/main/CHANGELOG?_t=${e}`);if(a.ok){let e=await a.text(),r=P(e);if(f(r),r.length>0){let e=r[0];N(e.version),k((0,m.compareVersions)(e.version)===m.UpdateStatus.HAS_UPDATE)}}else console.error("è·åè¿ç¨åæ´æ¥å¿å¤±è´¥:",a.status,a.statusText)}catch(e){console.error("è·åè¿ç¨åæ´æ¥å¿å¤±è´¥:",e)}},P=e=>{let a=e.split("\n"),r=[],t=null,s=null,l=!1;for(let e of a){let a=e.trim(),d=a.match(/^## \[([\d.]+)\] - (\d{4}-\d{2}-\d{2})$/);if(d){t&&r.push(t),t={version:d[1],date:d[2],added:[],changed:[],fixed:[]},s=null,l=!0;continue}if(l&&t){if("### Added"===a){s="added";continue}if("### Changed"===a){s="changed";continue}if("### Fixed"===a){s="fixed";continue}if(a.startsWith("- ")&&s){let e=a.substring(2);"added"===s?t.added.push(e):"changed"===s?t.changed.push(e):"fixed"===s&&t.fixed.push(e)}}}return t&&r.push(t),r},A=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-1000",onClick:h,onTouchMove:e=>{e.preventDefault()},onWheel:e=>{e.preventDefault()},style:{touchAction:"none"}}),(0,a.jsxs)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full max-w-xl max-h-[90vh] bg-white dark:bg-gray-900 rounded-xl shadow-xl z-1001 overflow-hidden",onTouchMove:e=>{e.stopPropagation()},style:{touchAction:"auto"},children:[(0,a.jsxs)("div",{className:"flex items-center justify-between p-3 sm:p-6 border-b border-gray-200 dark:border-gray-700",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3",children:[(0,a.jsx)("h3",{className:"text-lg sm:text-xl font-bold text-gray-800 dark:text-gray-200",children:"çæ¬ä¿¡æ¯"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-1 sm:gap-2",children:[(0,a.jsxs)("span",{className:"px-2 sm:px-3 py-1 text-xs sm:text-sm font-medium bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300 rounded-full",children:["v",u.CURRENT_VERSION]}),v&&(0,a.jsxs)("span",{className:"px-2 sm:px-3 py-1 text-xs sm:text-sm font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300 rounded-full flex items-center gap-1",children:[(0,a.jsx)(d.Download,{className:"w-3 h-3 sm:w-4 sm:h-4"}),(0,a.jsx)("span",{className:"hidden sm:inline",children:"ææ°çæ¬å¯ç¨"}),(0,a.jsx)("span",{className:"sm:hidden",children:"坿´æ°"})]})]})]}),(0,a.jsx)("button",{onClick:h,className:"w-6 h-6 sm:w-8 sm:h-8 p-1 rounded-full flex items-center justify-center text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors","aria-label":"å
³é",children:(0,a.jsx)(n.X,{className:"w-full h-full"})})]}),(0,a.jsx)("div",{className:"p-3 sm:p-6 overflow-y-auto max-h-[calc(95vh-140px)] sm:max-h-[calc(90vh-120px)]",children:(0,a.jsxs)("div",{className:"space-y-3 sm:space-y-6",children:[v&&(0,a.jsx)("div",{className:"bg-linear-to-r from-yellow-50 to-amber-50 dark:from-yellow-900/20 dark:to-amber-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-3 sm:p-4",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3",children:[(0,a.jsx)("div",{className:"w-8 h-8 sm:w-10 sm:h-10 bg-yellow-100 dark:bg-yellow-800/40 rounded-full flex items-center justify-center shrink-0",children:(0,a.jsx)(d.Download,{className:"w-4 h-4 sm:w-5 sm:h-5 text-yellow-600 dark:text-yellow-400"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("h4",{className:"text-sm sm:text-base font-semibold text-yellow-800 dark:text-yellow-200",children:"åç°æ°çæ¬"}),(0,a.jsxs)("p",{className:"text-xs sm:text-sm text-yellow-700 dark:text-yellow-300 break-all",children:["v",u.CURRENT_VERSION," â v",j]})]})]}),(0,a.jsxs)("a",{href:"https://github.com/SzeMeng76/LunaTV",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center gap-2 px-3 py-2 bg-yellow-600 hover:bg-yellow-700 text-white text-xs sm:text-sm rounded-lg transition-colors shadow-sm w-full",children:[(0,a.jsx)(d.Download,{className:"w-3 h-3 sm:w-4 sm:h-4"}),"åå¾ä»åº"]})]})}),!v&&(0,a.jsx)("div",{className:"bg-linear-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 border border-green-200 dark:border-green-800 rounded-lg p-3 sm:p-4",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 sm:gap-3",children:[(0,a.jsx)("div",{className:"w-8 h-8 sm:w-10 sm:h-10 bg-green-100 dark:bg-green-800/40 rounded-full flex items-center justify-center shrink-0",children:(0,a.jsx)(t.CheckCircle,{className:"w-4 h-4 sm:w-5 sm:h-5 text-green-600 dark:text-green-400"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("h4",{className:"text-sm sm:text-base font-semibold text-green-800 dark:text-green-200",children:"å½åä¸ºææ°çæ¬"}),(0,a.jsxs)("p",{className:"text-xs sm:text-sm text-green-700 dark:text-green-300 break-all",children:["å·²æ¯ææ°çæ¬ v",u.CURRENT_VERSION]})]})]}),(0,a.jsxs)("a",{href:"https://github.com/SzeMeng76/LunaTV",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center justify-center gap-2 px-3 py-2 bg-green-600 hover:bg-green-700 text-white text-xs sm:text-sm rounded-lg transition-colors shadow-sm w-full",children:[(0,a.jsx)(t.CheckCircle,{className:"w-3 h-3 sm:w-4 sm:h-4"}),"åå¾ä»åº"]})]})}),v&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[(0,a.jsxs)("h4",{className:"text-lg font-semibold text-gray-800 dark:text-gray-200 flex items-center gap-2",children:[(0,a.jsx)(d.Download,{className:"w-5 h-5 text-yellow-500"}),"è¿ç¨æ´æ°å
容"]}),(0,a.jsx)("button",{onClick:()=>I(!w),className:"inline-flex items-center justify-center gap-2 px-3 py-1.5 bg-yellow-100 hover:bg-yellow-200 text-yellow-800 dark:bg-yellow-800/30 dark:hover:bg-yellow-800/50 dark:text-yellow-200 rounded-lg transition-colors text-sm w-full sm:w-auto",children:w?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(l.ChevronUp,{className:"w-4 h-4"}),"æ¶èµ·"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.ChevronDown,{className:"w-4 h-4"}),"æ¥çæ´æ°å
容"]})})]}),w&&b.length>0&&(0,a.jsx)("div",{className:"space-y-4",children:b.filter(e=>!g.map(e=>e.version).includes(e.version)).map((e,t)=>(0,a.jsxs)("div",{className:`p-4 rounded-lg border ${e.version===j?"bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800":"bg-gray-50 dark:bg-gray-800/60 border-gray-200 dark:border-gray-700"}`,children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-3",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("h4",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:["v",e.version]}),e.version===j&&(0,a.jsx)("span",{className:"px-2 py-1 text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300 rounded-full flex items-center gap-1",children:"è¿ç¨ææ°"})]}),(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400",children:e.date})]}),e.added&&e.added.length>0&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-green-600 dark:text-green-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(o.Plus,{className:"w-4 h-4"}),"æ°å¢åè½"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.added.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-green-400 rounded-full mt-2 shrink-0"}),e]},r))})]}),e.changed&&e.changed.length>0&&(0,a.jsxs)("div",{className:"mb-3",children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-blue-600 dar
1k:text-blue-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(i.RefreshCw,{className:"w-4 h-4"}),"åè½æ¹è¿"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.changed.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-blue-400 rounded-full mt-2 shrink-0"}),e]},r))})]}),e.fixed&&e.fixed.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-purple-700 dark:text-purple-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(r.Bug,{className:"w-4 h-4"}),"é®é¢ä¿®å¤"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.fixed.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-purple-500 rounded-full mt-2 shrink-0"}),e]},r))})]})]},t))})]}),(0,a.jsxs)("div",{className:"border-b border-gray-200 dark:border-gray-700 pb-4",children:[(0,a.jsx)("h4",{className:"text-lg font-semibold text-gray-800 dark:text-gray-200 pb-3 sm:pb-4",children:"åæ´æ¥å¿"}),(0,a.jsx)("div",{className:"space-y-4",children:g.map(e=>((e,t=!1,s=!1)=>{let l=s&&v&&e.version===j;return(0,a.jsxs)("div",{className:`p-4 rounded-lg border ${t?"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800":l?"bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800":"bg-gray-50 dark:bg-gray-800/60 border-gray-200 dark:border-gray-700"}`,children:[(0,a.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-3",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("h4",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:["v",e.version]}),t&&(0,a.jsx)("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300 rounded-full",children:"å½åçæ¬"}),l&&(0,a.jsxs)("span",{className:"px-2 py-1 text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300 rounded-full flex items-center gap-1",children:[(0,a.jsx)(d.Download,{className:"w-3 h-3"}),"坿´æ°"]})]}),(0,a.jsx)("div",{className:"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400",children:e.date})]}),(0,a.jsxs)("div",{className:"space-y-3",children:[e.added.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-green-700 dark:text-green-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(o.Plus,{className:"w-4 h-4"}),"æ°å¢åè½"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.added.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-green-500 rounded-full mt-2 shrink-0"}),e]},r))})]}),e.changed.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-blue-700 dark:text-blue-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(i.RefreshCw,{className:"w-4 h-4"}),"åè½æ¹è¿"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.changed.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-blue-500 rounded-full mt-2 shrink-0"}),e]},r))})]}),e.fixed.length>0&&(0,a.jsxs)("div",{children:[(0,a.jsxs)("h5",{className:"text-sm font-medium text-purple-700 dark:text-purple-400 mb-2 flex items-center gap-1",children:[(0,a.jsx)(r.Bug,{className:"w-4 h-4"}),"é®é¢ä¿®å¤"]}),(0,a.jsx)("ul",{className:"space-y-1",children:e.fixed.map((e,r)=>(0,a.jsxs)("li",{className:"text-sm text-gray-700 dark:text-gray-300 flex items-start gap-2",children:[(0,a.jsx)("span",{className:"w-1.5 h-1.5 bg-purple-500 rounded-full mt-2 shrink-0"}),e]},r))})]})]})]},e.version)})(e,e.version===u.CURRENT_VERSION,!1))})]})]})})]})]});return y&&e?(0,x.createPortal)(A,document.body):null}],426015)},734918,e=>{"use strict";var a=e.i(402458),r=e.i(475529);let t="moontv_watching_updates";async function s(e,a,r){console.log(`ð getOriginalEpisodes è°è¯ä¿¡æ¯ - ${e.title}:`,{"record.original_episodes":e.original_episodes,"record.total_episodes":e.total_episodes,ç±»åæ£æ¥:typeof e.original_episodes,宿´è®°å½:e});try{console.log(`ð 仿°æ®åºè¯»åææ°çåå§éæ°: ${e.title}`);let a=await fetch("/api/playrecords");if(a.ok){let t=(await a.json())[r];if(t?.original_episodes&&t.original_episodes>0)return console.log(`ð 仿°æ®åºè¯»åå°ææ°åå§éæ°: ${e.title} = ${t.original_episodes}é (å½åææ¾è®°å½: ${e.total_episodes}é)`),t.original_episodes}}catch(a){console.warn(`â ï¸ ä»æ°æ®åºè¯»ååå§éæ°å¤±è´¥: ${e.title}ï¼ä½¿ç¨å
åå¼`,a)}return e.original_episodes&&e.original_episodes>0?(console.log(`ð 使ç¨å
åä¸çåå§éæ°: ${e.title} = ${e.original_episodes}é (å½åææ¾è®°å½: ${e.total_episodes}
1é)`),e.original_episodes):((void 0===e.original_episodes||null===e.original_episodes)&&e.total_episodes>0?console.log(`â ï¸ ${e.title} 缺å°åå§éæ°ï¼ä½¿ç¨å½åå¼ ${e.total_episodes}éï¼ä¸åå
¥æ°æ®åºï¼`):console.log(`â ï¸ è¯¥å§éæªæ¾å°åå§éæ°è®°å½ï¼ä½¿ç¨å½åææ¾è®°å½éæ°: ${e.title} = ${e.total_episodes}é`),e.total_episodes)}async function l(e,a,r){try{let t=6e5*Math.floor(Date.now()/6e5),l=`/api/detail?source=${r}&id=${a}&_t=${t}`;console.log(`ð [è¿½çªæ´æ°] ${e.title} è°ç¨API:`,l);let d=await fetch(l,{cache:"no-store"});if(!d.ok)return console.warn(`â [è¿½çªæ´æ°] è·å${e.title}详æ
失败:`,d.status),{hasUpdate:!1,hasNewEpisode:!1,hasContinueWatching:!1,hasNewRelease:!1,newEpisodes:0,remainingEpisodes:0,latestEpisodes:e.total_episodes};let o=await d.json(),i=o.episodes?o.episodes.length:0;console.log(`ð [è¿½çªæ´æ°] ${e.title} APIæ£æ¥è¯¦æ
:`,{APIè¿åéæ°:i,å½åè§çå°:e.index,ææ¾è®°å½éæ°:e.total_episodes});let n=e.key,c=await s(e,a,n);console.log(`ð [è¿½çªæ´æ°] ${e.title} 鿰坹æ¯:`,{åå§éæ°:c,å½åææ¾è®°å½éæ°:e.total_episodes,APIè¿åéæ°:i});let x=i>c,g=x?i-c:0,u=Math.max(i,c,e.total_episodes),m=e.index<u,h=m?u-e.index:0;return i<c&&console.warn(`â ï¸ [è¿½çªæ´æ°] ${e.title} APIè¿åéæ°(${i})å°äºåå§è®°å½(${c})ï¼å¯è½æ¯APIç¼åé®é¢`),x&&(console.log(`⨠[è¿½çªæ´æ°] ${e.title} åç°æ°éæ°: ${c} -> ${i} éï¼æ°å¢${g}é`),i>e.total_episodes&&(console.log(`ð [è¿½çªæ´æ°] æ£æµå°éæ°å·®å¼: ${e.title} ææ¾è®°å½${e.total_episodes}é < APIææ°${i}é`),console.log("â
[è¿½çªæ´æ°] å·²è®°å½æ°éæ°ä¿¡æ¯ï¼çå¾
ç¨æ·å®é
è§çæ¶èªå¨åæ¥"))),m&&console.log(`ðº [è¿½çªæ´æ°] ${e.title} ç»§ç»è§çæé: å½å第${e.index}éï¼å
±${u}éï¼è¿æ${h}éæªç`),console.log(`â [è¿½çªæ´æ°] ${e.title} æç»æ£æµç»æ:`,{hasUpdate:x,hasContinueWatching:m,newEpisodes:g,remainingEpisodes:h,åå§éæ°:c,å½åææ¾è®°å½éæ°:e.total_episodes,APIè¿åéæ°:i,ä¿æ¤åéæ°:u,å½åè§çå°:e.index}),{hasUpdate:x,hasNewEpisode:x,hasContinueWatching:m,hasNewRelease:c<=1&&i>1,newEpisodes:g,remainingEpisodes:h,latestEpisodes:u}}catch(a){return console.error(`â [è¿½çªæ´æ°] æ£æ¥${e.title}æ´æ°å¤±è´¥:`,a),{hasUpdate:!1,hasNewEpisode:!1,hasContinueWatching:!1,hasNewRelease:!1,newEpisodes:0,remainingEpisodes:0,latestEpisodes:e.total_episodes}}}e.s(["useRefreshWatchingUpdates",0,function(){let e=(0,r.useQueryClient)();return()=>{e.invalidateQueries({queryKey:["playRecords"],refetchType:"all"}),e.invalidateQueries({queryKey:["reminders"],refetchType:"all"}),e.invalidateQueries({queryKey:["watchingUpdates"],refetchType:"all"})}},"useWatchingUpdatesQuery",0,function(e){let s=(0,r.useQueryClient)();return(0,a.useQuery)({queryKey:["watchingUpdates",e?.forceRefresh?Date.now():"cached"],queryFn:async()=>{console.log("ð [è¿½çªæ´æ°] å¼å§æ£æ¥è¿½çªæ´æ°...");let e=await s.ensureQueryData({queryKey:["playRecords","array"],queryFn:async()=>{let e=await fetch("/api/playrecords");if(!e.ok)throw Error("Failed to fetch play records");return Object.entries(await e.json()).map(([e,a])=>({...a,key:e})).sort((e,a)=>(a.save_time||0)-(e.save_time||0))}}),a=await s.ensureQueryData({queryKey:["sources","map"],queryFn:async()=>{let e=await fetch("/api/sources");if(!e.ok)throw Error("Failed to fetch sources");let a=await e.json(),r=new Map;return a.forEach(e=>{e.name&&e.key&&r.set(e.name,e.key)}),r}}),r=await s.ensureQueryData({queryKey:["reminders"],queryFn:async()=>{let e=await fetch("/api/reminders");if(!e.ok)throw Error("Failed to fetch reminders");return await e.json()}}),d=0,o=0,i=0,n=[];if(e&&0!==e.length){console.log(`ð [è¿½çªæ´æ°] æ¾å° ${e.length} æ¡ææ¾è®°å½`);let r=e.filter(e=>e.total_episodes>1);if(console.log(`ð¯ [è¿½çªæ´æ°] æ¾å° ${r.length} 个å¯è½ææ´æ°çå§é`),r.length>0&&console.log("[è¿½çªæ´æ°] åéè®°å½è¯¦æ
:",r.map(e=>({title:e.title,index:e.index,total:e.total_episodes}))),r.length>0){let e=r.map(async e=>{try{let[r,t]=e.key.split("+"),s=r;if(a){let e=a.get(r);e&&(s=e,console.log(`[è¿½çªæ´æ°] æ å°æ°æ®æº: ${r} -> ${s}`))}
1let c=await l(e,t,s),x=c.latestEpisodes,g={title:e.title,source_name:e.source_name,year:e.year,cover:e.cover,sourceKey:s,videoId:t,currentEpisode:e.index,totalEpisodes:x,hasNewEpisode:c.hasNewEpisode,hasContinueWatching:c.hasContinueWatching,hasNewRelease:c.hasNewRelease,newEpisodes:c.newEpisodes,remainingEpisodes:c.remainingEpisodes,latestEpisodes:c.latestEpisodes,remarks:e.remarks};return n.push(g),c.hasNewEpisode&&d++,c.hasContinueWatching&&(o++,console.log(`[è¿½çªæ´æ°] ${e.title} 计å
¥ç»§ç»è§ç计æ°ï¼å½åæ»æ°: ${o}`)),c.hasNewRelease&&i++,console.log(`[è¿½çªæ´æ°] ${e.title} æ£æ¥ç»æ: hasUpdate=${c.hasUpdate}, hasContinueWatching=${c.hasContinueWatching}`),g}catch(d){console.error(`[è¿½çªæ´æ°] æ£æ¥${e.title}æ´æ°å¤±è´¥:`,d);let[r,t]=e.key.split("+"),s=r;if(a){let e=a.get(r);e&&(s=e)}let l={title:e.title,source_name:e.source_name,year:e.year,cover:e.cover,sourceKey:s,videoId:t,currentEpisode:e.index,totalEpisodes:e.total_episodes,hasNewEpisode:!1,hasContinueWatching:!1,hasNewRelease:!1,newEpisodes:0,remainingEpisodes:0,latestEpisodes:e.total_episodes,remarks:e.remarks};return n.push(l),l}});await Promise.all(e)}}else console.log("â ï¸ [è¿½çªæ´æ°] æ ææ¾è®°å½ï¼è·³è¿ææ¾è®°å½æ´æ°æ£æ¥");console.log("ð¬ å¼å§æ£æ¥æ³çä¸çæ°ä¸æ å
容...");try{if(r){let a=new Date().toLocaleDateString("zh-CN",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).replace(/\//g,"-"),t=Object.entries(r).filter(([r,t])=>!!t.releaseDate&&!(t.releaseDate>a)&&!(e&&e.some(e=>e.title===t.title&&e.year===t.year))).map(([e,r])=>{let[t,s]=e.split("+"),l="已䏿 ";if(r.releaseDate){let e=r.releaseDate;if(e<a){let r=e.split("-").map(Number),t=a.split("-").map(Number),s=new Date(r[0],r[1]-1,r[2]).getTime(),d=new Date(t[0],t[1]-1,t[2]).getTime(),o=Math.floor((d-s)/864e5);l=`已䏿 ${o}天`}else e===a&&(l="仿¥ä¸æ ")}return{title:r.title,source_name:r.source_name,year:r.year,cover:r.cover,sourceKey:t||"unknown",videoId:s||"unknown",currentEpisode:0,totalEpisodes:r.total_episodes||0,hasNewEpisode:!1,hasContinueWatching:!1,hasNewRelease:!0,newEpisodes:0,remainingEpisodes:0,latestEpisodes:r.total_episodes||0,remarks:l,releaseDate:r.releaseDate}});t.length>0?(console.log(`ð¬ [è¿½çªæ´æ°] åç° ${t.length} 鍿°ä¸æ çæ³çå
容`),n.push(...t),i=t.length):console.log("ð¬ [è¿½çªæ´æ°] æ²¡ææ°ä¸æ çæ³çå
容")}}catch(e){console.error("[è¿½çªæ´æ°] æ£æ¥æ°ä¸æ å
容失败:",e)}n.sort((e,a)=>e.hasNewRelease!==a.hasNewRelease?e.hasNewRelease?-1:1:e.hasNewEpisode!==a.hasNewEpisode?e.hasNewEpisode?-1:1:e.hasContinueWatching!==a.hasContinueWatching?e.hasContinueWatching?-1:1:e.title.localeCompare(a.title,"zh-CN"));let c=d>0||o>0||i>0;console.log(`â
[è¿½çªæ´æ°] æ£æ¥å®æ: ${c?`åç°${i}鍿°ä¸æ ï¼${d}é¨å§éææ°éæ°æ´æ°ï¼${o}é¨å§ééè¦ç»§ç»è§ç`:"ææ æ´æ°"}`);let x={hasUpdates:c,timestamp:Date.now(),updatedCount:d,continueWatchingCount:o,newReleasesCount:i,updatedSeries:n};try{localStorage&&(localStorage.setItem(t,JSON.stringify(x)),console.log("[è¿½çªæ´æ°] ç»æå·²ä¿åå° localStorage"))}catch(e){console.warn("[è¿½çªæ´æ°] ä¿åå° localStorage 失败:",e)}return x},staleTime:18e5,gcTime:36e5,refetchInterval:18e5,refetchIntervalInBackground:!1,initialData:()=>{try{if(localStorage){let e=localStorage.getItem(t);if(e){let a=JSON.parse(e);return console.log("[è¿½çªæ´æ°] ä» localStorage å è½½ç¼åæ°æ®"),a}}}catch(e){console.warn("[è¿½çªæ´æ°] ä» localStorage 读å失败:",e)}},enabled:e?.enabled!==!1,retry:!1})}])}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.