From 447d451bdd5e590825f546f77b663f284d681745 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 2 Sep 2026 21:20:15 -0700 Subject: [PATCH 1/9] chore: update repo urls with new name --- README.md | 14 +++++++------- package.json | 2 +- src/ui/MainPage.tsx | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7262d2e..e0beb1b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # SlothArchiver -[![Latest Release](https://img.shields.io/github/v/release/lltrash94/Sloth-Archiver)](https://github.com/lltrash94/Sloth-Archiver/releases/latest) -[![CI](https://github.com/lltrash94/Sloth-Archiver/actions/workflows/ci.yml/badge.svg?event=pull_request)](https://github.com/lltrash94/Sloth-Archiver/actions/workflows/ci.yml) +[![Latest Release](https://img.shields.io/github/v/release/SlothSoftworks/Sloth-Archiver)](https://github.com/SlothSoftworks/Sloth-Archiver/releases/latest) +[![CI](https://github.com/SlothSoftworks/Sloth-Archiver/actions/workflows/ci.yml/badge.svg?event=pull_request)](https://github.com/SlothSoftworks/Sloth-Archiver/actions/workflows/ci.yml) [![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-informational)](#download) @@ -31,11 +31,11 @@ itself. | Platform | Link | |---|---| -| Windows (installer) | [Download](https://github.com/lltrash94/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver.Setup.0.26.2.exe) | -| Windows (portable, no install) | [Download](https://github.com/lltrash94/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver.0.26.2.exe) | -| macOS (Apple Silicon) | [Download](https://github.com/lltrash94/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2-arm64.dmg) | -| macOS (Intel) | [Download](https://github.com/lltrash94/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2.dmg) | -| Linux (AppImage) | [Download](https://github.com/lltrash94/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2.AppImage) | +| Windows (installer) | [Download](https://github.com/SlothSoftworks/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver.Setup.0.26.2.exe) | +| Windows (portable, no install) | [Download](https://github.com/SlothSoftworks/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver.0.26.2.exe) | +| macOS (Apple Silicon) | [Download](https://github.com/SlothSoftworks/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2-arm64.dmg) | +| macOS (Intel) | [Download](https://github.com/SlothSoftworks/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2.dmg) | +| Linux (AppImage) | [Download](https://github.com/SlothSoftworks/Sloth-Archiver/releases/download/v0.26.2/SlothArchiver-0.26.2.AppImage) | All builds are unsigned, so your OS will show a first-run security warning — see [Installing](#installing) below. diff --git a/package.json b/package.json index 5bab6d7..c78ab6c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "type": "module", "main": "dist/electron/main.mjs", "build": { - "appId": "com.lltrash.slotharchiver.app", + "appId": "com.slothsoftworks.slotharchiver.app", "productName": "SlothArchiver", "files": [ "dist/electron/**/*", diff --git a/src/ui/MainPage.tsx b/src/ui/MainPage.tsx index b9b6a42..2eea7de 100644 --- a/src/ui/MainPage.tsx +++ b/src/ui/MainPage.tsx @@ -29,7 +29,7 @@ import { useLibraryNotification } from './hooks/useLibraryNotifications'; import { useYtdlpUpdater } from './hooks/useYtdlpUpdater'; import buttonIcon from '../../assets/button_icon.png'; -const REPO_URL = 'https://github.com/lltrash94/SlothArchiver'; +const REPO_URL = 'https://github.com/SlothSoftworks/Sloth-Archiver'; const LIBRARY_TAB_INDEX = 1; const OPTIONS_TAB_INDEX = 2; From a9ec71d88b26c5da44cec5f168d0cd079a0fc241 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 2 Sep 2026 22:00:28 -0700 Subject: [PATCH 2/9] doc: update readme --- README.md | 80 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index e0beb1b..85f7fe4 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,14 @@ [![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-informational)](#download) -**Your own personal, offline video archive — for people too lazy to fight with +**Your own personal, offline video archive — for people who like to keep their video archiving sweet and simple and not fight with Docker, servers, or a complicated setup to get one.** +

+ SlothArchiver +

+ + *Free and open source — no subscriptions, no accounts, no server to run.* SlothArchiver is a free desktop app for downloading and organizing videos and audio @@ -52,12 +57,12 @@ your own machine. ## Why SlothArchiver? -Most tools in this space make you work for a real archive. Self-hosted servers give +Most tools in this space seem make you work for a real archive. Self-hosted servers give you one, but only if you're willing to run Docker, manage a server, and keep a machine on around the clock. Lightweight desktop downloaders skip all of that setup, but most of them just drop files in a folder and call it done — no real organization, nothing actually archived, just a pile of files you have to manage -yourself — or eventually ask you to pay once you want more than that. +yourself and the ones that do have some sort of paywall. So I got tired of waiting for the solution and started to develop it myself. SlothArchiver is built to be the lazy option in the best sense: a normal app you install like any other, with zero server to babysit and zero config to get right. @@ -82,39 +87,6 @@ that. No other tool in this space currently checks every one of those boxes at once — that combination is the whole point of SlothArchiver; A simple catalogued library, organized in one place and fully local. -## Installing - -SlothArchiver's builds aren't code-signed (that requires a paid certificate -this project doesn't have set up) — so the first time you open one, your OS -will warn you it's from an unidentified/unrecognized developer. This is -expected for any unsigned app, not a sign anything's actually wrong. -Here's how to get past each OS's warning: - -**Windows** — you'll see "Windows protected your PC" (SmartScreen). Click -**More info**, then **Run anyway**. - -![Windows SmartScreen bypass](docs/media/install-windows-smartscreen.png) - -**macOS** — you'll see a message that the app "cannot be opened because it is -from an unidentified developer," and just double-clicking won't offer a way -past it. Instead: right-click (or Control-click) the app → **Open** → confirm -**Open** in the dialog that appears. You only need to do this once — after -that, it opens normally. If macOS still blocks it, go to **System Settings → -Privacy & Security**, scroll down, and click **Open Anyway** next to the -message about SlothArchiver. - -![macOS Gatekeeper bypass](docs/media/install-macos-gatekeeper.png) - -**Linux (AppImage)** — make it executable first, then run it directly: -``` -chmod +x SlothArchiver-.AppImage -./SlothArchiver-.AppImage -``` -If it fails to launch at all with a FUSE-related error, your distro likely -needs `libfuse2` installed (common on newer distros that dropped FUSE2 by -default, e.g. recent Ubuntu/Fedora releases) — install it via your package -manager and try again. - ## Features - **No paywall, ever** — every feature below is free today and will stay free in @@ -215,6 +187,42 @@ per-item progress, retry, and skip, so one bad link never holds up the rest. ![Demo: bulk downloading](docs/media/bulk-downloading.gif) + + +## Installing + +SlothArchiver's builds aren't code-signed (that requires a paid certificate +this project doesn't have set up) — so the first time you open one, your OS +will warn you it's from an unidentified/unrecognized developer. This is +expected for any unsigned app, not a sign anything's actually wrong. +Here's how to get past each OS's warning: + +**Windows** — you'll see "Windows protected your PC" (SmartScreen). Click +**More info**, then **Run anyway**. + +![Windows SmartScreen bypass](docs/media/install-windows-smartscreen.png) + +**macOS** — you'll see a message that the app "cannot be opened because it is +from an unidentified developer," and just double-clicking won't offer a way +past it. Instead: right-click (or Control-click) the app → **Open** → confirm +**Open** in the dialog that appears. You only need to do this once — after +that, it opens normally. If macOS still blocks it, go to **System Settings → +Privacy & Security**, scroll down, and click **Open Anyway** next to the +message about SlothArchiver. + +![macOS Gatekeeper bypass](docs/media/install-macos-gatekeeper.png) + +**Linux (AppImage)** — make it executable first, then run it directly: +``` +chmod +x SlothArchiver-.AppImage +./SlothArchiver-.AppImage +``` +If it fails to launch at all with a FUSE-related error, your distro likely +needs `libfuse2` installed (common on newer distros that dropped FUSE2 by +default, e.g. recent Ubuntu/Fedora releases) — install it via your package +manager and try again. + + ## How it works SlothArchiver runs everything locally on your computer — there's no server, no From 67f9baf05ab508f09442df3de9876f3110679278 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 2 Sep 2026 22:34:20 -0700 Subject: [PATCH 3/9] doc: update document after confirming full yt-dlp download support --- README.md | 20 ++++++++++---------- docs/ARCHITECTURE.md | 5 +++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 85f7fe4..6350d8e 100644 --- a/README.md +++ b/README.md @@ -91,9 +91,9 @@ that combination is the whole point of SlothArchiver; A simple catalogued librar - **No paywall, ever** — every feature below is free today and will stay free in future updates. No tiers, no locked resolutions, no daily download caps. -- **Download video or audio** from YouTube and a growing list of other platforms - (SoundCloud, TikTok, Instagram, Facebook, Dailymotion, and more), in the quality - you choose. +- **Download video or audio** from YouTube and virtually any other site yt-dlp + supports — 1800+ platforms, including SoundCloud, TikTok, Instagram, Facebook, + Dailymotion, and more — in the quality you choose. - **A real library, not just a downloads folder** — every video is organized by channel, searchable, and keeps a history of versions if you ever re-fetch it. Most downloaders stop at "file saved somewhere"; SlothArchiver actually keeps @@ -169,13 +169,13 @@ all straight from the library view, no other software required. ![Demo: media utilities](docs/media/media-utilities.gif) -### Download from more than just YouTube +### Download from virtually any site yt-dlp supports -SoundCloud, TikTok, Instagram, Facebook, Dailymotion, and more — paste a link -from any of them and SlothArchiver figures out the platform automatically and -gets you a download, no separate tool needed for each site. This list keeps -growing as development continues, so expect more platforms to be supported -over time. +Not just YouTube — SlothArchiver works with virtually any of the +[1800+ sites yt-dlp itself supports](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md), +including SoundCloud, TikTok, Instagram, Facebook, Dailymotion, and more. +Paste a link from any of them and SlothArchiver figures out the platform +automatically and gets you a download, no separate tool needed for each site. ![Demo: multi-platform downloads](docs/media/multi-platform-downloads.gif) @@ -254,7 +254,7 @@ SlothArchiver is a personal-use, local tool — everything it downloads stays in >TL;DR: It's a gray area as far as YouTube is concerned but not illegal. This is a personal, local-only archiving tool — staying within your platform's ToS and your local copyright law is on you. #### What platforms does SlothArchiver support downloading from? -At time of writing we support YouTube for downloads, library, and playlists. We support TikTok, Instagram, Twitter, Facebook, SoundCloud, and Dailymotion for pure downloads. +At time of writing we support YouTube for downloads, library, and playlists. For pure downloads, we support virtually any site [yt-dlp itself supports](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) — 1800+ platforms — including TikTok, Instagram, Twitter, Facebook, SoundCloud, and Dailymotion, to name a few with dedicated recognition in the app's UI. #### What operating systems does SlothArchiver run on? Currently we support Mac, Linux, and Windows. This is a solo dev operation and I manually create the executables per system, so I expect there could be OS issues as more people try out the software on their systems. If you experience any issues, let me know by raising an issue and detailing it there. diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 08c0ab5..e607693 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -2,8 +2,9 @@ sloth-archiver is a desktop application (built on Electron, with a React/TypeScript interface) for downloading and archiving video and audio content — primarily from -YouTube, with support for several other platforms — into a personal, local library -on the user's own machine. It wraps the well-known `yt-dlp` tool for the actual +YouTube, with download support for virtually any other site yt-dlp itself +supports (1800+ platforms) — into a personal, local library on the user's own +machine. It wraps the well-known `yt-dlp` tool for the actual extraction/download work and `ffmpeg` for local media processing, and adds a persistent, browsable library on top: versioned entries, playlists, search, and a built-in player. From a3341675995cb74039f40fc257db3c53542b527b Mon Sep 17 00:00:00 2001 From: Sloth Date: Thu, 3 Sep 2026 16:54:38 -0700 Subject: [PATCH 4/9] feat(app): add sublibrary feature creation and add to library options --- src/electron/library.mjs | 274 +++++++++++++++---- src/electron/library.test.mjs | 177 +++++++++++- src/electron/main.mjs | 205 ++++++++++---- src/electron/preload.cjs | 11 +- src/electron/preload.test.mjs | 10 +- src/types/electron-api.d.ts | 21 +- src/ui/components/BulkAddDialog.test.tsx | 2 + src/ui/components/BulkAddDialog.tsx | 43 ++- src/ui/components/BulkAddSidePanel.test.tsx | 2 + src/ui/components/CreateSubLibraryDialog.tsx | 65 +++++ src/ui/hooks/useBulkAddQueue.tsx | 8 +- src/ui/screens/DownloaderScreen.test.tsx | 37 ++- src/ui/screens/DownloaderScreen.tsx | 66 ++++- src/ui/screens/LibraryScreen.test.tsx | 48 +++- src/ui/screens/LibraryScreen.tsx | 159 +++++++++-- src/ui/screens/LibraryVideoDetail.test.tsx | 56 ++++ src/ui/screens/LibraryVideoDetail.tsx | 65 +++++ testing/mockData/electronAPIMocks.ts | 4 + 18 files changed, 1089 insertions(+), 164 deletions(-) create mode 100644 src/ui/components/CreateSubLibraryDialog.tsx diff --git a/src/electron/library.mjs b/src/electron/library.mjs index c7f7df8..31362fb 100644 --- a/src/electron/library.mjs +++ b/src/electron/library.mjs @@ -26,15 +26,15 @@ export const PLAYLISTS_DIR_NAME = 'playlists'; // root). export const CLIPS_DIR_NAME = 'clips'; -// Prep step for the future "SubLibrary" / tag library feature (see +// SubLibrary / tag library feature (see // SlothArchiver-dossier/futureSpecsFeedback.md's decided design): every tag, // including the default untagged case, is a same-filesystem subfolder // directly under libraryDir -- ///