LargeModGames/spotatui - Open Source PR Review Scorecard

A fast, standalone terminal music player in Rust: native Spotify streaming plus local, Subsonic, radio, Qobuz and Youtube sources

C-Rank Grade: S (Elite) - 75/100

External PR Merge Rate: 83%

Response Time: 16h

First Timer Success: 89%

Frequently Asked Questions

Is LargeModGames/spotatui welcoming to first-time open-source contributors?

LargeModGames/spotatui has a recorded first-timer success rate of 88.9%. Repositories ranked S typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in LargeModGames/spotatui respond to incoming external pull requests in approximately 15.5 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 75.2 C-Rank™ score (S Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 75.2 places LargeModGames/spotatui in the S tier.

What is the external contributor pull request merge rate for LargeModGames/spotatui?

The external contributor pull request merge rate for LargeModGames/spotatui is 82.6%, based on public PR activity from non-core contributors.

Are there Good First Issues available in LargeModGames/spotatui?

LargeModGames/spotatui currently has 11 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

LargeModGames
LargeModGames/spotatuiS•Elite1.4k
GitHub
Back to Explorer
LargeModGames

LargeModGames/spotatui

1,418
Active (30d)S•Elite(75/100)Rust

A fast, standalone terminal music player in Rust: native Spotify streaming plus local, Subsonic, radio, Qobuz and Youtube sources

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Empathetic Technical Mentor

Warmth Score
8.0/10
Patience Score
8.4/10
Nitpick Rate
25%

Highly welcoming maintainers in LargeModGames/spotatui. Prompt code reviews with positive guidance for new contributors.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
15 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
82.6%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
88.9%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
22 core
Highly collaborative maintainer core
Diagnostic Health HUD
82.6%
Merge Gauge
88.9%
1st-Timer
Community Vibe78/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for LargeModGames/spotatui
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/LargeModGames/spotatui)](https://getmerged.abhishekco.de/LargeModGames/spotatui?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

What docs/scripting.md says an empty field in a plugin table is nil: id (nil for local tracks), image_url, release_date, volume_percent, device, currently_playing and more. It is not nil. The snapshots reach Lua through lua.to_value, and mlua 0.12's default SerializeOptions has serialize_none_to_null: true. So every None becomes the light userdata null value, the same one spotatui.json_decode("null") gives, and that value is truthy in Lua. No type in src/core/plugin_api.rs has skip_serializing_if, so this applies to every Option field. A plugin that follows the docs breaks: local t = spotatui.current_track() if t.release_date then local year = t.release_date:sub(1, 4) -- error on a track with no date end I checked it on main at c250ac6: for a playback table with no device, type(p.device) is userdata, p.device == nil is false, and p.device and true or false is true. The fix is to make the code match the docs, so an empty field is nil. Where to look src/infra/scripting/api.rs: the lua

📅 Opened Oct 10, 2026💬 1 comment
Quality: 100/100Contribute

What Every Subsonic track comes in with track number 0. The Subsonic and OpenSubsonic song object (Child) sends the album track number as track, but SubsonicSong deserializes a key called trackNumber. No real server sends that key, so on Navidrome, Gonic or Airsonic the field is always missing and song_to_track_info falls back to 0. To see it, pick the Subsonic source, add - { id: index } to tables.songs in config.yml (docs/configuration.md lists index as an extra id for songs) and open any Subsonic playlist. The index column shows 0 on every row. Expected: each song's album track number as the server sends it (for example 5, 1, 12). The column prints the album track number, not the position in the playlist. The existing unit tests don't catch it because their JSON fixtures use the same wrong trackNumber key. Where to look SubsonicSong in src/infra/subsonic/types.rs: #[serde(rename = "trackNumber", default)] on track_number (lines 143-144) SubsonicSource::song_to_track_info in src/inf

📅 Opened Sep 29, 2026💬 2 comments
Quality: 90/100Contribute

What LRC lyrics can start with header tags like [ar:Queen], [ti:Song], [by:someone] or [offset:+500]. The doc comment on parse_synced_lyrics says lines without a valid timestamp are dropped, but the parser reads the minutes, seconds and fraction with unwrap_or(0), so a tag is kept as a lyric line instead: [ar:Queen], [ti:Song], [by:someone], [la:en] and [offset:-500] each become (0, ""), a blank row at the top of the lyrics view. [offset:+500] (or [offset:500]) is worse. "offset" fails and counts as 0 minutes, but Rust's u64 parser accepts +500, so the tag becomes (500_000, ""): a blank line at 8:20. The parser doesn't sort, and active_lyric_index stops at the first entry later than the current position. So a header like [ar:X], [ti:Y], [offset:+500] followed by normal timed lines keeps the highlight stuck on a blank line until 8:20, which on most tracks means the whole song. A syncedLyrics body that only has tags counts as synced lyrics made of blank lines, so the plainLyrics fallbac

📅 Opened Sep 29, 2026💬 1 comment
Quality: 90/100Contribute

What #600 made the playlist sort ignore letter case, but only for the full track table. The in-playlist search (Ctrl+f on a playlist's track table) re-sorts its matches with its own function, and that one still compares raw Strings, so every capitalised title lands before every lowercase one. To see it, open a playlist that has apple, Banana and cherry in it by the same artist. Press , then n to sort by Name, then press Ctrl+f and search for the artist's name. The results come back as Banana, apple, cherry. They should come back as apple, Banana, cherry, the same order the sorted table shows without the search. Sorting by Artist or Album has the same problem in the search results. Where to look sort_playlist_track_matches at the top of src/core/app/playlist_pages.rs (lines 3 to 24): the SortField::Name, SortField::Artist and SortField::Album arms compare the raw fields Its only caller, App::apply_playlist_track_search_results in the same file (the call is at line 201) The fixed versio

📅 Opened Sep 29, 2026💬 1 comment
Quality: 90/100Contribute

What The listening recap splits the top track's name on the first -, so a track with - in its title loses half the title to the artist slot. Spotify titles do this a lot: Bohemian Rhapsody - Remastered 2011, Tsunami - Radio Edit. If one of those is your most-played track, press R (the generate_recap key; on the Stats screen it uses the selected period, anywhere else Last 30 Days) or run spotatui history recap, then open the HTML file. The share card shows the track as Bohemian Rhapsody and the artist as Remastered 2011, with no Queen anywhere, and the card's iTunes cover lookup searches for Bohemian Rhapsody Remastered 2011. The Top Tracks list further down shows Bohemian Rhapsody - Remastered 2011 - Queen as one bold line with no artist line under it. Top Albums and Top Artists go through the same split: an album called Live - 1985 shows Live in bold with 1985 styled as its artist. Expected: the card says Bohemian Rhapsody - Remastered 2011 by Queen, the Top Tracks row shows that titl

📅 Opened Sep 29, 2026💬 2 comments
Quality: 90/100Contribute
Looking for more Rust beginner tasks?Explore Rust GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for LargeModGames/spotatui

When evaluating whether to contribute to LargeModGames/spotatui, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of LargeModGames/spotatui acknowledge new external contributions in approximately 15 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 82.6% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to LargeModGames/spotatui

01

Is LargeModGames/spotatui welcoming to first-time open-source contributors?

LargeModGames/spotatui has a recorded first-timer success rate of 88.9%. Repositories ranked Elite typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~15 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 75.2 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 75.2 places LargeModGames/spotatui in the Elite tier.

04

What is the external contributor pull request merge rate for LargeModGames/spotatui?

The external pull request merge rate is 82.6%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in LargeModGames/spotatui?

Yes, LargeModGames/spotatui currently has 11 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for LargeModGames/spotatui are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.