Skip to main content

Release notes for television 0.12.0

image

New Contributors

  • @Ktoks made their first contribution in #590
  • @lalvarezt made their first contribution in #588
  • @kapobajza made their first contribution in #568
  • @domaschh made their first contribution
  • @cr4ftx made their first contribution in #496

Highlights

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

It is in no means exhaustive. If you're really interested in the complete changelog, feel free to skip ahead.

Channels refactor and lots of new features

  • channels now allow much more configuration options
  • channels are now laid out in a more natural way in the user's config directory
  • tv now relies on string-pipeline as its templating system which provides a concise and very expressive syntax that supports quite a lot of basic transformations
  • channels can be accessed directly using keyboard shortcuts (see config options above)
  • community-maintained channels on the official repo can now be installed directly via the cli
  • channels can now be live reloaded and can be configured to live reload periodically

CLI

Lots of new configuration options, all listed here, among which:

  • UI elements, sizes, layout (most of which are covered here)
  • channels can now be built on the fly using the cli:
tv --source-command "find . -name '*.rs'" \
--preview-command "bat -n --color=always '{}'" \
--preview-size 70
  • you may now choose to disable some of tv's features for a specific use case (e.g. opening tv in single-channel mode by disabling the remote control entirely, or choosing to disable the status bar for an extra line of space, etc.)
  • you may now define custom keybindings through the cli
  • you may tweak tv's selection behavior using --select-1, --take-1, --take-1-fast
  • tv now has a --watch mode
  • you may now download channels from tv's repo using the cli

New UI features and improvements to customization

tv-files-remote

  • tv now has a status bar and a help panel
  • the remote control went through a rework and now displays richer information about available channels
  • tv now has a portrait mode
    image
  • the preview panel size is now configurable on a per channel basis
  • tv now has an --inline mode (+ --height, --width)
    image
  • more customizable UI elements image
  • preview scrollbars

Shell integration

  • added support for nushell
  • shell integration now spawns tv in inline mode by default
  • improved shell integration for zsh and fish

Others

  • mouse support
  • tui testing framework
  • search history (per-channel and global)
  • a lot of bug fixes
  • substantial performance improvements while drawing much less resources
  • heavy refactoring and simplifying the code (deleting nearly 10k loc)
  • a fair amount of documentation work
  • a lot of new tests

New website

Television now has a brand new website! image

Changelog

⛰️ Features

  • c34fa57 (binary) Host our own apt repo by @kapobajza in #568

  • 7b40e76 (cable) Migrate windows channels by @alexpasmantier

  • 6b38ce2 (cable) Migrate the rest of unix channels by @alexpasmantier

  • a49f104 (channel) Add channel global shortcuts by @lalvarezt

  • 1891736 (cli) Add watch flag to trigger reload of channels by @lalvarezt

  • 2ecbc8a (cli) Initial support for source and preview overrides, layout, take_1 and take_1_fast by @lalvarezt

  • bc8d636 (cli) Add cli options to override configuration and cable directories by @alexpasmantier

  • f887a23 (cli) Add a --ui-scale [0,100] cli parameter by @alexpasmantier in #492

  • 7067a2b (remote) Rework remote UI and add description and requirements panels by @alexpasmantier

  • cfe49ce (remote) Redirect Action::Quit to Action::ToggleRemoteControl when in remote mode by @alexpasmantier in #508

  • 4d80e95 (shell) Add support for integration with NuShell by @alexpasmantier in #410

  • 0f4d879 (shell) Improve zsh completion system by @lalvarezt in #525

  • be8008e (shell) Improve fish completion system by @lalvarezt in #494

  • 639caa1 (stdin) Accept various entry separator characters by @alexpasmantier in #572

  • ccc12e2 (tui) Add special testing conditions for overlay testing by @lalvarezt in #585

  • 4ed48cc (ui) Support for non-fullscreen UI by @lalvarezt in #578

  • 23f52d4 (ui) Optional scrollbar and mouse support for the preview panel by @lalvarezt

  • ad4e254 (ui) New keybindings panel and status bar by @lalvarezt

  • 510e7b6 (ui) Add support for customizing input_header, preview_header and preview_footer by @lalvarezt

  • 783d96b (ui) Preview size customization by @lalvarezt

  • 1086899 (ui) Add a UI portrait mode #489 by @cr4ftx in #496

  • 3b3a0ec (windows) Add text channel with preview offset for windows by @alexpasmantier in #514

  • 4513945 (uncategorized) Add global/channel input history by @lalvarezt in #573

  • 9e306d9 (uncategorized) New channel and added reload and toggle actions by @lalvarezt

