release: publish Twitch VOD Manager 1.0.3

Polish navigation, settings, streamer and queue workflows; add safe pause and partial-file lifecycle handling; apply the product identity across Windows surfaces; and replace the public README with a complete English product guide and isolated screenshot.
This commit is contained in:
Sucukdeluxe
2026-08-10 19:25:08 +02:00
parent f9e415da88
commit b3c2a8b9fd
48 changed files with 4035 additions and 826 deletions
+41
View File
@@ -0,0 +1,41 @@
import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import * as ResEdit from 'resedit';
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
import { prepareWindowsDevExecutable } from './dev-executable';
let tempDirectory: string;
beforeEach(() => {
tempDirectory = fs.mkdtempSync(path.join(os.tmpdir(), 'tvm-dev-exe-'));
});
afterEach(() => {
fs.rmSync(tempDirectory, { recursive: true, force: true });
});
describe.runIf(process.platform === 'win32')('prepareWindowsDevExecutable', () => {
it('bettet App-Icon und Produktnamen in die gestartete Entwicklungs-EXE ein', async () => {
const sourcePath = path.join(process.env.WINDIR || 'C:\\Windows', 'System32', 'where.exe');
const destinationPath = path.join(tempDirectory, 'Twitch VOD Manager.exe');
const iconPath = path.resolve('build/icon.ico');
await prepareWindowsDevExecutable({
sourcePath,
destinationPath,
iconPath,
version: '1.0.3'
});
const executable = ResEdit.NtExecutable.from(fs.readFileSync(destinationPath));
const resources = ResEdit.NtExecutableResource.from(executable);
const iconGroups = ResEdit.Resource.IconGroupEntry.fromEntries(resources.entries);
const versionInfo = ResEdit.Resource.VersionInfo.fromEntries(resources.entries)[0];
const strings = versionInfo.getStringValues(versionInfo.getAllLanguagesForStringValues()[0]);
expect(iconGroups[0].icons).toHaveLength(6);
expect(strings.ProductName).toBe('Twitch VOD Manager');
expect(strings.FileDescription).toBe('Twitch VOD Manager');
});
});