Skip to content

Linux Mint add .deb and resolve mac#4407

Open
Rocket-Space wants to merge 61 commits into
pear-devs:masterfrom
Rocket-Space:master
Open

Linux Mint add .deb and resolve mac#4407
Rocket-Space wants to merge 61 commits into
pear-devs:masterfrom
Rocket-Space:master

Conversation

@Rocket-Space

@Rocket-Space Rocket-Space commented Apr 8, 2026

Copy link
Copy Markdown

The problem with downloads on Windows and others has been resolved.

Summary by CodeRabbit

  • New Features

    • Download Manager UI: queue/failed/completed tabs, pause/resume, retry/clear, progress badge, draggable floating panel and title-bar toggle.
    • Managed concurrent downloads (1–5) with background engine, per-item progress, provider retries, and toast notifications.
    • Ad‑blocking options: blocklists, in‑player pruning injection, and ad‑speedup that auto‑skips/mutes ads.
  • Internationalization

    • Added English and Spanish strings for Download Manager and concurrency controls.
  • Chores

    • New CI workflows for multi‑platform builds and automated installer publishing; packaging icon and dependency updates.

Rocket-Space and others added 30 commits March 27, 2026 20:27
descomprime y sube los instaladores de cada artefacto

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/plugins/in-app-menu/renderer/TitleBar.tsx (1)

22-75: Move component definition below all imports.

The DownloadManagerTitleButton component is defined between import statements (lines 22–73 appear before the cacheNoArgs import on line 75). This breaks standard module organization where all imports should precede component/function definitions.

Suggested fix

Move the entire DownloadManagerTitleButton component definition (lines 22–73) to after all import statements (after line 78).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/in-app-menu/renderer/TitleBar.tsx` around lines 22 - 75, The
DownloadManagerTitleButton component is declared before all imports (it appears
above the import of cacheNoArgs); move the entire DownloadManagerTitleButton
function/component definition so that all import statements (including import {
cacheNoArgs } from '@/providers/decorators') come first, then place
DownloadManagerTitleButton below them to restore proper module ordering and
avoid interleaving definitions and imports.
src/plugins/downloader/templates/download-manager.tsx (2)

292-319: Consider adding error handling to IPC invocations.

The action functions invoke IPC methods without handling potential errors. While failures may be rare, unhandled promise rejections could cause silent failures. Consider adding .catch() handlers or wrapping in try/catch for user feedback.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/downloader/templates/download-manager.tsx` around lines 292 -
319, The IPC invocation handlers (setConcurrent, togglePause, retryFailed,
retrySingle, removeFailed, clearCompleted) call props.ipc.invoke(...) without
any error handling; wrap each invoke call in a try/catch or append .catch(...)
to handle rejected promises and surface errors (e.g., log via console.error or
notify the user) so failures aren’t silently ignored. Update each function
(setConcurrent, togglePause, retryFailed, retrySingle, removeFailed,
clearCompleted) to await the invoke or attach a .catch that handles and logs the
error and optionally shows user feedback.

137-148: Consider moving IPC setup into onMount.

The IPC listeners (lines 137–138) and initial state fetch (lines 146–148) are registered synchronously during component creation rather than inside onMount. While this works in SolidJS, wrapping IPC setup in onMount is more conventional and ensures the component is fully initialized before receiving events.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/downloader/templates/download-manager.tsx` around lines 137 -
148, Move the IPC listener registration and initial state fetch into Solid's
lifecycle by importing and using onMount: register
props.ipc.on('download-manager-state', onStateUpdate) and
props.ipc.on('download-manager-item-update', onItemUpdate) inside onMount, and
also call props.ipc.invoke('download-manager-get-state') there (then call
onStateUpdate with the returned DownloadManagerState); keep the
props.ipc.removeAllListeners calls in the existing onCleanup to tear down
listeners. This ensures props.ipc, onStateUpdate and onItemUpdate are set up
when the component is mounted while download-manager-get-state remains invoked
after mount.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/plugins/downloader/templates/download-manager.tsx`:
- Around line 209-218: The setTimeout created inside addToast can fire after the
component unmounts and cause state updates on an unmounted component; modify
addToast to store each timeout ID (e.g., in a Map or ref keyed by the toast id)
when you call setTimeout, and ensure removeToast clears its associated timeout
via clearTimeout(timeoutId) before removing from setToasts; additionally
register an onCleanup (or component unmount) handler that iterates stored
timeout IDs and calls clearTimeout for each to cancel pending timers. Ensure
references to addToast, removeToast, setToasts and Toast id are used to
correlate and clear timers.