🐛 Bug Fixes

  • dbff3a3 (alias) Move terminal raw mode before loading bat assets #444 by @cr4ftx in #484

  • 0514a91 (alias) Rename the aliases channel to alias by @alexpasmantier in #485

  • 67195e7 (app) Channel keybindings are ignored by @lalvarezt

  • 415dd38 (app) Honor cli no-help and no-preview by @lalvarezt

  • 6b3c4ee (cable) Don't panic when unable to format user template with entry by @alexpasmantier in #516

  • 5d730cd (channel) Only allow reload and cycle_sources in channel mode by @alexpasmantier

  • 17439da (channels) Quote bat arguments by @Ktoks in #590

  • 07556ea (cli) Fix validation rules when reading from stdin by @alexpasmantier

  • ca5808a (cli) Fix parsing of arguments for autocomplete-prompt by @lalvarezt in #569

  • 090d71a (cli) Using --exact now works on the --input text aswell by @domaschh

  • dfbdd65 (config) Use the config default_channel field as a fallback when no channel is specified by @alexpasmantier in #524

  • 653c986 (github) Copy github prototypes' content directly by @alexpasmantier

  • 3e98475 (github) Improve ux when downloading cable channels by @alexpasmantier

  • 9a80919 (keybindings) Add cmd as an option for modifrs by @domaschh

  • cd33151 (layout) Double check whether preview is enabled by @nkxxll in #499

  • d429a9a (matcher) Better handling of reloading and cycling through sources by @alexpasmantier

  • 94e34c1 (os) No more panicking on cwd-related errors by @alexpasmantier

  • 0f8a585 (preview) Default to no offset when offset template formatting fails by @alexpasmantier

  • a81a86f (preview) Don't panic when the previewer attempts to send to a closed channel by @alexpasmantier

  • 1741a15 (preview) Add a post-processing step to clean out ansi text from non-displayable characters by @alexpasmantier in #509

  • a8fb0f0 (reload) Avoid UI flickering while reloading channel by @alexpasmantier

  • 1f0c178 (results) Remove keymap hint if help is disabled by @nkxxll in #480

  • 39dd9ef (shell) Paste not working in zsh shell integration by @kapobajza in #512

  • 1de2866 (templates) Handle case when template contains brackets that shouldn't be interpreted by the parser by @alexpasmantier

  • dde3193 (tui) Fixed shell completion widget not rendering, add poc for fish by @lalvarezt in #588

  • dc75e80 (ui) Avoid glitches caused by programs outputting control sequences by @alexpasmantier in #579

  • e5a13ef (uncategorized) Reset picker selection when cycling through sources by @alexpasmantier

  • b0c25b1 (uncategorized) Rollback unwanted modifications on text and env prototypes by @alexpasmantier

  • 175015d (uncategorized) Load new channel after zapping with the remote by @alexpasmantier

  • c80e9b1 (uncategorized) "toggle source" leftovers by @alexpasmantier

🚜 Refactor

  • 2fdb47f (cable) Add helper function to get keybindings by @lalvarezt

  • e06e5e6 (cable) Update preview size for files and env by @alexpasmantier

  • e76a3df (cable) Cable format redesign by @alexpasmantier [breaking]

  • b372fe8 (cable) Add files and text channels with the new configuration format by @alexpasmantier in #534

  • e2f52b8 (cable) Improve naming and documentation for prototypes.rs by @alexpasmantier in #487

  • 4385317 (cable) Split cable related code into separate submodules by @alexpasmantier in #486

  • 1a5fa5d (channels) Some renaming and refactoring the channels module by @alexpasmantier in #503

  • a2ebbb3 (cli) Add validation logic + docs by @lalvarezt

  • ebca4d2 (cli) Move cli overrides to dedicated function by @alexpasmantier

  • 80cb6c3 (picker) New movement system by @lalvarezt

  • b9f42e8 (preview) Simplify channel previews code and remove intermediate PreviewKind struct by @alexpasmantier in #490

  • 67c067f (previewer) A much more efficient preview system for tv by @alexpasmantier in #506

  • f138e8a (screen) Remove leftover line number, not used anymore by @lalvarezt

  • 7ac2f28 (screen) New result line abstraction that can be reused by @lalvarezt

  • 4b338f5 (shell) Make use the new Binding system by @lalvarezt

  • 58d90c6 (ui) Feature based UI by @lalvarezt

  • 8fd9163 (uncategorized) More stable behavior for --inline, --width and --height by @alexpasmantier in #589

  • d82bf72 (uncategorized) Extract overlay tui logic into separate function and call it on resize events by @alexpasmantier

  • 4faab40 (uncategorized) QOL improvements on channels and CLI override logic by @lalvarezt in #584

  • 292c521 (uncategorized) Use super for linux and windows and cmd for macos by @alexpasmantier in #571

  • 51617b1 (uncategorized) Clearer separation of channels vs remote, better deserialization of prototype sub-structures, etc. by @alexpasmantier

  • 53c36f0 (uncategorized) Add reload and cycle source to default keymaps + default keymap changes by @alexpasmantier

  • 466a743 (uncategorized) Strip new channels to their bare minimum config by @alexpasmantier

  • 2b2654b (uncategorized) Drop TelevisionChannel enum and all associated macros by @alexpasmantier in #498

  • cc27b5e (uncategorized) Drop dependency to the ignore crate by @alexpasmantier

  • c2f4cc2 (uncategorized) Tv no longer needs to write the default cable channel recipes to the user's configuration directory by @alexpasmantier in #482

  • 67677fb (uncategorized) All channels are now cable channels by @alexpasmantier in #479 [breaking]

