plex-tui 0.3.41__tar.gz → 0.3.43__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.
Files changed (50) hide show
  1. {plex_tui-0.3.41 → plex_tui-0.3.43}/CHANGELOG.md +5 -0
  2. {plex_tui-0.3.41 → plex_tui-0.3.43}/PKG-INFO +1 -1
  3. {plex_tui-0.3.41 → plex_tui-0.3.43}/packaging/aur/.SRCINFO +3 -3
  4. {plex_tui-0.3.41 → plex_tui-0.3.43}/packaging/aur/PKGBUILD +2 -2
  5. {plex_tui-0.3.41 → plex_tui-0.3.43}/pyproject.toml +1 -1
  6. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/__init__.py +1 -1
  7. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/app.py +25 -15
  8. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_app_helpers.py +23 -0
  9. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/aur.yml +0 -0
  10. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/bump.yml +0 -0
  11. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/ci.yml +0 -0
  12. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/post-release-aur.yml +0 -0
  13. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/post-release-homebrew.yml +0 -0
  14. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/publish-aur.yml +0 -0
  15. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/publish-pypi.yml +0 -0
  16. {plex_tui-0.3.41 → plex_tui-0.3.43}/.github/workflows/publish-testpypi.yml +0 -0
  17. {plex_tui-0.3.41 → plex_tui-0.3.43}/.gitignore +0 -0
  18. {plex_tui-0.3.41 → plex_tui-0.3.43}/AGENTS.md +0 -0
  19. {plex_tui-0.3.41 → plex_tui-0.3.43}/LICENSE +0 -0
  20. {plex_tui-0.3.41 → plex_tui-0.3.43}/Makefile +0 -0
  21. {plex_tui-0.3.41 → plex_tui-0.3.43}/PACKAGING.md +0 -0
  22. {plex_tui-0.3.41 → plex_tui-0.3.43}/README.md +0 -0
  23. {plex_tui-0.3.41 → plex_tui-0.3.43}/RELEASE.md +0 -0
  24. {plex_tui-0.3.41 → plex_tui-0.3.43}/ROADMAP.md +0 -0
  25. {plex_tui-0.3.41 → plex_tui-0.3.43}/config.example.toml +0 -0
  26. {plex_tui-0.3.41 → plex_tui-0.3.43}/docs/assets/grid-view.png +0 -0
  27. {plex_tui-0.3.41 → plex_tui-0.3.43}/docs/assets/list-view.png +0 -0
  28. {plex_tui-0.3.41 → plex_tui-0.3.43}/docs/plex-integration-research.md +0 -0
  29. {plex_tui-0.3.41 → plex_tui-0.3.43}/packaging/aur/README.md +0 -0
  30. {plex_tui-0.3.41 → plex_tui-0.3.43}/packaging/homebrew/README.md +0 -0
  31. {plex_tui-0.3.41 → plex_tui-0.3.43}/scripts/check_release.py +0 -0
  32. {plex_tui-0.3.41 → plex_tui-0.3.43}/scripts/stage_release.py +0 -0
  33. {plex_tui-0.3.41 → plex_tui-0.3.43}/scripts/update_aur_package.py +0 -0
  34. {plex_tui-0.3.41 → plex_tui-0.3.43}/scripts/update_homebrew_formula.py +0 -0
  35. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/__main__.py +0 -0
  36. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/artwork.py +0 -0
  37. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/auth.py +0 -0
  38. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/config.py +0 -0
  39. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/models.py +0 -0
  40. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/player.py +0 -0
  41. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/plex_service.py +0 -0
  42. {plex_tui-0.3.41 → plex_tui-0.3.43}/src/plextui/smoke.py +0 -0
  43. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_app_navigation.py +0 -0
  44. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_artwork.py +0 -0
  45. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_auth.py +0 -0
  46. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_cli.py +0 -0
  47. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_config.py +0 -0
  48. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_player.py +0 -0
  49. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_plex_service.py +0 -0
  50. {plex_tui-0.3.41 → plex_tui-0.3.43}/tests/test_release_checks.py +0 -0
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.43 - 2026-06-16
6
+
7
+ - Kept the footer command bar focused on core actions while leaving the full
8
+ keyboard reference discoverable from Help.
9
+
5
10
  ## 0.3.41 - 2026-06-16
6
11
 
7
12
  - Fixed Plex-transcoded resume playback by passing the resume offset into the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plex-tui
3
- Version: 0.3.41
3
+ Version: 0.3.43
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
@@ -1,6 +1,6 @@
1
1
  pkgbase = plex-tui
2
2
  pkgdesc = Standalone Plex terminal UI with mpv playback
3
- pkgver = 0.3.39
3
+ pkgver = 0.3.41
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.3.39.tar.gz::https://github.com/so1omon563/plex-tui/archive/refs/tags/v0.3.39.tar.gz
20
- sha256sums = 1e799c3f9635dc8e36b1da8ace89a1c3776fb9414a40e74c635f803864c48fad
19
+ source = plex-tui-0.3.41.tar.gz::https://github.com/so1omon563/plex-tui/archive/refs/tags/v0.3.41.tar.gz
20
+ sha256sums = 9291974a0e9b3e7e1acebf76c2c033bc90dd24c32bec5ea11922377dfa5e5ccb
21
21
 
