13 Commits
1.1.1 ... 1.1.3

Author SHA1 Message Date
MasterAcnolo
94de0a42f1 Merge pull request #6 from MasterAcnolo/1.2
1.1.3
2025-08-21 16:01:34 +02:00
MasterAcnolo
5ba2901273 ReadME Update 2025-08-21 15:50:51 +02:00
MasterAcnolo
f5888b8382 NPM Update 2025-08-21 15:49:09 +02:00
MasterAcnolo
6ece182629 Update YTDLP + New Icon 2025-08-21 11:27:03 +02:00
MasterAcnolo
777257b71d Clarification 2025-08-21 08:45:50 +02:00
MasterAcnolo
df0156d603 Add Metadata / Thumbail
Optimisation + Retries
2025-08-20 14:27:45 +02:00
MasterAcnolo
68cdad06ab Merge pull request #5 from MasterAcnolo/Notification-System
# Freedom Loader - 1.1.2

## Changelog

- Added a “Logs” menu in the toolbar to open the logs folder directly
- Fixed log path for better Windows/Linux compatibility
- Disabled hardware acceleration to improve stability on some systems
- Fixed Electron menu merging logic
- Various minor improvements and bug fixes

## Found a bug or issue?
- Please report it in the GitHub Issues section

## Next Release (non-exhaustive roadmap)
- More format options  
- Subtitle support  
- Improved UI / UX  
- Language selection  
- Download specific parts of videos  
- File renaming options  
- Video extraction/splitting using native chapters  
- Parallel downloads  
- Skip sponsored parts automatically  

**Full Changelog**: https://github.com/MasterAcnolo/Freedom-Loader/compare/1.1.1...1.1.2
2025-08-13 15:28:57 +02:00
MasterAcnolo
ee7c6520b9 ReadME Fix 2025-08-13 15:22:51 +02:00
MasterAcnolo
4ed1609e41 Logs Fix + Logs Button 2025-08-13 15:20:35 +02:00
MasterAcnolo
b64e61d45d Fix Download 2025-08-13 14:56:14 +02:00
MasterAcnolo
b4c2c865d8 Logger Error Fix 2025-08-13 14:34:00 +02:00
MasterAcnolo
e32ffd8fa0 NPM Update 2025-08-13 14:25:33 +02:00
MasterAcnolo
8be6a932e5 NPM Update 2025-08-13 14:22:51 +02:00
11 changed files with 263 additions and 192 deletions

View File

@@ -2,18 +2,18 @@
<!-- Release -->
![Static Badge](https://img.shields.io/badge/Release-1.1.1-blue?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Release-1.1.3-blue?style=flat&logo=Test)
<!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.1.2--beta-yellow?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Build-1.2--beta-yellow?style=flat&logo=Test)
> This project aims to enable free, open-source, and unrestricted downloading of Video/Audio content. Eventually, it will allow users to choose
## 🚀 Features
- ✅ Video download (MP4)
- ✅ Audio-only download (MP3)
- ✅ Video download with metadata(MP4)
- ✅ Audio-only download with thumbail and metadata(MP3)
- ✅ Full playlist support
- ✅ Automatic metadata retrieval (title, duration, etc.)
- ✅ Detailed logs: console and rotating files (7 days)

View File