---

Nitpick comments:
In `@src/plugins/downloader/templates/download-manager.tsx`:
- Around line 292-319: The IPC invocation handlers (setConcurrent, togglePause,
retryFailed, retrySingle, removeFailed, clearCompleted) call
props.ipc.invoke(...) without any error handling; wrap each invoke call in a
try/catch or append .catch(...) to handle rejected promises and surface errors
(e.g., log via console.error or notify the user) so failures aren’t silently
ignored. Update each function (setConcurrent, togglePause, retryFailed,
retrySingle, removeFailed, clearCompleted) to await the invoke or attach a
.catch that handles and logs the error and optionally shows user feedback.
- Around line 137-148: Move the IPC listener registration and initial state
fetch into Solid's lifecycle by importing and using onMount: register
props.ipc.on('download-manager-state', onStateUpdate) and
props.ipc.on('download-manager-item-update', onItemUpdate) inside onMount, and
also call props.ipc.invoke('download-manager-get-state') there (then call
onStateUpdate with the returned DownloadManagerState); keep the
props.ipc.removeAllListeners calls in the existing onCleanup to tear down
listeners. This ensures props.ipc, onStateUpdate and onItemUpdate are set up
when the component is mounted while download-manager-get-state remains invoked
after mount.

In `@src/plugins/in-app-menu/renderer/TitleBar.tsx`:
- Around line 22-75: The DownloadManagerTitleButton component is declared before
all imports (it appears above the import of cacheNoArgs); move the entire
DownloadManagerTitleButton function/component definition so that all import
statements (including import { cacheNoArgs } from '@/providers/decorators') come
first, then place DownloadManagerTitleButton below them to restore proper module
ordering and avoid interleaving definitions and imports.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3543ce55-e5b2-488c-903f-695b94b81e6d

📥 Commits

Reviewing files that changed from the base of the PR and between 99eb27d and 07638c3.

📒 Files selected for processing (3)
  • src/plugins/downloader/templates/download-manager.tsx
  • src/plugins/in-app-menu/renderer/TitleBar.tsx
  • src/plugins/in-app-menu/titlebar.css
✅ Files skipped from review due to trivial changes (1)
  • src/plugins/in-app-menu/titlebar.css

Comment thread src/plugins/downloader/templates/download-manager.tsx Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/plugins/in-app-menu/renderer/TitleBar.tsx`:
- Around line 32-33: The JSX and event-listener lines in TitleBar.tsx (notably
the window.addEventListener('ytmd-download-badge-update', handleBadgeUpdate as
EventListener) and the JSX prop blocks around the other noted ranges) are
failing Prettier and jsx-sort-props checks; fix by running Prettier-style
formatting and reorder JSX props to match the project's jsx-sort-props rule
(typically alphabetical) for the components in this file, and normalize the
event listener call by removing or moving the type cast into a separate const
(e.g., const badgeListener: EventListener = handleBadgeUpdate;
window.addEventListener('ytmd-download-badge-update', badgeListener);) so the
expression is formatted cleanly; apply the same formatting/prop-sorting to the
blocks at the other mentioned ranges (45-46, 59-64).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 04ab9f58-a0a8-4684-9d10-3bf31c4e9cd8

📥 Commits

Reviewing files that changed from the base of the PR and between 07638c3 and 0e65dba.

📒 Files selected for processing (1)
  • src/plugins/in-app-menu/renderer/TitleBar.tsx

Comment thread src/plugins/in-app-menu/renderer/TitleBar.tsx Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
src/plugins/in-app-menu/renderer/TitleBar.tsx (2)

33-49: ⚠️ Potential issue | 🟡 Minor

This JSX block still fails current lint/format rules.

The prop-order and Prettier issues in this block are still present (including the style object trailing comma / multiline SVG prop formatting). Please apply formatter + lint autofix for this section.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/in-app-menu/renderer/TitleBar.tsx` around lines 33 - 49, In
TitleBar.tsx fix the failing lint/format issues in the JSX block: reorder props
to satisfy prop-order (keep style last or as your project's convention), remove
the trailing comma in the inline style object, and convert SVG attributes to JSX
camelCase (e.g., strokeWidth, strokeLinecap, strokeLinejoin) and format the SVG
props into a single consistent multiline style; then run Prettier/ESLint autofix
(or your project's formatter) on this file to apply the remaining formatting
fixes.

30-33: ⚠️ Potential issue | 🟠 Major

Localize and properly label this icon-only button.

Line 32 is still hardcoded ("Gestor de Descargas"), and the control still lacks an explicit accessible name via aria-label. Please reuse the existing download-manager translation string and apply it to both title and aria-label.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/in-app-menu/renderer/TitleBar.tsx` around lines 30 - 33, The
button in TitleBar.tsx that calls handleClick currently hardcodes title="Gestor
de Descargas" and is missing an aria-label; replace the hardcoded text by
reusing the existing download-manager translation string (the same translated
value) for both the button's title and aria-label attributes so the icon-only
control has an explicit accessible name and uses the existing i18n key.
🧹 Nitpick comments (1)
src/plugins/in-app-menu/renderer/TitleBar.tsx (1)

24-26: Remove debug logging from the click handler.

Line 25 looks like leftover debug output in renderer code.

Suggested cleanup
 const handleClick = () => {
-  console.log('Download Manager button clicked');
   window.dispatchEvent(new CustomEvent('ytmd-download-manager-toggle'));
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/plugins/in-app-menu/renderer/TitleBar.tsx` around lines 24 - 26, Remove
the leftover debug console.log from the click handler: in the handleClick
function that dispatches the 'ytmd-download-manager-toggle' CustomEvent (used in
TitleBar.tsx), delete the console.log('Download Manager button clicked') line so
the handler only dispatches the event; ensure no other debug logs remain in that
function.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@src/plugins/in-app-menu/renderer/TitleBar.tsx`:
- Around line 33-49: In TitleBar.tsx fix the failing lint/format issues in the
JSX block: reorder props to satisfy prop-order (keep style last or as your
project's convention), remove the trailing comma in the inline style object, and
convert SVG attributes to JSX camelCase (e.g., strokeWidth, strokeLinecap,
strokeLinejoin) and format the SVG props into a single consistent multiline
style; then run Prettier/ESLint autofix (or your project's formatter) on this
file to apply the remaining formatting fixes.
- Around line 30-33: The button in TitleBar.tsx that calls handleClick currently
hardcodes title="Gestor de Descargas" and is missing an aria-label; replace the
hardcoded text by reusing the existing download-manager translation string (the
same translated value) for both the button's title and aria-label attributes so
the icon-only control has an explicit accessible name and uses the existing i18n
key.

---

Nitpick comments:
In `@src/plugins/in-app-menu/renderer/TitleBar.tsx`:
- Around line 24-26: Remove the leftover debug console.log from the click
handler: in the handleClick function that dispatches the
'ytmd-download-manager-toggle' CustomEvent (used in TitleBar.tsx), delete the
console.log('Download Manager button clicked') line so the handler only
dispatches the event; ensure no other debug logs remain in that function.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d2fcb160-f3a0-4f32-ae0d-fea48d4740c2

📥 Commits

Reviewing files that changed from the base of the PR and between 0e65dba and 8cc256a.

📒 Files selected for processing (1)
  • src/plugins/in-app-menu/renderer/TitleBar.tsx

Rocket-Space and others added 24 commits April 17, 2026 13:42
This reverts commit 8cc256a.
… so I can generate the commit message for you.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants