release: v2.1.16

Add queue search and filters, safe upload diagnostics, session report exports, account check visibility, and explicit interrupted-upload recovery.\n\nSanitize diagnostic response snippets in persisted results and rotation logs, protect CSV exports against formula injection, and add regression coverage for diagnostics and reports.
This commit is contained in:
Sucukdeluxe
2026-08-12 12:04:47 +02:00
parent c843b4e623
commit a299fc204b
16 changed files with 361 additions and 17 deletions
+16
View File
@@ -81,6 +81,7 @@ const DEFAULTS = {
showDropTarget: false,
globalMaxSpeedKbs: 0, // 0 = unlimited global speed
pendingQueue: null,
uploadRecovery: null,
scramble: {
active: false,
prefix: '',
@@ -584,6 +585,19 @@ class ConfigStore {
}, options);
}
saveUploadRecovery(uploadRecovery, options = {}) {
const snapshot = uploadRecovery === null || uploadRecovery === undefined ? null : this._clone(uploadRecovery);
return this._enqueueWrite(() => {
const current = this.load();
current.globalSettings = {
...(current.globalSettings || {}),
uploadRecovery: snapshot
};
this._guardHosters(current, false);
return this._commit(current);
}, options);
}
saveLastBrowseDirectory(directory) {
const snapshot = String(directory || '').trim();
return this._enqueueWrite(() => {
@@ -607,6 +621,7 @@ class ConfigStore {
current.globalSettings = {
...snapshot,
pendingQueue: currentGlobalSettings.pendingQueue ?? null,
uploadRecovery: currentGlobalSettings.uploadRecovery ?? null,
lastBrowseDirectory: currentGlobalSettings.lastBrowseDirectory || '',
diagnostics: this._clone(currentGlobalSettings.diagnostics || {}),
historyRetention: currentGlobalSettings.historyRetention || 'all',
@@ -640,6 +655,7 @@ class ConfigStore {
const current = this.load();
const globalSettings = this._clone(config.globalSettings);
globalSettings.pendingQueue = current.globalSettings.pendingQueue ?? null;
globalSettings.uploadRecovery = current.globalSettings.uploadRecovery ?? null;
return this._commit({
hosters: this._clone(config.hosters),
hosterSettings: this._clone(config.hosterSettings),