Fixes#660
## 📺 PR Description
**This PR adds a cache mechanism for previews that can be set on a
per-channel basis.**
**Typical use case**: your preview is making an expensive call (e.g. API
call, heavily computational, etc.)
This introduces a new `cache` option inside each channel's preview
specification:
```toml
[metadata]
name = "test"
[source]
command = "echo 'test1\\ntest2\\ntest3\\ntest4\\ntest5'"
[preview]
command = "sleep 1 && echo 'Previewing {}'"
cached = true
```
## Checklist
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [x] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [x] I have added a reasonable amount of documentation to the code
where appropriate
## 📺 PR Description
<!-- summary of the change + which issue is fixed if applicable. -->
Currently the links on the docs homepage are broken, because when we run
the website locally it uses [just a slash as the `prefix`/`baseUrl`, but
when run as a production build it uses `/television` as the
`baseUrl`](1d6b996c83/website/docusaurus.config.ts (L21)).
So I added a hook that will take the `baseUrl` and append it to the link
you provide. This hook should be used for any relative link that we add
to the app in React (`.tsx`) files.
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [ ] I have added a reasonable amount of documentation to the code
where appropriate
fixes#653
>
28f58e0641/television/utils/shell/completion.fish (L112)
>
> This line should be
>
> ```
> commandline -t -- (string escape -- "$dir$i")' '
> ```
>
> This is a bug in the fish completion. Bash seems to be fine.
>
> Testing with:
>
> ```
> ❯ fish --version
> fish, version 4.0.2
>
> ❯ mkdir -p "a/with whitespace"
>
> ❯ cd a<ctrl-t>
> ```
>
> Result:
>
> ```
> ❯ cd a/'with whitespace/'
> ```
>
> Expected result:
>
> ```
> ❯ cd 'a/with whitespace/'
> ```
>
> The fix on top gets this result.
## 📺 PR Description
update all file based tests to follow a naming convention in a dedicated
testing folder to prevent clashes. Make sure all needed files are in
place before running the test
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [x] I have added a reasonable amount of documentation to the code
where appropriate
## 📺 PR Description
Added `aws-buckets` and `aws-instances` channels.
## Checklist
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [ ] I have added a reasonable amount of documentation to the code
where appropriate
---------
Co-authored-by: Leonardo Vencovsky <leoven@Leonardos-MacBook-Pro.local>
Co-authored-by: alexandre pasmantier <alex.pasmant@gmail.com>
## 📺 PR Description
Fixes#628
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [ ] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [ ] I have added a reasonable amount of documentation to the code
where appropriate
## 📺 PR Description
Fixes#631
Added constraints to make either mitigate or remove "flakiness" for some
tests
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [ ] I have added a reasonable amount of documentation to the code
where appropriate
`meta.mainProgram` must be set otherwise `lib.getExe` assumes that the
package name is `television` and home manager shell integrations are
broken
## 📺 PR Description
<!-- summary of the change + which issue is fixed if applicable. -->
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [ ] I have added a reasonable amount of documentation to the code
where appropriate
## 📺 PR Description
Fixes#627
stdin and adhoc channels now inherit from global config making them
consistent with the rest
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [x] I have added a reasonable amount of documentation to the code
where appropriate
Fixes#560
### Add theme color overrides in configuration file
Link to #560
### Problem
Currently, customizing television's appearance to match personal style
requires users to rebuild from source code to modify theme colors. This
creates a significant barrier for users who want to personalize their
experience without dealing with compilation and development setup.
Users who want to adjust colors for better readability, match their
terminal theme, or create custom color schemes must either:
- Modify theme files in the source code
- Rebuild the entire application
- Maintain separate theme files
This workflow is not user-friendly and prevents quick experimentation
with different color combinations.
### Solution
Added theme color overrides directly in the configuration file, allowing
users to customize any theme color without rebuilding from source. The
themes/*.toml files now serve as defaults, while the configuration file
provides overrides that take precedence.
### Key features:
- No rebuild required: Customize colors instantly through config
- Easy testing: Try different color combinations without compilation
- Theme flexibility: Mix and match colors from different themes
- Backward compatible: Existing configs continue to work unchanged
- User-friendly: Simple TOML syntax for color customization
### Usage Example
Find your config file location:
```
Default locations:
# Unix: ~/.config/television/config.toml
# Windows: %APPDATA%\television\config.toml
```
Add theme overrides to your config:
```
[ui]
theme = "catppuccin" # or any other theme
[ui.theme_overrides]
background = "#000000" # Pure black background for maximum contrast
text_fg = "#00ff00" # Bright green for main text (high visibility)
selection_bg = "#ff00ff" # Bright magenta for selected items (eye-catching)
selection_fg = "#ffffff" # Pure white text on selected items (high contrast)
match_fg = "#ffff00" # Bright yellow for search matches (stands out)
border_fg = "#00ffff" # Bright cyan for borders (neon effect)
result_name_fg = "#ff8800" # Bright orange for file names (warm highlight)
result_value_fg = "#ff0080" # Bright pink for values (vibrant accent)
```
Test your changes:
```
# Run with your config
./target/release/tv --config-file ~/.config/television/config.toml
```
<img width="1420" alt="Screenshot 2025-07-08 at 08 14 42"
src="https://github.com/user-attachments/assets/90563f86-74aa-460a-a7c2-82080be3dc0b"
/>
---------
Co-authored-by: Mohamed-Amine Bousahih <mohamed-aminebousahih@pc-66.home>
Co-authored-by: Mohamed-Amine Bousahih <mohamed-aminebousahih@mohamedminesair.home>
## 📺 PR Description
<!-- summary of the change + which issue is fixed if applicable. -->
Fixes https://github.com/alexpasmantier/television/issues/603.
Regarding the 2nd point of [your
comment](https://github.com/alexpasmantier/television/issues/603#issuecomment-3048772061),
@alexpasmantier:
> - display a custom error message instead of panicking when themes,
**configuration** and **channels** encounter a parsing error
I couldn't find anything specific for other configuration or channels
regarding parsing errors, they're already properly handled it seems.
Although there's a high chance I might've missed something. Please do
let me know if I did.
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [x] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [x] I have added a reasonable amount of documentation to the code
where appropriate
Co-authored-by: Kapobajza <kapobajza@gmail.com>
## 📺 PR Description
Fixes#617
Cursor position is now correctly set regardless of the layout
## Checklist
<!-- a quick pass through the following items to make sure you haven't
forgotten anything -->
- [x] my commits **and PR title** follow the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format
- [ ] if this is a new feature, I have added tests to consolidate the
feature and prevent regressions
- [ ] if this is a bug fix, I have added a test that reproduces the bug
(if applicable)
- [x] I have added a reasonable amount of documentation to the code
where appropriate