Release v1.5.86
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
15d0969cd9
commit
d63afcce89
@@ -2229,6 +2229,7 @@ export function App(): ReactElement {
|
||||
];
|
||||
})}
|
||||
<span className="pkg-col pkg-col-account">Service</span>
|
||||
<span className="pkg-col pkg-col-prio">Priorität</span>
|
||||
<span className="pkg-col pkg-col-status">Status</span>
|
||||
<span className="pkg-col pkg-col-speed">Geschwindigkeit</span>
|
||||
</div>
|
||||
@@ -2339,6 +2340,7 @@ export function App(): ReactElement {
|
||||
<span className="pkg-col pkg-col-progress">{entry.status === "completed" ? "100%" : "-"}</span>
|
||||
<span className="pkg-col pkg-col-hoster">-</span>
|
||||
<span className="pkg-col pkg-col-account">{entry.provider ? providerLabels[entry.provider] : "-"}</span>
|
||||
<span className="pkg-col pkg-col-prio"></span>
|
||||
<span className="pkg-col pkg-col-status">{entry.status === "completed" ? "Abgeschlossen" : "Gelöscht"}</span>
|
||||
<span className="pkg-col pkg-col-speed">-</span>
|
||||
</div>
|
||||
@@ -2814,6 +2816,26 @@ export function App(): ReactElement {
|
||||
)}
|
||||
</>);
|
||||
})()}
|
||||
{hasPackages && !contextMenu.itemId && (<>
|
||||
<div className="ctx-menu-sep" />
|
||||
<div className="ctx-menu-sub">
|
||||
<button className="ctx-menu-item">Priorität ▸</button>
|
||||
<div className="ctx-menu-sub-items">
|
||||
{(["high", "normal", "low"] as const).map((p) => {
|
||||
const label = p === "high" ? "Hoch" : p === "low" ? "Niedrig" : "Standard";
|
||||
const pkgIds = [...selectedIds].filter((id) => snapshot.session.packages[id]);
|
||||
const allMatch = pkgIds.every((id) => (snapshot.session.packages[id]?.priority || "normal") === p);
|
||||
return <button key={p} className={`ctx-menu-item${allMatch ? " ctx-menu-active" : ""}`} onClick={() => { for (const id of pkgIds) void window.rd.setPackagePriority(id, p); setContextMenu(null); }}>{allMatch ? `✓ ${label}` : label}</button>;
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</>)}
|
||||
{hasItems && (() => {
|
||||
const itemIds = [...selectedIds].filter((id) => snapshot.session.items[id]);
|
||||
const skippable = itemIds.filter((id) => { const it = snapshot.session.items[id]; return it && (it.status === "queued" || it.status === "reconnect_wait"); });
|
||||
if (skippable.length === 0) return null;
|
||||
return <button className="ctx-menu-item" onClick={() => { void window.rd.skipItems(skippable); setContextMenu(null); }}>Überspringen{skippable.length > 1 ? ` (${skippable.length})` : ""}</button>;
|
||||
})()}
|
||||
{hasPackages && (
|
||||
<button className="ctx-menu-item ctx-danger" onClick={() => {
|
||||
setContextMenu(null);
|
||||
@@ -3019,6 +3041,7 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs
|
||||
const providers = [...new Set(items.map((item) => item.provider).filter(Boolean))];
|
||||
return providers.length > 0 ? providers.map((p) => providerLabels[p!] || p).join(", ") : "-";
|
||||
})()}</span>
|
||||
<span className={`pkg-col pkg-col-prio${pkg.priority === "high" ? " prio-high" : pkg.priority === "low" ? " prio-low" : ""}`}>{pkg.priority === "high" ? "Hoch" : pkg.priority === "low" ? "Niedrig" : "-"}</span>
|
||||
<span className="pkg-col pkg-col-status">[{done}/{total}{done === total && total > 0 ? " - Done" : ""}{failed > 0 ? ` · ${failed} Fehler` : ""}{cancelled > 0 ? ` · ${cancelled} abgebr.` : ""}]</span>
|
||||
<span className="pkg-col pkg-col-speed">{packageSpeed > 0 ? formatSpeedMbps(packageSpeed) : "-"}</span>
|
||||
</div>
|
||||
@@ -3057,6 +3080,7 @@ const PackageCard = memo(function PackageCard({ pkg, items, packageSpeed, isFirs
|
||||
</span>
|
||||
<span className="pkg-col pkg-col-hoster" title={extractHoster(item.url)}>{extractHoster(item.url) || "-"}</span>
|
||||
<span className="pkg-col pkg-col-account">{item.provider ? providerLabels[item.provider] : "-"}</span>
|
||||
<span className="pkg-col pkg-col-prio"></span>
|
||||
<span className="pkg-col pkg-col-status" title={item.retries > 0 ? `${item.fullStatus} · R${item.retries}` : item.fullStatus}>
|
||||
{item.fullStatus}
|
||||
</span>
|
||||
|
||||
+46
-3
@@ -577,7 +577,7 @@ body,
|
||||
|
||||
.pkg-column-header {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 170px 90px 140px 130px 180px 100px;
|
||||
grid-template-columns: 1fr 160px 80px 110px 110px 70px 160px 90px;
|
||||
gap: 8px;
|
||||
padding: 5px 12px;
|
||||
background: var(--card);
|
||||
@@ -593,6 +593,7 @@ body,
|
||||
.pkg-column-header .pkg-col-size,
|
||||
.pkg-column-header .pkg-col-hoster,
|
||||
.pkg-column-header .pkg-col-account,
|
||||
.pkg-column-header .pkg-col-prio,
|
||||
.pkg-column-header .pkg-col-status,
|
||||
.pkg-column-header .pkg-col-speed {
|
||||
text-align: center;
|
||||
@@ -612,7 +613,7 @@ body,
|
||||
|
||||
.pkg-columns {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 170px 90px 140px 130px 180px 100px;
|
||||
grid-template-columns: 1fr 160px 80px 110px 110px 70px 160px 90px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
min-width: 0;
|
||||
@@ -636,6 +637,7 @@ body,
|
||||
.pkg-columns .pkg-col-size,
|
||||
.pkg-columns .pkg-col-hoster,
|
||||
.pkg-columns .pkg-col-account,
|
||||
.pkg-columns .pkg-col-prio,
|
||||
.pkg-columns .pkg-col-status,
|
||||
.pkg-columns .pkg-col-speed {
|
||||
font-size: 13px;
|
||||
@@ -1284,7 +1286,7 @@ td {
|
||||
|
||||
.item-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 170px 90px 140px 130px 180px 100px;
|
||||
grid-template-columns: 1fr 160px 80px 110px 110px 70px 160px 90px;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
margin: 0 -12px;
|
||||
@@ -1337,6 +1339,45 @@ td {
|
||||
box-shadow: 0 0 4px #f59e0b80;
|
||||
}
|
||||
|
||||
.prio-high {
|
||||
color: #f59e0b !important;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.prio-low {
|
||||
color: #64748b !important;
|
||||
}
|
||||
|
||||
.ctx-menu-sub {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ctx-menu-sub > .ctx-menu-item::after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
.ctx-menu-sub-items {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 100%;
|
||||
top: 0;
|
||||
min-width: 120px;
|
||||
background: var(--card);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
padding: 4px 0;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,.3);
|
||||
z-index: 1001;
|
||||
}
|
||||
|
||||
.ctx-menu-sub:hover .ctx-menu-sub-items {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.ctx-menu-active {
|
||||
color: var(--accent) !important;
|
||||
}
|
||||
|
||||
.item-remove {
|
||||
background: none;
|
||||
border: none;
|
||||
@@ -1774,6 +1815,7 @@ td {
|
||||
.pkg-column-header .pkg-col-size,
|
||||
.pkg-column-header .pkg-col-hoster,
|
||||
.pkg-column-header .pkg-col-account,
|
||||
.pkg-column-header .pkg-col-prio,
|
||||
.pkg-column-header .pkg-col-status,
|
||||
.pkg-column-header .pkg-col-speed {
|
||||
display: none;
|
||||
@@ -1783,6 +1825,7 @@ td {
|
||||
.pkg-columns .pkg-col-size,
|
||||
.pkg-columns .pkg-col-hoster,
|
||||
.pkg-columns .pkg-col-account,
|
||||
.pkg-columns .pkg-col-prio,
|
||||
.pkg-columns .pkg-col-status,
|
||||
.pkg-columns .pkg-col-speed {
|
||||
display: none;
|
||||
|
||||
Reference in New Issue
Block a user