Repository Analysis

PixelPlayerHQ/PixelPlayer

privacy-first Android music player built with Material 3 Expressive. Play offline, sync lyrics, fine-tune with equalizer presets, and cast to your devices.

5.4 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of PixelPlayerHQ/PixelPlayer, a Kotlin project with 5,575 GitHub stars. SynthScan v2.0 examined 286,411 lines of code across 1118 source files, recording 358 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 5.4 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

5.4
Adjusted Score
5.4
Raw Score
100%
Time Factor
2026-07-14
Last Push
5.6K
Stars
Kotlin
Language
286.4K
Lines of Code
1.1K
Files
358
Pattern Hits
2026-07-14
Scan Date
0.08
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 82HIGH 3MEDIUM 197LOW 76

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 358 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hallucination Indicators82 hits · 905 pts
SeverityFileLineSnippetContext
CRITICAL…va/com/theveloper/pixelplay/ui/theme/ColorRolesTest.kt290 return com.google.android.material.color.utilities.MathUtils.differenceDegrees(CODE
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt386 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt391 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…java/com/theveloper/pixelplay/utils/LyricsUtilsTest.kt408 com.theveloper.pixelplay.data.model.SyncedLine(STRING
CRITICAL…eloper/pixelplay/data/worker/AlbumGroupingUtilsTest.kt79 val album = com.theveloper.pixelplay.data.database.AlbumEntity(CODE
CRITICAL…ixelplay/presentation/viewmodel/PlayerViewModelTest.kt144 coEvery { mockUserPreferencesRepository.fullPlayerLoadingTweaksFlow } returns flowOf(com.theveloper.pixelplay.daCODE
CRITICAL…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt70 androidx.compose.ui.text.font.Font(CODE
CRITICAL…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt78 androidx.compose.ui.text.font.Font(CODE
CRITICAL…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt86 androidx.compose.ui.text.font.Font(CODE
CRITICAL…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt94 androidx.compose.ui.text.font.Font(CODE
CRITICAL…rc/main/java/com/theveloper/pixelplay/ui/theme/Type.kt102 androidx.compose.ui.text.font.Font(CODE
CRITICAL…/java/com/theveloper/pixelplay/ui/theme/GenreColors.kt113 private fun androidx.compose.ui.graphics.Color.contrastContentColor(): androidx.compose.ui.graphics.Color {CODE
CRITICAL…ava/com/theveloper/pixelplay/utils/MediaItemBuilder.kt113 return com.theveloper.pixelplay.data.diagnostics.PerformanceMetrics.time(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt585 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1297 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1340 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1512 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…oper/pixelplay/data/repository/LyricsRepositoryImpl.kt1632 com.theveloper.pixelplay.data.database.LyricsEntity(CODE
CRITICAL…/pixelplay/data/repository/MediaStoreSongRepository.kt396 com.theveloper.pixelplay.data.paging.MediaStorePagingSource(context, musicIds, genreMap)CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt174 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt398 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt817 com.theveloper.pixelplay.data.database.FavoritesEntity(CODE
CRITICAL…loper/pixelplay/data/repository/MusicRepositoryImpl.kt1188 com.theveloper.pixelplay.data.worker.SyncWorker.incrementalSyncWork()CODE
CRITICAL…er/pixelplay/data/network/qqmusic/QqMusicApiService.kt48 .addInterceptor(com.theveloper.pixelplay.data.remote.qqmusic.QQMusicEncryptInterceptor(CODE
CRITICAL…er/pixelplay/data/network/qqmusic/QqMusicApiService.kt49 com.theveloper.pixelplay.data.remote.qqmusic.QQSignGenerator(context)CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt112 throw com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.createException(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt126 val failure = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.wrapThrowable(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt149 val recoveredModel = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.selectRecoveryModel(CODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt194 val providersToTry = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.buildProviderChain(userProviderCODE
CRITICAL…ain/java/com/theveloper/pixelplay/data/ai/AiHandler.kt260 val failure = com.theveloper.pixelplay.data.ai.provider.AiProviderSupport.wrapThrowable(provider.displayCODE
CRITICAL…/com/theveloper/pixelplay/data/service/MusicService.kt2100 com.theveloper.pixelplay.data.model.QueueItem(CODE
CRITICAL…/com/theveloper/pixelplay/data/service/MusicService.kt2334 val isLocalArtworkUri = com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(uriString)CODE
CRITICAL…oper/pixelplay/data/service/wear/WearStatePublisher.kt204 com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(uriString) ||CODE
CRITICAL…oper/pixelplay/data/service/wear/WearStatePublisher.kt361 private fun com.theveloper.pixelplay.data.model.Lyrics.toWearLyrics(CODE
CRITICAL…eloper/pixelplay/data/stats/PlaybackStatsRepository.kt315 daySpan = max(1L, java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate) + 1)CODE
CRITICAL…m/theveloper/pixelplay/data/media/ImageCacheManager.kt27 if (com.theveloper.pixelplay.utils.LocalArtworkUri.isLocalArtworkUri(baseUri)) {CODE
CRITICAL…m/theveloper/pixelplay/data/media/ImageCacheManager.kt28 com.theveloper.pixelplay.utils.LocalArtworkUri.parseSongId(baseUri)?.let { songId ->CODE
CRITICAL…m/theveloper/pixelplay/data/media/ImageCacheManager.kt29 com.theveloper.pixelplay.utils.AlbumArtUtils.clearCacheForSong(context, songId)CODE
CRITICAL…/pixelplay/presentation/viewmodel/PlaylistViewModel.kt821 private fun com.theveloper.pixelplay.data.model.MusicFolder.collectAllSongs(): List<Song> {CODE
CRITICAL…xelplay/presentation/viewmodel/ColorSchemeProcessor.kt148 config = com.theveloper.pixelplay.ui.theme.ColorExtractionConfig(CODE
CRITICAL…/pixelplay/presentation/viewmodel/SettingsViewModel.kt1273 .map { com.theveloper.pixelplay.data.ai.GeminiModel(it, formatModelDisplayName(it)) }CODE
CRITICAL…pixelplay/presentation/viewmodel/LibraryStateHolder.kt177 val lightThemeColor = com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(seed.id, isDaCODE
CRITICAL…pixelplay/presentation/viewmodel/LibraryStateHolder.kt178 val darkThemeColor = com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(seed.id, isDarCODE
CRITICAL…pixelplay/presentation/viewmodel/LibraryStateHolder.kt180 com.theveloper.pixelplay.data.model.Genre(CODE
CRITICAL…pixelplay/presentation/viewmodel/LibraryStateHolder.kt612private fun androidx.compose.ui.graphics.Color.toHexString(): String {CODE
CRITICAL…play/presentation/viewmodel/MetadataEditStateHolder.kt164 com.theveloper.pixelplay.data.media.AudioMetadataReader.read(java.io.File(song.path))CODE
CRITICAL…play/presentation/viewmodel/MetadataEditStateHolder.kt413 android.provider.MediaStore.Audio.Media.getContentUri(CODE
CRITICAL…per/pixelplay/presentation/navigation/AppNavigation.kt465 com.theveloper.pixelplay.presentation.screens.DeviceCapabilitiesScreen(CODE
CRITICAL…per/pixelplay/presentation/navigation/AppNavigation.kt475 com.theveloper.pixelplay.presentation.netease.dashboard.NeteaseDashboardScreen(CODE
CRITICAL…per/pixelplay/presentation/navigation/AppNavigation.kt484 com.theveloper.pixelplay.presentation.qqmusic.dashboard.QqMusicDashboardScreen(CODE
CRITICAL…per/pixelplay/presentation/navigation/AppNavigation.kt493 com.theveloper.pixelplay.presentation.navidrome.dashboard.NavidromeDashboardScreen(CODE
CRITICAL…per/pixelplay/presentation/navigation/AppNavigation.kt502 com.theveloper.pixelplay.presentation.jellyfin.dashboard.JellyfinDashboardScreen(CODE
CRITICAL…eveloper/pixelplay/presentation/screens/StatsScreen.kt2583 style = androidx.compose.ui.graphics.drawscope.Stroke(CODE
CRITICAL…eveloper/pixelplay/presentation/screens/StatsScreen.kt2600 style = androidx.compose.ui.graphics.drawscope.Stroke(CODE
CRITICAL…xelplay/presentation/screens/SettingsCategoryScreen.kt919 val provider = com.theveloper.pixelplay.data.ai.provider.AiProvider.fromString(aiProvider)CODE
CRITICAL…xelplay/presentation/screens/SettingsCategoryScreen.kt1431 kotlinx.coroutines.delay(com.theveloper.pixelplay.presentation.navigation.TRANSITION_DURATION.toLong())CODE
CRITICAL…eloper/pixelplay/presentation/screens/LibraryScreen.kt1482 com.theveloper.pixelplay.presentation.components.LibrarySheetToggleCard(CODE
CRITICAL…loper/pixelplay/presentation/screens/SettingsScreen.kt299 kotlinx.coroutines.delay(com.theveloper.pixelplay.presentation.navigation.TRANSITION_DURATION.toLong())CODE
CRITICAL…er/pixelplay/presentation/screens/GenreDetailScreen.kt224 com.theveloper.pixelplay.ui.theme.GenreThemeUtils.getGenreThemeColor(CODE
CRITICAL…er/pixelplay/presentation/screens/GenreDetailScreen.kt230 com.theveloper.pixelplay.ui.theme.GenreThemeColor(CODE
22 more matches not shown…
Decorative Section Separators194 hits · 534 pts
SeverityFileLineSnippetContext
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt150 // ── Pass 1: resolve readings ──────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt194 // ── Pass 2: build katakana string with spacing ────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt211 // ── Pass 3: Katakana → Latin via ICU transliterator ───────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt220 // ── Pass 4: context-sensitive post-processing ─────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt234 // ── 多音字 (polyphone) override table ────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt385 // ── Regular Hanzi ─────────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt392 // ── Non-Hanzi passthrough ─────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt573 // ── ь soft sign: palatalize the *previous* output consonant ─────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt614 // ── ё always = "yo" (Russian) ──────────────────────────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt620 // ── жи, ши, ци → always hard vowel "i" despite Cyrillic и ──────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt629 // ── Multi-char lookups (3-char first, then 2-char) ──────────────────COMMENT
MEDIUM…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt908 // ── Kugou / Paxsenix word-by-word helpers ─────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt15 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt47 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…com/theveloper/pixelplay/data/database/NavidromeDao.kt76 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/TelegramDao.kt67 // ─── Topic methods ────────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt44 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…/com/theveloper/pixelplay/data/database/JellyfinDao.kt76 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/QqMusicDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/QqMusicDao.kt38 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt12 // ─── Songs ─────────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt42 // ─── Playlists ─────────────────────────────────────────────────────COMMENT
MEDIUM…a/com/theveloper/pixelplay/data/database/NeteaseDao.kt56 // ─── Clear All ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt90 // ─── Preference keys ────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt251 // ─── Private helpers ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt278 // ─── Onboarding / dialogs ─────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt308 // ─── Playback ─────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt400 // ─── Full player loading tweaks ───────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt497 // ─── Transitions ──────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt510 // ─── Favorites ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt540 // ─── Playlists ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt577 // ─── Directories ──────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt604 // ─── Library sync ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt749 // ─── Pause on volume zero ─────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt773 // ─── Sort options ─────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt854 // ─── Library UI state ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt958 // ─── Navigation bar ───────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1009 // ─── Multi-artist settings ────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1067 // ─── Lyrics ───────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1137 // ─── Custom genres ────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1170 // ─── Collage ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1186 // ─── Quick settings / last playlist ──────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1208 // ─── Developer options ────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1247 // ─── Backup / restore ─────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1364 // ─── Companion ────────────────────────────────────────────────────────────COMMENT
MEDIUM…ixelplay/data/preferences/UserPreferencesRepository.kt1381 // ─── Private utilities ────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt90 // ─── Authentication ──────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt188 // ─── Playlists ────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt414 // ─── Search ────────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt442 // ─── Media URLs ────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt453 // ─── Lyrics ────────────────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt470 // ─── Unified Library Sync ──────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt578 // ─── Utility Methods ───────────────────────────────────────────────────COMMENT
MEDIUM…eveloper/pixelplay/data/jellyfin/JellyfinRepository.kt600 // ─── App Playlist Management ───────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt44 // ─── Subclass Configuration ────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt68 // ─── Server State ──────────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt81 // ─── Public API ────────────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt155 // ─── Overridable Hooks ─────────────────────────────────────────────COMMENT
MEDIUM…m/theveloper/pixelplay/data/stream/CloudStreamProxy.kt160 // ─── Internal ──────────────────────────────────────────────────────COMMENT
134 more matches not shown…
Over-Commented Block54 hits · 54 pts
SeverityFileLineSnippetContext
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt161 suspend fun insertMusicData(...) {COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt21//COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt41// SongEntity(1L, "Song A", "Artist 1", 101L, "Album X", 201L, "uri_a", "art_uri_a", 180000, "Pop", "/path/a"COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt61// assertThat(retrievedAlbums).containsExactlyElementsIn(albumList.sortedBy { it.title })COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt81// musicDao.insertSongs(listOf(oldSong))COMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt101// @TestCOMMENT
LOW…com/theveloper/pixelplay/data/database/MusicDaoTest.kt121// // - getAllUniqueAlbumArtUrisFromSongsCOMMENT
LOW…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt241 '中' to "zhong",COMMENT
LOW…ain/java/com/theveloper/pixelplay/utils/LyricsUtils.kt301 // 乐 — handled contextually: 音乐 yuè, 快乐/高兴 lèCOMMENT
LOW…/com/theveloper/pixelplay/data/model/SortOptionTest.kt1package com.theveloper.pixelplay.data.modelCOMMENT
LOW…ixelplay/presentation/viewmodel/PlaybackStateHolder.kt41 private val castStateHolder: CastStateHolder,COMMENT
LOW…play/presentation/viewmodel/MetadataEditStateHolder.kt281 }COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt21import java.io.FileCOMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt41//) {COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt61// Text(COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt81// )COMMENT
LOW…pixelplay/presentation/screens/FolderExplorerScreen.kt101// title = if (fromSetup) "Select folders for setup" else "Select music folders",COMMENT
LOW…pixelplay/presentation/screens/EditTransitionScreen.kt161 containerColor = MaterialTheme.colorScheme.surface,COMMENT
LOW…loper/pixelplay/presentation/screens/SettingsScreen.kt441// contentAlignment = Alignment.Center,COMMENT
LOW…pixelplay/presentation/screens/RecentlyPlayedScreen.kt421COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt341 cornerRadius = CornerRadius(thumbCurrentWidthPx / 2f)COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt361// inactiveTrackColor: Color = MaterialTheme.colorScheme.surfaceVariant,COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt381//COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt401// val thumbRadiusPx = with(LocalDensity.current) { thumbRadius.toPx() }COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt421// onValueChange = { newValue ->COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt441// )COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt461// onDrawWithContent {COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt481// cap = StrokeCap.RoundCOMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt501// val waveStep = 2f // Aumentado de 1f a 2f para reducir cálculosCOMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt521// style = Stroke(width = trackHeightPx, cap = StrokeCap.Round)COMMENT
LOW…r/pixelplay/presentation/components/WavyMusicSlider.kt541// lerp(thumbRadiusPx * 2f, trackHeightPx * 1.2f, thumbInteractionFraction)COMMENT
LOW…loper/pixelplay/presentation/components/LyricsSheet.kt2001 // If we just use conditional Modifier.graphicsLayer rotation, it might jump.COMMENT
LOW…r/pixelplay/presentation/components/CastBottomSheet.kt1161// modifier = ModifierCOMMENT
LOW…per/pixelplay/presentation/components/ScreenWrapper.kt81 entry.destination.route?.let { route -> !isMainRootRoute(route) } == trueCOMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt261// title: String,COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt281// if (state is AsyncImagePainter.State.Error) {COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt301// animationSpec = tween(durationMillis = 350),COMMENT
LOW…pixelplay/presentation/components/OptimizedAlbumArt.kt321// contentScale = ContentScale.Crop,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt601 containerColor = MaterialTheme.colorScheme.error,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt621// onImport: () -> UnitCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt641// DialogHeader(currentSong = currentSong)COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt661// onClick = onImport,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt681// modifier = ModifierCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt701// DialogHeader(currentSong = currentSong)COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt721//COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt741// style = MaterialTheme.typography.bodyMedium,COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt761// modifier = Modifier.padding(24.dp),COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt781// )COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt801// }COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt821// }COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt841// modifier = ModifierCOMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt861// )COMMENT
LOW…/presentation/components/subcomps/FetchLyricsDialog.kt881// onClick = {},COMMENT
LOW…entation/telegram/dashboard/TelegramDashboardScreen.kt681// Text(COMMENT
Verbosity Indicators11 hits · 18 pts
SeverityFileLineSnippetContext
LOW…per/pixelplay/data/repository/PlaylistSongCountTest.kt124 // Step 4: remove one or two of them — quickly, as fast taps do.COMMENT
LOW…per/pixelplay/data/repository/PlaylistSongCountTest.kt129 // Step 5: the menu count must reflect BOTH removals (the bug left it stuck high).COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt694 // Step 1: Fetch all genres (single query)COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt722 // Step 2: Fetch members for each genre in parallel (controlled concurrency)COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt133 // Step 1: Fast load of the Genre object to stabilize the UI theme as early as possible.COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt144 // Step 2: Heavy data processing for songs and sectionsCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt139 // Step 1: Pre-generation analysisCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt155 // Step 2: Invoke AI Generation EngineCOMMENT
LOW…pixelplay/presentation/screens/CreatePlaylistScreen.kt306 // Step 1: Info StateCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1749 // Step 2: Module selection from inspected backupCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1770 // Step 1: File selection with backup historyCOMMENT
Structural Annotation Overuse11 hits · 18 pts
SeverityFileLineSnippetContext
LOW…per/pixelplay/data/repository/PlaylistSongCountTest.kt124 // Step 4: remove one or two of them — quickly, as fast taps do.COMMENT
LOW…per/pixelplay/data/repository/PlaylistSongCountTest.kt129 // Step 5: the menu count must reflect BOTH removals (the bug left it stuck high).COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt694 // Step 1: Fetch all genres (single query)COMMENT
LOW…ava/com/theveloper/pixelplay/data/worker/SyncWorker.kt722 // Step 2: Fetch members for each genre in parallel (controlled concurrency)COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt133 // Step 1: Fast load of the Genre object to stabilize the UI theme as early as possible.COMMENT
LOW…xelplay/presentation/viewmodel/GenreDetailViewModel.kt144 // Step 2: Heavy data processing for songs and sectionsCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt139 // Step 1: Pre-generation analysisCOMMENT
LOW…oper/pixelplay/presentation/viewmodel/AiStateHolder.kt155 // Step 2: Invoke AI Generation EngineCOMMENT
LOW…pixelplay/presentation/screens/CreatePlaylistScreen.kt306 // Step 1: Info StateCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1749 // Step 2: Module selection from inspected backupCOMMENT
LOW…xelplay/presentation/screens/SettingsCategoryScreen.kt1770 // Step 1: File selection with backup historyCOMMENT
Synthetic Comment Markers3 hits · 18 pts
SeverityFileLineSnippetContext
HIGH…pixelplay/presentation/screens/PlaylistDetailScreen.kt798 top = 18.dp // Increased to 16.dp as requestedCODE
HIGH…lay/presentation/screens/ExperimentalSettingsScreen.kt743 // For simplicity and quick access as requested ("selector or slider"), let's use a segmentedCOMMENT
HIGH…elplay/presentation/components/WavySliderExpressive.kt77 waveSpeed: Dp = WavyProgressIndicatorDefaults.LinearDeterminateWavelength / 2f, // Slower wave as requestedCODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…heveloper/pixelplay/data/equalizer/EqualizerManager.kt301 // Initialize Loudness Enhancer (usually robust, but let's be safe)COMMENT
MEDIUM.github/workflows/codeql.yml39 # More robust sed pattern that handles various formatsCOMMENT
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md175├── di/ # Hilt dependency injection modulesCODE