Yoga video selection TUI app
  • Go 57.5%
  • HTML 42.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-03-07 14:49:40 +02:00
cmd/yoga increment version after reindexing feature 2025-10-24 20:14:45 +03:00
internal Phase 1-2: Foundation, architecture, and thumbnail system 2026-03-07 14:49:40 +02:00
AGENTS.md fix 2025-10-12 10:10:10 +03:00
coverage.html Add random video selection hotkey (x) 2026-01-28 19:04:38 +02:00
coverage.out Add random video selection hotkey (x) 2026-01-28 19:04:38 +02:00
go.mod Phase 1-2: Foundation, architecture, and thumbnail system 2026-03-07 14:49:40 +02:00
go.sum Phase 1-2: Foundation, architecture, and thumbnail system 2026-03-07 14:49:40 +02:00
Magefile.go ad mage run 2025-10-02 23:21:41 +03:00
plan.md Phase 1-2: Foundation, architecture, and thumbnail system 2026-03-07 14:49:40 +02:00
README.md docs: add deprecation notice to README 2026-03-07 14:49:40 +02:00
yoga Add random video selection hotkey (x) 2026-01-28 19:04:38 +02:00
yoga.png add readme 2025-10-01 23:32:19 +03:00

Yoga

⚠️ DEPRECATED: This project is no longer maintained. No further updates, bug fixes, or feature additions will be made. Use at your own risk.

Yoga is a TUI for browsing local yoga videos with quick filtering, duration probing, and one-key playback via VLC. It has been vibe coded.

Yoga

Usage

yoga [--root PATH] [--crop WxH] [--version]
  • --root sets the directory to scan for videos. When omitted, Yoga uses ~/Yoga and creates it on first launch.
  • --crop supplies an optional VLC crop string (for example 5:4). Toggle the crop at runtime with the c key.
  • --version prints the current version and exits.

Yoga recognises common video extensions (.mp4, .mkv, .mov, .avi, .wmv, .m4v) and follows symlinks when scanning. Duration metadata is cached per directory in .video_duration_cache.json.

Keyboard Shortcuts

  • ↑/↓ Navigate the table
  • enter Play the selected video in VLC
  • / or f Open the filter dialog
  • tab / shift+tab Move between fields in filter/tag dialogs
  • r Reset filters
  • n, l, a Sort by name, length, or age
  • c Toggle VLC crop
  • t Edit tags for the selected video
  • x Select a random video from filtered results
  • H / h Hide or re-show the help footer
  • q Quit

Filter Dialog

  • Focus starts on the name filter when you press /.
  • Use tab and shift+tab to move to Min minutes, Max minutes, or Tags contain.
  • Type numeric values for the minute bounds; leave them blank to disable that side of the range.
  • Press enter to apply the filters or esc to cancel.
  • Status text reflects how many videos remain after filtering.

Development

The project uses Mage for common tasks. Targets live in magefile.go.

mage build     # go build ./cmd/yoga
mage test      # go test ./...
mage install   # go install ./cmd/yoga
mage coverage  # go test with coverage (fails if <85%)

Before sending changes:

  1. Format Go code with gofumpt.
  2. Run mage test and mage coverage to ensure the suite passes and coverage stays above 85%.
  3. Update documentation when flags or behaviour change.

Licensing

This repository is released under the terms specified in the accompanying license file (if present).