Skip to main content

0.15

tv-0.15.png

Highlights

This section is meant as a quick recap of what you should know when upgrading to 0.15.x.

It is by no means exhaustive. If you're really interested in the complete changelogs, check out the individual release pages.

Channel Actions Picker

tv-015-actions.png

Channels can now define actions — commands that operate on the currently selected entry. Hit Ctrl+X to open the action picker and choose from a searchable list, or bind actions directly to keys.

Here's what the git-branch channel looks like:

[keybindings]
enter = "actions:checkout"
ctrl-d = "actions:delete"
ctrl-m = "actions:merge"
ctrl-r = "actions:rebase"

[actions.checkout]
description = "Checkout the selected branch"
command = "git checkout '{0}'"
mode = "execute"

[actions.delete]
description = "Delete the selected branch"
command = "git branch -d '{0}'"
mode = "execute"

Actions support two modes:

  • execute: replaces the tv process (tv exits, action takes over)
  • fork: spawns the command as a child process (tv stays open)

This enables having "management-style" channels. For instance, the docker-containers channel lets you start, stop, restart, view logs, exec into, or remove containers — all from the same picker:

[actions.logs]
description = "Follow logs of the selected container"
command = "docker logs -f '{split:\t:0}'"
mode = "execute"

[actions.exec]
description = "Execute shell in the selected container"
command = "docker exec -it '{split:\t:0}' /bin/sh"
mode = "execute"

Frecency Sorting

Results can now be ranked by frecency (frequency + recency). Entries you select often and recently float to the top. This is enabled by default for some channels and recorded automatically.

Frecency is stored in ~/.local/share/television/frecency.json and uses a Mozilla-style time-decay algorithm with recency buckets (last 4 hours, last day, last week, etc.) combined with access count.

You can tune it per channel:

[source]
command = "fd -t f"
frecency = false # disable for this channel

Or adjust the global cap in ~/.config/television/config.toml:

frecency_max_entries = 1000  # max entries tracked per channel (default)

Channels where ordering is inherently meaningful (shell history, git log, etc.) ship with frecency disabled by default.

Custom Sorting Controls

You can now preserve the original source order instead of having results re-sorted by match quality. This is useful for chronologically sorted sources like shell history or log entries:

tv zsh-history --no-sort

Or in a channel TOML:

[source]
command = "sed '1!G;h;$!d' ${HISTFILE:-${HOME}/.zsh_history}"
no_sort = true
frecency = false

When no_sort is enabled, both match-quality sorting and frecency are disabled — the source's original ordering is preserved.

Custom Shell for Commands

Channels can now specify which shell to use for source, preview, and action commands. This is useful when a command depends on shell-specific syntax:

[source]
command = "some-command-that-needs-fish-syntax"
shell = "fish"

You can also set a global shell override in your config file so all channels use it by default (channel-specific settings still take precedence):

# ~/.config/television/config.toml
shell = "zsh" # options: bash, zsh, fish, powershell, cmd, nu

If neither is set, tv auto-detects from $SHELL.

41 New Channels + Improvements

0.15.0 and 0.15.1 together added 41 new channels with more default actions for existing ones. The update-channels command now skips channels with unmet requirements by default — so running tv update-channels won't clutter your system with channels you can't use.

Cycle Sources and Previews Tab Indicators

Channels with multiple source commands (like dirs which cycles between fd -t d and fd -t d --hidden) now show tab indicators in the UI so you can see which variant is active. The keybinding to cycle is shown next to the indicator.

# dirs.toml — two source commands to cycle through with ctrl-s
[source]
command = ["fd -t d", "fd -t d --hidden"]

The same applies to channels with multiple preview commands (Ctrl+F to cycle).

Remote Control: Missing Requirements Popup

When browsing channels in the remote control (Ctrl+T) and selecting one whose requirements aren't met, tv now shows a popup explaining what's missing instead of failing silently.

tv-015-missing-reqs.png

Fish Shell Channel Completion

Fish users now get channel name completion out of the box:

tv <Tab>
# Shows available channels labeled "(Channel)" alongside subcommands

Performance

Various performance improvements (see changelog)

Other Changes

  • tv list-channels output is now sorted alphabetically
  • The stateful loading spinner was replaced by a static symbol
  • Documentation overhaul across the project
  • Dependabot configured for cargo and rust-toolchain ecosystems

Full Changelog: https://github.com/alexpasmantier/television/compare/0.14.5...0.15.3