release: prepare v2.0.70

Ship authenticated Real-Debrid browser-form generation with isolated lifecycle recovery, restore reliable download sorting and clipboard handling from the post-v2.0.67 fixes, and localize item-log timestamps while preserving machine-readable runtime logs.
This commit is contained in:
Sucukdeluxe
2026-08-24 04:38:27 +02:00
parent 7bd31185b0
commit 06e5bf4340
11 changed files with 1280 additions and 242 deletions
+29 -6
View File
@@ -30,9 +30,12 @@ describe("item-log", () => {
expect(logPath).not.toBeNull();
expect(fs.existsSync(logPath!)).toBe(true);
const content = fs.readFileSync(logPath!, "utf8");
expect(content).toContain("Item-Log Start");
expect(content).toContain("episode.part2.rar");
const content = fs.readFileSync(logPath!, "utf8");
expect(content).toContain("Item-Log Start");
expect(content).toContain("episode.part2.rar");
expect(content).toMatch(/^=== Item-Log Start: \d{2}\.\d{2}\.\d{4} - \d{2}:\d{2}:\d{2} \|/m);
expect(content).toMatch(/^\d{2}\.\d{2}\.\d{4} - \d{2}:\d{2}:\d{2} \[INFO\] Item-Kontext initialisiert/m);
expect(content).not.toMatch(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/);
});
it("writes detail events into the item log", async () => {
@@ -60,9 +63,29 @@ describe("item-log", () => {
expect(logPath).not.toBeNull();
const content = fs.readFileSync(logPath!, "utf8");
expect(content).toContain("Entpack-Fehler");
expect(content).toContain("archive=episode.part2.rar");
expect(content).toContain("code=missing_parts");
});
expect(content).toContain("archive=episode.part2.rar");
expect(content).toContain("code=missing_parts");
expect(content).toMatch(/^\d{2}\.\d{2}\.\d{4} - \d{2}:\d{2}:\d{2} \[ERROR\] Entpack-Fehler/m);
});
it("writes the localized timestamp in the item log end marker", () => {
const baseDir = fs.mkdtempSync(path.join(os.tmpdir(), "rd-ilog-"));
tempDirs.push(baseDir);
initItemLogs(baseDir);
const logPath = ensureItemLog({
itemId: "item-end",
packageId: "pkg-end",
packageName: "Ende Paket",
fileName: "episode.rar",
targetPath: "C:\\downloads\\Ende Paket\\episode.rar"
});
shutdownItemLogs();
const content = fs.readFileSync(logPath!, "utf8");
expect(content).toMatch(/^=== Item-Log Ende: \d{2}\.\d{2}\.\d{4} - \d{2}:\d{2}:\d{2} ===$/m);
});
it("keeps traversal-like item ids inside the item log directory", () => {
const baseDir = fs.mkdtempSync(path.join(os.tmpdir(), "rd-ilog-"));