mytunes-pro 2.1.1__tar.gz → 2.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mytunes-pro
3
- Version: 2.1.1
3
+ Version: 2.1.3
4
4
  Summary: A lightweight, keyboard-centric terminal player for streaming YouTube music.
5
5
  Author-email: loxo <loxo5432@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/postgresql-co-kr/mytunes
@@ -18,9 +18,9 @@ Requires-Dist: yt-dlp
18
18
  Requires-Dist: pusher
19
19
  Dynamic: license-file
20
20
 
21
- # 🎵 MyTunes Pro - Professional TUI Edition v2.1.1
21
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
22
22
 
23
- ## 🚀 Terminal-based Media Workflow Experiment v2.1.1
23
+ ## 🚀 Terminal-based Media Workflow Experiment v2.1.3
24
24
 
25
25
  > [!IMPORTANT]
26
26
  > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
@@ -390,6 +390,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
390
390
 
391
391
  ## 🔄 Changelog
392
392
 
393
+ ### v2.1.3 (2026-02-02)
394
+ - **Resolved TUI Freeze on Song Launch**: Fixed a critical regression from v2.0.6 where misplaced blocking input code caused the TUI to freeze on "Loading" during song transitions or resume until a key was pressed.
395
+ - **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
396
+
397
+ ### v2.1.2 (2026-02-02)
398
+ - **Fix "Loading" Stuck**: Improved IPC resilience to prevent the TUI from being stuck on "Loading" during song transitions or resume, by increasing the initial socket connection timeout patience.
399
+ - **Fail-Safe Loading**: Implemented a hard reset for the loading state if mpv takes longer than 8 seconds to respond, ensuring the TUI remains interactive.
400
+
393
401
  ### v2.1.1 (2026-02-02)
394
402
  - **WSL UI Polish**: Hides Equalizer (EQ) labels and status in the TUI when running on WSL to avoid confusion, as the feature is disabled in that environment for stability.
395
403
  - **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
@@ -1,6 +1,6 @@
1
- # 🎵 MyTunes Pro - Professional TUI Edition v2.1.1
1
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
2
2
 
3
- ## 🚀 Terminal-based Media Workflow Experiment v2.1.1
3
+ ## 🚀 Terminal-based Media Workflow Experiment v2.1.3
4
4
 
5
5
  > [!IMPORTANT]
6
6
  > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
@@ -370,6 +370,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
370
370
 
371
371
  ## 🔄 Changelog
372
372
 
373
+ ### v2.1.3 (2026-02-02)
374
+ - **Resolved TUI Freeze on Song Launch**: Fixed a critical regression from v2.0.6 where misplaced blocking input code caused the TUI to freeze on "Loading" during song transitions or resume until a key was pressed.
375
+ - **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
376
+
377
+ ### v2.1.2 (2026-02-02)
378
+ - **Fix "Loading" Stuck**: Improved IPC resilience to prevent the TUI from being stuck on "Loading" during song transitions or resume, by increasing the initial socket connection timeout patience.
379
+ - **Fail-Safe Loading**: Implemented a hard reset for the loading state if mpv takes longer than 8 seconds to respond, ensuring the TUI remains interactive.
380
+
373
381
  ### v2.1.1 (2026-02-02)
374
382
  - **WSL UI Polish**: Hides Equalizer (EQ) labels and status in the TUI when running on WSL to avoid confusion, as the feature is disabled in that environment for stability.
375
383
  - **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mytunes-pro"
7
- version = "2.1.1"
7
+ version = "2.1.3"
8
8
  authors = [
9
9
  { name = "loxo", email = "loxo5432@gmail.com" },
10
10
  ]
@@ -44,7 +44,7 @@ MPV_SOCKET = "/tmp/mpv_socket"
44
44
  LOG_FILE = "/tmp/mytunes_mpv.log"
45
45
  PID_FILE = "/tmp/mytunes_mpv.pid"
46
46
  APP_NAME = "MyTunes Pro"
47
- APP_VERSION = "2.1.1"
47
+ APP_VERSION = "2.1.3"
48
48
 
49
49
  # Initial Locale Setup for WSL/Windows Multibyte/Emoji Harmony
50
50
  try:
@@ -461,7 +461,9 @@ class Player:
461
461
  # 3. Pre-check: Skip if socket file doesn't exist (e.g. killed elsewhere)
462
462
  if not os.path.exists(MPV_SOCKET):
463
463
  self.socket_fail_count += 1
464
- if self.socket_fail_count >= 2:
464
+ # Be more patient during loading (mpv takes time to create socket)
465
+ threshold = 15 if self.loading else 2
466
+ if self.socket_fail_count >= threshold:
465
467
  self.socket_ok = False
466
468
  self.socket_retry_ts = now + 1.5 # 1.5s cool-down
467
469
  return None
@@ -488,7 +490,8 @@ class Player:
488
490
  return json.loads(response.decode('utf-8'))
489
491
  except:
490
492
  self.socket_fail_count += 1
491
- if self.socket_fail_count >= 2:
493
+ threshold = 15 if self.loading else 2
494
+ if self.socket_fail_count >= threshold:
492
495
  self.socket_ok = False
