Skip to content
Open
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
ad09e0e
feat: implement YouTube downloader plugin backend with PoToken genera…
Rocket-Space Mar 28, 2026
251089f
feat: add GitHub Actions workflow for multi-platform build and releas…
Rocket-Space Mar 28, 2026
cc560e8
w
Rocket-Space Mar 28, 2026
c431a42
feat: split build pipeline into primary build workflow and secondary …
Rocket-Space Mar 28, 2026
2e70aa6
ci: add GitHub Actions workflow for building and releasing Pear Desktop
Rocket-Space Mar 28, 2026
05420b6
chore: upgrade youtubei.js to version 17.0.1
Rocket-Space Mar 28, 2026
89bc69c
chore: generate package-lock.json to lock dependency versions
Rocket-Space Mar 28, 2026
221e3d1
chore: update pnpm-lock.yaml dependencies
Rocket-Space Mar 28, 2026
d4813c4
ci: add GitHub Actions workflow for cross-platform builds and update …
Rocket-Space Mar 28, 2026
fcdd177
feat: add GitHub Actions workflow for building and releasing Pear Des…
Rocket-Space Mar 28, 2026
775e756
feat: add CI workflow for building and releasing Pear Desktop across …
Rocket-Space Mar 28, 2026
20fb0ab
Restore adblocker for Youtube and Add Linux Mint CI
Apr 8, 2026
7f4d736
Fix macOS action version and add Linux Mint to secondary workflow
Apr 8, 2026
a9efc89
Downgrade electron-builder to 25.1.8 to fix Mac error and separate Mi…
Apr 8, 2026
50b33fd
Use --no-frozen-lockfile to bypass lockfile check in CI for downgrade…
Apr 8, 2026
ae3833b
Disable fail-fast and use ubuntu-latest for Mint build to avoid binar…
Apr 8, 2026
dce5cd0
Fix app-builder binary permissions for Linux Mint artifact job
Apr 8, 2026
8323c25
Force stable app-builder-bin version to fix execution errors in artif…
Apr 8, 2026
8bd517f
Fix icon paths and reinforce stable app-builder version
Apr 8, 2026
78a4ca9
Correct app-builder-bin version to 4.2.0
Apr 8, 2026
aa37132
Stable downgrade to electron-builder 24.13.3 to resolve CI binary issues
Apr 8, 2026
a7d9ad1
Arquitectura CI/CD: Separación total de los flujos de trabajo de macO…
Apr 8, 2026
327b6c4
Please provide the code changes or file diffs you would like me to su…
Apr 8, 2026
c311928
Please provide the code changes or file diffs you would like me to su…
Apr 8, 2026
d954004
Please provide the code changes or file diffs you would like me to su…
Apr 8, 2026
8962383
Revert "Please provide the code changes or file diffs you would like …
Rocket-Space Apr 8, 2026
5806548
Revert "Please provide the code changes or file diffs you would like …
Rocket-Space Apr 8, 2026
b05353a
Revert "Please provide the code changes or file diffs you would like …
Rocket-Space Apr 8, 2026
8409a9a
Please provide the code changes or file diffs you would like me to su…
Apr 9, 2026
b5e055c
sube los artefactos
Rocket-Space Apr 9, 2026
722fb34
Update publish-installers.yml
Rocket-Space Apr 9, 2026
14fb3fc
Update publish-installers.yml
Rocket-Space Apr 9, 2026
b22ae8d
Please provide the code changes or file diffs you would like me to su…
Apr 13, 2026
99eb27d
boton del gestor de descargas
Rocket-Space Apr 17, 2026
07638c3
flecha hacia abajo y 1 notificacion para playlist
Rocket-Space Apr 17, 2026
0e65dba
deberia salir ahora el boton
Rocket-Space Apr 17, 2026
8cc256a
gegege
Rocket-Space Apr 17, 2026
dd37dda
Revert "gegege"
Rocket-Space Apr 17, 2026
84f08a5
Revert "deberia salir ahora el boton"
Rocket-Space Apr 17, 2026
4490bd0
Revert "flecha hacia abajo y 1 notificacion para playlist"
Rocket-Space Apr 17, 2026
2815f47
Revert "boton del gestor de descargas"
Rocket-Space Apr 17, 2026
644c0f1
Please provide the list of files or the specific changes made so I ca…
Apr 19, 2026
575df2a
Please provide the file changes or a description of the modifications…
Apr 19, 2026
0183760
barra flotante para letra de canciones
Apr 19, 2026
5a6f573
descarga simultanea y conversion simultanea de hasta 5 canciones a la…
Apr 19, 2026
6984265
correcion a las letras no se veian
Apr 19, 2026
5d7bedd
feat: add support for Arch Linux pacman packages and integrate into r…
Rocket-Space Apr 21, 2026
eebe673
refactor: replace pacman build target with tar.gz for Linux distribut…
Rocket-Space Apr 21, 2026
4df7bc2
feat: add self-extracting installer for Linux using makeself and upda…
Rocket-Space Apr 21, 2026
70341c1
perf: implement premium status caching and download queue staggering …
Rocket-Space Apr 21, 2026
8b57847
fix: update font-family fallback for lyrics renderer to support Linux…
Rocket-Space Apr 21, 2026
ad7d18e
feat: add playback controls to the floating lyrics window with IPC in…
Rocket-Space Apr 21, 2026
000eb07
fix: prevent redundant state updates and restore original mute status…
Rocket-Space Apr 21, 2026
01d5721
feat: add Linux installation script for Pear Desktop
Rocket-Space Apr 25, 2026
8871940
feat: add Linux installation script and download manager styling support
Rocket-Space Apr 25, 2026
93c6645
feat: add Windows x64 CI build workflow and Linux installation script
Rocket-Space Apr 25, 2026
70eebb1
feat: add stylesheet for download manager component
Rocket-Space Apr 25, 2026
2ebee64
feat: configure floating lyrics window as an always-on-top toolbar wi…
Rocket-Space May 8, 2026
b07ef85
fix: update floating window properties and enforce always-on-top beha…
Rocket-Space May 9, 2026
6a9b8d4
refactor: update synced lyrics floating window configuration and init…
Rocket-Space May 9, 2026
5005c6a
refactor: change window type to dock and update always-on-top level t…
Rocket-Space May 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/build-after-macos-artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Build After macOS Artifacts

