Commit Graph

376 Commits

Author SHA1 Message Date
Administrator
ccfb7c18ba release: v2.2.1 2026-03-21 08:46:57 +01:00
Administrator
176cadc2dd 🐛 fix(queue): deleted jobs reappear after restart
Three root causes fixed:
- handleProgress() re-created deleted jobs from stale progress callbacks
- Queue save was debounced (10s during uploads), deletion lost on app close
- Delete was blocked during active uploads (removed !uploading guard)

Now: deletions save immediately, deleted IDs are tracked to prevent
re-creation, and active uploads are cancelled when their jobs are deleted.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 08:46:19 +01:00
Administrator
5569c690a1 release: v2.2.0 2026-03-20 16:11:41 +01:00
Administrator
beba96c21b feat(doodstream): add OTP input support for web login
When Doodstream requires 2FA, the account modal now dynamically
shows an OTP input field so the user can enter the code from
their email and complete the login without restarting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 16:09:33 +01:00
Administrator
8f077868cc fix: account for invisible DWM frame borders in click mapping
Windows 10/11 getBounds() includes ~7px invisible resize borders that
are not included in the window capture, causing click offset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:18 +01:00
Administrator
f19d883a69 fix: native resolution capture + correct click offset for title bar
- Remove restrictive resolution constraints, capture at native res
- Account for window frame/title bar when mapping click coordinates
  (capture includes title bar but sendInputEvent is content-relative)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:55:46 +01:00
Administrator
b4211a7d50 fix: use getMediaSourceId() for exact window capture
Instead of enumerating all sources and matching by title (which falls
back to full screen capture), use BrowserWindow.getMediaSourceId() to
get the exact media source ID for the app window.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:52:22 +01:00
Administrator
c9d038d588 debug: send capture errors back via signaling channel
If getCaptureStream fails, send error back through WebSocket so it
appears in proxy logs for diagnosis.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:49:07 +01:00
Administrator
82b597506b debug: add IPC logging from capture window to main process
Capture window logs now forwarded to main process via IPC to diagnose
why video tracks are missing from the WebRTC answer SDP.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:46:18 +01:00
Administrator
6b47181572 fix: serialize WebRTC objects before IPC transfer
RTCSessionDescription and RTCIceCandidate objects lose their properties
when sent through Electron's contextBridge IPC. Convert to plain objects
with explicit property extraction before sending.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:40:57 +01:00
Administrator
d8a2ec6443 fix: robust capture source detection + diagnostic logging
- desktopCapturer now searches window+screen types with fallbacks
- Partial title match and screen fallback if exact match fails
- Error messages sent back from capture window via IPC
- Detailed logging for capture source selection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:38:41 +01:00
Administrator
efcaa760df fix: buffer WebRTC signaling messages until capture window is ready
The capture window creation is async but the browser's WebRTC offer
arrives immediately after auth. Messages were silently dropped during
window initialization, preventing video stream from establishing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 07:39:20 +01:00
Administrator
e19c36b1fb release: v2.1.1 2026-03-12 07:26:50 +01:00
Administrator
a5c5041ec8 fix: add STUN server for WebRTC NAT traversal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 07:26:28 +01:00
Administrator
7b9362756d release: v2.1.0 2026-03-12 07:20:07 +01:00
Administrator
ad9b866afe chore: add ws dependency for remote control
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 07:19:38 +01:00
Administrator
f13bf7f5bc feat(remote): add Fernsteuerung settings panel with token management and status display
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 06:58:29 +01:00
Administrator
d1513a58b3 feat(remote): wire up remote server, capture window, and IPC handlers in main process
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 06:56:47 +01:00
Administrator
90bb298dbe feat(remote): add remote control bridge methods to preload 2026-03-12 06:56:09 +01:00
Administrator
9fa047b399 feat(remote): add WebSocket server with auth, signaling relay, and rate limiting
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 06:54:51 +01:00
Administrator
c2932a1577 feat(remote): add remote control defaults to config store
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 06:54:46 +01:00
Administrator
92e94b1e8a feat: add remote-capture preload and HTML for WebRTC screen sharing
Adds the hidden BrowserWindow assets for remote desktop streaming:
- lib/remote-capture-preload.js: IPC bridge for desktopCapturer source ID,
  WebRTC signaling relay, input event forwarding, and client count tracking
- lib/remote-capture.html: WebRTC logic handling multiple concurrent clients
  via RTCPeerConnection, stream capture via getUserMedia with desktop source ID,
  and DataChannel input forwarding

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 06:54:07 +01:00
Administrator
23dd010a95 release: v2.0.6
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:02:46 +01:00
Administrator
0c945e21b8 fix: prevent double-click race condition in upload start
Move `uploading = true` guard to immediately after the check in both
startUpload() and startSelectedUpload(), before any async calls.
Previously the flag was set after await executeHealthCheck(), allowing
a fast double-click to bypass the guard and start duplicate batches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 06:02:30 +01:00
Administrator
6233b192ab release: v2.0.5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:40:35 +01:00
Administrator
fecf773caf fix: prevent duplicate queue entries after removeFromQueueOnDone
- Track completed uploads in _completedUploadKeys Set so buildQueuePreview
  won't re-create jobs for files already uploaded this session
