Commit Graph

466 Commits

Author SHA1 Message Date
Administrator
51bc1fb5c1 release: v3.3.66 2026-06-11 13:37:27 +02:00
Administrator
fa3ba67ced fix(rotation): suspect byse rejections now reach every account instead of dying on the first
Root cause of "4 accounts configured, rotation only ever uses 1-3": byse
returns HTTP 200 + per-file status "Not video file format" for valid MKVs
above an account's size tier (proven from the live rotation log: account
4ha0 accepted 1158 files up to 2.62 GB and deterministically rejected all
6 files >= 2.81 GB with that status, each costing a full ~20 min upload).
The parser tagged this fileRejected, which (a) skipped the 30s recovery
poll that was originally BUILT for this misleading status (guard regression
from "byse skips 30s recovery poll on explicit reject") and (b) made the
upload manager skip rotation entirely - so the remaining accounts were
never tried and the files failed forever. Account selection is
primary-first failover, so a later account only ever runs when every
earlier one is hard-failed or disabled, which matches the reported
"account 4 only gets used when I disable the others".

The fix, layered:
- parseByseResult flags "Not video file format" as err.suspectReject
  (alongside fileRejected). Genuine rejections (Duplicate, too small,
  account-level disk-full) behave exactly as before.
- uploadFile runs the byse recovery poll again for suspect rejections
  (the file often registers asynchronously despite the status), but skips
  it when the caller's file probe says the upload is genuinely not a video
  (new opts.probeIsVideoLike, threaded from the upload manager's probe).
  Poll helpers now swallow an abort during their sleep and return null so
  a cancelled poll surfaces the original error instead of a bare
  AbortError.
- upload-manager: on a suspect rejection of a probe-verified video, the
  file gets ONE attempt on each remaining pool account (new accountPools
  from main.js, refreshed on save-config) - WITHOUT blacklisting the
  rejecting account, which keeps working for smaller files. A per-batch
  size memo (hoster:account -> smallest rejected size) plus a known-good
  account preference prevent re-uploading every following oversized file
  through the whole chain: the second file skips known-limited accounts
  outright and goes straight to the account that took the first one.
  Alternates that fail with a genuine account error (quota/ban/full) are
  marked failed in-batch so no later file burns a multi-GB upload on them;
  deliberately no account-failed emit there, as repointing the hoster-wide
  override would reroute normal-sized files away from a healthy primary.
- Rotation hardening from the adversarial review: the rotated-to retry
  loop now fast-breaks on file-rejected/hoster-transient errors instead of
  burning maxAttempts full uploads, and a file-class error on a rotated
  account no longer blacklists that account (it fails only the file).
  Cancelling mid-alternates or mid-rotation now records the job as
  aborted instead of error (this also stops the batch webhook from firing
  on fully user-cancelled batches). New upload-failure rot-logs are
  guarded against logging user aborts as failures; rotation retries are
  now visible in the rotation log at all (previously failures on a
  rotated-to account were never logged, which is why account 2's death
  was invisible in the support log).
- file-probe: the mpeg-ts signature required only a single leading 0x47
  byte, so GIFs and "G"-prefixed text classified as video and would have
  qualified junk for pool-wide alternate uploads; it now requires TS
  sync-byte periodicity (0x47 at offsets 0/188/376) and the probe head
  read grew from 64 to 512 bytes to make that check possible. GIF gets
  its own non-video signature.

Tests: 9 new/reworked across suspect-reject-alternates.test.js (alternate
walk, no blacklist, memo short-circuit, account-error marking, abort
labeling, probe gating) and byse-reject-recovery.test.js (suspect polls +
recovers, empty poll throws suspectReject, Duplicate still fast-fails,
probe-confirmed non-video skips the poll) plus a TS/GIF probe regression
test. Full suite 276 green.
2026-06-11 13:36:43 +02:00
Administrator
221eb55380 release: v3.3.65 2026-06-10 23:16:56 +02:00
Administrator
c75cb6c079 fix(ui): files panel sort cache goes stale at the 2000-row cap — newest entry never appeared without re-sorting 2026-06-10 23:16:31 +02:00
Administrator
3573c6860a release: v3.3.64 2026-06-10 16:53:05 +02:00
Administrator
6df00a0948 revert(network): remove network-outage auto-pause entirely — false positives froze batches 2026-06-10 16:52:37 +02:00
Administrator
8e03212554 release: v3.3.63 2026-06-10 15:42:37 +02:00
Administrator
e69635bcf7 fix(backup): exclude upload history from export and import — Verlauf stays local 2026-06-10 15:42:09 +02:00
Administrator
99a2c2fe96 release: v3.3.62 2026-06-10 00:08:26 +02:00
Administrator
0e5eaa89e6 fix(webhook): retry+429+status handling, await before shutdown, error-path notify, abort/auto-retry suppress, Discord limits 2026-06-10 00:08:02 +02:00
Administrator
8300d13817 release: v3.3.61 2026-06-09 23:41:05 +02:00
Administrator
e1d04d0838 feat(webhook): optional Discord ping (user-id / role / @here / @everyone) so batch-done actually notifies 2026-06-09 23:40:38 +02:00
Administrator
d67cfc0b51 release: v3.3.60 2026-06-09 21:56:05 +02:00
Administrator
1d116ac4bf fix(ui+byse): live newest-on-top in files panel; byse skips 30s recovery poll on explicit reject 2026-06-09 21:55:34 +02:00
Administrator
f323f434ce release: v3.3.59 2026-06-09 20:40:36 +02:00
Administrator
34aaa36571 feat(unattended): network outage auto-pause/resume, post-batch auto-retry rounds, webhook notifications 2026-06-09 20:39:59 +02:00
Administrator
7749699830 release: v3.3.58 2026-06-09 06:02:16 +02:00
Administrator
de371e56a3 fix(ui): hydrate missing file sizes for queued/waiting rows + show '...' fallback 2026-06-09 06:01:42 +02:00
Administrator
b93617ace9 release: v3.3.57 2026-06-09 05:03:05 +02:00
Administrator
82e0163d3f fix(ui): 'Ausgewählte starten' during active upload also accepts preview jobs 2026-06-09 05:02:28 +02:00
Administrator
05fae3209d release: v3.3.56 2026-06-09 04:58:22 +02:00
Administrator
0f72478a2e fix(ui): remove batch summary modal at end of upload 2026-06-09 04:57:54 +02:00
Administrator
f0fb5f881f release: v3.3.55 2026-06-08 23:04:14 +02:00
Administrator
d3fda31243 fix(ui): ETA includes waiting jobs — folder-added files now ship with bytesTotal 2026-06-08 23:03:29 +02:00
Administrator
127807d62a release: v3.3.54 2026-06-08 22:03:41 +02:00
Administrator
6cd7498f70 fix(critical): safeSend infinite recursion + queueMicrotask, plus 6 audit findings 2026-06-08 22:03:19 +02:00
Administrator
ddf2710fc6 release: v3.3.53 2026-06-08 21:28:34 +02:00
Administrator
0f57aef7c7 fix(stability): wrap hot timers/callbacks in try/catch, safeSend, updater waits for batch 2026-06-08 21:28:12 +02:00
Administrator
f0608dcda1 release: v3.3.52 2026-06-08 21:19:19 +02:00
Administrator
9b10a4356f feat(diagnostics): full crash instrumentation — never silently die again 2026-06-08 21:18:54 +02:00
Administrator
d159ac484a release: v3.3.51 2026-06-08 19:22:54 +02:00
Administrator
f4b5fadc5f fix(ui): first click on sort header sets default direction instead of toggling 2026-06-08 19:22:29 +02:00
Administrator
169817f707 release: v3.3.50 2026-06-08 14:20:16 +02:00
Administrator
1418c2bc17 feat(backup): plain JSON export/import + clearer error when decrypt fails 2026-06-08 14:19:47 +02:00
Administrator
8d33141294 release: v3.3.49 2026-06-08 03:04:25 +02:00
Administrator
35341b522a fix(accounts): allow health check during active uploads + toast when already running 2026-06-08 03:04:00 +02:00
Administrator
f9aa7f4168 release: v3.3.48 2026-06-08 01:30:19 +02:00
Administrator
d9199f8aaf fix(perf): chunked startBatch + async rotLog — kill remaining 30s freeze on 5k+ jobs 2026-06-08 01:29:31 +02:00
Administrator
ba4642e09a release: v3.3.47 2026-06-07 21:11:53 +02:00
Administrator
d59c5c1df8 perf: per-batch baseline cache, async folder walk, history-table fast path, progress IPC batching 2026-06-07 21:11:04 +02:00
Administrator
4bb18f7abc release: v3.3.46 2026-06-07 20:59:34 +02:00
Administrator
125e5f55ea fix(perf): kill per-progress renderer-to-main IPC + drop redundant queued emit + cache fileSize 2026-06-07 20:59:07 +02:00
Administrator
79fe3037eb release: v3.3.45 2026-06-07 20:41:25 +02:00
Administrator
d280765feb fix(perf): freeze on Start with 2000+ jobs — gate probe + rot-log behind semaphore 2026-06-07 20:40:55 +02:00
Administrator
b0b86e5016 release: v3.3.44 2026-06-07 20:33:07 +02:00
Administrator
cf35f4401d feat(ui): per-hoster success rate, session-paused badge, post-batch retry, link export formats 2026-06-07 20:32:35 +02:00
Administrator
98eba0447d release: v3.3.43 2026-06-07 18:50:24 +02:00
Administrator
5fb313273d feat(diagnostics): file-format probe + structured upload-start/failure rot-log 2026-06-07 18:49:54 +02:00
Administrator
c44dde5396 release: v3.3.42 2026-06-07 16:35:19 +02:00
Administrator
f42c55c521 feat(diagnostics): log levels, support bundle export, verbose toggle, log paths panel 2026-06-07 16:34:51 +02:00