on:
workflow_run:
workflows: ["Build Pear Desktop macOS"]
types:
- completed

permissions: {}

env:
NODE_VERSION: "22.x"

jobs:
build:
name: Build macOS Artifacts
if: github.event.workflow_run.conclusion == 'success'
runs-on: macos-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: 10
run_install: false

- name: Setup NodeJS for macOS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Build on macOS
run: |
pnpm dist:mac
pnpm dist:mac:arm64
Comment on lines +37 to +40

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Sequential dist commands will overwrite each other.

Both pnpm dist:mac and pnpm dist:mac:arm64 include pnpm clean which deletes the pack/ directory. Running them sequentially means the x64 build artifacts will be deleted before the arm64 build starts, resulting in only arm64 artifacts being uploaded.

🐛 Proposed fix: Run electron-builder directly without clean
       - name: Build on macOS
         run: |
-          pnpm dist:mac
-          pnpm dist:mac:arm64
+          pnpm clean
+          pnpm build
+          pnpm electron-builder --mac dmg:x64 dmg:arm64 -p never

Alternatively, build both architectures in a single electron-builder invocation to avoid the clean/rebuild cycle.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Build on macOS
run: |
pnpm dist:mac
pnpm dist:mac:arm64
- name: Build on macOS
run: |
pnpm clean
pnpm build
pnpm electron-builder --mac dmg:x64 dmg:arm64 -p never
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-after-macos-artifacts.yml around lines 37 - 40, The
workflow runs pnpm dist:mac then pnpm dist:mac:arm64 but both scripts invoke
pnpm clean which removes the pack/ directory so the first (x64) artifacts get
deleted; instead invoke electron-builder once to produce both architectures in
one run (build both x64 and arm64 together) rather than calling pnpm dist:mac
and pnpm dist:mac:arm64 sequentially, or adjust the scripts to skip the clean
step so pack/ is preserved; update the job to call electron-builder with both
mac architectures (replacing the two pnpm lines) to ensure both artifacts are
produced and retained.


- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
with:
name: build-artifacts-macos
path: pack/
retention-days: 7
if-no-files-found: error
114 changes: 114 additions & 0 deletions .github/workflows/build-after-pear-desktop-artifacts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Build After Pear Desktop Artifacts

on:
workflow_run:
workflows: ["Build Pear Desktop"]
types:
- completed

permissions: {}

env:
NODE_VERSION: "22.x"

jobs:
build:
name: Build ${{ matrix.os }}
if: github.event.workflow_run.conclusion == 'success'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: 10
run_install: false

- name: Setup NodeJS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'



- name: Install dependencies
run: pnpm install --no-frozen-lockfile



- name: Install Linux dependencies
if: matrix.os == 'ubuntu-latest'
run: |
sudo snap install snapcraft --classic
sudo apt update
sudo apt install -y flatpak flatpak-builder
sudo flatpak remote-add --if-not-exists --system flathub https://flathub.org/repo/flathub.flatpakrepo
sudo flatpak install -y flathub org.freedesktop.Platform/x86_64/24.08
sudo flatpak install -y flathub org.freedesktop.Sdk/x86_64/24.08
sudo flatpak install -y flathub org.electronjs.Electron2.BaseApp/x86_64/24.08

- name: Build on Linux
if: matrix.os == 'ubuntu-latest'
run: |
pnpm dist:linux
pnpm dist:linux:deb-arm64
pnpm dist:linux:rpm-arm64
Comment on lines +57 to +62

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Sequential dist commands will overwrite each other.

Similar to the macOS workflow, running pnpm dist:linux, pnpm dist:linux:deb-arm64, and pnpm dist:linux:rpm-arm64 sequentially is problematic because each script starts with pnpm clean which deletes the pack/ directory. Only the last build's artifacts will survive.

🐛 Proposed fix: Run builds without intermediate clean
       - name: Build on Linux
         if: matrix.os == 'ubuntu-latest'
         run: |
-          pnpm dist:linux
-          pnpm dist:linux:deb-arm64
-          pnpm dist:linux:rpm-arm64
+          pnpm clean
+          pnpm build
+          pnpm electron-builder --linux -p never
+          pnpm electron-builder --linux deb:arm64 -p never
+          pnpm electron-builder --linux rpm:arm64 -p never

This runs clean and build once, then runs electron-builder multiple times to produce all artifacts.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Build on Linux
if: matrix.os == 'ubuntu-latest'
run: |
pnpm dist:linux
pnpm dist:linux:deb-arm64
pnpm dist:linux:rpm-arm64
- name: Build on Linux
if: matrix.os == 'ubuntu-latest'
run: |
pnpm clean
pnpm build
pnpm electron-builder --linux -p never
pnpm electron-builder --linux deb:arm64 -p never
pnpm electron-builder --linux rpm:arm64 -p never
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build-after-pear-desktop-artifacts.yml around lines 57 -
62, The workflow runs pnpm dist:linux, pnpm dist:linux:deb-arm64, and pnpm
dist:linux:rpm-arm64 sequentially but each script runs pnpm clean and removes
pack/, so earlier artifacts get deleted; change the job to run the clean+build
once (e.g., run pnpm dist:linux which does the initial clean/build) and then
invoke electron-builder multiple times (or run the npm scripts with a flag to
skip cleaning) to produce .deb and .rpm artifacts without intermediate cleans,
ensuring pack/ is preserved between invocations; update the Build on Linux step
to call the electron-builder targets (or the dist scripts with a --no-clean
option) for deb-arm64 and rpm-arm64 after the initial build.



- name: Build on Windows
if: startsWith(matrix.os, 'windows')
run: |
pnpm dist:win

- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
with:
name: build-artifacts-${{ matrix.os }}
path: pack/
retention-days: 7
if-no-files-found: error

build-mint:
name: Build Linux Mint XFCE
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: 10
run_install: false

