From 702418f3b532e68cfc8426d1f105f7e7c7bae9b0 Mon Sep 17 00:00:00 2001
From: BurntToasters <61037367+BurntToasters@users.noreply.github.com>
Date: Sat, 13 Jun 2026 21:22:28 -0700
Subject: [PATCH] push
---
CHANGELOG.md | 12 +++++--
com.burnttoasters.rosi.metainfo.xml | 2 +-
package-lock.json | 4 +--
package.json | 2 +-
src/main/download/commandBuilders.ts | 25 +++++++++-----
src/main/downloader.ts | 2 +-
src/renderer/splash.html | 2 +-
src/tests/commandBuilders.test.ts | 49 ++++++++++++++++++++++++++--
8 files changed, 79 insertions(+), 19 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c21da2d..ba6c907 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,9 +6,9 @@
|
Windows |
macOS |
Linux |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **EXE:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Windows-x64.exe) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Windows-arm64.exe) | **[Universal DMG](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-MacOS-universal.dmg)** | **AppImage:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-x86_64.AppImage) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-arm64.AppImage) |
-|

| **[Universal ZIP](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-MacOS-universal.zip)** | **DEB:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-amd64.deb) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-arm64.deb) |
-| | | **RPM:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-x86_64.rpm) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.0/ROSI-Linux-aarch64.rpm) |
+| **EXE:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Windows-x64.exe) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Windows-arm64.exe) | **[Universal DMG](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-MacOS-universal.dmg)** | **AppImage:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-x86_64.AppImage) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-arm64.AppImage) |
+| 
| **[Universal ZIP](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-MacOS-universal.zip)** | **DEB:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-amd64.deb) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-arm64.deb) |
+| | | **RPM:** [x64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-x86_64.rpm) / [arm64](https://github.com/BurntToasters/ROSI/releases/download/v4.1.1/ROSI-Linux-aarch64.rpm) |
> [!IMPORTANT]
> The `.sig` files in this repo are NOT normal GPG signatures — they are for ROSI's built-in updater to verify the integrity of updates before downloading and installing.
@@ -30,6 +30,12 @@
---
+## Changes in `v4.1.1:`
+
+_What's a new feature update without a major bugfix am I right ;)_
+
+- **FFMPEG/YT-DLP:** Fixed an issue where yt-dlp args were being passes with an extra `--`.
+
## Changes in `v4.1.0:`
- **NEW - Preview:** Added video preview before downloading so ROSI can show the title, uploader, duration, thumbnail, playlist info, and other basic metadata before saving.
diff --git a/com.burnttoasters.rosi.metainfo.xml b/com.burnttoasters.rosi.metainfo.xml
index 7e9f984..02e1655 100644
--- a/com.burnttoasters.rosi.metainfo.xml
+++ b/com.burnttoasters.rosi.metainfo.xml
@@ -33,7 +33,7 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index 1be3fca..30b52d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "rosi",
- "version": "4.1.0",
+ "version": "4.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "rosi",
- "version": "4.1.0",
+ "version": "4.1.1",
"license": "MPL-2.0",
"dependencies": {
"electron-log": "^5.3.4",
diff --git a/package.json b/package.json
index 739e3d2..2626f2a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rosi",
- "version": "4.1.0",
+ "version": "4.1.1",
"private": true,
"description": "Electron GUI for yt-dlp",
"desktopName": "com.burnttoasters.rosi.desktop",
diff --git a/src/main/download/commandBuilders.ts b/src/main/download/commandBuilders.ts
index e32ca8c..0e94097 100644
--- a/src/main/download/commandBuilders.ts
+++ b/src/main/download/commandBuilders.ts
@@ -146,6 +146,15 @@ export interface BuildYtdlpArgsResult {
statusMessages: string[];
}
+function insertBeforeUrlSeparator(args: string[], ...items: string[]): void {
+ const separatorIndex = args.indexOf('--');
+ if (separatorIndex === -1) {
+ args.splice(args.length - 1, 0, ...items);
+ return;
+ }
+ args.splice(separatorIndex, 0, ...items);
+}
+
export function buildYtdlpArgs({
normalizedDownloadDir,
url,
@@ -172,11 +181,11 @@ export function buildYtdlpArgs({
const statusMessages: string[] = [];
if (pathOutputFile) {
- args.splice(args.indexOf('--'), 0, '--print-to-file', 'after_move:filepath', pathOutputFile);
+ insertBeforeUrlSeparator(args, '--print-to-file', 'after_move:filepath', pathOutputFile);
}
if (ffmpegLocation) {
- args.splice(args.length - 1, 0, '--ffmpeg-location', ffmpegLocation);
+ insertBeforeUrlSeparator(args, '--ffmpeg-location', ffmpegLocation);
}
const formatFlagIndex = args.indexOf('-f');
@@ -200,14 +209,14 @@ export function buildYtdlpArgs({
const audioOutputFmt = ALLOWED_AUDIO_FORMATS.has(settings.audioFormat)
? settings.audioFormat
: 'mp3';
- args.splice(-1, 0, '-x', '--audio-format', audioOutputFmt, '--audio-quality', '0');
+ insertBeforeUrlSeparator(args, '-x', '--audio-format', audioOutputFmt, '--audio-quality', '0');
statusMessages.push(`🎵 Audio-only mode enabled (${audioOutputFmt.toUpperCase()})`);
}
if (settings.hookBrowser && settings.browserChoice) {
const normalized = settings.browserChoice.toLowerCase();
if (ALLOWED_BROWSERS.has(normalized)) {
- args.splice(-1, 0, '--cookies-from-browser', normalized);
+ insertBeforeUrlSeparator(args, '--cookies-from-browser', normalized);
}
}
@@ -215,22 +224,22 @@ export function buildYtdlpArgs({
const langs = SUBTITLE_LANGS_PATTERN.test(settings.subtitleLangs)
? settings.subtitleLangs
: 'en';
- args.splice(-1, 0, '--write-subs', '--embed-subs', '--sub-langs', langs);
+ insertBeforeUrlSeparator(args, '--write-subs', '--embed-subs', '--sub-langs', langs);
statusMessages.push(`💬 Subtitles enabled (${langs})`);
}
if (settings.embedThumbnail) {
- args.splice(-1, 0, '--embed-thumbnail');
+ insertBeforeUrlSeparator(args, '--embed-thumbnail');
statusMessages.push('🖼️ Embedding thumbnail');
}
if (settings.embedMetadata) {
- args.splice(-1, 0, '--embed-metadata');
+ insertBeforeUrlSeparator(args, '--embed-metadata');
statusMessages.push('🏷️ Embedding metadata');
}
if (settings.sponsorblockRemove) {
- args.splice(-1, 0, '--sponsorblock-remove', 'default');
+ insertBeforeUrlSeparator(args, '--sponsorblock-remove', 'default');
statusMessages.push('⏭️ SponsorBlock: removing segments');
}
diff --git a/src/main/downloader.ts b/src/main/downloader.ts
index 5036466..ead654f 100644
--- a/src/main/downloader.ts
+++ b/src/main/downloader.ts
@@ -471,7 +471,7 @@ export function startDownload(
const settings = loadSettings();
const effectiveSettings: Settings = { ...settings };
const ffmpegCommand = getEffectiveFfmpegPath(options.ffmpegPath || settings.ffmpegPath);
- const ffmpegLocation = ffmpegCommand !== 'ffmpeg' ? ffmpegCommand : null;
+ const ffmpegLocation = ffmpegCommand !== 'ffmpeg' ? path.dirname(ffmpegCommand) : null;
if (options.convertFormat !== undefined) {
if (typeof options.convertFormat === 'string' && options.convertFormat.trim() !== '') {
diff --git a/src/renderer/splash.html b/src/renderer/splash.html
index 7ddbd15..41b8295 100644
--- a/src/renderer/splash.html
+++ b/src/renderer/splash.html
@@ -327,7 +327,7 @@ ROSI
Loading
- v4.1.0
+ v4.1.1