release: Multi-Hoster-Upload 2.1.1

Add live English and German interface switching, animated navigation and history controls, improved update changelogs, remembered upload folders, reliable repeated hot reloads, and refreshed public documentation.
This commit is contained in:
Sucukdeluxe
2026-08-10 18:31:36 +02:00
parent 3fc8cca329
commit b6fce38b8b
19 changed files with 1658 additions and 88 deletions
+25 -1
View File
@@ -1364,6 +1364,7 @@ function createWindow() {
minWidth: 800,
minHeight: 550,
backgroundColor: '#0f0f0f',
icon: path.join(__dirname, 'assets', 'app_icon.ico'),
autoHideMenuBar: true,
webPreferences: {
contextIsolation: true,
@@ -1799,15 +1800,34 @@ async function _dispatchHealthCheck(hoster, hosterConfig, otp) {
return { status: 'skipped', message: 'Kein Health-Check fuer diesen Hoster' };
}
function getUploadBrowseDirectory() {
const savedDirectory = configStore.load().globalSettings.lastBrowseDirectory;
if (savedDirectory) {
try {
if (fs.statSync(savedDirectory).isDirectory()) return savedDirectory;
} catch {}
}
return app.getPath('downloads');
}
async function rememberUploadBrowseDirectory(selectedPath, selectedDirectory = false) {
if (!selectedPath) return;
const directory = selectedDirectory ? selectedPath : path.dirname(selectedPath);
await configStore.saveLastBrowseDirectory(directory);
}
ipcMain.handle('select-files', async () => {
const result = await dialog.showOpenDialog(mainWindow, {
defaultPath: getUploadBrowseDirectory(),
properties: ['openFile', 'multiSelections'],
filters: [
{ name: 'Alle Dateien', extensions: ['*'] },
{ name: 'Videos', extensions: ['mp4', 'mkv', 'avi', 'mov', 'wmv', 'flv', 'webm'] }
]
});
return result.canceled ? null : result.filePaths;
if (result.canceled || !result.filePaths.length) return null;
await rememberUploadBrowseDirectory(result.filePaths[0]);
return result.filePaths;
});
// Debug self-test: runs a minimal upload in the main process to verify events work
@@ -1837,9 +1857,11 @@ ipcMain.handle('debug-test-upload', async () => {
ipcMain.handle('select-folder', async () => {
const result = await dialog.showOpenDialog(mainWindow, {
defaultPath: getUploadBrowseDirectory(),
properties: ['openDirectory', 'multiSelections']
});
if (result.canceled || !result.filePaths.length) return null;
await rememberUploadBrowseDirectory(result.filePaths[0], true);
const files = [];
for (const folder of result.filePaths) await walkFolderAsync(folder, files);
@@ -1848,9 +1870,11 @@ ipcMain.handle('select-folder', async () => {
ipcMain.handle('select-folder-with-sizes', async () => {
const result = await dialog.showOpenDialog(mainWindow, {
defaultPath: getUploadBrowseDirectory(),
properties: ['openDirectory', 'multiSelections']
});
if (result.canceled || !result.filePaths.length) return null;
await rememberUploadBrowseDirectory(result.filePaths[0], true);
const files = [];
for (const folder of result.filePaths) await walkFolderAsync(folder, files);