From c375491c88e20d53153497a170b636b6db27a317 Mon Sep 17 00:00:00 2001 From: Sucukdeluxe Date: Fri, 21 Aug 2026 10:42:24 +0200 Subject: [PATCH] release: prepare v2.0.52 --- CHANGELOG.md | 17 +++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- tests/public-release-metadata.test.ts | 10 +++++++--- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6552c25..4920c92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to Multi-Debrid Downloader are documented in this file. ## [Unreleased] +## [2.0.52] - 2026-08-21 + +### Rolling account statistics + +- Added a true rolling Last 24 Hours range directly after Today in Statistics. +- Attributed downloaded traffic to the exact Real-Debrid, Mega-Debrid, or Debrid-Link account that produced each direct link. +- Displayed the known account username with its provider while retaining safe fallback labels for accounts without checked identity data. +- Kept the rolling total accurate across midnight, account disablement, deletion, application restarts, and session-statistics resets. +- Started exact rolling account collection after the upgrade without inventing historical account ownership from older daily totals. + +### Statistics precision and performance + +- Kept primary statistics data totals in gigabytes above 1 TB so large daily volumes remain precise, for example 1,250 GB instead of 1.2 TB. +- Stored traffic in sparse minute buckets with a bounded 48-hour retention window. +- Maintained the visible 24-hour aggregate incrementally and kept raw minute history out of frequent renderer snapshots. +- Preserved full rolling history in encrypted full backups while removing account IDs and labels from support statistics. + ## [2.0.51] - 2026-08-21 ### In-app updates diff --git a/package-lock.json b/package-lock.json index ba86930..2d7266a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "multi-debrid-downloader", - "version": "2.0.51", + "version": "2.0.52", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "multi-debrid-downloader", - "version": "2.0.51", + "version": "2.0.52", "license": "MIT", "dependencies": { "adm-zip": "0.6.0", diff --git a/package.json b/package.json index 1e45fc5..1618255 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "multi-debrid-downloader", - "version": "2.0.51", + "version": "2.0.52", "description": "Desktop downloader", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/tests/public-release-metadata.test.ts b/tests/public-release-metadata.test.ts index 5ee5076..31cd321 100644 --- a/tests/public-release-metadata.test.ts +++ b/tests/public-release-metadata.test.ts @@ -1,8 +1,9 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import crypto from "node:crypto"; -import { spawnSync } from "node:child_process"; +import crypto from "node:crypto"; +import { spawnSync } from "node:child_process"; +import { finished } from "node:stream/promises"; import { afterEach, describe, expect, it } from "vitest"; import { createPackage } from "@electron/asar"; @@ -47,7 +48,10 @@ async function createFixtureAsar(version: string): Promise { fs.mkdirSync(path.join(sourceDir, "build", "main", "main"), { recursive: true }); fs.writeFileSync(path.join(sourceDir, "package.json"), JSON.stringify({ name: "multi-debrid-downloader", version }), "utf8"); fs.writeFileSync(path.join(sourceDir, "build", "main", "main", "main.js"), `var package_default = { name: "multi-debrid-downloader", version: "${version}" };`, "utf8"); - await createPackage(sourceDir, outputPath); + const output = await createPackage(sourceDir, outputPath) as unknown as NodeJS.WritableStream | undefined; + if (output && typeof output.once === "function" && !(output as { writableFinished?: boolean }).writableFinished) { + await finished(output); + } const payload = fs.readFileSync(outputPath); fs.rmSync(rootDir, { recursive: true, force: true }); return payload;