From 9557e6bdd3fe758010e269dab01d7654e973d4c4 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Thu, 12 Mar 2026 08:52:08 -0700 Subject: [PATCH] =?UTF-8?q?Fix=20sync=20stuck=20at=2080%=20=E2=80=94=20ser?= =?UTF-8?q?ialize=20datetime=20in=20SyncResult=20for=20WebSocket=20emit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web_server.py | 9 +++++++-- webui/static/particles.js | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/web_server.py b/web_server.py index 518ffafb..749b6c21 100644 --- a/web_server.py +++ b/web_server.py @@ -24912,11 +24912,16 @@ def _run_sync_task(playlist_id, playlist_name, tracks_json, automation_id=None): print(f" Result details: matched={getattr(result, 'matched_tracks', 'N/A')}, total={getattr(result, 'total_tracks', 'N/A')}") # Update final state on completion + # Convert result to JSON-serializable dict (datetime/errors can't be emitted via SocketIO) + result_dict = { + k: (v.isoformat() if hasattr(v, 'isoformat') else v) + for k, v in result.__dict__.items() + } with sync_lock: sync_states[playlist_id] = { "status": "finished", - "progress": result.__dict__, # Store result as progress for status endpoint compatibility - "result": result.__dict__ # Keep result for backward compatibility + "progress": result_dict, + "result": result_dict } print(f"🏁 Sync finished for {playlist_id} - state updated") diff --git a/webui/static/particles.js b/webui/static/particles.js index 0b59cd28..e54dc2b8 100644 --- a/webui/static/particles.js +++ b/webui/static/particles.js @@ -6,6 +6,9 @@ (function () { 'use strict'; + // Disable particles on mobile devices for performance + if (window.innerWidth <= 768 || /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) return; + const canvas = document.getElementById('page-particles-canvas'); if (!canvas) return; const ctx = canvas.getContext('2d');