Skip to content

Commit 0bd49fa

Browse files
nlogozzokris3713
andauthored
V2026.2.3 (#1657)
* feat: Version bump * feat: Update deps * fix: Linux startup crash * fix: Extension * fix: Progress * feat: Update translations * fix: Progress * fix: Startswith * fix: Double sleep log * fix: aria progress on Linux * fix: Crash * Refactor command for chmod starting so it actually works It was previously returning a "missing operand" error. This ensures that `chmod` actually gives executable permissions to `yt-dlp` after downloading it. * feat: Update translations * fix: Video password * Use square brackets for ArgumentList instead of curly braces. * Fix chmod command argument formatting * fix: aria2c progress on Linux * Use `ProcessStartInfo(String, String)` instead of `ProcessStartInfo()` in "YtdlpExecutableService.cs" * feat: Update changelog * fix: Instagram stories * fix: GNOME spacing * fix: GNOME spacing * fix: No audio on playlist on Windows * feat: Extra arguments * chore: Cleanup * fix: FLAC encoder field * chore: Cleanup * chore: Move RemoveSourceData to Download from DownloadService * feat: WinUI subtitle search * feat: GNOME search subtitles * fix: Linux build * fix: Language filter * fix: Subtitle selection cleared after search * fix: WinUI subtitle selection * feat: Update translations * chore: Cleanup * feat: Update deps * feat: Update changelog * feat: Update deps * feat: Version bump * feat: Update translations --------- Co-authored-by: Kris <101912712+kris3713@users.noreply.github.com> Co-authored-by: kris3713 <07e5297d5b@c0x0.com>
1 parent 6f0e098 commit 0bd49fa

84 files changed

Lines changed: 16085 additions & 13639 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
Invoke-WebRequest https://github.com/yt-dlp/yt-dlp/releases/download/2026.02.04/yt-dlp${{ matrix.variant.ytdlp }}.exe -OutFile yt-dlp.exe
6666
Invoke-WebRequest https://github.com/Elypha/aria2-mod/releases/download/aria2c-1.37.0-b4fd7cb-20251126/aria2c-windows-x86_64-wintls.zip -OutFile aria2.zip
6767
Invoke-WebRequest https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-${{ matrix.variant.ffmpeg }}-gpl.zip -OutFile ffmpeg.zip
68-
Invoke-WebRequest https://github.com/denoland/deno/releases/download/v2.6.8/deno-${{ matrix.variant.deno }}-pc-windows-msvc.zip -OutFile deno.zip
68+
Invoke-WebRequest https://github.com/denoland/deno/releases/download/v2.6.9/deno-${{ matrix.variant.deno }}-pc-windows-msvc.zip -OutFile deno.zip
6969
Expand-Archive -Force 'aria2.zip'
7070
Expand-Archive -Force 'ffmpeg.zip'
7171
Expand-Archive -Force 'deno.zip'

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 Nickvision
3+
Copyright (c) 2026 Nickvision
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

License.rtf

Lines changed: 65 additions & 75 deletions
Large diffs are not rendered by default.

Nickvision.Parabolic.GNOME/Application.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,19 @@ private void Application_OnOpen(nint application, nint[] files, int n_files, nin
8686
}
8787
try
8888
{
89-
var url = g_file_get_uri(files[0]);
90-
if (!url.StartsWith("parabolic://"))
89+
if (Uri.TryCreate(g_file_get_uri(files[0]), UriKind.Absolute, out var uri))
9190
{
92-
return;
91+
_controller.UrlFromArgs = uri;
9392
}
94-
if (Uri.TryCreate(url.Substring(12), UriKind.Absolute, out var uri))
93+
else
9594
{
96-
_controller.UrlFromArgs = uri;
95+
Console.WriteLine($"Invalid URI: {g_file_get_uri(files[0])}");
9796
}
9897
}
99-
catch { }
98+
catch (Exception e)
99+
{
100+
Console.Error.WriteLine(e);
101+
}
100102
_application.Activate();
101103
}
102104
}

