Skip to content

Commit c6981f8

Browse files
docs: update tasks
1 parent a77183a commit c6981f8

4 files changed

+116
-13
lines changed

backlog/tasks/task-059 - Migrate-to-Python-3.14t-(free-threaded).md

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ title: Migrate to Python 3.14t (free-threaded)
44
status: In Progress
55
assignee: []
66
created_date: '2025-10-21 06:58'
7-
updated_date: '2025-10-24 03:28'
7+
updated_date: '2025-10-26 04:53'
88
labels: []
99
dependencies: []
10-
ordinal: 6000
10+
priority: high
11+
ordinal: 1000
1112
---
1213

1314
## Description
@@ -16,7 +17,7 @@ Incrementally upgrade Python from 3.11 to 3.14t (free-threaded), testing and fix
1617

1718
## Acceptance Criteria
1819
<!-- AC:BEGIN -->
19-
- [ ] #1 Upgrade to Python 3.12 and ensure all tests pass
20+
- [x] #1 Upgrade to Python 3.12 and ensure all tests pass
2021
- [ ] #2 Upgrade to Python 3.13 and ensure all tests pass
2122
- [ ] #3 Upgrade to Python 3.14 (standard) and ensure all tests pass
2223
- [ ] #4 Upgrade to Python 3.14t (free-threaded) and ensure all tests pass
@@ -27,16 +28,41 @@ Incrementally upgrade Python from 3.11 to 3.14t (free-threaded), testing and fix
2728

2829
## Implementation Notes
2930

30-
## Upgrade Commands
31-
32-
From Astral's Python 3.14 announcement:
33-
```bash
34-
# Install Python 3.14t
35-
uv python install 3.14t
36-
37-
# Upgrade project to use 3.14t
38-
uv python upgrade 3.14t
39-
```
31+
## Python 3.12 Upgrade Complete (2025-10-25)
32+
33+
### Summary
34+
Successfully upgraded from Python 3.11.11 to 3.12.9. All 516 tests pass with 58% coverage maintained.
35+
36+
### Changes Made
37+
- Updated `.tool-versions` to python 3.12.9
38+
- Updated `pyproject.toml` to require python >=3.12,<3.13
39+
- Pinned `ziggy-pydust==0.25.1` for Zig 0.14.0 compatibility (0.26.0 requires Zig 0.15.1)
40+
- Rebuilt Zig extension modules successfully
41+
42+
### Regressions Fixed During Manual Testing
43+
1. **Play/pause icon not updating**: Added explicit `update_play_button()` calls in `player_core.py`
44+
2. **Queue not populating from media key**: Added queue population logic from library view
45+
3. **Search not filtering**: Fixed `perform_search()` to directly populate queue view
46+
4. **App startup failure**: Fixed initialization order for `queue_handler` reference
47+
48+
All fixes in: `core/controls/player_core.py`, `core/player/handlers.py`, `core/player/__init__.py`
49+
50+
### Testing Gap Analysis
51+
Created follow-up tasks to address test coverage gaps discovered during migration:
52+
- **task-074**: Add integration tests for recent bug fixes (high priority)
53+
- **task-075**: Add unit tests for PlayerEventHandlers class (0% coverage)
54+
- **task-076**: Increase PlayerCore coverage from 29% to 50%+
55+
56+
### Python 3.12 Compatibility Notes
57+
- No deprecation warnings triggered
58+
- Asyncio behavior stable (limited usage in project)
59+
- VLC bindings working correctly
60+
- All dependencies compatible
61+
62+
### Next Steps for task-059
63+
- Proceed to AC #2: Upgrade to Python 3.13
64+
- Monitor for Python 3.13 specific changes (PEP 701 f-strings, etc.)
65+
- Continue validating Zig/ziggy-pydust compatibility at each step
4066

4167

4268
## Tool Management
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
id: task-074
3+
title: Add integration tests for recent bug fixes
4+
status: In Progress
5+
assignee: []
6+
created_date: '2025-10-26 04:51'
7+
updated_date: '2025-10-26 04:53'
8+
labels: []
9+
dependencies: []
10+
priority: high
11+
ordinal: 2000
12+
---
13+
14+
## Description
15+
16+
Add automated tests for code paths added during Python 3.12 migration bug fixes. These areas currently lack test coverage and caused regressions during manual testing.
17+
18+
## Acceptance Criteria
19+
<!-- AC:BEGIN -->
20+
- [ ] #1 Add E2E test: Media key with empty queue populates from library view
21+
- [ ] #2 Add E2E test: Search filtering correctly populates queue view without reloading library
22+
- [ ] #3 Add unit test: update_play_button() changes icon for play/pause states
23+
- [ ] #4 Add unit test: _get_all_filepaths_from_view() extracts correct filepath order
24+
- [ ] #5 Add integration test: Double-click track → queue populated → playback starts
25+
<!-- AC:END -->
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
id: task-075
3+
title: Add unit tests for PlayerEventHandlers class
4+
status: In Progress
5+
assignee: []
6+
created_date: '2025-10-26 04:51'
7+
updated_date: '2025-10-26 04:54'
8+
labels: []
9+
dependencies: []
10+
priority: medium
11+
ordinal: 2250
12+
---
13+
14+
## Description
15+
16+
PlayerEventHandlers has 0% test coverage despite handling all user interactions (search, delete, drag-drop, favorites). Add comprehensive unit tests for core interaction methods.
17+
18+
## Acceptance Criteria
19+
<!-- AC:BEGIN -->
20+
- [ ] #1 Add unit tests for handle_delete() method (87 lines)
21+
- [ ] #2 Add unit tests for handle_drop() drag-and-drop functionality (92 lines)
22+
- [ ] #3 Add unit tests for perform_search() and clear_search()
23+
- [ ] #4 Add unit tests for toggle_favorite() method
24+
- [ ] #5 Add unit tests for on_track_change() callback logic
25+
- [ ] #6 Achieve >80% coverage for PlayerEventHandlers class
26+
<!-- AC:END -->
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
id: task-076
3+
title: Increase PlayerCore test coverage from 29% to 50%+
4+
status: In Progress
5+
assignee: []
6+
created_date: '2025-10-26 04:51'
7+
updated_date: '2025-10-26 04:54'
8+
labels: []
9+
dependencies: []
10+
priority: medium
11+
ordinal: 3000
12+
---
13+
14+
## Description
15+
16+
PlayerCore currently has only 29% test coverage (103/357 lines tested). Key untested areas include track-end handling, play count tracking, and media event callbacks. Improve coverage to at least 50%.
17+
18+
## Acceptance Criteria
19+
<!-- AC:BEGIN -->
20+
- [ ] #1 Add unit tests for _handle_track_end() loop/shuffle logic
21+
- [ ] #2 Add unit tests for _update_play_count() play count tracking
22+
- [ ] #3 Add unit tests for track navigation edge cases (empty queue, single track, etc.)
23+
- [ ] #4 Add unit tests for media event callbacks (MediaEnded, MediaPaused, etc.)
24+
- [ ] #5 Add property-based tests for queue navigation invariants
25+
- [ ] #6 Achieve >50% coverage for core/controls/player_core.py
26+
<!-- AC:END -->

0 commit comments

Comments
 (0)