@@ -2,18 +2,18 @@
<!-- Release -->
![Static Badge](https://img.shields.io/badge/Release-1.1.1-blue?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Release-1.1.3-blue?style=flat&logo=Test)
<!-- Build (Next Release) -->
![Static Badge](https://img.shields.io/badge/Build-1.1.2--beta-yellow?style=flat&logo=Test)
![Static Badge](https://img.shields.io/badge/Build-1.2--beta-yellow?style=flat&logo=Test)
> Ce projet a pour but de permettre le téléchargement de contenu Vidéo/Audio de manière gratuite, open source et libre. Il permettra à terme de choisir
## 🚀 Fonctionnalités
- ✅ Téléchargement de vidéos (MP4)
- ✅ Téléchargement audio uniquement (MP3)
- ✅ Téléchargement de vidéos avec les métadonnées (MP4)
- ✅ Téléchargement audio uniquement, avec la couverture ainsi que les métadonnées (MP3)
- ✅ Support des playlists complètes
- ✅ Récupération automatique des métadonnées (titre, durée, etc.)
- ✅ Logs détaillés : console et fichiers rotatifs (7 jours)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 146 KiB

33
main.js
View File

@@ -16,12 +16,15 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { app, BrowserWindow, ipcMain, dialog } = require("electron");
const { app, BrowserWindow, ipcMain, dialog, Menu, shell } = require("electron");
app.disableHardwareAcceleration(); // Désactive l'accélération GPU pour éviter les erreurs GPU sur certains systèmes
const path = require("path");
const os = require("os");
const { logger, logSessionStart, logSessionEnd } = require("./server/logger");
const { logger, logSessionStart, logSessionEnd, logDir } = require("./server/logger");
let mainWindow;
// Utilise le vrai dossier de logs défini dans logger.js
const logsFolderPath = logDir;
/*
Fonction principale qui crée la fenêtre principale de l'application.
@@ -113,6 +116,32 @@ app.whenReady().then(async () => {
await expressServer.startServer();
logger.info("Serveur Express démarré");
await createWindow();
// Ajout du menu personnalisé
const menuTemplate = [
// ... Menu standard Electron ...
{
label: "Logs",
submenu: [
{
label: "Ouvrir les logs",
click: () => {
shell.openPath(logsFolderPath);
}
}
]
}
];
// Fusionner avec le menu par défaut
const defaultMenu = Menu.getApplicationMenu();
let template = menuTemplate;
if (defaultMenu) {
template = [...Menu.getApplicationMenu().items.map(item => item), ...menuTemplate];
}
const finalMenu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(finalMenu);
} catch (error) {
logger.error("Erreur serveur ou fenêtre :", error);
app.quit();

362
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "freedom-loader",
"version": "1.1.1",
"version": "1.1.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "freedom-loader",
"version": "1.1.1",
"version": "1.1.3",
"dependencies": {
"chalk": "^4.1.2",
"debug": "^4.4.1",
@@ -67,9 +67,9 @@
}
},
"node_modules/@electron-forge/cli": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.8.1.tgz",
"integrity": "sha512-QI3EShutfq9Y+2TWWrPjm4JZM3eSAKzoQvRZdVhAfVpUbyJ8K23VqJShg3kGKlPf9BXHAGvE+8LyH5s2yDr1qA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.8.3.tgz",
"integrity": "sha512-BSAjGGfVf0yp3NQhXYmyCw9T//YCQHuktMv4HXfDVfo7AoV6DA1oEhqldI4Q7aHKeRob5+yBkvRRYPiu5ayCPw==",
"dev": true,
"funding": [
{
@@ -83,9 +83,9 @@
],
"license": "MIT",
"dependencies": {
"@electron-forge/core": "7.8.1",
"@electron-forge/core-utils": "7.8.1",
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/core": "7.8.3",
"@electron-forge/core-utils": "7.8.3",
"@electron-forge/shared-types": "7.8.3",
"@electron/get": "^3.0.0",
"chalk": "^4.0.0",
"commander": "^11.1.0",
@@ -105,9 +105,9 @@
}
},
"node_modules/@electron-forge/core": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.8.1.tgz",
"integrity": "sha512-jkh0QPW5p0zmruu1E8+2XNufc4UMxy13WLJcm7hn9jbaXKLkMbKuEvhrN1tH/9uGp1mhr/t8sC4N67gP+gS87w==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.8.3.tgz",
"integrity": "sha512-qX2vi/LP3HcSqSfLfzMeH2ll8SFZQnOk8VN/b3bq6XrBCbrfrSsTYYWakN6mmfalLJcQRm4jCEc6gcyuGO4i6Q==",
"dev": true,
"funding": [
{
@@ -121,17 +121,17 @@
],
"license": "MIT",
"dependencies": {
"@electron-forge/core-utils": "7.8.1",
"@electron-forge/maker-base": "7.8.1",
"@electron-forge/plugin-base": "7.8.1",
"@electron-forge/publisher-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/template-base": "7.8.1",
"@electron-forge/template-vite": "7.8.1",
"@electron-forge/template-vite-typescript": "7.8.1",
"@electron-forge/template-webpack": "7.8.1",
"@electron-forge/template-webpack-typescript": "7.8.1",
"@electron-forge/tracer": "7.8.1",
"@electron-forge/core-utils": "7.8.3",
"@electron-forge/maker-base": "7.8.3",
"@electron-forge/plugin-base": "7.8.3",
"@electron-forge/publisher-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3",
"@electron-forge/template-base": "7.8.3",
"@electron-forge/template-vite": "7.8.3",
"@electron-forge/template-vite-typescript": "7.8.3",
"@electron-forge/template-webpack": "7.8.3",
"@electron-forge/template-webpack-typescript": "7.8.3",
"@electron-forge/tracer": "7.8.3",
"@electron/get": "^3.0.0",
"@electron/packager": "^18.3.5",
"@electron/rebuild": "^3.7.0",
@@ -161,13 +161,13 @@
}
},
"node_modules/@electron-forge/core-utils": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.8.1.tgz",
"integrity": "sha512-mRoPLDNZgmjyOURE/K0D3Op53XGFmFRgfIvFC7c9S/BqsRpovVblrqI4XxPRdNmH9dvhd8On9gGz+XIYAKD3aQ==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.8.3.tgz",
"integrity": "sha512-8jhK7AvUKEqDyTMMuRhvS1TkE73YEnHYAxVvkJq35e1KdCwGbGnSRhaEs7OOqRfkKxfepdJ7BMKFSoKFeP+z0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"@electron/rebuild": "^3.7.0",
"@malept/cross-spawn-promise": "^2.0.0",
"chalk": "^4.0.0",
@@ -182,13 +182,13 @@
}
},
"node_modules/@electron-forge/maker-base": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.8.1.tgz",
"integrity": "sha512-GUZqschGuEBzSzE0bMeDip65IDds48DZXzldlRwQ+85SYVA6RMU2AwDDqx3YiYsvP2OuxKruuqIJZtOF5ps4FQ==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.8.3.tgz",
"integrity": "sha512-WmF66cHdziaK8Asi7IRTLxZjCZ8IqXXHr6IPl4d5oatN6s5RG+HHzG1hiJ7LzlOEntqdSpE8Wh2nB2TmyR4huQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"fs-extra": "^10.0.0",
"which": "^2.0.2"
},
@@ -197,14 +197,14 @@
}
},
"node_modules/@electron-forge/maker-deb": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.8.1.tgz",
"integrity": "sha512-tjjeesQtCP5Xht1X7gl4+K9bwoETPmQfBkOVAY/FZIxPj40uQh/hOUtLX2tYENNGNVZ1ryDYRs8TuPi+I41Vfw==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.8.3.tgz",
"integrity": "sha512-GZHJU06LRFJkv1wMc3bjMVzedQhyxnyMZqgDJjE9TIlXXZkN2EqGmKLw/HxwNRA1R8yuQeA4Ih6/dEB4bZTevg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/maker-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
@@ -214,14 +214,14 @@
}
},
"node_modules/@electron-forge/maker-rpm": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.8.1.tgz",
"integrity": "sha512-TF6wylft3BHkw9zdHcxmjEPBZYgTIc0jE31skFnMEQ/aExbNRiNaCZvsXy+7ptTWZxhxUKRc9KHhLFRMCmOK8g==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.8.3.tgz",
"integrity": "sha512-TqHHdF5D3Dy4NgG+pi8eRc18P1D0FF1LE+CqQF4MRof+XrpHhRtog5Ac4gWjvg1Wma6WjPyTdryHAkURsoBbuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/maker-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
@@ -231,14 +231,14 @@
}
},
"node_modules/@electron-forge/maker-squirrel": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.8.1.tgz",
"integrity": "sha512-qT1PMvT7ALF0ONOkxlA0oc0PiFuKCAKgoMPoxYo9gGOqFvnAb+TBcnLxflQ4ashE/ZkrHpykr4LcDJxqythQTA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.8.3.tgz",
"integrity": "sha512-6XSEhZMbgfjAaCm8A54pNjn4ghfxJgPu4i7ok3PhP44WOrFPaPivLttpvKRnxRb0PGZstPjPBFcwL1F9S1trjA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/maker-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -249,14 +249,14 @@
}
},
"node_modules/@electron-forge/maker-zip": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.8.1.tgz",
"integrity": "sha512-unIxEoV1lnK4BLVqCy3L2y897fTyg8nKY1WT4rrpv0MUKnQG4qmigDfST5zZNNHHaulEn/ElAic2GEiP7d6bhQ==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.8.3.tgz",
"integrity": "sha512-ytao285wKAjKBO6eULzLeqUDP5Zh7beQlGyHjgOMknk7FI0sNy+zGdh3CrCGIhkXSHU/DpukPwRu2SiKvIaIGA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/maker-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/maker-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3",
"cross-zip": "^4.0.0",
"fs-extra": "^10.0.0",
"got": "^11.8.5"
@@ -266,70 +266,70 @@
}
},
"node_modules/@electron-forge/plugin-auto-unpack-natives": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.8.1.tgz",
"integrity": "sha512-4URAgWX9qqqKe6Bfad0VmpFRrwINYMODfKGd2nFQrfHxmBtdpXnsWlLwVGE/wGssIQaTMI5bWQ6F2RNeXTgnhA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.8.3.tgz",
"integrity": "sha512-7tRhySvfdTrBC4PEhAzjzjJGT5dBSU6jhy3XlQ8LJH50jHIT9bioQq6dfn/3iw/VaD1ftGWKx+HlntYCmBhViw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/plugin-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/plugin-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/plugin-base": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.8.1.tgz",
"integrity": "sha512-iCZC2d7CbsZ9l6j5d+KPIiyQx0U1QBfWAbKnnQhWCSizjcrZ7A9V4sMFZeTO6+PVm48b/r9GFPm+slpgZtYQLg==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.8.3.tgz",
"integrity": "sha512-0CzPQlO3BGu5bLCrx2Xqo6B1yoHhA9wG9boZE58ANr8Qma1NQfAWZU3LnMmF3EdWNTX76PxpZeeb3QbPNcxSuA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/plugin-fuses": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.8.1.tgz",
"integrity": "sha512-dYTwvbV1HcDOIQ0wTybpdtPq6YoBYXIWBTb7DJuvFu/c/thj1eoEdnbwr8mT9hEivjlu5p4ls46n16P5EtZ0oA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.8.3.tgz",
"integrity": "sha512-OPWfoVsQ3xzK7GB3C6zoGlUu21RCOEQAm5+zg9VP1HJg5dsrKkqU8A2DsHGxe7PHthUCuQUgcls0ciDOHvckCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/plugin-base": "7.8.1",
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/plugin-base": "7.8.3",
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
},
"peerDependencies": {
"@electron/fuses": ">=1.0.0"
"@electron/fuses": "^1.0.0"
}
},
"node_modules/@electron-forge/publisher-base": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.8.1.tgz",
"integrity": "sha512-z2C+C4pcFxyCXIFwXGDcxhU8qtVUPZa3sPL6tH5RuMxJi77768chLw2quDWk2/dfupcSELXcOMYCs7aLysCzeQ==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.8.3.tgz",
"integrity": "sha512-kurRKVNyLsK2JgmVl88UHu0+qSH+PysMtk/xP0YX5sYNMVxRay8+S1T10tAh6Qom94KwpF3CLYtkebvxb/fq+A==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1"
"@electron-forge/shared-types": "7.8.3"
},
"engines": {
"node": ">= 16.4.0"
}
},
"node_modules/@electron-forge/shared-types": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.8.1.tgz",
"integrity": "sha512-guLyGjIISKQQRWHX+ugmcjIOjn2q/BEzCo3ioJXFowxiFwmZw/oCZ2KlPig/t6dMqgUrHTH5W/F0WKu0EY4M+Q==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.8.3.tgz",
"integrity": "sha512-gkZtD7ALXHPDOthJo1rQYLDNfG09fdDRMWvjEgaXdF3Z69xXFfnOWPNuOkRUODNalMnuuGs6l7jDl+QFQgHlDg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/tracer": "7.8.1",
"@electron-forge/tracer": "7.8.3",
"@electron/packager": "^18.3.5",
"@electron/rebuild": "^3.7.0",
"listr2": "^7.0.2"
@@ -339,14 +339,14 @@
}
},
"node_modules/@electron-forge/template-base": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.8.1.tgz",
"integrity": "sha512-k8jEUr0zWFWb16ZGho+Es2OFeKkcbTgbC6mcH4eNyF/sumh/4XZMcwRtX1i7EiZAYiL9sVxyI6KVwGu254g+0g==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.8.3.tgz",
"integrity": "sha512-C0tVODDNKoqhCf7T1HRONJs9DKAmjmk8Of0t8rVjT0ERDzMvLGlBByd785v5lFlKbGERyoaXsYltxPAu92G3aA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/core-utils": "7.8.1",
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/core-utils": "7.8.3",
"@electron-forge/shared-types": "7.8.3",
"@malept/cross-spawn-promise": "^2.0.0",
"debug": "^4.3.1",
"fs-extra": "^10.0.0",
@@ -357,14 +357,14 @@
}
},
"node_modules/@electron-forge/template-vite": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.8.1.tgz",
"integrity": "sha512-qzSlJaBYYqQAbBdLk4DqAE3HCNz4yXbpkb+VC74ddL4JGwPdPU57DjCthr6YetKJ2FsOVy9ipovA8HX5UbXpAg==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.8.3.tgz",
"integrity": "sha512-tDL5h+UO5iOzdEYNVsSu4zkUVN4RTxti5iXzcBquKd9Kgt/A/M7xHeuKj7g1Ds7Ul/n2XcFvcfgLcRmiXQeVDA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/template-base": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"@electron-forge/template-base": "7.8.3",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -372,14 +372,14 @@
}
},
"node_modules/@electron-forge/template-vite-typescript": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.8.1.tgz",
"integrity": "sha512-CccQhwUjZcc6svzuOi3BtbDal591DzyX2J5GPa6mwVutDP8EMtqJL1VyOHdcWO/7XjI6GNAD0fiXySOJiUAECA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.8.3.tgz",
"integrity": "sha512-HJjjY9xmlpl0vx10mrXdWn2RYHExfazACxmDNNmGO1eq3eqrQk/3R+NDGyqMJ7ajBsRVbkQNt+wayH7HkRJUjA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/template-base": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"@electron-forge/template-base": "7.8.3",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -387,14 +387,14 @@
}
},
"node_modules/@electron-forge/template-webpack": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.8.1.tgz",
"integrity": "sha512-DA77o9kTCHrq+W211pyNP49DyAt0d1mzMp2gisyNz7a+iKvlv2DsMAeRieLoCQ44akb/z8ZsL0YLteSjKLy4AA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.8.3.tgz",
"integrity": "sha512-1zkji5px1kDXbigFN5959anCf3HAVBvam3bHh2VejnCScegLQP3JBjAn2Nw2ILWq6ej5JNuA/V99b1dr11hPOw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/template-base": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"@electron-forge/template-base": "7.8.3",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -402,14 +402,14 @@
}
},
"node_modules/@electron-forge/template-webpack-typescript": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.8.1.tgz",
"integrity": "sha512-h922E+6zWwym1RT6WKD79BLTc4H8YxEMJ7wPWkBX59kw/exsTB/KFdiJq6r82ON5jSJ+Q8sDGqSmDWdyCfo+Gg==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.8.3.tgz",
"integrity": "sha512-Xz3X7YJvot08Xm+0BLIS28GJH+0z9vEN9xYX76SOL4jqDcHH8lRFpNWcE2HsxxxRbCVH+s0etVmACZcWoujUrw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@electron-forge/shared-types": "7.8.1",
"@electron-forge/template-base": "7.8.1",
"@electron-forge/shared-types": "7.8.3",
"@electron-forge/template-base": "7.8.3",
"fs-extra": "^10.0.0"
},
"engines": {
@@ -417,9 +417,9 @@
}
},
"node_modules/@electron-forge/tracer": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.8.1.tgz",
"integrity": "sha512-r2i7aHVp2fylGQSPDw3aTcdNfVX9cpL1iL2MKHrCRNwgrfR+nryGYg434T745GGm1rNQIv5Egdkh5G9xf00oWA==",
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.8.3.tgz",
"integrity": "sha512-YVVDaPEUOvR1z+DDdj8wR/vO9OSlC91wz4/2Iqe9rqQz8sztnnQBClMAZTqu9bkDTFyHrns8j8v7tPVuVS6ULQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -678,9 +678,9 @@
}
},
"node_modules/@electron/packager": {
"version": "18.3.6",
"resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.6.tgz",
"integrity": "sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q==",
"version": "18.4.2",
"resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.2.tgz",
"integrity": "sha512-5wr/6YoOhBlQoAloquKksY21Pa/2Eg4kq4y/+jOX+9smAFS4fcM3kG3KyhU/zEuwitxRjquq9/KxDNNhJbhc+w==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -690,6 +690,7 @@
"@electron/osx-sign": "^1.0.5",
"@electron/universal": "^2.0.1",
"@electron/windows-sign": "^1.0.0",
"@malept/cross-spawn-promise": "^2.0.0",
"debug": "^4.0.1",
"extract-zip": "^2.0.0",
"filenamify": "^4.1.0",
@@ -699,6 +700,7 @@
"junk": "^3.1.0",
"parse-author": "^2.0.0",
"plist": "^3.0.0",
"prettier": "^3.4.2",
"resedit": "^2.0.0",
"resolve": "^1.1.6",
"semver": "^7.1.3",
@@ -715,9 +717,9 @@
}
},
"node_modules/@electron/packager/node_modules/fs-extra": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
"integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
"integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -788,9 +790,9 @@
}
},
"node_modules/@electron/universal/node_modules/fs-extra": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
"integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
"integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -839,9 +841,9 @@
}
},
"node_modules/@electron/windows-sign/node_modules/fs-extra": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
"integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
"integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1153,9 +1155,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.16.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.0.tgz",
"integrity": "sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==",
"version": "22.17.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.17.2.tgz",
"integrity": "sha512-gL6z5N9Jm9mhY+U2KXZpteb+09zyffliRkZyZOHODGATyC5B1Jt/7TzuuiLkFsSUMLbS1OLmlj/E+/3KF4Q/4w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1210,9 +1212,9 @@
}
},
"node_modules/@xmldom/xmldom": {
"version": "0.8.10",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
"integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
"version": "0.8.11",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
"integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1247,9 +1249,9 @@
}
},
"node_modules/agent-base": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
"integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1327,9 +1329,9 @@
}
},
"node_modules/ansi-regex": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
"integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1535,9 +1537,9 @@
}
},
"node_modules/app-builder-lib/node_modules/@electron/universal/node_modules/fs-extra": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
"integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
"version": "11.3.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz",
"integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2792,9 +2794,9 @@
}
},
"node_modules/electron": {
"version": "37.2.0",
"resolved": "https://registry.npmjs.org/electron/-/electron-37.2.0.tgz",
"integrity": "sha512-dE6+qeg6SBUVd5d8CD2+GH82kh+gF1v40+hs+U+UOno681NMSGmBtgqwldQRpbvtnQDD7V2M9Cpfr3+Abw7aBg==",
"version": "37.3.1",
"resolved": "https://registry.npmjs.org/electron/-/electron-37.3.1.tgz",
"integrity": "sha512-7DhktRLqhe6OJh/Bo75bTI0puUYEmIwSzMinocgO63mx3MVjtIn2tYMzLmAleNIlud2htkjpsMG2zT4PiTCloA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -3976,9 +3978,9 @@
}
},
"node_modules/form-data": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
"integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4622,15 +4624,11 @@
}
},
"node_modules/ip-address": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
"integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz",
"integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==",
"dev": true,
"license": "MIT",
"dependencies": {
"jsbn": "1.1.0",
"sprintf-js": "^1.1.3"
},
"engines": {
"node": ">= 12"
}
@@ -4806,16 +4804,15 @@
}
},
"node_modules/jake": {
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
"integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
"version": "10.9.4",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz",
"integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
"async": "^3.2.6",
"filelist": "^1.0.4",
"minimatch": "^3.1.2"
"picocolors": "^1.1.1"
},
"bin": {
"jake": "bin/cli.js"
@@ -4825,9 +4822,9 @@
}
},
"node_modules/jiti": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
"integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz",
"integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==",
"dev": true,
"license": "MIT",
"bin": {
@@ -4847,13 +4844,6 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/jsbn": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
"integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
"dev": true,
"license": "MIT"
},
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -4890,9 +4880,9 @@
}
},
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
"integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6150,6 +6140,13 @@
"dev": true,
"license": "MIT"
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -6214,6 +6211,22 @@
"node": "^12.20.0 || >=14"
}
},
"node_modules/prettier": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/proc-log": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
@@ -6989,13 +7002,13 @@
}
},
"node_modules/socks": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz",
"integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==",
"version": "2.8.7",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
"integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
"dev": true,
"license": "MIT",
"dependencies": {
"ip-address": "^9.0.5",
"ip-address": "^10.0.1",
"smart-buffer": "^4.2.0"
},
"engines": {
@@ -7082,9 +7095,9 @@
}
},
"node_modules/spdx-license-ids": {
"version": "3.0.21",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz",
"integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==",
"version": "3.0.22",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
"integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
"dev": true,
"license": "CC0-1.0"
},
@@ -7093,7 +7106,8 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
"dev": true,
"license": "BSD-3-Clause"
"license": "BSD-3-Clause",
"optional": true
},
"node_modules/ssri": {
"version": "9.0.1",
@@ -7466,9 +7480,9 @@
"optional": true
},
"node_modules/tmp": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
"integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz",
"integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7584,9 +7598,9 @@
}
},
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"version": "5.9.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
"dev": true,
"license": "Apache-2.0",
"bin": {

View File

@@ -1,9 +1,9 @@
{
"name": "freedom-loader",
"productName": "Freedom Loader",
"version": "1.1.1",
"version": "1.1.3",
"author": "MasterAcnolo",
"description": "Freedom Loader, parce que nous le valons bien",
"description": "Freedom Loader",
"main": "main.js",
"scripts": {
"start": "electron-forge start",

View File

@@ -20,12 +20,23 @@ const { createLogger, format, transports } = require("winston");
const DailyRotateFile = require("winston-daily-rotate-file");
const fs = require("fs"); // Pour vérifier/créer le dossier de logs
const path = require("path"); // Pour gérer proprement les chemins
const os = require("os"); // Pour gérer les chemins aussi
// Définition du dossier où seront stockés les logs
const logDir = path.join(__dirname, "../logs");
// const logDir = path.join(__dirname, "../logs"); Désactivé parce que cela requiert d'exec en admin mode. Donc pas pratique pour les gens
let logDir;
if (process.platform === "win32") {
logDir = path.join(os.homedir(), "AppData", "Local", "FreedomLoader", "logs");
} else {
logDir = path.join(os.homedir(), ".freedomloader", "logs");
}
// Création du dossier logs sil nexiste pas encore
if (!fs.existsSync(logDir)) fs.mkdirSync(logDir);
//if (!fs.existsSync(logDir)) fs.mkdirSync(logDir); OBSOLETE
fs.mkdirSync(logDir, { recursive: true }); // Evite les erreurs
// Fonction utilitaire pour générer une ligne indiquant le début dune session de logs
function getSessionStartLine() {
@@ -95,4 +106,5 @@ module.exports = {
logger,
logSessionStart,
logSessionEnd,
logDir,
};

View File

@@ -23,7 +23,7 @@ const logger = require("../logger").logger;
// Path vers le fichier exécutable yt-dlp (outil tiers pour le téléchargement)
// const ytDlpPath = path.join(__dirname, '../../yt-dlp.exe');
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.06.30.exe');
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.20.exe');
router.post("/", (req, res) => {
try {
@@ -76,13 +76,29 @@ router.post("/", (req, res) => {
// Construction du tableau d'arguments à passer à yt-dlp
// --no-continue pour forcer un téléchargement propre
// --restrict-filenames pour éviter les caractères problématiques dans les noms
const args = ["--no-continue", "--restrict-filenames"];
const args = [
"--no-continue", // pas de reprise, c'est un choix que j'ai fait voila
"--restrict-filenames", // noms de fichiers sans caractères spéciaux (Cyrilique, accents, etc.)
"--no-overwrites", // évite d'écraser un fichier existant
"--embed-thumbnail", // ajoute la pochette
"--add-metadata", // ajoute les tags (titre, artiste, etc.)
"--concurrent-fragments", "8",// accélère le téléchargement
"--retries", "10", // réessaie jusqu'à 10 fois en cas d'erreur
"--fragment-retries", "10" // réessaie aussi 10 fois chaque fragment
];
// Si l'option audioOnly est activée, on ajoute les flags pour extraction audio en mp3
if (options.audioOnly) {
args.push("--extract-audio", "--audio-format", "mp3");
args.push(
"-f",
"bestaudio",
"--extract-audio",
"--audio-format",
"mp3",
);
}
// Correspondance entre la qualité choisie et le format à demander à yt-dlp
const qualityMap = {
best: "bestvideo+bestaudio/best",

View File

@@ -24,7 +24,7 @@ const fs = require("fs");
const { logger } = require("../logger"); // On récupère ton logger Winston
// Path absolu vers l'exécutable yt-dlp
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.06.30.exe');
const ytDlpPath = path.join(__dirname, '../../yt-dlp 2025.08.20.exe');
// Vérification que yt-dlp.exe existe bien au lancement du module
if (!fs.existsSync(ytDlpPath)) {