Release v1.4.10 with freeze mitigation and extraction throughput fixes
Build and Release / build (push) Has been cancelled

This commit is contained in:
Sucukdeluxe
2026-02-27 20:13:33 +01:00
parent 306826ecb9
commit 6e72c63268
6 changed files with 265 additions and 37 deletions
+31 -1
View File
@@ -61,6 +61,8 @@ const cleanupLabels: Record<string, string> = {
never: "Nie", immediate: "Sofort", on_start: "Beim App-Start", package_done: "Sobald Paket fertig ist"
};
const AUTO_RENDER_PACKAGE_LIMIT = 260;
const providerLabels: Record<DebridProvider, string> = {
realdebrid: "Real-Debrid", megadebrid: "Mega-Debrid", bestdebrid: "BestDebrid", alldebrid: "AllDebrid"
};
@@ -101,6 +103,7 @@ export function App(): ReactElement {
const draggedPackageIdRef = useRef<string | null>(null);
const [collapsedPackages, setCollapsedPackages] = useState<Record<string, boolean>>({});
const [downloadSearch, setDownloadSearch] = useState("");
const [showAllPackages, setShowAllPackages] = useState(false);
const [actionBusy, setActionBusy] = useState(false);
const actionBusyRef = useRef(false);
const dragOverRef = useRef(false);
@@ -272,6 +275,27 @@ export function App(): ReactElement {
return packages.filter((pkg) => pkg.name.toLowerCase().includes(query));
}, [packages, deferredDownloadSearch]);
const downloadSearchActive = deferredDownloadSearch.trim().length > 0;
const shouldLimitPackageRendering = snapshot.session.running
&& !downloadSearchActive
&& filteredPackages.length > AUTO_RENDER_PACKAGE_LIMIT
&& !showAllPackages;
const visiblePackages = useMemo(() => {
if (!shouldLimitPackageRendering) {
return filteredPackages;
}
return filteredPackages.slice(0, AUTO_RENDER_PACKAGE_LIMIT);
}, [filteredPackages, shouldLimitPackageRendering]);
const hiddenPackageCount = filteredPackages.length - visiblePackages.length;
useEffect(() => {
if (!snapshot.session.running) {
setShowAllPackages(false);
}
}, [snapshot.session.running]);
const allPackagesCollapsed = useMemo(() => (
packages.length > 0 && packages.every((pkg) => collapsedPackages[pkg.id])
), [packages, collapsedPackages]);
@@ -833,7 +857,13 @@ export function App(): ReactElement {
</div>
{packages.length === 0 && <div className="empty">Noch keine Pakete in der Queue.</div>}
{packages.length > 0 && filteredPackages.length === 0 && <div className="empty">Keine Pakete passend zur Suche.</div>}
{filteredPackages.map((pkg) => (
{hiddenPackageCount > 0 && (
<div className="reconnect-banner">
Performance-Modus aktiv: {hiddenPackageCount} Paket(e) sind temporar ausgeblendet.
<button className="btn" onClick={() => setShowAllPackages(true)}>Alle trotzdem anzeigen</button>
</div>
)}
{visiblePackages.map((pkg) => (
<PackageCard
key={pkg.id}
pkg={pkg}