diff --git a/CHANGELOG.md b/CHANGELOG.md index 6598032..1c3ad0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,13 @@ # Changelog -## Unreleased +## 1.0.20 - 2026-09-06 -- Respond to every rapid click on the queue details toggle, allowing the animation to reverse immediately without a perceived cooldown. -- Animate queue details expanding and collapsing with a matching chevron rotation; keep collapsed file actions out of keyboard navigation. -- Keep the waiting queue status unboxed with a transparent background and its yellow status dot. -- Rework queue cards with two-line titles, clearer status badges, larger dates below the progress bar on the right, and 32-pixel remove and retry buttons. Keep paused progress visible and wrap long download errors. -- Expand or collapse queue details by double-clicking the card surface or using the dedicated keyboard-accessible toggle. Add isolated queue-card checks for both languages and themes. -- Resolve the repository icon during Windows hot development even when the branded Electron executable reports itself as packaged, preventing a startup crash. +- Make queue cards easier to read with two-line titles, larger dates below the progress bar on the right, and 32-pixel remove and retry buttons. +- Show clearer download states, preserve the progress percentage while paused, and wrap long error messages. Keep the waiting status simple with a yellow dot and no badge background or outline. +- Open and close download details by double-clicking the card surface or using the dedicated keyboard-accessible arrow. +- Animate details smoothly in both directions with a matching arrow rotation. Respond immediately to rapid clicks and keep collapsed file actions out of keyboard navigation. +- Fix the Windows hot-development startup crash caused by looking for the application icon in the packaged resource directory. +- Add isolated queue-card checks for both languages and themes, keyboard controls, animation and rapid clicks; exclude local development data and bundled third-party tools from linting. ## 1.0.19 - 2026-08-14 diff --git a/PROJECT_MEMORY.md b/PROJECT_MEMORY.md index 142ac8f..d64dd84 100644 --- a/PROJECT_MEMORY.md +++ b/PROJECT_MEMORY.md @@ -55,7 +55,7 @@ npm run dev ## Entscheidungen und offene nächste Schritte -- Zunächst den aktuellen Quellstand und die Entwicklungsumgebung wiederherstellen. Keine neue Version veröffentlichen. +- Wiederherstellung abgeschlossen. Sascha hat am 6. September 2026 die Veröffentlichung ausdrücklich beauftragt; Release 1.0.20 wird auf `public-v1` vorbereitet, mit identischen Assets und englischen/deutschen Changelogs auf GitHub/Forgejo. - Die gewünschte Umbenennung zu `Twitch Downloader` ist lokal umgesetzt. Eine Umbenennung der Remotes und der Anwendung samt Update-Kompatibilität ist gesondert abzustimmen und zu prüfen. - Die Standardbranches wurden bei der Wiederherstellung nicht umgestellt oder mit älteren Entwicklungslinien zusammengeführt. - Nächste fachliche Änderung von Sascha entgegennehmen; vor Änderungen diese Memory, `README.md`, `CHANGELOG.md` und den Git-Status lesen. @@ -91,3 +91,9 @@ npm run dev - Lint ohne Fehler bei den bekannten 15 Warnungen. Lokale Entwicklungsdaten und installierte Drittanbieter-Werkzeuge sind nun ausdrücklich von ESLint ausgeschlossen; vier Lint-Konfigurationstests erfolgreich. - Security-/Public-Manifest-, CI- und E2E-Isolationsprüfungen erfolgreich. Der neue UI-Test steht in der öffentlichen Datei-Allowlist; Entwicklungsdaten und Screenshots bleiben außerhalb von Git. - Hot-Dev bleibt aktiv. Keine Veröffentlichung und kein Live-Download für diese UI-Änderung. + +Release-Vorbereitung 1.0.20 am 6. September 2026: + +- Versionsangaben in Paket, Lockfile, Oberfläche, README und Release-Vertrag auf 1.0.20 gesetzt; Changelog datiert. +- CI-Race im Queue-UI-Test behoben: Die Hintergrundsynchronisierung erhält dieselben Offline-Fixtures wie der Renderer, damit sie die Testkarten auf langsameren Runnern nicht entfernt. Keine Änderung am produktiven Queue-Verhalten. +- Vollständige lokale Release-Prüfung und Installer-Build laufen; Veröffentlichung erst nach erfolgreicher Validierung. Abschließende Release-Verifikation folgt hier. diff --git a/README.md b/README.md index 4b3aaf0..392eeef 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ The application works in public mode without a Twitch login. Connecting a Twitch ## Installation 1. Open the [latest GitHub release](https://github.com/Sucukdeluxe/Twitch-VOD-Manager/releases/latest). -2. Download `Twitch-VOD-Manager-Setup-1.0.18.exe`. +2. Download `Twitch-VOD-Manager-Setup-1.0.20.exe`. 3. Run the installer and choose the installation directory. 4. Start Twitch VOD Manager and add a streamer. diff --git a/package-lock.json b/package-lock.json index 71de25d..a1d5677 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "twitch-vod-manager", - "version": "1.0.19", + "version": "1.0.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "twitch-vod-manager", - "version": "1.0.19", + "version": "1.0.20", "license": "MIT", "dependencies": { "axios": "^1.16.1", diff --git a/package.json b/package.json index 1f02c0c..5ce2cb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "twitch-vod-manager", - "version": "1.0.19", + "version": "1.0.20", "description": "Twitch VOD Manager - Download Twitch VODs easily", "main": "dist/main.js", "author": "Sucukdeluxe", diff --git a/scripts/smoke-test-public-release-config.js b/scripts/smoke-test-public-release-config.js index 2d7493f..ba91fe0 100644 --- a/scripts/smoke-test-public-release-config.js +++ b/scripts/smoke-test-public-release-config.js @@ -13,7 +13,7 @@ const installerSource = fs.readFileSync(path.join(root, 'build', 'installer.nsh' const installerSmokeSource = fs.readFileSync(path.join(root, 'scripts', 'smoke-test-installer.js'), 'utf8'); const manifestPath = path.join(root, 'scripts', 'public-release-files.json'); const failures = []; -const expectedVersion = '1.0.19'; +const expectedVersion = '1.0.20'; function check(condition, message) { if (!condition) failures.push(message); diff --git a/scripts/smoke-test-queue-cards.js b/scripts/smoke-test-queue-cards.js index a8dbd1d..b3c5cda 100644 --- a/scripts/smoke-test-queue-cards.js +++ b/scripts/smoke-test-queue-cards.js @@ -17,7 +17,8 @@ async function main() { const errors = []; win.on('pageerror', (error) => errors.push(String(error))); await win.waitForFunction(() => typeof window.showTab === 'function' && typeof window.changeLanguage === 'function'); - await win.evaluate(() => { + await win.waitForFunction((version) => appVersion === version, require('../package.json').version); + const fixtures = await win.evaluate(() => { showTab('vods'); const panel = document.querySelector('[data-context-for="vods"]'); panel.dataset.vodsLayout = 'tabs'; @@ -31,7 +32,14 @@ async function main() { { id: 'live', status: 'downloading', title: 'Live aus dem Studio', progress: 0, isLive: true, recordingHealth: 'ok', progressStatus: 'Live-Aufnahme läuft' } ].map((item) => ({ url: `https://example.invalid/${item.id}`, date: '2026-09-06T10:00:00Z', streamer: 'Beispielkanal', duration_str: '2h 34m', ...item })); renderQueue(); + return queue; }); + await app.evaluate(({ ipcMain }, items) => { + ipcMain.removeHandler('get-queue'); + ipcMain.handle('get-queue', async () => items); + }, fixtures); + await win.evaluate(() => syncQueueAndDownloadState()); + assert.equal(await win.locator('#queueList .queue-item').count(), fixtures.length, 'Queue fixtures survive background synchronization'); for (const theme of ['twitch', 'light']) { for (const language of ['de', 'en']) { await win.setViewportSize({ width: 1280, height: 900 }); @@ -126,6 +134,8 @@ async function main() { ipcMain.removeHandler('remove-from-queue'); ipcMain.handle('remove-from-queue', async (_event, id) => { if (id !== 'pending') throw new Error('Unexpected removal target'); + ipcMain.removeHandler('get-queue'); + ipcMain.handle('get-queue', async () => []); return []; }); }); diff --git a/src/index.html b/src/index.html index ad8275e..47699b1 100644 --- a/src/index.html +++ b/src/index.html @@ -945,7 +945,7 @@