22
22
  pkgname = plex-tui
@@ -1,6 +1,6 @@
1
1
  # Maintainer: so1omon
2
2
  pkgname=plex-tui
3
- pkgver=0.3.39
3
+ pkgver=0.3.41
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=("1e799c3f9635dc8e36b1da8ace89a1c3776fb9414a40e74c635f803864c48fad")
25
+ sha256sums=("9291974a0e9b3e7e1acebf76c2c033bc90dd24c32bec5ea11922377dfa5e5ccb")
26
26
 
27
27
  build() {
28
28
  cd "$pkgname-$pkgver"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "plex-tui"
7
- version = "0.3.41"
7
+ version = "0.3.43"
8
8
  description = "A small standalone Plex terminal UI."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """Plex TUI prototype."""
2
2
 
3
- __version__ = "0.3.41"
3
+ __version__ = "0.3.43"
@@ -431,29 +431,39 @@ class PlexTuiApp(App[None]):
431
431
 
432
432
  BINDINGS = [
433
433
  Binding("q", "quit", "Quit"),
434
- Binding("ctrl+r", "reload", "Reload"),
434
+ Binding("ctrl+r", "reload", "Reload", show=False),
435
435
  Binding("/", "focus_search", "Search"),
436
436
  Binding("g", "focus_global_search", "Global"),
437
- Binding("tab", "focus_next", "Next"),
438
- Binding("shift+tab", "focus_previous", "Prev"),
437
+ Binding("tab", "focus_next", "Next", show=False),
438
+ Binding("shift+tab", "focus_previous", "Prev", show=False),
439
439
  Binding("question_mark", "show_help", "Help"),
440
- Binding("l", "focus_libraries", "Focus libraries"),
441
- Binding("m", "focus_media", "Focus media list"),
442
- Binding("d", "focus_details", "Focus details"),
440
+ Binding("l", "focus_libraries", "Focus libraries", show=False),
441
+ Binding("m", "focus_media", "Focus media list", show=False),
442
+ Binding("d", "focus_details", "Focus details", show=False),
443
443
  Binding("v", "toggle_media_view", "View"),
444
- Binding("left_square_bracket", "jump_alpha_previous", "Prev letter"),
445
- Binding("right_square_bracket", "jump_alpha_next", "Next letter"),
446
- Binding("left", "grid_left", "Left"),
447
- Binding("right", "grid_right", "Right"),
444
+ Binding(
445
+ "left_square_bracket",
446
+ "jump_alpha_previous",
447
+ "Prev letter",
448
+ show=False,
449
+ ),
450
+ Binding(
451
+ "right_square_bracket",
452
+ "jump_alpha_next",
453
+ "Next letter",
454
+ show=False,
455
+ ),
456
+ Binding("left", "grid_left", "Left", show=False),
457
+ Binding("right", "grid_right", "Right", show=False),
448
458
  Binding("comma", "show_settings", "Settings"),
449
459
  Binding("escape", "back_or_clear", "Back"),
450
460
  Binding("p", "play_selected", "Play"),
451
461
  Binding("r", "resume_selected", "Resume"),
452
- Binding("a", "audio_picker", "Audio"),
453
- Binding("s", "subtitle_picker", "Subtitles"),
454
- Binding("A", "clear_audio_preference", "Clear audio"),
455
- Binding("S", "cycle_subtitle_mode", "Sub mode"),
456
- Binding("x", "stop_playback", "Stop"),
462
+ Binding("a", "audio_picker", "Audio", show=False),
463
+ Binding("s", "subtitle_picker", "Subtitles", show=False),
464
+ Binding("A", "clear_audio_preference", "Clear audio", show=False),
465
+ Binding("S", "cycle_subtitle_mode", "Sub mode", show=False),
466
+ Binding("x", "stop_playback", "Stop", show=False),
457
467
  ]
458
468
 
459
469
  service: reactive[PlexService | None] = reactive(None)
@@ -830,6 +830,29 @@ def test_render_help_groups_key_bindings():
830
830
  assert "?: show help" in rendered
831
831
 
832
832
 
833
+ def test_footer_shows_core_bindings_and_help_keeps_full_reference():
834
+ shown = {binding.action for binding in PlexTuiApp.BINDINGS if binding.show}
835
+ hidden = {binding.action for binding in PlexTuiApp.BINDINGS if not binding.show}
836
+ rendered = render_help()
837
+
838
+ assert shown == {
839
+ "quit",
840
+ "focus_search",
841
+ "focus_global_search",
842
+ "show_help",
843
+ "toggle_media_view",
844
+ "show_settings",
845
+ "back_or_clear",
846
+ "play_selected",
847
+ "resume_selected",
848
+ }
849
+ assert "audio_picker" in hidden
850
+ assert "subtitle_picker" in hidden
851
+ assert "a: choose and save audio preference" in rendered
852
+ assert "s: choose and save subtitle preference" in rendered
853
+ assert "ctrl+r: reconnect / reload libraries" in rendered
854
+
855
+
833
856
  def test_performance_log_requires_perf_env(monkeypatch):
834
857
  messages = []
835
858
  monkeypatch.delenv("PLEX_TUI_PERF_LOG", raising=False)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes