Release notes for television 0.12.0
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 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
- the preview panel size is now configurable on a per channel basis
- tv now has an
--inline
mode (+--height
,--width
)
- more customizable UI elements
- 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!
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
toAction::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
andpreview_footer
by @lalvarezt -
783d96b (ui) Preview size customization by @lalvarezt
-
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
-
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
andenv
by @alexpasmantier -
e76a3df (cable) Cable format redesign by @alexpasmantier [breaking]
-
b372fe8 (cable) Add
files
andtext
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