Nickvision.Parabolic.GNOME/Blueprints/AddDownloadDialog.blp

Lines changed: 93 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ Adw.Dialog root {
115115
policy: wide;
116116
};
117117

118+
[start]
119+
Gtk.ToggleButton singleSearchSubtitlesButton {
120+
icon-name: "edit-find-symbolic";
121+
tooltip-text: _("Search Subtitles");
122+
visible: false;
123+
}
124+
118125
[start]
119126
Gtk.Button singleDownloadHeaderButton {
120127
label: _("Download");
@@ -197,30 +204,50 @@ Adw.Dialog root {
197204
Adw.ViewStackPage {
198205
title: _("Subtitles");
199206
icon-name: "subtitles-symbolic";
200-
child: Adw.PreferencesPage singleSubtitlesPage {
201-
Adw.PreferencesGroup singleSubtitlesGroup {
202-
title: _("Available Subtitles");
207+
child: Gtk.Box singleSubtitlesBox {
208+
orientation: vertical;
203209

204-
header-suffix: Gtk.Box {
205-
orientation: horizontal;
210+
Gtk.SearchBar singleSubtitlesSearchBar {
211+
search-mode-enabled: bind singleSearchSubtitlesButton.active bidirectional;
206212

207-
Gtk.Button singleDeselectAllSubtitlesButton {
208-
valign: center;
209-
icon-name: "edit-select-none-symbolic";
210-
tooltip-text: _("Deselect All");
211-
}
213+
Gtk.SearchEntry singleSubtitlesSearchEntry {
214+
placeholder-text: _("Search subtitles");
215+
hexpand: true;
216+
}
212217

213-
Gtk.Button singleSelectAllSubtitlesButton {
214-
valign: center;
218+
styles [ "flat" ]
219+
}
215220

216-
Adw.ButtonContent {
217-
label: _("Select All");
218-
icon-name: "edit-select-all-symbolic";
219-
}
220-
}
221+
Gtk.ScrolledWindow {
222+
hscrollbar-policy: never;
223+
vexpand: true;
221224

222-
styles [ "toolbar" ]
223-
};
225+
Adw.PreferencesPage singleSubtitlesPage {
226+
Adw.PreferencesGroup singleSubtitlesGroup {
227+
title: _("Available Subtitles");
228+
229+
header-suffix: Gtk.Box {
230+
orientation: horizontal;
231+
232+
Gtk.Button singleDeselectAllSubtitlesButton {
233+
valign: center;
234+
icon-name: "edit-select-none-symbolic";
235+
tooltip-text: _("Deselect All");
236+
}
237+
238+
Gtk.Button singleSelectAllSubtitlesButton {
239+
valign: center;
240+
241+
Adw.ButtonContent {
242+
label: _("Select All");
243+
icon-name: "edit-select-all-symbolic";
244+
}
245+
}
246+
247+
styles [ "toolbar" ]
248+
};
249+
}
250+
}
224251
}
225252
};
226253
}
@@ -276,6 +303,13 @@ Adw.Dialog root {
276303
policy: wide;
277304
};
278305

306+
[start]
307+
Gtk.ToggleButton playlistSearchSubtitlesButton {
308+
icon-name: "edit-find-symbolic";
309+
tooltip-text: _("Search Subtitles");
310+
visible: false;
311+
}
312+
279313
[start]
280314
Gtk.Button playlistDownloadHeaderButton {
281315
label: _("Download");
@@ -389,31 +423,51 @@ Adw.Dialog root {
389423
Adw.ViewStackPage {
390424
title: _("Subtitles");
391425
icon-name: "subtitles-symbolic";
392-
child: Adw.PreferencesPage playlistSubtitlesPage {
393-
Adw.PreferencesGroup playlistSubtitlesGroup {
394-
title: _("Available Subtitles");
395-
description: _("Note: Some playlist items may not contain subtitles for a selected language.");
426+
child: Gtk.Box playlistSubtitlesBox {
427+
orientation: vertical;
396428

397-
header-suffix: Gtk.Box {
398-
orientation: horizontal;
429+
Gtk.SearchBar playlistSubtitlesSearchBar {
430+
search-mode-enabled: bind playlistSearchSubtitlesButton.active bidirectional;
399431

400-
Gtk.Button playlistDeselectAllSubtitlesButton {
401-
valign: center;
402-
icon-name: "edit-select-none-symbolic";
403-
tooltip-text: _("Deselect All");
404-
}
432+
Gtk.SearchEntry playlistSubtitlesSearchEntry {
433+
placeholder-text: _("Search subtitles");
434+
hexpand: true;
435+
}
405436

406-
Gtk.Button playlistSelectAllSubtitlesButton {
407-
valign: center;
437+
styles [ "flat" ]
438+
}
408439

409-
Adw.ButtonContent {
410-
label: _("Select All");
411-
icon-name: "edit-select-all-symbolic";
412-
}
413-
}
440+
Gtk.ScrolledWindow {
441+
hscrollbar-policy: never;
442+
vexpand: true;
414443

415-
styles [ "toolbar" ]
416-
};
444+
Adw.PreferencesPage playlistSubtitlesPage {
445+
Adw.PreferencesGroup playlistSubtitlesGroup {
446+
title: _("Available Subtitles");
447+
description: _("Note: Some playlist items may not contain subtitles for a selected language.");
448+
449+
header-suffix: Gtk.Box {
450+
orientation: horizontal;
451+
452+
Gtk.Button playlistDeselectAllSubtitlesButton {
453+
valign: center;
454+
icon-name: "edit-select-none-symbolic";
455+
tooltip-text: _("Deselect All");
456+
}
457+
458+
Gtk.Button playlistSelectAllSubtitlesButton {
459+
valign: center;
460+
461+
Adw.ButtonContent {
462+
label: _("Select All");
463+
icon-name: "edit-select-all-symbolic";
464+
}
465+
}
466+
467+
styles [ "toolbar" ]
468+
};
469+
}
470+
}
417471
}
418472
};
419473
}

Nickvision.Parabolic.GNOME/Blueprints/MainWindow.blp

Lines changed: 67 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ Adw.ApplicationWindow root {
3030
default-width: 800;
3131
default-height: 600;
3232

33+
Adw.Breakpoint {
34+
condition ("max-width: 800px")
35+
36+
setters {
37+
downloadsBox.margin-start: 12;
38+
downloadsBox.margin-end: 12;
39+
}
40+
}
41+
3342
Adw.ToolbarView toolbarView {
3443
[top]
3544
Adw.HeaderBar headerBar {
@@ -113,79 +122,76 @@ Adw.ApplicationWindow root {
113122
Adw.ViewStackPage {
114123
name: "Downloads";
115124
child: Gtk.ScrolledWindow {
116-
child: Adw.Clamp {
117-
maximum-size: 600;
118-
child: Gtk.Box {
119-
orientation: vertical;
120-
spacing: 12;
121-
margin-start:12;
122-
margin-top: 12;
123-
margin-end: 12;
124-
margin-bottom: 12;
125-
126-
Gtk.Box {
127-
orientation: horizontal;
128-
spacing: 6;
129-
130-
Adw.ToggleGroup downloadsToggleGroup {
131-
Adw.Toggle {
132-
icon-name: "view-list-bullet-symbolic";
133-
label: _("All");
134-
}
135-
136-
Adw.Toggle {
137-
icon-name: "media-playback-start-symbolic";
138-
label: _("Running");
139-
}
140-
141-
Adw.Toggle {
142-
icon-name: "document-open-recent-symbolic";
143-
label: _("Queued");
144-
}
145-
146-
Adw.Toggle {
147-
icon-name: "checkmark-small-symbolic";
148-
label: _("Completed");
149-
}
125+
child: Gtk.Box downloadsBox {
126+
orientation: vertical;
127+
spacing: 12;
128+
margin-start: 200;
129+
margin-top: 12;
130+
margin-end: 200;
131+
margin-bottom: 12;
132+
133+
Gtk.Box {
134+
orientation: horizontal;
135+
spacing: 6;
136+
137+
Adw.ToggleGroup downloadsToggleGroup {
138+
Adw.Toggle {
139+
icon-name: "view-list-bullet-symbolic";
140+
label: _("All");
141+
}
142+
143+
Adw.Toggle {
144+
icon-name: "media-playback-start-symbolic";
145+
label: _("Running");
150146
}
151147

152-
Gtk.Label {
153-
hexpand: true;
148+
Adw.Toggle {
149+
icon-name: "document-open-recent-symbolic";
150+
label: _("Queued");
154151
}
155152

156-
Gtk.MenuButton {
157-
direction: none;
158-
menu-model: downloadsMenu;
159-
tooltip-text: _("Manage Download");
160-
icon-name: "wrench-wide-symbolic";
153+
Adw.Toggle {
154+
icon-name: "checkmark-small-symbolic";
155+
label: _("Completed");
161156
}
162157
}
163158

164-
Adw.ViewStack viewStackDownloads {
165-
vexpand: true;
159+
Gtk.Label {
166160
hexpand: true;
161+
}
167162

168-
Adw.ViewStackPage {
169-
name: "Has";
170-
child: Gtk.ListBox listDownloads {
171-
hexpand: true;
172-
valign: start;
173-
selection-mode: none;
163+
Gtk.MenuButton {
164+
direction: none;
165+
menu-model: downloadsMenu;
166+
tooltip-text: _("Manage Download");
167+
icon-name: "wrench-wide-symbolic";
168+
}
169+
}
174170

175-
styles [ "boxed-list" ]
176-
};
177-
}
171+
Adw.ViewStack viewStackDownloads {
172+
vexpand: true;
173+
hexpand: true;
178174

179-
Adw.ViewStackPage {
180-
name: "None";
181-
child: Adw.StatusPage {
182-
icon-name: "folder-download-symbolic";
183-
title: _("No Downloads");
184-
description: _("There are no downloads of this type");
185-
};
186-
}
175+
Adw.ViewStackPage {
176+
name: "Has";
177+
child: Gtk.ListBox listDownloads {
178+
hexpand: true;
179+
valign: start;
180+
selection-mode: none;
181+
182+
styles [ "boxed-list" ]
183+
};
184+
}
185+
186+
Adw.ViewStackPage {
187+
name: "None";
188+
child: Adw.StatusPage {
189+
icon-name: "folder-download-symbolic";
190+
title: _("No Downloads");
191+
description: _("There are no downloads of this type");
192+
};
187193
}
188-
};
194+
}
189195
};
190196
};
191197
}

Nickvision.Parabolic.GNOME/Blueprints/PreferencesDialog.blp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,29 @@ Adw.PreferencesDialog root {
300300
}
301301
}
302302
}
303+
304+
Adw.PreferencesGroup {
305+
title: _("Advanced");
306+
description: _("Specify extra arguments to pass to yt-dlp");
307+
308+
Adw.EntryRow ytdlpDiscoveryArgsRow {
309+
title: _("yt-dlp Discovery Arguments");
310+
311+
[prefix]
312+
Gtk.Image {
313+
icon-name: "utilities-terminal-symbolic";
314+
}
315+
}
316+
317+
Adw.EntryRow ytdlpDownloadArgsRow {
318+
title: _("yt-dlp Download Arguments");
319+
320+
[prefix]
321+
Gtk.Image {
322+
icon-name: "utilities-terminal-symbolic";
323+
}
324+
}
325+
}
303326
}
304327

305328
Adw.PreferencesPage {

0 commit comments

Comments
 (0)