Skip to content
CAI
Software that uses CAICheck a score

hrkfdn/ncspot

65.0

Adequate · 29 September 2026

12.8k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a terminal-based Spotify client that provides playback, library management, and search capabilities through a text user interface. It supports cross-platform integration via MPRIS and desktop entries, and offers detailed navigation for albums, artists, and playlists. The application is built with Rust and includes tooling for generating documentation and shell completions.

Features

Added desktop entry for ncspot

A new desktop entry file (ncspot.desktop) has been added to the misc directory, enabling the application to be properly recognized and launched from desktop environments. This includes setting the application name, icon, execution command, and categorizing it under Audio/Video players.

misc · high confidence

Added xtask automation for generating man pages and shell completions

A new \xtask\ utility has been introduced to automate the generation of documentation and shell integration artifacts. Users can now run \cargo xtask generate-manpage\ to automatically create man pages for the application, and \cargo xtask generate-shell-completion\ to generate completion scripts for supported shells (bash, zsh, fish, elvish, and powershell). This change centralizes these generation tasks within the build toolchain, ensuring that documentation and shell integrations are kept in sync with the command-line interface definitions.

xtask · high confidence

Initial project scaffolding and configuration

This change establishes the foundational project structure for ncspot, introducing essential configuration and development files. It adds an \.editorconfig\ to enforce consistent coding styles (4-space indentation, UTF-8, 100-character line limits for Rust and Markdown) and a \rust-toolchain.toml\ to pin the Rust toolchain to version 1.98.1 with specific components. A \build.rs\ script is included to embed the Git commit hash into the application's version string for easier debugging. Additionally, it provides a \shell.nix\ file for reproducible Nix-based development environments and updates \.gitignore\ to exclude generated resources, IDE files, and log files.

(repo-wide) · high confidence

Introduce tabbed views for album and artist pages

The album and artist detail pages now use a tabbed interface to organize content. The album view presents separate tabs for tracks and artists, while the artist view includes tabs for saved tracks, top 10 tracks, albums, singles, and related artists. This change improves navigation by grouping related information within a single view rather than requiring separate screens or scrolling through a single long list.

src/ui · high confidence

New model layer for Spotify entities

The application now uses a dedicated \src/model\ module to represent Spotify entities, introducing new structs for Album, Artist, Category, Episode, Playlist, Show, and Track, along with a unified \Playable\ enum. This change enables specific user-facing behaviors such as displaying the playlist owner's name, supporting custom track formatting via the \track\_format\ configuration option, and implementing playlist sorting by title, duration, album, date added, or artist.

src/model · high confidence

Architecture

Major architectural refactor and dependency upgrades

The application has undergone a significant structural overhaul, migrating the TUI backend from Cursive 0.17 to 0.21.0 and upgrading the underlying Spotify playback engine from librespot 0.3.0 to 0.7.0. The codebase has been reorganized into a modular architecture with dedicated files for authentication, IPC, and command management, replacing the previous monolithic structure. Additionally, the MPRIS implementation has been rewritten to use the zbus library, and the IPC socket mechanism has been updated to use Unix domain sockets for better cross-platform compatibility and stability.

src · high confidence

Dependencies

Release ncspot 1.4.0 with Rust 2024 edition and dependency updates

This release updates the project to version 1.4.0 and migrates the Rust edition to 2024. It includes a comprehensive update of dependencies, notably upgrading \clap\ to 4.6.1, \cursive\ to 0.21.1, \librespot\ to 0.8.0, and \reqwest\ to 0.13. The build system now includes an \xtask\ workspace member for managing tasks like manpage generation, and the package metadata is updated for Debian packaging with new assets and dependencies.

(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

Score

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

Lenses

  • Code Health 86 → 86 (+0.1)
  • Architecture 100 → 95 (-5.1)
  • Maturity 59 → 53 (-5.4)
  • Readiness 76 → 72 (-4.6)
  • Security 50 → 67 (+16.2)
  • Event Sourcing 100 → 100 (+0.0)
  • Performance 100 (new)

Resolved (6)

  • Documentation: no licence statement (README.md)
  • Duplicated block (13 lines × 3) (src/command.rs)
  • Duplicated block (5 lines × 2) (src/queue.rs)
  • Duplicated block (9 lines × 2) (src/command.rs)
  • Hotspot: src/commands.rs (src/commands.rs)
  • Off-boarding risk: anonymized user #1

New (12)

  • Banned license: ansi_colours
  • CommandManager::register_keybinding (cognitive 18) (src/commands.rs)
  • Duplicated block (10 lines × 2) (src/command.rs)
  • Duplicated block (14 lines × 3) (src/command.rs)
  • FileTooLong: src/commands.rs (src/commands.rs)
  • Low cohesion: Track (LCOM4 7) (src/model/track.rs)
  • Low cohesion: WebApi (LCOM4 7) (src/spotify_api.rs)
  • Medium vulnerability: RUSTSEC-2026-0285 (Cargo.lock)
  • Off the main sequence: ncspot
  • Off-boarding risk: anonymized user #1
  • Outdated: notify-rust
  • TodoComment (src/ui/layout.rs)

Changes since last survey

  • 7 commits — 7 feature/other, 0 fixes

By area

  • (root) — 5 commits
  • src/authentication.rs — 1 commit
  • src/ui — 1 commit

Notable commits

  • change: chore(deps): bump rand in the cargo group across 1 directory
  • change: chore(deps): bump the cargo group across 1 directory with 5 updates
  • change: chore: replace notifications instead of stack
  • change: feat: Add a unified proxy configuration option
  • change: feat: support Vim-style numeric count prefixes for keybindings
  • change: feat: vim-style command completion
  • change: refactor(auth): Separate ncspot from Spotify login

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

Survey your own repository

hrkfdn/ncspot 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 386b6a9e18280e0534851e9c4eff51e9cc722c85 — 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.