Skip to content
CAI
Software that uses CAICheck a score

alexpasmantier/television

68.2

Adequate · 29 September 2026

23.6k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Television is a terminal-based fuzzy finder that provides a high-performance, extensible interface for searching and selecting items from various sources. It features a modular 'cable' channel system for defining data inputs, a backgrounded matching engine with frecency-based ranking, and deep shell integration for autocomplete and history search. The application supports extensive customization through layered configuration, multiple UI themes, and a comprehensive CLI, while offering automated installation and documentation for users.

Features

Add man page for television

Users can now access the manual page for the television fuzzy finder via \man tv\. The new \man/tv.1\ file documents the CLI interface, including options for source and preview commands, input handling, UI scaling, and channel configuration.

man · high confidence

Add shell integration scripts for Bash, Fish, Nushell, PowerShell, and Zsh

Users can now integrate the television tool directly into their shell environment. New scripts in television/utils/shell provide smart autocomplete and shell history search capabilities for Bash, Fish, Nushell, PowerShell, and Zsh. These scripts bind custom keybindings to trigger television for path completion and history retrieval, with specific implementations for each shell's completion engine and keybinding system.

television/utils/shell · high confidence

Add stable APT repository metadata and signing key

The website now serves the static infrastructure required for an official APT repository, including the PGP public key, repository configuration, and signed Release/InRelease metadata for the 'stable' distribution. This enables users to install the 'television' package (version 0.11.9) via standard package managers on amd64 systems.

website/static/apt · high confidence

Add tv(1) landing page with install command and channel examples

The website now includes a dedicated landing page at the root path, featuring a hero section with a one-click copy button for the installation command, a screenshot of the tool in action, and an introduction explaining its fuzzy-finding capabilities. The page also provides concrete examples of using tv with shell pipes and defining custom channels via TOML configuration files, styled with a dark Catppuccin-inspired theme.

website/src/pages · high confidence

Added Rose Pine and Cyberdream theme options

The application now includes three new built-in color themes: Rose Pine, Rose Pine Moon, and Rose Pine Dawn, as well as Cyberdream and Cyberdream Light. Users can select these styles from the theme configuration to customize the visual appearance of the interface.

television/config/themes · high confidence

Added automated installation script for Television

A new \install.sh\ script has been added to the website's static assets, providing users with an automated way to install the Television application. The script detects the user's operating system (Linux, macOS, or Windows) and architecture, then attempts installation via the most appropriate method, including Homebrew, Nix, pacman, apt, Cargo, or a direct binary download. A \.nojekyll\ file is also included to ensure the static directory is processed correctly by the documentation site.

website/static · high confidence

Comprehensive CLI argument structure and validation logic

The CLI interface now exposes a wide range of configuration options directly via command-line flags, allowing users to override channel defaults or build ad-hoc search configurations without editing config files. Users can now control source behavior (e.g., \--ansi\, \--no-sort\, \--source-display\), preview settings (e.g., \--preview-command\, \--cache-preview\, \--preview-header\), UI layout (e.g., \--ui-scale\, \--input-position\, \--layout\), and matching behavior (e.g., \--exact\, \--select-1\, \--typo-resistance\). The system distinguishes between channel-based mode (where flags override defaults) and ad-hoc mode (where stricter validation ensures required components like source commands are present), preventing broken configurations.

television/cli · high confidence

Initial Docusaurus documentation website

The website directory now contains a complete Docusaurus-based documentation site, including configuration for a dark-only theme with Catppuccin Mocha syntax highlighting, Algolia search integration, and Mermaid diagram support. The site features a custom landing page with navbar links, a responsive layout, and a sidebar autogenerated from the ../docs markdown files, replacing any previous static or non-existent web presence.

website · high confidence

Initial application scaffolding and core TUI framework

This change introduces the foundational structure for a terminal-based application. It establishes the core event loop and rendering engine in \src/tui.rs\, defines the \Action\ and \Event\ types for internal communication, and implements the main \App\ loop in \src/app.rs\ to manage component lifecycle and state. The update includes a CLI interface (\src/cli.rs\) for configuring tick and frame rates, a configuration system (\src/config.rs\) for keybindings and styles, and a basic component architecture (\src/components.rs\) with a \Home\ screen and an FPS counter. It also sets up error handling (\src/errors.rs\) and logging (\src/logging.rs\) to support the new runtime.

src, src/components · high confidence

Introduce cable channel system and frecency-based result ranking

The application now uses a new 'cable' format for defining channels, replacing the previous channel system with a TOML-based prototype structure that supports binary requirements and custom keybindings. Additionally, a frecency system has been added to rank search results based on access frequency and recency, persisting this data to improve the relevance of previously selected entries. The UI also gains support for multiple actions per keybinding, allowing users to bind sequences of commands to single keys.

television · high confidence

Introduce one-click installation script and Nix flake support

Users can now install Television via a single command using the new install.sh script, which automatically detects the operating system and architecture to install via the best available method (Homebrew, Nix, pacman, .deb, Cargo, or pre-compiled binary). Additionally, the project now includes a Nix flake (flake.nix, flake.lock, default.nix) for declarative installation and development, and the build process has been updated to automatically generate man pages from the CLI argument definitions.

