plex-tui 0.4.3__tar.gz → 0.4.4__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.
- {plex_tui-0.4.3 → plex_tui-0.4.4}/CHANGELOG.md +15 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/PKG-INFO +18 -2
- {plex_tui-0.4.3 → plex_tui-0.4.4}/README.md +17 -1
- {plex_tui-0.4.3 → plex_tui-0.4.4}/ROADMAP.md +17 -6
- {plex_tui-0.4.3 → plex_tui-0.4.4}/config.example.toml +4 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/docs/plex-integration-research.md +8 -17
- {plex_tui-0.4.3 → plex_tui-0.4.4}/packaging/aur/.SRCINFO +3 -3
- {plex_tui-0.4.3 → plex_tui-0.4.4}/packaging/aur/PKGBUILD +2 -2
- {plex_tui-0.4.3 → plex_tui-0.4.4}/pyproject.toml +1 -1
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/__init__.py +1 -1
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/app.py +262 -20
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/config.py +9 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/player.py +39 -4
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/plex_service.py +134 -5
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_app_helpers.py +62 -4
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_app_navigation.py +256 -7
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_config.py +6 -1
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_player.py +36 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_plex_service.py +71 -1
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/aur.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/bump.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/ci.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/post-release-aur.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/post-release-homebrew.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/publish-aur.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/publish-pypi.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.github/workflows/publish-testpypi.yml +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/.gitignore +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/AGENTS.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/LICENSE +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/Makefile +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/PACKAGING.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/RELEASE.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/docs/assets/grid-view.png +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/docs/assets/list-view.png +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/docs/homebrew-install-time.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/packaging/aur/README.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/packaging/homebrew/README.md +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/check_release.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/measure_homebrew_install.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/prepare_homebrew_bottle_assets.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/stage_release.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/update_aur_package.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/scripts/update_homebrew_formula.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/__main__.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/artwork.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/auth.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/models.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/src/plextui/smoke.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_artwork.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_auth.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_cli.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_homebrew_bottle_assets.py +0 -0
- {plex_tui-0.4.3 → plex_tui-0.4.4}/tests/test_release_checks.py +0 -0
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.4.4 - 2026-06-18
|
|
6
|
+
|
|
7
|
+
- Added a keyboard action to mark the selected playable Plex item watched or
|
|
8
|
+
unwatched from the browse view.
|
|
9
|
+
- Added Plex library Categories browsing, visible movie-edition variants, and
|
|
10
|
+
live mpv audio/subtitle switching when the active playback exposes matching
|
|
11
|
+
tracks.
|
|
12
|
+
- Made library rows open the full Library view by default, with Space opening
|
|
13
|
+
the browse-mode menu as the alternate action, and added a Settings option to
|
|
14
|
+
swap those actions.
|
|
15
|
+
- Added a Backspace/Delete Continue Watching removal action for selected items
|
|
16
|
+
in the Continue Watching view.
|
|
17
|
+
- Improved episode readability by showing show, season, and episode context in
|
|
18
|
+
episode rows and directly under the episode title in details.
|
|
19
|
+
|
|
5
20
|
## 0.4.3 - 2026-06-18
|
|
6
21
|
|
|
7
22
|
- Made the default `mpv` window open with `--autofit=80%`, keeping custom
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plex-tui
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: A small standalone Plex terminal UI.
|
|
5
5
|
Project-URL: Homepage, https://github.com/so1omon563/plex-tui
|
|
6
6
|
Project-URL: Issues, https://github.com/so1omon563/plex-tui/issues
|
|
@@ -211,6 +211,10 @@ comfortable size on modern displays; Settings can override this with values
|
|
|
211
211
|
such as `90%`, `1280x720`, or `80%x80%`. If an older config has an exact
|
|
212
212
|
`mpv_window_size = "1280x720"` override, cycle the mpv window-size setting once
|
|
213
213
|
to return to the Default preset.
|
|
214
|
+
Use `w` from a playable movie or episode to toggle its Plex watched state.
|
|
215
|
+
When playback is active, choosing an audio or subtitle track from the picker
|
|
216
|
+
also asks mpv to switch the active track when the launched stream exposes a
|
|
217
|
+
matching track.
|
|
214
218
|
|
|
215
219
|
## Key Bindings
|
|
216
220
|
|
|
@@ -224,6 +228,7 @@ to return to the Default preset.
|
|
|
224
228
|
| `tab` / `shift+tab` | Move focus |
|
|
225
229
|
| `l` | Focus libraries |
|
|
226
230
|
| `m` | Focus media |
|
|
231
|
+
| `space` | Run the alternate action for a selected library |
|
|
227
232
|
| `v` | Toggle list/grid view |
|
|
228
233
|
| `pageup` / `pagedown` | Move one page in grid view |
|
|
229
234
|
| `,` | Show settings |
|
|
@@ -231,6 +236,8 @@ to return to the Default preset.
|
|
|
231
236
|
| `enter` | Open selected item |
|
|
232
237
|
| `p` | Play selected item from the beginning |
|
|
233
238
|
| `r` | Resume selected item from the saved Plex position |
|
|
239
|
+
| `w` | Mark selected item watched / unwatched |
|
|
240
|
+
| `backspace` / `delete` | Remove selected item from Continue Watching |
|
|
234
241
|
| `a` / `s` | Choose audio / subtitle preference |
|
|
235
242
|
| `A` / `S` | Clear audio preference / cycle subtitle mode |
|
|
236
243
|
| `x` | Stop launched `mpv` |
|
|
@@ -239,14 +246,23 @@ to return to the Default preset.
|
|
|
239
246
|
|
|
240
247
|
- Plex PIN login and server selection.
|
|
241
248
|
- Paged library browsing with automatic loading near the end of loaded items.
|
|
249
|
+
- Library submenu entrypoints for all items, Recommended, Collections,
|
|
250
|
+
Playlists, and Categories. Library rows open all items by default; Space
|
|
251
|
+
opens the browse-mode menu, and Settings can swap the primary and alternate
|
|
252
|
+
actions.
|
|
242
253
|
- Current-library search and bounded global search.
|
|
243
254
|
- List view plus configurable-density grid view with terminal poster artwork.
|
|
244
255
|
- External subtitle support and direct playback for embedded PGS/VOBSUB tracks.
|
|
245
256
|
- Audio and subtitle pickers with saved language preferences.
|
|
246
257
|
- Separate play-from-start and resume actions with Plex progress reporting.
|
|
258
|
+
- Watched/unwatched toggling for selected playable Plex items.
|
|
259
|
+
- Continue Watching episode rows show their show, season, and episode context,
|
|
260
|
+
and items can be removed from the Continue Watching view.
|
|
261
|
+
- Movie editions appear as distinct variants when Plex reports multiple
|
|
262
|
+
editions for a selected movie.
|
|
247
263
|
- Settings screen for stream preferences, playback mode and transcode quality,
|
|
248
264
|
artwork modes, grid density, page size, auto-load threshold, grid artwork
|
|
249
|
-
prefetching, media view, and `mpv` window size.
|
|
265
|
+
prefetching, media view, library Enter behavior, and `mpv` window size.
|
|
250
266
|
- App diagnostics view for version, paths, `mpv`, Plex connection, artwork, and
|
|
251
267
|
browsing settings.
|
|
252
268
|
|
|
@@ -174,6 +174,10 @@ comfortable size on modern displays; Settings can override this with values
|
|
|
174
174
|
such as `90%`, `1280x720`, or `80%x80%`. If an older config has an exact
|
|
175
175
|
`mpv_window_size = "1280x720"` override, cycle the mpv window-size setting once
|
|
176
176
|
to return to the Default preset.
|
|
177
|
+
Use `w` from a playable movie or episode to toggle its Plex watched state.
|
|
178
|
+
When playback is active, choosing an audio or subtitle track from the picker
|
|
179
|
+
also asks mpv to switch the active track when the launched stream exposes a
|
|
180
|
+
matching track.
|
|
177
181
|
|
|
178
182
|
## Key Bindings
|
|
179
183
|
|
|
@@ -187,6 +191,7 @@ to return to the Default preset.
|
|
|
187
191
|
| `tab` / `shift+tab` | Move focus |
|
|
188
192
|
| `l` | Focus libraries |
|
|
189
193
|
| `m` | Focus media |
|
|
194
|
+
| `space` | Run the alternate action for a selected library |
|
|
190
195
|
| `v` | Toggle list/grid view |
|
|
191
196
|
| `pageup` / `pagedown` | Move one page in grid view |
|
|
192
197
|
| `,` | Show settings |
|
|
@@ -194,6 +199,8 @@ to return to the Default preset.
|
|
|
194
199
|
| `enter` | Open selected item |
|
|
195
200
|
| `p` | Play selected item from the beginning |
|
|
196
201
|
| `r` | Resume selected item from the saved Plex position |
|
|
202
|
+
| `w` | Mark selected item watched / unwatched |
|
|
203
|
+
| `backspace` / `delete` | Remove selected item from Continue Watching |
|
|
197
204
|
| `a` / `s` | Choose audio / subtitle preference |
|
|
198
205
|
| `A` / `S` | Clear audio preference / cycle subtitle mode |
|
|
199
206
|
| `x` | Stop launched `mpv` |
|
|
@@ -202,14 +209,23 @@ to return to the Default preset.
|
|
|
202
209
|
|
|
203
210
|
- Plex PIN login and server selection.
|
|
204
211
|
- Paged library browsing with automatic loading near the end of loaded items.
|
|
212
|
+
- Library submenu entrypoints for all items, Recommended, Collections,
|
|
213
|
+
Playlists, and Categories. Library rows open all items by default; Space
|
|
214
|
+
opens the browse-mode menu, and Settings can swap the primary and alternate
|
|
215
|
+
actions.
|
|
205
216
|
- Current-library search and bounded global search.
|
|
206
217
|
- List view plus configurable-density grid view with terminal poster artwork.
|
|
207
218
|
- External subtitle support and direct playback for embedded PGS/VOBSUB tracks.
|
|
208
219
|
- Audio and subtitle pickers with saved language preferences.
|
|
209
220
|
- Separate play-from-start and resume actions with Plex progress reporting.
|
|
221
|
+
- Watched/unwatched toggling for selected playable Plex items.
|
|
222
|
+
- Continue Watching episode rows show their show, season, and episode context,
|
|
223
|
+
and items can be removed from the Continue Watching view.
|
|
224
|
+
- Movie editions appear as distinct variants when Plex reports multiple
|
|
225
|
+
editions for a selected movie.
|
|
210
226
|
- Settings screen for stream preferences, playback mode and transcode quality,
|
|
211
227
|
artwork modes, grid density, page size, auto-load threshold, grid artwork
|
|
212
|
-
prefetching, media view, and `mpv` window size.
|
|
228
|
+
prefetching, media view, library Enter behavior, and `mpv` window size.
|
|
213
229
|
- App diagnostics view for version, paths, `mpv`, Plex connection, artwork, and
|
|
214
230
|
browsing settings.
|
|
215
231
|
|
|
@@ -47,19 +47,30 @@
|
|
|
47
47
|
[`anthonycaccese/240-MP`](https://github.com/anthonycaccese/240-MP/tree/main)
|
|
48
48
|
live in `docs/plex-integration-research.md`.
|
|
49
49
|
- Continue Watching now has a sidebar browse entrypoint backed by Plex on-deck
|
|
50
|
-
data;
|
|
50
|
+
data; selected items can be removed from Continue Watching. Watch for
|
|
51
|
+
real-library edge cases around ordering and pagination.
|
|
51
52
|
- Selective library visibility is available in Settings so noisy Plex libraries
|
|
52
53
|
can be hidden from the sidebar.
|
|
53
|
-
- Library submenus are available for Library, Recommended, Collections,
|
|
54
|
-
Playlists
|
|
55
|
-
|
|
54
|
+
- Library submenus are available for Library, Recommended, Collections,
|
|
55
|
+
Playlists, and Categories. Categories use PlexAPI category helpers when
|
|
56
|
+
present and genre filter choices as the fallback. Library rows open all items
|
|
57
|
+
by default, Space opens the browse-mode menu, and Settings can swap those
|
|
58
|
+
primary/alternate actions.
|
|
56
59
|
- Alphabet navigation is available for loaded browse lists and grids with
|
|
57
60
|
previous/next section jumps.
|
|
58
61
|
- Explicit playback controls are available for play-from-start versus resume,
|
|
59
62
|
direct/default playback versus selected transcode quality presets, and
|
|
60
63
|
Plex-side resume offsets for transcoded streams.
|
|
61
|
-
-
|
|
62
|
-
|
|
64
|
+
- Watched/unwatched toggling is available for selected playable movies and
|
|
65
|
+
episodes.
|
|
66
|
+
- Movie editions are visible as distinct variants when Plex reports multiple
|
|
67
|
+
editions for a selected movie.
|
|
68
|
+
- In-playback audio/subtitle switching uses mpv IPC when the active stream
|
|
69
|
+
exposes matching tracks; Plex-transcoded streams may still require relaunching
|
|
70
|
+
with the saved preference.
|
|
71
|
+
- Design playlist management before implementation: adding/removing media from
|
|
72
|
+
playlists and creating playlists are intentionally out of PR #80 scope.
|
|
73
|
+
- Later design passes: profile switching with auto sign-in.
|
|
63
74
|
|
|
64
75
|
## Technical Follow-Up
|
|
65
76
|
|
|
@@ -52,6 +52,10 @@ client_identifier = "plex-tui-your-stable-client-id"
|
|
|
52
52
|
# detail_artwork_mode = "list_only"
|
|
53
53
|
# media_view can be "list" or "grid".
|
|
54
54
|
# media_view = "list"
|
|
55
|
+
# library_enter_action can be "library" or "browse_modes". The default
|
|
56
|
+
# "library" opens all items with Enter and uses Space for browse modes.
|
|
57
|
+
# "browse_modes" swaps those two actions.
|
|
58
|
+
# library_enter_action = "library"
|
|
55
59
|
# grid_density can be "compact", "comfortable", or "large".
|
|
56
60
|
# grid_density = "comfortable"
|
|
57
61
|
# Textual theme selected from the command palette.
|
|
@@ -39,14 +39,20 @@ Already covered:
|
|
|
39
39
|
- Plex PIN login and server selection.
|
|
40
40
|
- Library list browsing with paged loading and automatic load-more.
|
|
41
41
|
- Continue Watching as a top-level browse entry.
|
|
42
|
+
- Removing selected items from Continue Watching.
|
|
42
43
|
- Selective library display in Settings.
|
|
43
44
|
- Library submenus for Library, Recommended, Collections, and Playlists.
|
|
45
|
+
- Library Categories through PlexAPI category helpers or genre filter choices.
|
|
46
|
+
- Library rows open all items by default, with Space as the alternate
|
|
47
|
+
browse-mode menu action and a global Settings toggle to swap the behavior.
|
|
44
48
|
- Alphabet navigation for loaded browse lists and grids.
|
|
45
49
|
- Current-library and global search.
|
|
46
50
|
- Show/season/episode child browsing through PlexAPI child helpers.
|
|
47
51
|
- Separate play-from-start and resume controls, including Plex-side resume
|
|
48
52
|
offsets for transcoded streams and progress reporting.
|
|
49
53
|
- Saved audio/subtitle language preferences plus per-item stream pickers.
|
|
54
|
+
- Live audio/subtitle switching through mpv IPC when the active stream exposes
|
|
55
|
+
matching tracks.
|
|
50
56
|
- Direct playback paths where possible, with transcode fallback through PlexAPI.
|
|
51
57
|
- Explicit video quality/direct/transcode preference in Settings and playback.
|
|
52
58
|
- Details pane metadata, audio/subtitle stream display, and playback readiness.
|
|
@@ -54,29 +60,14 @@ Already covered:
|
|
|
54
60
|
Not yet covered:
|
|
55
61
|
|
|
56
62
|
- User/profile switching and auto sign-in.
|
|
57
|
-
-
|
|
58
|
-
- Movie editions as distinct, visible item variants.
|
|
59
|
-
- In-playback audio/subtitle switching after mpv has launched.
|
|
63
|
+
- Fuller profile switching and auto sign-in.
|
|
60
64
|
|
|
61
65
|
## Recommended Sequence
|
|
62
66
|
|
|
63
|
-
1.
|
|
64
|
-
Add Categories to the library submenu after mapping PlexAPI support against
|
|
65
|
-
real server responses. Keep the default browse path simple so
|
|
66
|
-
Enter-on-library behavior stays fast.
|
|
67
|
-
|
|
68
|
-
2. Profile switching and auto sign-in.
|
|
67
|
+
1. Profile switching and auto sign-in.
|
|
69
68
|
Useful, but more invasive than the browse entrypoints because it changes auth
|
|
70
69
|
and account-token assumptions. Treat it as a separate design pass.
|
|
71
70
|
|
|
72
|
-
3. Movie editions.
|
|
73
|
-
Surface editions as distinct item variants once enough real-library examples
|
|
74
|
-
are available to keep the UI compact.
|
|
75
|
-
|
|
76
|
-
4. In-playback track switching.
|
|
77
|
-
Defer until there is a clear design for driving mpv IPC track changes and
|
|
78
|
-
reconciling Plex stream state after launch.
|
|
79
|
-
|
|
80
71
|
## Design Notes for plex-tui
|
|
81
72
|
|
|
82
73
|
- Keep terminal-first density. Prefer list entrypoints and status/detail text
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
pkgbase = plex-tui
|
|
2
2
|
pkgdesc = Standalone Plex terminal UI with mpv playback
|
|
3
|
-
pkgver = 0.4.
|
|
3
|
+
pkgver = 0.4.3
|
|
4
4
|
pkgrel = 1
|
|
5
5
|
url = https://github.com/so1omon563/plex-tui
|
|
6
6
|
arch = any
|
|
@@ -16,7 +16,7 @@ pkgbase = plex-tui
|
|
|
16
16
|
depends = python-plexapi
|
|
17
17
|
depends = python-rich
|
|
18
18
|
depends = python-textual
|
|
19
|
-
source = plex-tui-0.4.
|
|
20
|
-
sha256sums =
|
|
19
|
+
source = plex-tui-0.4.3.tar.gz::https://github.com/so1omon563/plex-tui/archive/refs/tags/v0.4.3.tar.gz
|
|
20
|
+
sha256sums = 3e29f88b3a0822905c0a1940916a78d91d9e7c658231de2a6ebabe85d3897688
|
|
21
21
|
|
|
22
22
|
pkgname = plex-tui
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Maintainer: so1omon
|
|
2
2
|
pkgname=plex-tui
|
|
3
|
-
pkgver=0.4.
|
|
3
|
+
pkgver=0.4.3
|
|
4
4
|
pkgrel=1
|
|
5
5
|
pkgdesc="Standalone Plex terminal UI with mpv playback"
|
|
6
6
|
arch=("any")
|
|
@@ -22,7 +22,7 @@ makedepends=(
|
|
|
22
22
|
"python-wheel"
|
|
23
23
|
)
|
|
24
24
|
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
|
|
25
|
-
sha256sums=("
|
|
25
|
+
sha256sums=("3e29f88b3a0822905c0a1940916a78d91d9e7c658231de2a6ebabe85d3897688")
|
|
26
26
|
|
|
27
27
|
build() {
|
|
28
28
|
cd "$pkgname-$pkgver"
|