- name: Setup NodeJS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Build specifically for Linux Mint XFCE (deb only)
run: |
find node_modules -name "app-builder" -exec chmod +x {} + || true
pnpm build
pnpm electron-builder --linux deb:x64 -p never

- name: Upload artifacts
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
with:
name: build-artifacts-linux-mint-xfce
path: pack/
retention-days: 7
if-no-files-found: error


57 changes: 57 additions & 0 deletions .github/workflows/build-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build Pear Desktop macOS

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

permissions: {}

env:
NODE_VERSION: "22.x"

jobs:
build:
permissions:
contents: write
if: github.event.pull_request.draft == false
name: Build Pear Desktop macOS
runs-on: macos-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd

- name: Setup Xcode version
run: |
XCODE_APP=$(ls -d /Applications/Xcode_26*.app 2>/dev/null | sort -r | head -n 1)
if [ -z "$XCODE_APP" ]; then XCODE_APP=$(ls -d /Applications/Xcode*.app | sort -r | head -n 1); fi
sudo xcode-select -s "$XCODE_APP/Contents/Developer"
xcodebuild -version
actool --version

- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: 10
run_install: false

- name: Setup NodeJS for macOS
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}

- name: Install dependencies
run: pnpm install --no-frozen-lockfile

- name: Vite Build
if: github.repository != 'pear-devs/pear-desktop' || github.event_name == 'pull_request'
run: |
pnpm build

- name: Build and release on Mac
if: github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:mac
47 changes: 17 additions & 30 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: Build Pear Desktop
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

permissions: {}

Expand All @@ -17,51 +19,43 @@ jobs:
name: Build Pear Desktop
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
fail-fast: false
matrix:
os: [ macos-26, ubuntu-latest, windows-latest ]
os: [ ubuntu-latest, windows-latest ]

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd



- name: Install pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320
with:
version: 10
run_install: false

- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'

- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}


- name: Install dependencies
run: pnpm install --frozen-lockfile
run: pnpm install --no-frozen-lockfile

# Only vite build without release if it is a fork, or it is a pull-request
- name: Vite Build
if: github.repository == 'pear-devs/pear-desktop' && github.event_name == 'pull_request'
if: github.repository != 'pear-devs/pear-desktop' || github.event_name == 'pull_request'
run: |
pnpm build

# Build and release if it's the main repository and is not pull-request
- name: Build and release on Mac
if: startsWith(matrix.os, 'macOS') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pnpm release:mac


- name: Build and release on Linux
if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
if: matrix.os == 'ubuntu-latest' && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
Expand All @@ -74,6 +68,12 @@ jobs:
sudo flatpak install -y flathub org.electronjs.Electron2.BaseApp/x86_64/24.08
pnpm release:linux

- name: Build specifically for Linux Mint (deb only)
if: matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request'
run: |
pnpm build
pnpm electron-builder --linux deb:x64 -p never
Comment on lines +71 to +75

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

Redundant pnpm build call in Linux Mint step.

The "Vite Build" step at line 52 already runs pnpm build for PRs. Running it again here is wasteful and doubles the build time for Linux Mint PRs on ubuntu-latest.

♻️ Proposed fix to remove redundant build
       - name: Build specifically for Linux Mint (deb only)
         if: matrix.os == 'ubuntu-latest' && github.event_name == 'pull_request'
         run: |
-          pnpm build
           pnpm electron-builder --linux deb:x64 -p never
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/build.yml around lines 71 - 75, The "Build specifically
for Linux Mint (deb only)" step contains a redundant pnpm build call since the
Vite Build step already runs pnpm build for pull requests. Remove the pnpm build
line from this step and keep only the pnpm electron-builder command to eliminate
the duplicate build and reduce build time for Linux Mint PRs on ubuntu-latest.


- name: Build and release on Windows
if: startsWith(matrix.os, 'windows') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env:
Expand Down Expand Up @@ -107,19 +107,6 @@ jobs:
version: 10
run_install: false

- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'

- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f
with:
node-version: ${{ env.NODE_VERSION }}

- name: Install dependencies
run: pnpm install --frozen-lockfile

Expand Down
Loading