(repo-wide) · high confidence

New action picker and remote control channel interfaces

The channels module now exposes dedicated picker types for managing user actions and switching between channels. The new \ActionPicker\ provides a searchable, matchable interface for executing configured channel actions, while the \RemoteControl\ channel allows users to browse, search, and switch between available cable channels directly from the UI. These components implement the standard \ResultItem\ interface, enabling consistent matching, display, and shortcut handling across the application.

television/channels · high confidence

New scripts for versioning, publishing, and channel management

Added several new shell and Python scripts to the scripts directory to support development and user workflows. The \bump.sh\ and \get\_version.py\ scripts automate version bumping across the Rust workspace crates. The \publish.sh\ script streamlines publishing the various television crates to crates.io. The \update-channels.sh\ script allows users to download and update community channel configurations from the repository, with logic to skip existing files unless the \--force\ flag is used. Additionally, \generate\_cable\_docs.py\ automates the creation of documentation for these channels, and \generate\_legacy\_config\_pairs.py\ assists in maintaining configuration migration templates.

scripts · high confidence

New utility library for ANSI styling, clipboard, shell integration, and input handling

The television/utils module has been introduced, providing core utilities that underpin the application's display and interaction capabilities. This includes a new ANSI parser that stores styling as interned runs for better performance, a cross-platform clipboard implementation supporting OSC52 and native APIs, and a shell integration layer that detects and configures shells like Bash, Zsh, Fish, PowerShell, and Nu. Additionally, the module adds an input buffer with cursor support, a ring buffer cache for previews, and helpers for file type detection and string truncation with highlighted ranges.

television/utils · high confidence

New website components for installation tabs and landing navigation

This change introduces new Docusaurus components to enhance the documentation site's layout and navigation. InstallationTabItem and InstallationTabs are added to ensure installation instructions display with non-wrapping text for better readability. Additionally, a new LandingLinks component provides a custom navigation menu on the landing page, featuring links to Installation, Getting Started, and Documentation, styled with Catppuccin accent colors and centered positioning on desktop while moving to the mobile drawer on smaller screens.

website/src/components · high confidence

Behavioural changes

Apply Catppuccin-inspired dark theme with Ubuntu typography

The website now uses a new global CSS theme (custom.css) that switches the font family to Ubuntu for body text and Ubuntu Mono for code, while headings use the Doto font. The color palette is updated to a dark Catppuccin-inspired scheme with specific accent colors, and UI elements like tables, code blocks, and navigation links are restyled to match this new aesthetic.

website/src/css · high confidence

Configuration format migrated from JSON5 to TOML

The application's configuration file has switched from the JSON5 format (config.json5) to TOML (config.toml). This change introduces a comprehensive default configuration file that defines general settings (such as tick rate, default channel, and history size), UI layout options (orientation, theme, panel visibility), keybindings, and shell integration fallbacks. Users must now use the TOML-based config file structure instead of the previous JSON5 format.

.config · high confidence

Matcher engine replaced with frizbee and re-architected for background processing

The fuzzy matching engine has been replaced with frizbee, introducing a background worker architecture that processes matching passes in chunks and publishes results progressively. This change adds an explicit injector for non-blocking item ingestion, supports optional typo resistance, and implements a new \SortStrategy::Promoted\ mode that allows frecency-based promotion of specific entries. Additionally, the matcher now correctly exposes UTF-32 character indices for matched items, ensuring accurate highlighting for multi-byte Unicode characters.

television/matcher · high confidence

New layered configuration system with simplified keybindings

The application now uses a layered configuration system that merges base config, channel prototypes, and CLI options into a single merged configuration, allowing CLI flags to override config file settings. Keybindings are now defined in a new \Keybindings\ struct that supports merging (with user overrides taking precedence) and case-insensitive modifier parsing (e.g., \ctrl-a\ or \Ctrl-A\ are treated identically). Legacy configuration templates are preserved in \legacy\_config\_templates.json\ to support migration from older config formats.

television/config · high confidence

New minimal UI theme and comprehensive screen rendering subsystem

The television application introduces a new minimal, color-only UI theme as the built-in default, replacing the previous default appearance. This change is driven by a complete rewrite of the screen rendering subsystem, which now features a structured \Colorscheme\ for granular theming, a new \Layout\ abstraction supporting configurable input bar positions (top/bottom) and layout orientations (landscape/portrait), and dedicated modules for the action picker, help panel, and missing requirements popup. Users will see a cleaner interface with optional scrollbars replaced by dimmed scroll percentages, multi-source indicators next to result counts, and a status bar that gracefully adapts to narrow viewports by falling back to essential hints.

television/screen · high confidence

Previewer now caches results per channel for improved performance

The television previewer now supports per-channel caching of preview content. A new LRU cache implementation (defaulting to 50 entries) stores processed preview text, allowing repeated previews for the same entry to be served instantly without re-running the preview command. This change significantly reduces latency and resource usage when navigating through results, as the system avoids redundant command execution and text processing for cached items.

