Compare commits

..

5 Commits

Author SHA1 Message Date
00d9bf41ee chore(deps): update dependency @electron-toolkit/tsconfig to v2 2026-02-03 10:02:00 +00:00
3b4a1444f1 chore(deps): update deps 2026-02-03 19:00:19 +09:00
f403700bf7 refactor(music-together): Removed delay dependency (#4201) 2026-02-03 18:55:51 +09:00
eab9f8ebcb chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (469 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2026-02-03 05:18:43 +00:00
8a074a6f37 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 87.2% (409 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2026-02-03 05:18:41 +00:00
7 changed files with 425 additions and 538 deletions

View File

@ -1,9 +1,9 @@
{ {
"name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063", "name": "youtube-music",
"desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063", "desktopName": "com.github.th_ch.youtube_music",
"productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063", "productName": "YouTube Music",
"version": "3.11.0", "version": "3.11.0",
"description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins", "description": "YouTube Music Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
@ -46,7 +46,7 @@
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"vite": "npm:rolldown-vite@7.3.1", "vite": "npm:rolldown-vite@7.3.1",
"node-gyp": "11.5.0", "node-gyp": "12.2.0",
"xml2js": "0.6.2", "xml2js": "0.6.2",
"node-fetch": "3.3.2", "node-fetch": "3.3.2",
"@electron/universal": "3.0.2", "@electron/universal": "3.0.2",
@ -64,9 +64,9 @@
}, },
"dependencies": { "dependencies": {
"@dehoist/romanize-thai": "1.0.0", "@dehoist/romanize-thai": "1.0.0",
"@electron-toolkit/tsconfig": "1.0.1", "@electron-toolkit/tsconfig": "2.0.0",
"@electron/remote": "2.1.3", "@electron/remote": "2.1.3",
"@ffmpeg.wasm/core-mt": "0.13.2", "@ffmpeg.wasm/core-mt": "0.12.0",
"@ffmpeg.wasm/main": "0.12.0", "@ffmpeg.wasm/main": "0.12.0",
"@floating-ui/dom": "1.7.5", "@floating-ui/dom": "1.7.5",
"@foobar404/wave": "2.0.5", "@foobar404/wave": "2.0.5",
@ -75,7 +75,7 @@
"@hono/node-server": "1.19.9", "@hono/node-server": "1.19.9",
"@hono/node-ws": "1.3.0", "@hono/node-ws": "1.3.0",
"@hono/swagger-ui": "0.5.3", "@hono/swagger-ui": "0.5.3",
"@hono/zod-openapi": "1.2.0", "@hono/zod-openapi": "1.2.1",
"@hono/zod-validator": "0.7.6", "@hono/zod-validator": "0.7.6",
"@jellybrick/dbus-next": "0.10.3", "@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "2.0.0", "@jellybrick/electron-better-web-request": "2.0.0",
@ -89,27 +89,26 @@
"butterchurn": "3.0.0-beta.5", "butterchurn": "3.0.0-beta.5",
"butterchurn-presets": "3.0.0-beta.4", "butterchurn-presets": "3.0.0-beta.4",
"color": "5.0.3", "color": "5.0.3",
"conf": "14.0.0", "conf": "15.0.2",
"custom-electron-prompt": "1.6.1", "custom-electron-prompt": "1.6.1",
"deepmerge-ts": "7.1.5", "deepmerge-ts": "7.1.5",
"delay": "6.0.0",
"electron-debug": "4.1.0", "electron-debug": "4.1.0",
"electron-is": "3.0.0", "electron-is": "3.0.0",
"electron-localshortcut": "3.2.1", "electron-localshortcut": "3.2.1",
"electron-store": "10.1.0", "electron-store": "11.0.2",
"electron-unhandled": "5.0.0", "electron-unhandled": "5.0.0",
"electron-updater": "6.7.3", "electron-updater": "6.7.3",
"es-hangul": "2.3.8", "es-hangul": "2.3.8",
"fast-average-color": "9.5.0", "fast-average-color": "9.5.0",
"fast-equals": "5.4.0", "fast-equals": "6.0.0",
"fflate": "0.8.2", "fflate": "0.8.2",
"filenamify": "6.0.0", "filenamify": "7.0.1",
"hanja": "1.1.5", "hanja": "1.1.5",
"happy-dom": "20.4.0", "happy-dom": "20.5.0",
"hono": "4.11.7", "hono": "4.11.7",
"howler": "2.2.4", "howler": "2.2.4",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"i18next": "25.5.2", "i18next": "25.8.0",
"jimp": "1.6.0", "jimp": "1.6.0",
"keyboardevent-from-electron-accelerator": "2.0.0", "keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2", "keyboardevents-areequal": "0.2.2",
@ -135,13 +134,13 @@
"vudio": "2.1.1", "vudio": "2.1.1",
"x11": "2.3.0", "x11": "2.3.0",
"youtubei.js": "^16.0.1", "youtubei.js": "^16.0.1",
"zod": "4.2.1" "zod": "4.3.6"
}, },
"devDependencies": { "devDependencies": {
"@electron-toolkit/tsconfig": "1.0.1", "@electron-toolkit/tsconfig": "2.0.0",
"@eslint/js": "9.39.2", "@eslint/js": "9.39.2",
"@malept/flatpak-bundler": "0.4.0", "@malept/flatpak-bundler": "0.4.0",
"@playwright/test": "1.58.0", "@playwright/test": "1.58.1",
"@stylistic/eslint-plugin": "5.7.1", "@stylistic/eslint-plugin": "5.7.1",
"@total-typescript/ts-reset": "0.6.1", "@total-typescript/ts-reset": "0.6.1",
"@types/electron-localshortcut": "3.1.3", "@types/electron-localshortcut": "3.1.3",
@ -152,11 +151,11 @@
"bufferutil": "4.1.0", "bufferutil": "4.1.0",
"builtin-modules": "5.0.0", "builtin-modules": "5.0.0",
"cross-env": "10.1.0", "cross-env": "10.1.0",
"del-cli": "6.0.0", "del-cli": "7.0.0",
"discord-api-types": "0.38.37", "discord-api-types": "0.38.38",
"electron": "40.1.0", "electron": "40.1.0",
"electron-builder": "26.4.0", "electron-builder": "26.7.0",
"electron-builder-squirrel-windows": "26.4.0", "electron-builder-squirrel-windows": "26.7.0",
"electron-devtools-installer": "4.0.0", "electron-devtools-installer": "4.0.0",
"electron-vite": "5.0.0", "electron-vite": "5.0.0",
"eslint": "9.39.2", "eslint": "9.39.2",
@ -166,11 +165,11 @@
"eslint-plugin-import": "2.32.0", "eslint-plugin-import": "2.32.0",
"eslint-plugin-prettier": "5.5.5", "eslint-plugin-prettier": "5.5.5",
"eslint-plugin-solid": "0.14.5", "eslint-plugin-solid": "0.14.5",
"glob": "11.1.0", "glob": "13.0.0",
"node-gyp": "11.5.0", "node-gyp": "12.2.0",
"ts-morph": "27.0.2", "ts-morph": "27.0.2",
"typescript": "5.9.3", "typescript": "5.9.3",
"typescript-eslint": "8.53.1", "typescript-eslint": "8.54.0",
"utf-8-validate": "6.0.6", "utf-8-validate": "6.0.6",
"vite": "npm:rolldown-vite@7.3.1", "vite": "npm:rolldown-vite@7.3.1",
"vite-plugin-inspect": "11.3.3", "vite-plugin-inspect": "11.3.3",

847
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -161,7 +161,8 @@
"default": "Par défaut", "default": "Par défaut",
"force-show": "Forcer à apparaître", "force-show": "Forcer à apparaître",
"hide": "Cacher", "hide": "Cacher",
"label": "Boutons « J'aime »" "label": "Boutons « J'aime »",
"swap": "Inverser l'order des boutons like"
}, },
"remove-upgrade-button": "Supprimer le bouton de mise à niveau", "remove-upgrade-button": "Supprimer le bouton de mise à niveau",
"theme": { "theme": {
@ -412,6 +413,17 @@
"no-captions": "Aucun sous-titres disponibles pour cette chanson" "no-captions": "Aucun sous-titres disponibles pour cette chanson"
} }
}, },
"clock": {
"description": "Ajoute une horloge a la barre de navigation",
"menu": {
"format": {
"24-hour-format": "Format 24 heures",
"display-seconds": "Afficher les secondes",
"label": "Format"
}
},
"name": "Horloge"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Toujours définir la barre latérale en mode compact", "description": "Toujours définir la barre latérale en mode compact",
"name": "Barre latérale compacte" "name": "Barre latérale compacte"

View File

@ -396,6 +396,17 @@
"no-captions": "Pre túto skladbu nie sú dostupné žiadne titulky" "no-captions": "Pre túto skladbu nie sú dostupné žiadne titulky"
} }
}, },
"clock": {
"description": "Pridať hodiny do navigačnej lišty",
"menu": {
"format": {
"24-hour-format": "24-hodinový formát",
"display-seconds": "Zobraz sekundy",
"label": "Formát"
}
},
"name": "Hodiny"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Vždy nastaviť bočný panel do kompaktného režimu", "description": "Vždy nastaviť bočný panel do kompaktného režimu",
"name": "Kompaktný bočný panel" "name": "Kompaktný bočný panel"
@ -462,8 +473,8 @@
"set-status-display-type": { "set-status-display-type": {
"label": "Text stavu", "label": "Text stavu",
"submenu": { "submenu": {
"artist": "Aktuálne si prehráva {artist}",
"application": "Počúvať {{applicationName}}", "application": "Počúvať {{applicationName}}",
"artist": "Aktuálne si prehráva {artist}",
"title": "Aktuálne si prehráva {song title}" "title": "Aktuálne si prehráva {song title}"
} }
} }

View File

@ -1,15 +1,9 @@
import { import { type DataConnection, Peer, type PeerError } from 'peerjs';
type DataConnection,
Peer,
type PeerError,
PeerErrorType,
} from 'peerjs';
import delay from 'delay';
import type { Permission, Profile, VideoData } from './types'; import type { Permission, Profile, VideoData } from './types';
export type ConnectionEventMap = { export type ConnectionEventMap = {
CLEAR_QUEUE: {}; CLEAR_QUEUE: null;
ADD_SONGS: { videoList: VideoData[]; index?: number }; ADD_SONGS: { videoList: VideoData[]; index?: number };
REMOVE_SONG: { index: number }; REMOVE_SONG: { index: number };
MOVE_SONG: { fromIndex: number; toIndex: number }; MOVE_SONG: { fromIndex: number; toIndex: number };
@ -104,16 +98,14 @@ export class Connection {
this.peer.disconnect(); this.peer.disconnect();
this.peer.destroy(); this.peer.destroy();
}); });
this.peer.on('error', async (err) => { this.peer.on('error', (err) => {
if (err.type === PeerErrorType.Network) { if (err.type === 'network') {
// retrying after 10 seconds setTimeout(() => {
await delay(10000); try {
try { this.peer.reconnect();
this.peer.reconnect(); } catch {}
return; }, 10000);
} catch { return;
//ignored
}
} }
this.waitOpen.reject(err); this.waitOpen.reject(err);
@ -176,7 +168,9 @@ export class Connection {
after?: ConnectionEventUnion[], after?: ConnectionEventUnion[],
) { ) {
await Promise.all( await Promise.all(
this.getConnections().map((conn) => conn.send({ type, payload, after })), this.getConnections().map(
(conn) => conn.send({ type, payload, after }) ?? Promise.resolve(),
),
); );
} }

View File

@ -224,7 +224,7 @@ export default createPlugin<
} }
this.queue?.clear(); this.queue?.clear();
await this.connection?.broadcast('CLEAR_QUEUE', {}); await this.connection?.broadcast('CLEAR_QUEUE', null);
break; break;
} }
case 'SET_INDEX': { case 'SET_INDEX': {
@ -413,7 +413,7 @@ export default createPlugin<
this.ignoreChange = true; this.ignoreChange = true;
switch (event.type) { switch (event.type) {
case 'CLEAR_QUEUE': { case 'CLEAR_QUEUE': {
await this.connection?.broadcast('CLEAR_QUEUE', {}); await this.connection?.broadcast('CLEAR_QUEUE', null);
break; break;
} }
case 'SET_INDEX': { case 'SET_INDEX': {

View File

@ -316,7 +316,7 @@ export class Queue {
this.ignoreFlag = true; this.ignoreFlag = true;
this.broadcast({ this.broadcast({
type: 'CLEAR_QUEUE', type: 'CLEAR_QUEUE',
payload: {}, payload: null,
}); });
return; return;
} }