- Deduplicate queue on restore: when loading pendingQueue, keep only the
  job with the best status per file+hoster pair (removes existing dupes)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:40:25 +01:00
Administrator
68e05503f6 release: v2.0.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:25:33 +01:00
Administrator
3d8979797c fix: queue table not updating during uploads (virtual scrolling bug)
The in-place update path for virtual scrolling would silently skip the
full DOM rebuild when row IDs didn't match due to sort order changes.
The break statement only exited the for-loop but return still fired,
preventing any update. Now tracks allMatch flag and falls through to
innerHTML rebuild when needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:25:22 +01:00
Administrator
261463bbe5 release: v2.0.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:23:13 +01:00
Administrator
5aaa1ef578 feat: daily log files instead of per-session
Log files are now created per day (e.g. fileuploader-2026-03-12.log)
instead of per app session. Multiple sessions on the same day append
to the same file. Rolls over automatically at midnight.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:23:05 +01:00
Administrator
127d3fd830 release: v2.0.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:18:15 +01:00
Administrator
c79f61b4b5 perf: use cached Intl.Collator for all sort operations
Replaces inline localeCompare() calls with a shared Intl.Collator
instance across queue, recent files, and history sorting. Eliminates
~12,000 Collator object allocations per sort on large queues.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:18:06 +01:00
Administrator
3d8e81560c release: v2.0.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:12:49 +01:00
Administrator
cd3493e52c fix: hover flicker on queue rows during active uploads
Virtual scrolling (>200 rows) now uses in-place DOM updates when the
visible range hasn't changed, preserving :hover state instead of
rebuilding innerHTML on every progress tick.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:12:39 +01:00
Administrator
d53eea443e feat: multi-account support with primary/fallback and separate API/login types
- Multiple accounts per hoster with drag-sortable priority (primary + fallbacks)
- Separate account types: Web Login and API selectable per hoster
- Account fallback: after all retries fail, automatically switches to next fallback account
- Fix: Byse health check returning [Fehler] OK when API responds with msg "OK"
- Fix: retry during active upload sets status to "Wartet" instead of "Bereit"
- Config migration from single-object to multi-account array format

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 05:00:33 +01:00
Administrator
2c9726a33d fix: session-based counters and hoster cancel context menu
- Done/Error counters now use sessionFilesData (survives removeFromQueueOnDone)
- Uploaded/Total bytes tracked via session accumulators (never decrease)
- Errors no longer shown in Files list (stay in queue for retry)
- Right-click context menu: "hoster abbrechen" cancels all jobs for a hoster

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 04:34:11 +01:00
Administrator
052bd940f1 feat: add account enable/disable toggle
- Toggle button on each account card to activate/deactivate hosters
- Disabled accounts are greyed out and excluded from upload selection
- Credentials are preserved when deactivated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 04:17:46 +01:00
Administrator
0851bb09fc feat: floating drop target window and English column labels
- Small always-on-top drop target window (toggle in Settings > Allgemein)
- Files dropped on it get added to the queue with hoster modal
- Auto-shows on app start if previously enabled
- Column headers now in English (Filename, Uploaded/Size, Progress)
- Statusbar labels in English (Connections, Total)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 04:11:01 +01:00
Administrator
c0b9ec9d17 feat: add drop target overlay and statusbar colons
- Full-window drop overlay with large "+" icon when dragging files over the app
- Works from any tab, not just the upload view
- Added colons to all statusbar labels for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 04:01:09 +01:00
Administrator
a5c1ec362d release: v1.9.5 2026-03-12 03:46:57 +01:00
Administrator
2ad9f2d1eb fix: statusbar shows uploaded/total + add Done counter
- Statusbar: uploaded / total (not remaining) so right side stays constant
- New "Done" counter in statusbar showing completed uploads

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 03:46:30 +01:00
Administrator
13d220bd30 release: v1.9.4 2026-03-12 01:57:49 +01:00
Administrator
22a378d36c feat: hoster preset in folder monitor + badge color fix
- Hoster pre-selection in Ordnerüberwachung settings (only configured accounts shown)
- With preset hosters: files go directly to queue without modal
- Without preset: hoster modal opens as before
- Fix: Aktiv badge now green on initial render

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:57:22 +01:00
Administrator
02f208c302 release: v1.9.3 2026-03-12 01:52:58 +01:00
Administrator
0de9236e42 fix: UI polish - settings layout, context menu, folder monitor badge
- Ordnerüberwachung panel: proper section layout matching Allgemein style
- Checkbox rows: compact spacing, checkbox before label via CSS order
- Upload inputs: consistent width, stacked vertically
- Backup section: moved to collapsible panel in settings
- Allgemein panel: collapsible
- Context menu: hidden when queue is empty
- Folder monitor badge: instant update on checkbox/path change
- Separator between system and hoster panels

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:52:30 +01:00
Administrator
b04de4036f release: v1.9.2 2026-03-12 01:27:51 +01:00
Administrator
2cfd10834e feat: manual update check button in settings + update debug logging
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:27:28 +01:00
Administrator
dfe94db1d3 release: v1.9.1 2026-03-12 01:23:20 +01:00
Administrator
dc1c338d97 fix: rcedit import in afterPack - icon was not being embedded in exe
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:22:56 +01:00
Administrator
ea35bfa065 release: v1.9.0 2026-03-12 01:22:04 +01:00