diff --git a/apps/desktop/src/App.tsx b/apps/desktop/src/App.tsx index f58394a..e9831fe 100644 --- a/apps/desktop/src/App.tsx +++ b/apps/desktop/src/App.tsx @@ -265,10 +265,13 @@ function App() { return (
= ({ filter }) => { const { downloads, toggleAddModal, updateDownload, removeDownload, clearFinished, redownload } = useDownloadStore(); const { isSidebarVisible, toggleSidebar } = useSettingsStore(); + const isMac = navigator.userAgent.includes('Mac'); + const [contextMenu, setContextMenu] = useState<{ x: number; y: number; id: string } | null>(null); const [columnWidths, setColumnWidths] = useState([340, 100, 220, 100, 80, 170]); const columnMinimums = [200, 80, 170, 80, 70, 120]; @@ -190,8 +192,18 @@ export const DownloadTable: React.FC = ({ filter }) => {
-
+
{filteredDownloads.map(d => (
= ({ filter }) => {
))} - {Array.from({ length: Math.max(0, 10 - filteredDownloads.length) }).map((_, index) => ( -
- ))} +
+ {Array.from({ length: 50 }).map((_, index) => { + const isEven = (filteredDownloads.length + index) % 2 === 1; + return ( +
+ ); + })} +
diff --git a/apps/desktop/src/components/SettingsView.tsx b/apps/desktop/src/components/SettingsView.tsx index 86229e3..0ba9341 100644 --- a/apps/desktop/src/components/SettingsView.tsx +++ b/apps/desktop/src/components/SettingsView.tsx @@ -247,7 +247,7 @@ export default function SettingsView() { type="number" min="1" max="16" value={settings.perServerConnections} onChange={(e) => settings.setPerServerConnections(Number(e.target.value))} - className="app-control w-16 text-center" + className="app-control w-24 text-center" />
@@ -259,7 +259,7 @@ export default function SettingsView() { type="number" min="1" max="12" value={settings.maxConcurrentDownloads} onChange={(e) => settings.setMaxConcurrentDownloads(Number(e.target.value))} - className="app-control w-16 text-center" + className="app-control w-24 text-center" />
@@ -267,15 +267,15 @@ export default function SettingsView() { Global speed limit: 0 = unlimited speed
-
- settings.setGlobalSpeedLimit(e.target.value)} - placeholder="0" - className="app-control w-20 text-right font-mono px-2" - /> - KiB/s +
+ settings.setGlobalSpeedLimit(e.target.value)} + placeholder="0" + className="app-control w-24 text-center font-mono pr-9" + /> + KiB/s
@@ -287,7 +287,7 @@ export default function SettingsView() { type="number" min="0" max="10" value={settings.maxAutomaticRetries} onChange={(e) => settings.setMaxAutomaticRetries(Number(e.target.value))} - className="app-control w-16 text-center" + className="app-control w-24 text-center" />
@@ -476,13 +476,23 @@ export default function SettingsView() {
Custom User Agent - settings.setCustomUserAgent(e.target.value)} - placeholder="e.g. Mozilla/5.0..." - className="app-control flex-1 ml-4 font-mono text-[11px]" - /> +
+ settings.setCustomUserAgent(e.target.value)} + placeholder="e.g. Mozilla/5.0..." + className="app-control w-full font-mono text-[11px]" + /> + + + + + + + +

Spoofs the browser User-Agent to bypass download restrictions. Leave blank for default.

diff --git a/apps/desktop/src/index.css b/apps/desktop/src/index.css index c7450ac..f8161b9 100644 --- a/apps/desktop/src/index.css +++ b/apps/desktop/src/index.css @@ -9,6 +9,7 @@ --item-hover: 0 0% 0% / 0.05; --item-selected: 211 100% 50%; --accent-color: 211 100% 50%; + --stripe-bg: 0 0% 0% / 0.04; --text-primary: 0 0% 10%; --text-secondary: 0 0% 40%; @@ -36,6 +37,7 @@ --item-hover: 0 0% 0% / 0.05; --item-selected: 211 100% 50%; --accent-color: 211 100% 50%; + --stripe-bg: 0 0% 0% / 0.04; --text-primary: 0 0% 10%; --text-secondary: 0 0% 40%; --text-muted: 0 0% 55%; @@ -55,7 +57,7 @@ .theme-dark { color-scheme: dark; - --main-bg: 0 0% 10%; + --main-bg: 0 0% 11%; --sidebar-bg: 0 0% 13%; --sidebar-glass: 0 0% 13%; --surface-raised: 0 0% 12%; @@ -65,6 +67,7 @@ --item-hover: 0 0% 100% / 0.07; --item-selected: 211 100% 56%; --accent-color: 211 100% 56%; + --stripe-bg: 0 0% 100% / 0.04; --text-primary: 0 0% 91%; --text-secondary: 0 0% 75%; --text-muted: 0 0% 50%; @@ -95,6 +98,7 @@ --item-hover: 326 100% 74% / 0.10; --item-selected: 326 100% 74%; --accent-color: 326 100% 74%; + --stripe-bg: 0 0% 100% / 0.04; --text-primary: 60 30% 96%; --text-secondary: 228 14% 74%; --text-muted: 229 12% 58%; @@ -125,6 +129,7 @@ --item-hover: 193 43% 67% / 0.12; --item-selected: 193 43% 67%; --accent-color: 193 43% 67%; + --stripe-bg: 0 0% 100% / 0.04; --text-primary: 218 27% 92%; --text-secondary: 219 28% 80%; --text-muted: 218 17% 63%; @@ -376,7 +381,7 @@ .app-sidebar-shell { padding: 9px 0 9px 9px; - background: hsl(var(--sidebar-shell-bg)); + background: transparent; } .sidebar-resize-handle { @@ -960,17 +965,18 @@ } .download-row { - height: 31px; + height: 32px; display: grid; align-items: center; padding: 0 16px; - border-bottom: 1px solid hsl(var(--border-color)); + margin: 2px 12px; + border-radius: 6px; color: hsl(var(--text-primary)); font-size: 12px; } .download-row:nth-child(even) { - background: hsl(var(--item-hover)); + background: hsl(var(--stripe-bg)); } .download-row:hover { @@ -1014,12 +1020,14 @@ } .download-ghost-row { - height: 31px; - border-bottom: 1px solid hsl(var(--border-color)); + height: 32px; + margin: 2px 12px; + border-radius: 6px; + flex-shrink: 0; } - .download-ghost-row:nth-child(even) { - background: hsl(var(--item-hover)); + .download-ghost-row.striped { + background: hsl(var(--stripe-bg)); } .download-status-cell {