hrkfdn/ncspot
65.0
Adequate · 29 September 2026
12.8k
lines of production code
Rust
primary language
2
measurements over time
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.