television/previewer · high confidence

Redesigned search interface with TV-style theming and landing page navigation

The documentation site now features a visually distinct search experience and updated navigation. The search bar and modal have been restyled to match a 'TV-style' aesthetic, utilizing the Catppuccin accent colors, Ubuntu Mono font, and flat key hints for a modern look. Additionally, a new custom navbar item has been introduced to display landing page links, enhancing site navigation.

website/src/theme · high confidence

Fixes

The home page now correctly generates absolute URLs for internal links, resolving issues where links were previously broken or malformed. This is achieved by introducing a new \useGenerateSiteUrl\ hook that leverages Docusaurus context to properly prefix paths with the site's base URL, ensuring consistent navigation across the website.

website/src/hooks · high confidence

Test coverage

Added performance benchmarks for core television operations; New headless and PTY integration test suites; Refactored benchmark suite into a modular structure.

Dependencies

Website dependencies updated to Docusaurus 3.10 and React 19 with security overrides

The television website now uses Docusaurus 3.10.2, React 19.3.0, and TypeScript 5.9.3. To address security vulnerabilities, the package configuration enforces overrides for serialize-javascript (\>=7.0.5), minimatch (\>=3.1.4), uuid (\>=11.1.1), and lodash-es (\>=4.18.0).

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 65 → 68 (+3.1)
  • Rubric changed (rubric-2026.09.9 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 89 → 89 (+0.1)
  • Architecture 95 → 83 (-12.2)
  • Maturity 61 → 61 (+0.1)
  • Readiness 67 → 67 (+0.3)
  • Security 57 → 72 (+14.3)
  • Event Sourcing 100 → 100 (+0.0)
  • Performance 91 (new)

Resolved (13)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no installation or build instructions (docs/community/contributing-channels.md)
  • Documentation: no usage examples (README.md)
  • FixmeComment (tests/cli/ui.rs)
  • FixmeComment (tests/cli/ui.rs)
  • FixmeComment (tests/remote_control.rs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Hotspot: television/config/keybindings.rs (television/config/keybindings.rs)
  • Hotspot: television/config/themes.rs (television/config/themes.rs)
  • Hotspot: television/screen/preview.rs (television/screen/preview.rs)
  • Off-boarding risk: anonymized user #1

New (14)

  • Change coupling: channel.rs ↔ worker.rs (television/channels/channel.rs)
  • Documentation: no project overview (docs/getting-started/01-installation.md)
  • FixmeComment (tests/pty/layout.rs)
  • FixmeComment (tests/pty/layout.rs)
  • FixmeComment (tests/pty/remote_control.rs)
  • Low cohesion: Entry (LCOM4 4) (television/channels/entry.rs)
  • Off-boarding risk: anonymized user #1
  • Outdated: clap
  • Outdated: clap_complete
  • Outdated: serde_with
  • Outdated: smallvec
  • Outdated: ureq
  • Projects may be oversized for their cohesion
  • Repeated repair: television/tui.rs (television/tui.rs)

Changes since last survey

  • 23 commits — 21 feature/other, 2 fixes

By area

  • (root) — 4 commits
  • website/src — 3 commits
  • .github/workflows — 2 commits
  • tests/pty — 2 commits
  • website/static — 2 commits
  • .config/config.toml — 1 commit
  • docs/advanced — 1 commit
  • docs/reference — 1 commit
  • docs/user-guide — 1 commit
  • television/app.rs — 1 commit
  • television/channels — 1 commit
  • television/cli — 1 commit
  • television/screen — 1 commit
  • tests/headless — 1 commit
  • website/package.json — 1 commit

Notable commits

  • fix: fix(tui): always query kitty keyboard protocol support through /dev/tty
  • fix: fix: respect channel preview cache settings
  • change: build(website): upgrade dependencies
  • change: build: colored output for just test
  • change: chore(changelog): drop emojis from group names
  • change: ci: update apt index before installing packages
  • change: ci: use pinned toolchain and share rust cache from main
  • change: docs(contributing): update log file path on macos
  • change: docs: replace emojis with plain marks
  • change: feat(cli): add a --no-cache-preview cli option
  • change: feat(selection): replace toggle_selection_down/up with toggle_selection and toggle_selection_all
  • change: feat(ui): respect border settings for action and remote panes
  • change: feat(website): landing links in the navbar, catppuccin accent and code theme, full-width docs layout
  • change: feat(website): lighter and slightly smaller body text
  • change: feat(website): more space between navbar menu items
  • change: feat(website): title the landing page tv(1)
  • change: feat(website): ubuntu body font, larger type, themed code blocks and hovers
  • change: perf(frecency): prune once when recording a selection
  • change: refactor(docs): make sidebar categories collapse instead of linking to index pages
  • change: refactor(selection): key multi-selection by matcher store index
  • …and 3 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

alexpasmantier/television was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 29 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 58c65fdfe5a151c006e0ae335ba56af40124de17 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-c4983f2d4e5c.