493
496
  self.socket_retry_ts = now + 1.5 # 1.5s cool-down
494
497
  return None
@@ -678,7 +681,15 @@ class MyTunesApp:
678
681
  def update_playback_state(self):
679
682
  # Poll MPV for state with throttling to reduce CPU/IPC overhead
680
683
  try:
681
- # 0. Health Check: If socket is known-bad, exit immediately to keep TUI responsive
684
+ # A. Safety: If loading takes too long (> 8s), force reset to allow error handling/skip
685
+ # Must check this even if socket_ok is False!
686
+ now = time.time()
687
+ if self.player.loading and (now - self.player.loading_ts > 8):
688
+ self.player.loading = False
689
+ self.player.socket_ok = True # Reset health to try again
690
+ self.show_feedback("⚠️ Load timed out. Skipping...")
691
+
692
+ # B. Health Check: If socket is known-bad, exit immediately to keep TUI responsive
682
693
  if not self.player.socket_ok:
683
694
  return
684
695
 
@@ -700,12 +711,6 @@ class MyTunesApp:
700
711
  self.dm.set_progress(self.current_track['url'], self.playback_time)
701
712
 
702
713
 
703
- # Safety: If loading takes too long (> 8s), force reset to allow error handling/skip
704
- now = time.time()
705
- if self.player.loading and (now - self.player.loading_ts > 8):
706
- self.player.loading = False
707
- self.show_feedback("⚠️ Load timed out. Skipping...")
708
-
709
714
  # 2. Frequent: Pause state (Every 2 loops ~400ms)
710
715
  if self.loop_count % 2 == 0:
711
716
  p = self.player.get_property("pause")
@@ -1201,7 +1206,7 @@ class MyTunesApp:
1201
1206
  else:
1202
1207
  start_pos = 0
1203
1208
 
1204
- self.player.play(item['url'], start_pos)
1209
+ self.player.play(item['url'], start_pos, initial_eq_preset=target_eq_preset)
1205
1210
 
1206
1211
  # Re-apply EQ logic (double check: mpv restart wipes af property?)
1207
1212
  # Yes, play() might restart mpv if socket fails.
@@ -1221,10 +1226,6 @@ class MyTunesApp:
1221
1226
  self.playback_time = start_pos
1222
1227
  self.playback_duration = 0
1223
1228
  self.is_paused = False
1224
- self.stdscr.nodelay(False) # Blocking input for dialog
1225
- h, w = self.stdscr.getmaxyx()
1226
- box_h, box_w = 8, 60
1227
- box_y, box_x = (h - box_h) // 2, (w - box_w) // 2
1228
1229
 
1229
1230
  def ask_resume(self, saved_time, track_title):
1230
1231
  self.stdscr.nodelay(False) # Blocking input for dialog
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mytunes-pro
3
- Version: 2.1.1
3
+ Version: 2.1.3
4
4
  Summary: A lightweight, keyboard-centric terminal player for streaming YouTube music.
5
5
  Author-email: loxo <loxo5432@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/postgresql-co-kr/mytunes
@@ -18,9 +18,9 @@ Requires-Dist: yt-dlp
18
18
  Requires-Dist: pusher
19
19
  Dynamic: license-file
20
20
 
21
- # 🎵 MyTunes Pro - Professional TUI Edition v2.1.1
21
+ # 🎵 MyTunes Pro - Professional TUI Edition v2.1.3
22
22
 
23
- ## 🚀 Terminal-based Media Workflow Experiment v2.1.1
23
+ ## 🚀 Terminal-based Media Workflow Experiment v2.1.3
24
24
 
25
25
  > [!IMPORTANT]
26
26
  > **Legal Disclaimer:** This project is a personal, non-commercial research experiment for developer education.
@@ -390,6 +390,14 @@ Windows 환경에서 한글 검색이 안 되거나 설치가 어려운 분들
390
390
 
391
391
  ## 🔄 Changelog
392
392
 
393
+ ### v2.1.3 (2026-02-02)
394
+ - **Resolved TUI Freeze on Song Launch**: Fixed a critical regression from v2.0.6 where misplaced blocking input code caused the TUI to freeze on "Loading" during song transitions or resume until a key was pressed.
395
+ - **Fixed EQ Application**: Restored correct Auto EQ initialization during `play_music` in `app.py`.
396
+
397
+ ### v2.1.2 (2026-02-02)
398
+ - **Fix "Loading" Stuck**: Improved IPC resilience to prevent the TUI from being stuck on "Loading" during song transitions or resume, by increasing the initial socket connection timeout patience.
399
+ - **Fail-Safe Loading**: Implemented a hard reset for the loading state if mpv takes longer than 8 seconds to respond, ensuring the TUI remains interactive.
400
+
393
401
  ### v2.1.1 (2026-02-02)
394
402
  - **WSL UI Polish**: Hides Equalizer (EQ) labels and status in the TUI when running on WSL to avoid confusion, as the feature is disabled in that environment for stability.
395
403
  - **Improved Feedback**: Provides a clear status message when the 'E' key is pressed on WSL.
File without changes
File without changes