Skip to content

v2.1.0 — Rich TUI + watch history + episode ranges + player controls

Choose a tag to compare

@sundeepyt2 sundeepyt2 released this 03 Jul 10:27

What's new

Brings back the best features from v1.x, merged with v2.0's clean backend (AniList search + minimal mpv + proxy fallback).

1. Watch history

  • Tracks what you've watched (~/.config/sni/history.json)
  • Resume prompt: "Resume from episode X?" when re-watching
  • sni history command shows continue-watching list

2. Episode ranges

sni play "one piece" -e 1-12  # play episodes 1 through 12
sni play "one piece" -e 5     # start from episode 5

3. MPV IPC controls (restored)

  • Player overlay with n=next, p=prev, r=replay, q=quit
  • Uses --input-ipc-server for mpv communication

4. Rich Textual TUI (full rewrite)

  • SearchScreen: search bar + results list with scores/episode counts
  • EpisodeScreen: episode list + input for ranges
  • PlayerOverlay: modal with playback controls
  • Header + Footer with keybindings
  • CSS styling (borders, colors, padding)
  • Falls back to interactive CLI if Textual not installed

5. Config wizard

sni config --interactive  # interactive setup

6. Better CLI display

  • Rich tables for search results and history
  • Episode count + score in search results
  • fzf integration with fallback to numbered selection

Backend (unchanged from v2.0 — all the fixes that work)

  • AniList for search (no captcha, 100% reliable)
  • AllAnime for streams (with proxy.cors.sh + CF Worker fallback)
  • Minimal mpv (no demuxer flags that caused fatal errors)
  • Clean error messages (no raw tracebacks)

Install

pip install --upgrade sni-cli
sni "one piece"          # search and play
sni tui                  # rich terminal UI
sni play "X" -e 1-12    # play episode range
sni history              # show watch history

Verified

  • ruff check sni/ → All checks passed
  • pytest -q → 6 passed (0.82s)
  • python -m build → sdist + wheel both pass twine check

Full changelog: v2.0.0...v2.1.0