📚 Documentation

  • 825e974 (cable) Update channel documentation (auto) by @github-actions[bot] in #594

  • 185f789 (cable) Update channel documentation (auto) by @github-actions[bot]

  • 8bdebd3 (channels) Autogenerate channel documentation + CI action by @alexpasmantier

  • 6015809 (tests) Simple documentation for the PtyTester by @alexpasmantier

  • 7bbf538 (utils) Add documentation for string formatting logic by @alexpasmantier in #517

  • 0112b40 (uncategorized) Update installation docs by @alexpasmantier

  • e5654fc (uncategorized) Add docusaurus website by @alexpasmantier

  • e797aba (uncategorized) Reorganize docs by @alexpasmantier

  • 106004d (uncategorized) Architecture by @alexpasmantier

  • 1d33c93 (uncategorized) Add readme banner by @alexpasmantier

  • 3ac6c76 (uncategorized) Update readme by @alexpasmantier

  • 1c5810f (uncategorized) Add assets + update readme image by @alexpasmantier

  • d9d6554 (uncategorized) Migrate some of the wiki's content to the docs/ folder by @alexpasmantier

  • 9364b3e (uncategorized) Some cleaning and reorganizing by @alexpasmantier

  • f52d4ef (uncategorized) Update README by @alexpasmantier

  • c25a5bd (uncategorized) Update readme and add new format docs by @alexpasmantier

  • aac7e4d (uncategorized) Update terminal emulators compatibility list by @alexpasmantier

  • 9127e41 (uncategorized) Add index.md by @alexpasmantier

  • d3bb3b0 (uncategorized) Cleanup old todo list by @alexpasmantier in #483

⚡ Performance

  • fc2f8b9 (previews) Avoid unnecessary preview content copy by @alexpasmantier in #507

  • 14804f5 (uncategorized) Pre-allocate result vectors, and reuse picker entries to avoid reallocations by @lalvarezt

  • 19d1ca1 (uncategorized) More pre-allocations and avoid unnecessary ascii string parsing work by @lalvarezt

🧪 Testing

  • f60b492 (cli) Add test that validates piping tv is working as expected by @alexpasmantier

  • 42e2728 (cli) New cli test suite by @lalvarezt

  • 47b99c4 (e2e) Better pty tooling and more tests by @alexpasmantier

  • b780fa1 (e2e) Add proper e2e tests and pty-testing utils by @alexpasmantier

  • f6dcedc (e2e) Fallback to a default value of 0 when failing to parse preview offset by @alexpasmantier

  • 3b57710 (e2e) More end to end tests by @alexpasmantier

  • 8d822cd (e2e) Add e2e tests for secondary cli commands (version, init, list-channels, ...) by @alexpasmantier

  • 6662544 (television) Add test to check channel keybindings precedence by @alexpasmantier

  • a59aab6 (uncategorized) Add integration test for --watch by @alexpasmantier

  • dd832fc (uncategorized) A cleaner integration tests directory structure by @alexpasmantier

  • fe8bdc6 (uncategorized) Add test to check cli overrides by @alexpasmantier

⚙️ Miscellaneous Tasks

  • f58e46c (changelog) Update changelog (auto) by @github-actions[bot] in #591

  • d106ada (changelog) Update changelog (auto) by @github-actions[bot] in #513

  • 64c599e (changelog) Update changelog (auto) by @github-actions[bot] in #491

  • a602dda (changelog) Update changelog (auto) by @github-actions[bot] in #478

  • 2e99fba (nix) Update sha of rust toolchain in flake.nix by @tukanoidd in #530

  • 738fe08 (rust) Update rust edition to 2024 and version to 1.87 by @alexpasmantier in #528

  • f6b2205 (tui-input) Add credit and license for television/utils/input.rs by @alexpasmantier in #544

  • 71582e5 (uncategorized) Bump to 0.12.0 by @alexpasmantier

  • 429bfae (uncategorized) Remove unused serde renames by @alexpasmantier

  • 141d3e7 (uncategorized) Update dependencies by @alexpasmantier

  • ab1efed (uncategorized) Remove stale FIXME comment by @alexpasmantier

  • 11c2ef4 (uncategorized) Create github action workflow for pages by @alexpasmantier

  • 0f6b29b (uncategorized) Add sponsorhips button to the repo by @alexpasmantier

New Contributors

  • @Ktoks made their first contribution in #590
  • @lalvarezt made their first contribution in #588
  • @kapobajza made their first contribution in #568
  • @domaschh made their first contribution
  • @cr4ftx made their first contribution in #496

Full Changelog: https://github.com/alexpasmantier/television/compare/0.11.9...0.12.0