feat: add very high audio quality option and autoplay setting#3440
feat: add very high audio quality option and autoplay setting#3440kairosci wants to merge 3 commits intoMetrolistGroup:mainfrom
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe pull request adds a new VERY_HIGH audio quality option and implements autoplay functionality. Changes include extending the AudioQuality enum, adding an AutoplayKey preference, updating playback service logic to handle repeat and autoplay behaviors at end-of-playback, adding UI settings, adjusting audio format selection, and providing localized string resources. Changes
Sequence DiagramsequenceDiagram
participant Player as Media Player
participant Service as MusicService
participant Prefs as Preferences
participant UI as Settings UI
Player->>Service: onPlaybackStateChanged(STATE_ENDED)
Service->>Prefs: Check sleepTimer status
alt Sleep Timer Active & Pause When Song End
Service->>Service: Return early
else Sleep Timer Inactive
Service->>Prefs: Get REPEAT_MODE
alt REPEAT_MODE_ALL
Service->>Player: seekTo(0, 0)
Service->>Player: prepare()
Service->>Player: play()
else REPEAT_MODE_ONE
Service->>Player: seekTo(currentMediaItemIndex, 0)
Service->>Player: prepare()
Service->>Player: play()
else REPEAT_OFF
Service->>Prefs: Get AutoplayKey
alt Autoplay Enabled
Service->>Player: hasNextMediaItem()
alt Has Next Item
Service->>Player: seekToNextMediaItem()
end
end
end
end
UI->>Prefs: onAutoplayChange(enabled)
Prefs->>Prefs: Update autoplay preference
note over Service: Next playback will use updated autoplay setting
Estimated Code Review Effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly Related PRs
Suggested Reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
008ad7c to
5897c93
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt (1)
427-433:⚠️ Potential issue | 🟠 Major
VERY_HIGHshould use pure bitrate ranking, not mixed codec weighting.Line 432 adds
VERY_HIGH, but Line 433 still applies the Opus bonus. That means a slightly lower-bitrate Opus stream can still win, which doesn’t match the “highest-bitrate” objective.Proposed fix
- val format = playerResponse.streamingData?.adaptiveFormats - ?.filter { it.isAudio && it.isOriginal } - ?.maxByOrNull { - it.bitrate * when (audioQuality) { - AudioQuality.AUTO -> if (connectivityManager.isActiveNetworkMetered) -1 else 1 - AudioQuality.HIGH -> 1 - AudioQuality.LOW -> -1 - AudioQuality.VERY_HIGH -> 2 - } + (if (it.mimeType.startsWith("audio/webm")) 10240 else 0) // prefer opus stream - } + val candidates = playerResponse.streamingData?.adaptiveFormats + ?.filter { it.isAudio && it.isOriginal } + + val format = when (audioQuality) { + AudioQuality.VERY_HIGH -> candidates?.maxByOrNull { it.bitrate } + else -> candidates?.maxByOrNull { + it.bitrate * when (audioQuality) { + AudioQuality.AUTO -> if (connectivityManager.isActiveNetworkMetered) -1 else 1 + AudioQuality.HIGH -> 1 + AudioQuality.LOW -> -1 + AudioQuality.VERY_HIGH -> 1 + } + (if (it.mimeType.startsWith("audio/webm")) 10240 else 0) // prefer opus stream + } + }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt` around lines 427 - 433, The current selection key in the .maxByOrNull block mixes a codec bonus with bitrate even when AudioQuality.VERY_HIGH is selected, allowing lower-bitrate Opus streams to win; update the key expression used to pick streams (the lambda referencing it.bitrate and it.mimeType.startsWith("audio/webm")) so that when audioQuality == AudioQuality.VERY_HIGH you do not add the Opus bonus—i.e., compute the base weight from bitrate and connectivityManager logic as before but only add the (it.mimeType.startsWith("audio/webm") ? 10240 : 0) bonus when audioQuality is not VERY_HIGH, ensuring VERY_HIGH performs pure bitrate ranking.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@app/src/main/kotlin/com/metrolist/music/db/entities/Song.kt`:
- Around line 66-67: The Song.isDownloaded getter currently returns only
song.isDownloaded which can miss cases where SongEntity.dateDownload is set;
update the getter in Song.kt to return song.isDownloaded || song.dateDownload !=
null so it mirrors the check used in SyncUtils (isDownloaded || dateDownload !=
null) and thereby treats entities with a non-null dateDownload as downloaded.
In `@app/src/main/kotlin/com/metrolist/music/playback/MusicService.kt`:
- Around line 2135-2158: The repeat-one logic currently seeks to index 0; change
it to seek to the current item index (use player.currentMediaItemIndex) so
REPEAT_MODE_ONE (and related logic using REPEAT_MODE_ALL and REPEAT_MODE_ONE
with RepeatModeKey) restarts the same song instead of the first in the queue,
and before performing any repeat/autoplay actions check the sleep timer guard
(e.g., if sleepTimer != null && sleepTimer.pauseWhenSongEnd) and bail out early
to prevent MusicService from calling player.play() when SleepTimer intends to
pause; keep existing autoplay checks for AutoplayKey and
player.hasNextMediaItem().
In `@app/src/main/kotlin/com/metrolist/music/utils/SyncUtils.kt`:
- Around line 1504-1520: When re-adding downloaded songs in the
downloadedSongIds.forEach block, the inserted PlaylistSongMap loses its
setVideoId so future removeFromPlaylistAndAwaitSync calls fail; update the
insertion to copy setVideoId from the original mapping found in
localSongsBeforeSync (look up the matching mapping by songId/playlistId in
localSongsBeforeSync before creating the new PlaylistSongMap) and pass that
setVideoId into the PlaylistSongMap constructor so the preserved mapping
includes the required setVideoId for YouTube removal.
In `@app/src/main/res/values/strings.xml`:
- Around line 286-287: The two new resource entries audio_quality_very_high and
queue were added to values/strings.xml but must live in metrolist_strings.xml;
remove these <string name="audio_quality_very_high"> and <string name="queue">
entries from values/strings.xml and add equivalent entries into app's
metrolist_strings.xml (also move the additional pairs referenced at the same
change set around lines 292-293), ensuring you do not create duplicates and
preserving the exact string names and values.
---
Outside diff comments:
In `@app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt`:
- Around line 427-433: The current selection key in the .maxByOrNull block mixes
a codec bonus with bitrate even when AudioQuality.VERY_HIGH is selected,
allowing lower-bitrate Opus streams to win; update the key expression used to
pick streams (the lambda referencing it.bitrate and
it.mimeType.startsWith("audio/webm")) so that when audioQuality ==
AudioQuality.VERY_HIGH you do not add the Opus bonus—i.e., compute the base
weight from bitrate and connectivityManager logic as before but only add the
(it.mimeType.startsWith("audio/webm") ? 10240 : 0) bonus when audioQuality is
not VERY_HIGH, ensuring VERY_HIGH performs pure bitrate ranking.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 84b0d3cb-deac-4b7c-b29d-14bcf1f6302a
📒 Files selected for processing (7)
app/src/main/kotlin/com/metrolist/music/constants/PreferenceKeys.ktapp/src/main/kotlin/com/metrolist/music/db/entities/Song.ktapp/src/main/kotlin/com/metrolist/music/playback/MusicService.ktapp/src/main/kotlin/com/metrolist/music/ui/screens/settings/PlayerSettings.ktapp/src/main/kotlin/com/metrolist/music/utils/SyncUtils.ktapp/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.ktapp/src/main/res/values/strings.xml
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt (1)
429-429: Note:VERY_HIGHbypasses opus/webm format preference.For
AudioQuality.VERY_HIGH, the selection uses pure bitrate (maxByOrNull { it.bitrate }) without the+10240bonus foraudio/webm(Opus) streams that other quality levels receive. This meansVERY_HIGHmay select a non-Opus format even when an Opus format with comparable bitrate exists.If this is intentional (prioritizing raw bitrate over codec efficiency), consider adding a brief comment to document this design choice. If Opus should still be preferred at equal bitrates, the selection logic would need adjustment.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt` at line 429, AudioQuality.VERY_HIGH currently picks the highest bitrate via candidates?.maxByOrNull { it.bitrate } which bypasses the existing Opus/webm preference; update the selection for AudioQuality.VERY_HIGH in YTPlayerUtils.kt so it uses the same comparator as other quality levels (e.g., add the same +10240 bonus when mimeType indicates "audio/webm"/Opus) to prefer Opus at equal bitrates, or if bypass is intentional add a short clarifying comment next to AudioQuality.VERY_HIGH explaining the design choice.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@app/src/main/kotlin/com/metrolist/music/ui/screens/settings/PlayerSettings.kt`:
- Line 222: The new string resource audio_quality_very_high used by
PlayerSettings (referenced in the AudioQuality.VERY_HIGH branch) is only defined
in the default strings and missing from nearly all translation files; add the
audio_quality_very_high entry to every translation/locale strings.xml (matching
the key used in PlayerSettings and other audio_quality_* keys) with the
appropriate localized text, keeping placeholders/formatting consistent with the
other audio_quality_* resources so all locales display a localized "Very High"
instead of falling back to English.
---
Nitpick comments:
In `@app/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.kt`:
- Line 429: AudioQuality.VERY_HIGH currently picks the highest bitrate via
candidates?.maxByOrNull { it.bitrate } which bypasses the existing Opus/webm
preference; update the selection for AudioQuality.VERY_HIGH in YTPlayerUtils.kt
so it uses the same comparator as other quality levels (e.g., add the same
+10240 bonus when mimeType indicates "audio/webm"/Opus) to prefer Opus at equal
bitrates, or if bypass is intentional add a short clarifying comment next to
AudioQuality.VERY_HIGH explaining the design choice.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: bb5973de-85ef-4a1c-a4f1-d85f58a6f666
📒 Files selected for processing (5)
app/src/main/kotlin/com/metrolist/music/constants/PreferenceKeys.ktapp/src/main/kotlin/com/metrolist/music/playback/MusicService.ktapp/src/main/kotlin/com/metrolist/music/ui/screens/settings/PlayerSettings.ktapp/src/main/kotlin/com/metrolist/music/utils/YTPlayerUtils.ktapp/src/main/res/values/strings.xml
✅ Files skipped from review due to trivial changes (2)
- app/src/main/kotlin/com/metrolist/music/constants/PreferenceKeys.kt
- app/src/main/res/values/strings.xml
🚧 Files skipped from review as they are similar to previous changes (1)
- app/src/main/kotlin/com/metrolist/music/playback/MusicService.kt
app/src/main/kotlin/com/metrolist/music/ui/screens/settings/PlayerSettings.kt
Show resolved
Hide resolved
|
Use metrolist_strings.XML, not strings.xml |
There was a problem hiding this comment.
Actionable comments posted: 14
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
🟡 Minor comments (7)
app/src/main/res/values-sk/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorRemove the UTF-8 BOM from the XML header.
Line 1 includes a BOM character before
<?xml ...?>. Please save as UTF-8 without BOM to avoid parser/tooling edge cases and unnecessary diff churn.Suggested fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-sk/metrolist_strings.xml` at line 1, The XML prolog in metrolist_strings.xml contains a UTF-8 BOM at the start; remove the BOM so the file begins exactly with "<?xml version="1.0" encoding="utf-8"?>" and resave the file as UTF-8 without BOM (no extra invisible characters before the XML header) to prevent parser/tooling issues and spurious diffs.app/src/main/res/values-eu/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorUTF-8 BOM detected in XML file.
The file starts with a UTF-8 BOM (
), which is generally discouraged for XML files. While Android's build toolchain typically handles this without issue, some XML parsers may have trouble with it. Consider removing the BOM for broader compatibility.Suggested fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-eu/metrolist_strings.xml` at line 1, The file begins with a UTF-8 BOM character before the XML declaration (the leading "" before <?xml version="1.0" encoding="utf-8"?>); open the file that contains the XML declaration and remove the BOM so the file starts exactly with "<?xml version="1.0" encoding="utf-8"?>", then save/commit the file encoded as UTF-8 without BOM (use your editor's "UTF-8 without BOM" option or run a tool to strip the BOM) to ensure broad XML parser compatibility.app/src/main/res/values-lt/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorUTF-8 BOM character should be removed from XML file.
The
character before the XML declaration is a UTF-8 Byte Order Mark. While Android handles this gracefully, it's not standard practice for XML files and may cause issues with certain XML parsers or text processing tools. Consider removing it.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-lt/metrolist_strings.xml` at line 1, Remove the UTF-8 BOM (U+FEFF) at the start of app/src/main/res/values-lt/metrolist_strings.xml so the file begins exactly with the XML declaration "<?xml version="1.0" encoding="utf-8"?>"; open the file in a text editor that can save without BOM and re-save as UTF-8 without BOM (or run a script to strip the leading BOM) to ensure no invisible character precedes the XML declaration.app/src/main/res/values-hr/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorUTF-8 BOM is unnecessary and may cause issues.
The XML declaration already specifies
encoding="utf-8", making the BOM character redundant. Some XML parsers, build tools, and editors may mishandle files with a leading BOM, potentially causing parse warnings or encoding issues.Consider removing the BOM from this and other locale files if it was added during reformatting.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-hr/metrolist_strings.xml` at line 1, The file metrolist_strings.xml contains a leading UTF-8 BOM character before the XML declaration which is unnecessary and can break some XML parsers; remove the BOM so the file starts exactly with <?xml version="1.0" encoding="utf-8"?> and scan other locale XML files (e.g., other values-*/metrolist_strings.xml) to remove any stray BOMs to ensure consistent encoding across resources.app/src/main/res/values-b+sr+Latn/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorRemove UTF-8 BOM from the XML header.
Line 1 includes a BOM character before
<?xml ...?>; keep the header BOM-free to avoid unnecessary diff churn and potential parser/tooling inconsistencies.Suggested fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-b`+sr+Latn/metrolist_strings.xml at line 1, The XML file's first line contains a UTF-8 BOM before the XML declaration; remove the leading BOM character so the header begins exactly with "<?xml version="1.0" encoding="utf-8"?>", ensuring no invisible character precedes the declaration in app/src/main/res/values-b+sr+Latn/metrolist_strings.xml to prevent diff churn and parser issues.app/src/main/res/values-ms/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorRemove the UTF-8 BOM from the XML declaration.
Line 1 starts with a BOM (
U+FEFF). Please remove it to avoid invisible-character churn in diffs and tooling.Suggested fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-ms/metrolist_strings.xml` at line 1, The first line of the XML file begins with a UTF-8 BOM (U+FEFF) before the XML declaration "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; remove that invisible BOM character so the file starts exactly with the XML declaration to prevent diff/tooling churn and ensure parsers/readers see a clean declaration.app/src/main/res/values-hi/metrolist_strings.xml-1-1 (1)
1-1:⚠️ Potential issue | 🟡 MinorRemove UTF-8 BOM from the XML file.
The file starts with a UTF-8 BOM (
0xEF 0xBB 0xBF). While Android's build tooling typically handles this, UTF-8 BOMs are discouraged in XML files as they are redundant given the explicitencoding="utf-8"declaration and can cause parsing issues with some tools.Proposed fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-hi/metrolist_strings.xml` at line 1, The XML file app/src/main/res/values-hi/metrolist_strings.xml contains a UTF-8 BOM before the XML declaration; remove the BOM bytes (0xEF 0xBB 0xBF) so the file begins exactly with <?xml version="1.0" encoding="utf-8"?>, save the file without BOM (use a text editor or editor setting to save as UTF-8 without BOM) to avoid parsing issues.
🧹 Nitpick comments (9)
app/src/main/res/values-fa/metrolist_strings.xml (1)
1-1: Consider removing the UTF-8 BOM character.The file starts with a UTF-8 BOM (
) before the XML declaration. While Android's XML parser handles this, BOMs in XML files can cause issues with some tools and parsers. Consider removing it for broader compatibility.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-fa/metrolist_strings.xml` at line 1, The file metrolist_strings.xml contains a leading UTF-8 BOM character before the XML declaration (the visible "" at the start); remove that BOM so the first character of the file is '<' of "<?xml ...?>" to avoid parser/tool issues and ensure the XML declaration (<?xml version="1.0" encoding="utf-8"?>) is the file's true start.app/src/main/res/values-nl/metrolist_strings.xml (1)
1-1: UTF-8 BOM detected in XML declaration.The file contains a UTF-8 BOM character at the start. While Android handles this fine, BOMs are unnecessary for UTF-8 encoded XML files and can cause issues with some diff tools and parsers. Consider removing it for consistency across locale files.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-nl/metrolist_strings.xml` at line 1, Remove the UTF-8 BOM at the start of the file so the XML declaration "<?xml version="1.0" encoding="utf-8"?>" is the very first bytes; open the file in an editor that can save as "UTF-8 without BOM" (or run a command to strip the BOM) and re-save it, then verify with git diff or an editor that no invisible BOM byte precedes the XML declaration.app/src/main/res/values-et/metrolist_strings.xml (1)
1-1: Consider removing the UTF-8 BOM.The file starts with a UTF-8 BOM character (
EF BB BF). While Android handles this fine, BOMs are unnecessary for XML files (the encoding is already declared) and can occasionally cause issues with text processing tools. This appears to have been introduced during the whitespace reformatting.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-et/metrolist_strings.xml` at line 1, The XML file begins with a UTF-8 BOM (bytes EF BB BF) before the <?xml version="1.0" encoding="utf-8"?> declaration; remove the BOM so the file starts directly with the <?xml ...?> line, save the file without a BOM (your editor or `iconv`/`dos2unix` can do this), and verify the saved file contains no leading invisible characters and re-commit the change.app/src/main/res/values-el/metrolist_strings.xml (1)
1-1: UTF-8 BOM present before XML declaration.The invisible UTF-8 BOM character (
) precedes the XML declaration. While many parsers handle this gracefully, it's not standard for Android resource XML files and can occasionally cause build or parsing issues. Consider removing the BOM if this was newly introduced during formatting changes.Suggested fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-el/metrolist_strings.xml` at line 1, The file app/src/main/res/values-el/metrolist_strings.xml contains a leading UTF-8 BOM character before the XML declaration; remove the invisible BOM so the file begins with "<?xml" and re-save the file as UTF-8 without BOM (verify the first characters are the XML declaration and not U+FEFF) to avoid Android resource parsing/build issues.app/src/main/res/values-bn/metrolist_strings.xml (1)
1-1: UTF-8 BOM detected in XML file.The file contains a byte order mark (BOM) before the XML declaration. While valid, BOMs in UTF-8 XML files are unnecessary and can cause issues with some parsers and diff tools. Consider removing it unless intentionally added for tooling compatibility.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-bn/metrolist_strings.xml` at line 1, Remove the UTF-8 byte order mark (BOM) that appears before the XML declaration in the file by saving the file without the BOM so the leading "<?xml version="1.0" encoding="utf-8"?>" declaration starts at the very first byte; ensure the file is re-saved in UTF-8 (without BOM) so parsers and diff tools no longer see the invisible BOM before the XML declaration.app/src/main/res/values-ta/metrolist_strings.xml (1)
1-1: UTF-8 BOM added to XML declaration.The file now has a UTF-8 byte order mark (BOM) prepended. While Android tooling generally handles this, BOMs in XML files are unconventional and can occasionally cause issues with certain parsers or diff tools. Consider removing it for consistency.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-ta/metrolist_strings.xml` at line 1, The XML file contains a UTF-8 BOM before the XML declaration; remove the BOM so the file starts directly with "<?xml version="1.0" encoding="utf-8"?>" (i.e., save metrolist_strings.xml as UTF-8 without BOM), ensuring any editor or build tools are configured to write UTF-8 without BOM and re-run the build or diff to verify the BOM is gone.app/src/main/res/values-ko/metrolist_strings.xml (1)
1-1: Drop the UTF-8 BOM from the XML header.Line 1 includes a BOM before
<?xml ...?>; please save as UTF-8 without BOM to avoid avoidable resource/diff/tooling noise.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-ko/metrolist_strings.xml` at line 1, The XML file starts with a UTF-8 BOM before the XML declaration "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; remove the BOM by re-saving metrolist_strings.xml as UTF-8 without BOM (use your editor/IDE "Save without BOM" or run a tool to strip the BOM) so the file begins exactly with the <?xml ...?> declaration and eliminates spurious diff/tooling noise.app/src/main/res/values-ckb/metrolist_strings.xml (1)
1-1: Remove the UTF-8 BOM at Line 1 to avoid encoding noise.This is a low-risk cleanup, but keeping the XML declaration BOM-free avoids unnecessary diffs and parser edge-case risk.
✂️ Proposed cleanup
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-ckb/metrolist_strings.xml` at line 1, Remove the UTF-8 BOM at the start of the file so the XML declaration "<?xml version="1.0" encoding="utf-8"?>" begins with the ASCII '<' character; edit the file to delete the leading BOM byte(s) (0xEF,0xBB,0xBF) so parsers and diffs no longer see encoding noise while leaving the existing XML declaration and content unchanged.app/src/main/res/values-az/metrolist_strings.xml (1)
3-112: Large-scale reformatting creates diff noise.The entire file appears to have been reformatted (4-space to 2-space indentation), which makes it difficult to review the actual content changes. If this was unintentional (e.g., IDE auto-format), consider reverting the formatting changes and committing only the new string addition. If this is an intentional project-wide style standardization, it would be cleaner to do formatting changes in a separate commit.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-az/metrolist_strings.xml` around lines 3 - 112, The PR has large unrelated reformatting across the resource file (2-space vs 4-space) that obscures real changes; revert the whitespace-only changes so only the intended string additions/edits remain (e.g., the new/modified entries like "local_history", "edit_playlist_cover_note", "yt_sync", "share_lyrics", etc.), or split the work into two commits: one that applies the formatting normalization across the repo and a separate commit that contains only the functional string changes; ensure the final commit touching the strings contains only semantic edits to those string resources.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@app/src/main/res/values-as/metrolist_strings.xml`:
- Line 39: The new string entry audio_quality_very_high was added in a
locale-specific metrolist_strings.xml; move this addition into the base
metrolist_strings.xml (the app's base values file) instead: remove the <string
name="audio_quality_very_high">...</string> from the localized
values-as/metrolist_strings.xml and add the same entry to the base
metrolist_strings.xml so the key is defined in the canonical resource file
(localized files may then only contain translations if needed).
In `@app/src/main/res/values-b`+sr+Latn/metrolist_strings.xml:
- Around line 3-78: The PR edited locale-specific resource keys (e.g., "likes",
"local_history", "remote_history", "charts", "back_button_desc", etc.) inside
values-b+sr+Latn/metrolist_strings.xml; revert those locale-file edits and
instead apply the intended string changes to the base metrolist_strings.xml (the
project requires all string edits go to the base resource). Restore
values-b+sr+Latn/metrolist_strings.xml to its previous state, then copy the
updated entries (the same resource names shown in the diff) into the base
metrolist_strings.xml so translations remain managed through the proper
workflow.
In `@app/src/main/res/values-bg/metrolist_strings.xml`:
- Around line 1-320: The changes were made in the localized
metrolist_strings.xml (e.g., entries like "audio_quality_very_high", "alarm",
"percentage_format", and the string around the end of the file) but per repo
rules all string edits must be done only in the base metrolist_strings.xml;
revert the edits in the localized Bulgarian file (restore original localized
content) and apply your text updates to the base values metrolist_strings.xml
instead, updating the same string resource keys (use the exact resource names
such as "alarm", "percentage_format", "audio_quality_very_high", etc.) so
translations remain separate and only the base file contains the source-text
changes.
In `@app/src/main/res/values-bs/metrolist_strings.xml`:
- Around line 1-107: The PR edits the Bosnian locale resource directly; instead,
revert these changes in the locale file and apply them to the canonical values
metrolist_strings.xml so localization tooling can propagate them. Locate the
keys changed here (e.g., lyrics_auto_scroll, show_cached_playlist,
remote_history, n_time plural, seconds plural, token_adv_login_description,
etc.), make the exact text edits in the main canonical metrolist_strings.xml
resource, and remove the edits from the locale-specific file so only the
canonical file contains the updated strings for the localization flow to pick
up.
In `@app/src/main/res/values-ckb/metrolist_strings.xml`:
- Around line 1-49: The new string entry "audio_quality_very_high" was added
directly to the localized resource file; move this addition into the base
metrolist strings file and remove it from the localized file to follow the repo
rule: add the <string name="audio_quality_very_high">...</string> entry to the
base metrolist_strings.xml (the canonical source) and delete the corresponding
entry from the values-ckb metrolist_strings.xml so translations continue to flow
from the base file.
In `@app/src/main/res/values-es-rUS/metrolist_strings.xml`:
- Around line 1-575: This PR accidentally edits locale file entries (e.g.,
string names like "lyrics_auto_scroll", "token_hidden", "token_shown") in
values-es-rUS/metrolist_strings.xml instead of updating the canonical source;
revert any changes made in this locale file and apply the intended string edits
only to the base metrolist_strings.xml (the master source of truth), then run
the normal localization propagation workflow so other locale files are updated
downstream—remove the locale file modifications from the PR and ensure only
metrolist_strings.xml contains the source edits.
In `@app/src/main/res/values-fil/metrolist_strings.xml`:
- Around line 1-46: You edited the localized file
values-fil/metrolist_strings.xml directly; revert that locale file and instead
apply the same string updates to the canonical base resource file by making the
equivalent changes to the base values/metrolist_strings.xml (update the entries
for resources such as local_history, charts, back_button_desc, top_music_videos,
trending, weeks, months, years, continuous, liked, offline, my_top,
cached_playlist, uploaded_playlist, filter_uploaded,
allows_for_sync_witch_youtube, generating_image, please_wait, cancel,
share_lyrics, share_as_text, share_as_image, max_selection_limit,
share_selected, customize_colors, text_color, secondary_text_color,
background_color, remove_from_cache, copy_link, select, like_all, dislike_all,
sort_by_last_updated, link_copied, starting_radio, now_playing,
hide_player_thumbnail, hide_player_thumbnail_desc, already_in_playlist,
album_cover_desc, remote_history, audio_quality_very_high); ensure you do not
modify any other locale-specific metrolist_strings.xml files and keep locale
files synchronized only via the base file.
In `@app/src/main/res/values-km/metrolist_strings.xml`:
- Around line 15-18: The Khmer resource file contains Italian strings for the
keys time_transfer_target_song, time_transfer_listen_time_label,
time_transfer_convert, and song_dropdown_more_results; update these entries by
replacing the Italian text with proper Khmer translations for each string key or
remove these four overrides so the app falls back to the default locale until
verified Khmer translations are available.
- Line 19: The string resource audio_quality_very_high contains a malformed
mixture of Khmer and Latin characters; open the resource entry for
audio_quality_very_high and replace the current value ("សុខdិ") with a correct
Khmer translation for "Very High" obtained from a native speaker (or temporarily
fallback to the English text "Very High" until a verified Khmer string is
provided), ensuring the replacement uses only Khmer script characters and
matches the style of other audio_quality_* resources.
In `@app/src/main/res/values-ko/metrolist_strings.xml`:
- Around line 3-158: This change edited localized string resources (e.g.,
local_history, remote_history, line_by_line_dialog_desc,
cache_size_warning_message) directly in a localized metrolist_strings.xml;
revert those edits in the localized file and instead apply the intended
string-source edits to the canonical metrolist_strings.xml in the main values
resource (make the same text changes there), then regenerate or run the
localization pipeline so localized files are updated via the normal flow and
ensure no other localized metrolist_strings.xml/strings.xml files are modified.
In `@app/src/main/res/values-ms/metrolist_strings.xml`:
- Line 73: Remove the locale-specific addition and instead add the new string
key audio_quality_very_high to the base metrolist_strings.xml in the values
resource set; specifically, delete the <string
name="audio_quality_very_high">Sangat Tinggi</string> entry from the locale file
and create (or update) the same key in the base values/metrolist_strings.xml
with the default (source) text, then keep locale files only for translated
variants so resource merging works correctly.
In `@app/src/main/res/values-sk/metrolist_strings.xml`:
- Around line 1-326: You modified a locale-specific resource file (contains
strings like "local_history", "wrapped_ready_title", "lyrics_romanize_chinese",
etc.) which must not be edited directly; revert your changes to this
metrolist_strings.xml and make all string edits in the canonical file (the app's
default values metrolist_strings.xml) instead, then run the project
localization/sync flow to propagate updates to locale files rather than editing
entries such as "local_history", "wrapped_ready_title", or
"lyrics_romanize_chinese" directly here.
In `@app/src/main/res/values-sl/metrolist_strings.xml`:
- Around line 1-272: The change was made in the language-specific
metrolist_strings (values-sl) but must be applied to the base metrolist_strings
file instead: copy/update all modified string resources (e.g., keys like
"local_history", "remote_history", "charts", ..., "audio_quality_very_high")
into the base metrolist_strings.xml with the same translations, remove/revert
those edits from the values-sl variant so it no longer contains these base
edits, and ensure there are no duplicate keys across resource files.
In `@app/src/main/res/values-uk/metrolist_strings.xml`:
- Around line 1-339: You modified the locale file
values-uk/metrolist_strings.xml which violates the rule to centralize string
edits; revert all changes in values-uk/metrolist_strings.xml (restore the prior
file contents) and apply any string modifications only to the central strings
source file values/metrolist_strings.xml, ensuring no other
metrolist_strings.xml or strings.xml files are edited; commit the revert for the
locale file and the actual string updates to the single canonical file.
---
Minor comments:
In `@app/src/main/res/values-b`+sr+Latn/metrolist_strings.xml:
- Line 1: The XML file's first line contains a UTF-8 BOM before the XML
declaration; remove the leading BOM character so the header begins exactly with
"<?xml version="1.0" encoding="utf-8"?>", ensuring no invisible character
precedes the declaration in
app/src/main/res/values-b+sr+Latn/metrolist_strings.xml to prevent diff churn
and parser issues.
In `@app/src/main/res/values-eu/metrolist_strings.xml`:
- Line 1: The file begins with a UTF-8 BOM character before the XML declaration
(the leading "" before <?xml version="1.0" encoding="utf-8"?>); open the file
that contains the XML declaration and remove the BOM so the file starts exactly
with "<?xml version="1.0" encoding="utf-8"?>", then save/commit the file encoded
as UTF-8 without BOM (use your editor's "UTF-8 without BOM" option or run a tool
to strip the BOM) to ensure broad XML parser compatibility.
In `@app/src/main/res/values-hi/metrolist_strings.xml`:
- Line 1: The XML file app/src/main/res/values-hi/metrolist_strings.xml contains
a UTF-8 BOM before the XML declaration; remove the BOM bytes (0xEF 0xBB 0xBF) so
the file begins exactly with <?xml version="1.0" encoding="utf-8"?>, save the
file without BOM (use a text editor or editor setting to save as UTF-8 without
BOM) to avoid parsing issues.
In `@app/src/main/res/values-hr/metrolist_strings.xml`:
- Line 1: The file metrolist_strings.xml contains a leading UTF-8 BOM character
before the XML declaration which is unnecessary and can break some XML parsers;
remove the BOM so the file starts exactly with <?xml version="1.0"
encoding="utf-8"?> and scan other locale XML files (e.g., other
values-*/metrolist_strings.xml) to remove any stray BOMs to ensure consistent
encoding across resources.
In `@app/src/main/res/values-lt/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM (U+FEFF) at the start of
app/src/main/res/values-lt/metrolist_strings.xml so the file begins exactly with
the XML declaration "<?xml version="1.0" encoding="utf-8"?>"; open the file in a
text editor that can save without BOM and re-save as UTF-8 without BOM (or run a
script to strip the leading BOM) to ensure no invisible character precedes the
XML declaration.
In `@app/src/main/res/values-ms/metrolist_strings.xml`:
- Line 1: The first line of the XML file begins with a UTF-8 BOM (U+FEFF) before
the XML declaration "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; remove that
invisible BOM character so the file starts exactly with the XML declaration to
prevent diff/tooling churn and ensure parsers/readers see a clean declaration.
In `@app/src/main/res/values-sk/metrolist_strings.xml`:
- Line 1: The XML prolog in metrolist_strings.xml contains a UTF-8 BOM at the
start; remove the BOM so the file begins exactly with "<?xml version="1.0"
encoding="utf-8"?>" and resave the file as UTF-8 without BOM (no extra invisible
characters before the XML header) to prevent parser/tooling issues and spurious
diffs.
---
Nitpick comments:
In `@app/src/main/res/values-az/metrolist_strings.xml`:
- Around line 3-112: The PR has large unrelated reformatting across the resource
file (2-space vs 4-space) that obscures real changes; revert the whitespace-only
changes so only the intended string additions/edits remain (e.g., the
new/modified entries like "local_history", "edit_playlist_cover_note",
"yt_sync", "share_lyrics", etc.), or split the work into two commits: one that
applies the formatting normalization across the repo and a separate commit that
contains only the functional string changes; ensure the final commit touching
the strings contains only semantic edits to those string resources.
In `@app/src/main/res/values-bn/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 byte order mark (BOM) that appears before the XML
declaration in the file by saving the file without the BOM so the leading "<?xml
version="1.0" encoding="utf-8"?>" declaration starts at the very first byte;
ensure the file is re-saved in UTF-8 (without BOM) so parsers and diff tools no
longer see the invisible BOM before the XML declaration.
In `@app/src/main/res/values-ckb/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM at the start of the file so the XML declaration
"<?xml version="1.0" encoding="utf-8"?>" begins with the ASCII '<' character;
edit the file to delete the leading BOM byte(s) (0xEF,0xBB,0xBF) so parsers and
diffs no longer see encoding noise while leaving the existing XML declaration
and content unchanged.
In `@app/src/main/res/values-el/metrolist_strings.xml`:
- Line 1: The file app/src/main/res/values-el/metrolist_strings.xml contains a
leading UTF-8 BOM character before the XML declaration; remove the invisible BOM
so the file begins with "<?xml" and re-save the file as UTF-8 without BOM
(verify the first characters are the XML declaration and not U+FEFF) to avoid
Android resource parsing/build issues.
In `@app/src/main/res/values-et/metrolist_strings.xml`:
- Line 1: The XML file begins with a UTF-8 BOM (bytes EF BB BF) before the <?xml
version="1.0" encoding="utf-8"?> declaration; remove the BOM so the file starts
directly with the <?xml ...?> line, save the file without a BOM (your editor or
`iconv`/`dos2unix` can do this), and verify the saved file contains no leading
invisible characters and re-commit the change.
In `@app/src/main/res/values-fa/metrolist_strings.xml`:
- Line 1: The file metrolist_strings.xml contains a leading UTF-8 BOM character
before the XML declaration (the visible "" at the start); remove that BOM so
the first character of the file is '<' of "<?xml ...?>" to avoid parser/tool
issues and ensure the XML declaration (<?xml version="1.0" encoding="utf-8"?>)
is the file's true start.
In `@app/src/main/res/values-ko/metrolist_strings.xml`:
- Line 1: The XML file starts with a UTF-8 BOM before the XML declaration "<?xml
version=\"1.0\" encoding=\"utf-8\"?>"; remove the BOM by re-saving
metrolist_strings.xml as UTF-8 without BOM (use your editor/IDE "Save without
BOM" or run a tool to strip the BOM) so the file begins exactly with the <?xml
...?> declaration and eliminates spurious diff/tooling noise.
In `@app/src/main/res/values-nl/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM at the start of the file so the XML declaration
"<?xml version="1.0" encoding="utf-8"?>" is the very first bytes; open the file
in an editor that can save as "UTF-8 without BOM" (or run a command to strip the
BOM) and re-save it, then verify with git diff or an editor that no invisible
BOM byte precedes the XML declaration.
In `@app/src/main/res/values-ta/metrolist_strings.xml`:
- Line 1: The XML file contains a UTF-8 BOM before the XML declaration; remove
the BOM so the file starts directly with "<?xml version="1.0"
encoding="utf-8"?>" (i.e., save metrolist_strings.xml as UTF-8 without BOM),
ensuring any editor or build tools are configured to write UTF-8 without BOM and
re-run the build or diff to verify the BOM is gone.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: f1989c1d-b3f1-42d7-bed5-d41826278871
📒 Files selected for processing (95)
app/src/main/res/values-ar/metrolist_strings.xmlapp/src/main/res/values-ar/strings.xmlapp/src/main/res/values-as/metrolist_strings.xmlapp/src/main/res/values-az/metrolist_strings.xmlapp/src/main/res/values-b+sr+Latn/metrolist_strings.xmlapp/src/main/res/values-b+sr+Latn/strings.xmlapp/src/main/res/values-be/metrolist_strings.xmlapp/src/main/res/values-be/strings.xmlapp/src/main/res/values-bg/metrolist_strings.xmlapp/src/main/res/values-bg/strings.xmlapp/src/main/res/values-bn-rIN/strings.xmlapp/src/main/res/values-bn/metrolist_strings.xmlapp/src/main/res/values-bn/strings.xmlapp/src/main/res/values-bs/metrolist_strings.xmlapp/src/main/res/values-bs/strings.xmlapp/src/main/res/values-ca/metrolist_strings.xmlapp/src/main/res/values-ca/strings.xmlapp/src/main/res/values-ckb/metrolist_strings.xmlapp/src/main/res/values-cs/metrolist_strings.xmlapp/src/main/res/values-cs/strings.xmlapp/src/main/res/values-de/metrolist_strings.xmlapp/src/main/res/values-de/strings.xmlapp/src/main/res/values-el/metrolist_strings.xmlapp/src/main/res/values-el/strings.xmlapp/src/main/res/values-es-rUS/metrolist_strings.xmlapp/src/main/res/values-es-rUS/strings.xmlapp/src/main/res/values-es/metrolist_strings.xmlapp/src/main/res/values-es/strings.xmlapp/src/main/res/values-et/metrolist_strings.xmlapp/src/main/res/values-et/strings.xmlapp/src/main/res/values-eu/metrolist_strings.xmlapp/src/main/res/values-fa/metrolist_strings.xmlapp/src/main/res/values-fa/strings.xmlapp/src/main/res/values-fi/strings.xmlapp/src/main/res/values-fil/metrolist_strings.xmlapp/src/main/res/values-fil/strings.xmlapp/src/main/res/values-fr/metrolist_strings.xmlapp/src/main/res/values-fr/strings.xmlapp/src/main/res/values-hi/metrolist_strings.xmlapp/src/main/res/values-hr/metrolist_strings.xmlapp/src/main/res/values-hr/strings.xmlapp/src/main/res/values-hu/metrolist_strings.xmlapp/src/main/res/values-hu/strings.xmlapp/src/main/res/values-in/metrolist_strings.xmlapp/src/main/res/values-in/strings.xmlapp/src/main/res/values-it/metrolist_strings.xmlapp/src/main/res/values-it/strings.xmlapp/src/main/res/values-iw/metrolist_strings.xmlapp/src/main/res/values-iw/strings.xmlapp/src/main/res/values-ja/metrolist_strings.xmlapp/src/main/res/values-ja/strings.xmlapp/src/main/res/values-km/metrolist_strings.xmlapp/src/main/res/values-ko/metrolist_strings.xmlapp/src/main/res/values-ko/strings.xmlapp/src/main/res/values-lt/metrolist_strings.xmlapp/src/main/res/values-mfe/metrolist_strings.xmlapp/src/main/res/values-ml/strings.xmlapp/src/main/res/values-ms/metrolist_strings.xmlapp/src/main/res/values-nb-rNO/metrolist_strings.xmlapp/src/main/res/values-nb-rNO/strings.xmlapp/src/main/res/values-nl/metrolist_strings.xmlapp/src/main/res/values-nl/strings.xmlapp/src/main/res/values-nn/metrolist_strings.xmlapp/src/main/res/values-or/metrolist_strings.xmlapp/src/main/res/values-pa/strings.xmlapp/src/main/res/values-pl/metrolist_strings.xmlapp/src/main/res/values-pl/strings.xmlapp/src/main/res/values-pt-rBR/metrolist_strings.xmlapp/src/main/res/values-pt-rBR/strings.xmlapp/src/main/res/values-pt/metrolist_strings.xmlapp/src/main/res/values-pt/strings.xmlapp/src/main/res/values-ro/metrolist_strings.xmlapp/src/main/res/values-ro/strings.xmlapp/src/main/res/values-ru/metrolist_strings.xmlapp/src/main/res/values-ru/strings.xmlapp/src/main/res/values-sk/metrolist_strings.xmlapp/src/main/res/values-sk/strings.xmlapp/src/main/res/values-sl/metrolist_strings.xmlapp/src/main/res/values-sv/metrolist_strings.xmlapp/src/main/res/values-ta/metrolist_strings.xmlapp/src/main/res/values-ta/strings.xmlapp/src/main/res/values-te/metrolist_strings.xmlapp/src/main/res/values-te/strings.xmlapp/src/main/res/values-th/metrolist_strings.xmlapp/src/main/res/values-tr/metrolist_strings.xmlapp/src/main/res/values-tr/strings.xmlapp/src/main/res/values-uk/metrolist_strings.xmlapp/src/main/res/values-uk/strings.xmlapp/src/main/res/values-vi/metrolist_strings.xmlapp/src/main/res/values-vi/strings.xmlapp/src/main/res/values-wae/metrolist_strings.xmlapp/src/main/res/values-zh-rCN/metrolist_strings.xmlapp/src/main/res/values-zh-rCN/strings.xmlapp/src/main/res/values-zh-rTW/metrolist_strings.xmlapp/src/main/res/values-zh-rTW/strings.xml
✅ Files skipped from review due to trivial changes (48)
- app/src/main/res/values-ca/strings.xml
- app/src/main/res/values-bs/strings.xml
- app/src/main/res/values-et/strings.xml
- app/src/main/res/values-bg/strings.xml
- app/src/main/res/values-b+sr+Latn/strings.xml
- app/src/main/res/values-hr/strings.xml
- app/src/main/res/values-ml/strings.xml
- app/src/main/res/values-es/strings.xml
- app/src/main/res/values-it/strings.xml
- app/src/main/res/values-fi/strings.xml
- app/src/main/res/values-pt-rBR/strings.xml
- app/src/main/res/values-ro/strings.xml
- app/src/main/res/values-el/strings.xml
- app/src/main/res/values-vi/strings.xml
- app/src/main/res/values-ja/strings.xml
- app/src/main/res/values-nb-rNO/strings.xml
- app/src/main/res/values-ko/strings.xml
- app/src/main/res/values-ru/strings.xml
- app/src/main/res/values-sk/strings.xml
- app/src/main/res/values-bn-rIN/strings.xml
- app/src/main/res/values-uk/strings.xml
- app/src/main/res/values-in/strings.xml
- app/src/main/res/values-pl/strings.xml
- app/src/main/res/values-iw/strings.xml
- app/src/main/res/values-te/strings.xml
- app/src/main/res/values-tr/strings.xml
- app/src/main/res/values-be/strings.xml
- app/src/main/res/values-pt/strings.xml
- app/src/main/res/values-cs/strings.xml
- app/src/main/res/values-fr/strings.xml
- app/src/main/res/values-ar/strings.xml
- app/src/main/res/values-fil/strings.xml
- app/src/main/res/values-nl/strings.xml
- app/src/main/res/values-hu/strings.xml
- app/src/main/res/values-es-rUS/strings.xml
- app/src/main/res/values-de/strings.xml
- app/src/main/res/values-ta/strings.xml
- app/src/main/res/values-zh-rTW/strings.xml
- app/src/main/res/values-pa/strings.xml
- app/src/main/res/values-zh-rCN/strings.xml
- app/src/main/res/values-bn/strings.xml
- app/src/main/res/values-wae/metrolist_strings.xml
- app/src/main/res/values-fa/strings.xml
- app/src/main/res/values-or/metrolist_strings.xml
- app/src/main/res/values-nb-rNO/metrolist_strings.xml
- app/src/main/res/values-be/metrolist_strings.xml
- app/src/main/res/values-mfe/metrolist_strings.xml
- app/src/main/res/values-sv/metrolist_strings.xml
413b512 to
e408aca
Compare
There was a problem hiding this comment.
Actionable comments posted: 16
♻️ Duplicate comments (1)
app/src/main/res/values-bg/metrolist_strings.xml (1)
319-320:⚠️ Potential issue | 🟠 MajorMove
audio_quality_very_highout ofvalues-bgand into basevalues/metrolist_strings.xml.Line 319 adds a string in a localized
metrolist_strings.xml, but this repo’s rule is to keep string edits inapp/src/main/res/values/metrolist_strings.xmlonly. Please revert this localized edit and add/update the same key in the base file instead.Based on learnings: All string edits must be made to
Metrolist/app/src/main/res/values/metrolist_strings.xmlfile, NOTMetrolist/app/src/main/res/values/strings.xml. Do not touch otherstrings.xmlormetrolist_strings.xmlfiles in the project.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-bg/metrolist_strings.xml` around lines 319 - 320, Revert the localized addition of the string resource named audio_quality_very_high from the values-bg metrolist_strings.xml and instead add or update the same key in the base metrolist_strings.xml (the app’s primary values file) with the Bulgarian text "Много висока"; ensure you remove the duplicate from the localized file so the only edit is the base metrolist_strings.xml update.
🧹 Nitpick comments (2)
app/src/main/res/values-zh-rTW/metrolist_strings.xml (1)
1-1: Remove the BOM from the XML header.Line 1 includes a UTF-8 BOM character, which is unnecessary here and can create avoidable tooling/diff noise.
Proposed cleanup
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-zh-rTW/metrolist_strings.xml` at line 1, The XML file's first line contains a UTF-8 BOM before the XML prolog ("<?xml version="1.0" encoding="utf-8"?>"), causing unnecessary diff/tooling noise; open app/src/main/res/values-zh-rTW/metrolist_strings.xml and remove the BOM byte so the file begins exactly with the XML prolog (no hidden characters) and save with UTF-8 without BOM.app/src/main/res/values-eu/metrolist_strings.xml (1)
1-1: Remove the UTF-8 BOM at file start.Line 1 includes a BOM character before the XML prolog. Please remove it to keep resource files consistent and avoid tooling/parsing edge cases.
Proposed fix
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/main/res/values-eu/metrolist_strings.xml` at line 1, Remove the UTF-8 BOM that appears before the XML prolog in metrolist_strings.xml so the file starts exactly with "<?xml version="1.0" encoding="utf-8"?>"; open the file, delete the invisible BOM character at the very beginning, resave the file as UTF-8 without BOM and verify the first character is '<' of the XML declaration to avoid parsing/tooling issues.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@app/src/main/res/values-ar/metrolist_strings.xml`:
- Line 1: The file metrolist_strings.xml contains a UTF-8 BOM before the XML
prolog; remove the invisible BOM so the first bytes are "<?xml ...?>". Open
metrolist_strings.xml, re-save it as UTF-8 without BOM (use your editor/IDE
"Save without BOM" or run a tool like dos2unix/iconv to rewrite without BOM),
verify the file begins with the XML prolog (<?xml version="1.0"
encoding="utf-8"?>) and commit the cleaned file.
In `@app/src/main/res/values-cs/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM (U+FEFF) that appears before the XML declaration
so the file starts directly with the "<?xml version=\"1.0\"
encoding=\"utf-8\"?>" declaration; open
app/src/main/res/values-cs/metrolist_strings.xml, delete the invisible BOM
character at the very start (before '<') and save the file without BOM.
In `@app/src/main/res/values-de/metrolist_strings.xml`:
- Around line 783-784: Remove the added string entry named
"audio_quality_very_high" from the localized values-de file and instead add that
key to the default metrolist_strings.xml (the project's main values file) with
the canonical/default language value; keep the German translation out of the
localized file until after the key exists in the default file so resource
merging works correctly and run a resources build/check to verify no
duplicate/missing keys.
- Line 1: The file contains a UTF-8 Byte Order Mark (BOM) at the start of the
XML declaration (the "<?xml version="1.0" encoding="utf-8"?>" header) which
causes hidden-character diffs and tooling issues; open
app/src/main/res/values-de/metrolist_strings.xml and re-save it as UTF-8 without
BOM (remove the leading BOM character before the XML declaration) so the file
begins directly with "<?xml ..." and commit the change.
In `@app/src/main/res/values-es/metrolist_strings.xml`:
- Around line 735-736: The new resource key audio_quality_very_high was added
directly into a locale-specific metrolist_strings.xml; move this key into the
base metrolist_strings.xml (the values/metrolist_strings.xml base file) and
remove it from the values-es file so edits follow the repo localization flow;
add the key in the base file with the default (English) string (e.g., "Very
high") and ensure there are no duplicate keys across resource files and no other
locale overrides unless intentional.
In `@app/src/main/res/values-fr/metrolist_strings.xml`:
- Around line 795-796: The change modifies the localized resource file; revert
the edit in values-fr and instead add or update the same string key
"audio_quality_very_high" in the base metrolist_strings.xml (the values resource
file) so all translations originate from the canonical base file, then leave
locale files untouched (they should only contain translations derived from the
base). Locate the "audio_quality_very_high" entry in the localized file and
remove or restore it to its previous state, and add/update the corresponding
<string name="audio_quality_very_high">Très élevée</string> in the base
metrolist_strings.xml so the project guidance is followed.
- Line 1: Remove the invisible UTF-8 BOM at the start of the file so the very
first bytes begin with the XML declaration "<?xml version="1.0"
encoding="utf-8"?>"; open app/src/main/res/values-fr/metrolist_strings.xml in a
text editor that can show/strip BOM or re-save it as "UTF-8 without BOM", ensure
no characters precede the "<?xml ..." line, then commit the cleaned file.
In `@app/src/main/res/values-hu/metrolist_strings.xml`:
- Line 1: The file begins with a UTF-8 BOM character (U+FEFF) before the XML
prolog (<?xml version="1.0" encoding="utf-8"?>) which can break XML parsing;
open metrolist_strings.xml and re-save it without a BOM (or remove the leading
U+FEFF) so the file starts directly with the XML prolog, then commit the updated
file.
In `@app/src/main/res/values-in/metrolist_strings.xml`:
- Line 1: The file begins with a UTF-8 BOM character right before the XML
declaration "<?xml", which breaks XML parsing; remove the invisible BOM so the
file starts exactly with "<?xml version=\"1.0\" encoding=\"utf-8\"?>", and
re-save the file as UTF-8 without BOM (ensure your editor/IDE encoding is set to
"UTF-8 without BOM" or use a tool to strip the BOM) so the XML prolog is the
very first bytes.
In `@app/src/main/res/values-iw/metrolist_strings.xml`:
- Line 1: The file starts with a UTF-8 BOM character (U+FEFF) before the XML
prolog; remove that invisible character so the file begins directly with <?xml
version="1.0" encoding="utf-8"?>, and re-save the file as UTF-8 without BOM
(ensure your editor/formatter writes UTF-8 without BOM or strip the BOM
programmatically before commit).
In `@app/src/main/res/values-pl/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM (U+FEFF) that appears before the XML declaration
in metrolist_strings.xml so the file starts exactly with <?xml version="1.0"
encoding="utf-8"?>; re-save the file without BOM using your editor or a tool
that writes UTF-8 without BOM to eliminate the "content before prolog" parsing
errors.
In `@app/src/main/res/values-pt-rBR/metrolist_strings.xml`:
- Around line 795-796: The new resource key audio_quality_very_high was added in
the localized values-pt-rBR file but per project policy must be declared in the
base metrolist_strings.xml; add the string entry for audio_quality_very_high
(with the Portuguese text "Muito Alto" or appropriate base-language text) to the
base metrolist_strings.xml, remove the duplicate from the values-pt-rBR file (or
keep only a localized override if needed), and ensure there are no duplicate
resource names so the build resolves the key correctly.
In `@app/src/main/res/values-ro/metrolist_strings.xml`:
- Line 1: The file metrolist_strings.xml contains a UTF-8 BOM character
prepended to the XML declaration '<?xml version="1.0" encoding="utf-8"?>';
remove the leading BOM byte(s) so the file starts exactly with the XML
declaration (no hidden characters) and re-save as UTF-8 without BOM to prevent
XML parser issues.
In `@app/src/main/res/values-ru/metrolist_strings.xml`:
- Line 1: The file begins with a UTF-8 Byte Order Mark (U+FEFF) before the XML
declaration which can break parsers; remove the leading BOM so the file starts
directly with the XML declaration string "<?xml version="1.0"
encoding="utf-8"?>" (i.e., delete the invisible U+FEFF character at the very
start of metrolist_strings.xml), then save the file as UTF-8 without BOM.
In `@app/src/main/res/values-ta/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 Byte Order Mark (BOM) that appears before the XML
declaration in the metrolist_strings.xml file: open the file and delete the
invisible BOM characters so the file begins exactly with <?xml version="1.0"
encoding="utf-8"?>; save the file as UTF-8 without BOM to prevent XML
parsing/lint warnings and ensure Android tools read it correctly.
In `@app/src/main/res/values-tr/metrolist_strings.xml`:
- Around line 788-789: You added a new locale-specific string key
audio_quality_very_high in values-tr/metrolist_strings.xml which violates the
repo rule; remove this entry from
app/src/main/res/values-tr/metrolist_strings.xml and instead add the same key
and value into the canonical base file
app/src/main/res/values/metrolist_strings.xml (the project's Metrolist base
values file), ensuring no other locale-specific metrolist_strings.xml files are
modified.
---
Duplicate comments:
In `@app/src/main/res/values-bg/metrolist_strings.xml`:
- Around line 319-320: Revert the localized addition of the string resource
named audio_quality_very_high from the values-bg metrolist_strings.xml and
instead add or update the same key in the base metrolist_strings.xml (the app’s
primary values file) with the Bulgarian text "Много висока"; ensure you remove
the duplicate from the localized file so the only edit is the base
metrolist_strings.xml update.
---
Nitpick comments:
In `@app/src/main/res/values-eu/metrolist_strings.xml`:
- Line 1: Remove the UTF-8 BOM that appears before the XML prolog in
metrolist_strings.xml so the file starts exactly with "<?xml version="1.0"
encoding="utf-8"?>"; open the file, delete the invisible BOM character at the
very beginning, resave the file as UTF-8 without BOM and verify the first
character is '<' of the XML declaration to avoid parsing/tooling issues.
In `@app/src/main/res/values-zh-rTW/metrolist_strings.xml`:
- Line 1: The XML file's first line contains a UTF-8 BOM before the XML prolog
("<?xml version="1.0" encoding="utf-8"?>"), causing unnecessary diff/tooling
noise; open app/src/main/res/values-zh-rTW/metrolist_strings.xml and remove the
BOM byte so the file begins exactly with the XML prolog (no hidden characters)
and save with UTF-8 without BOM.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 40f3f18d-21ff-45c9-88fa-55cc9d1abb02
📒 Files selected for processing (51)
app/src/main/res/values-ar/metrolist_strings.xmlapp/src/main/res/values-as/metrolist_strings.xmlapp/src/main/res/values-az/metrolist_strings.xmlapp/src/main/res/values-b+sr+Latn/metrolist_strings.xmlapp/src/main/res/values-be/metrolist_strings.xmlapp/src/main/res/values-bg/metrolist_strings.xmlapp/src/main/res/values-bs/metrolist_strings.xmlapp/src/main/res/values-ca/metrolist_strings.xmlapp/src/main/res/values-ckb/metrolist_strings.xmlapp/src/main/res/values-cs/metrolist_strings.xmlapp/src/main/res/values-de/metrolist_strings.xmlapp/src/main/res/values-el/metrolist_strings.xmlapp/src/main/res/values-es-rUS/metrolist_strings.xmlapp/src/main/res/values-es/metrolist_strings.xmlapp/src/main/res/values-et/metrolist_strings.xmlapp/src/main/res/values-eu/metrolist_strings.xmlapp/src/main/res/values-fa/metrolist_strings.xmlapp/src/main/res/values-fil/metrolist_strings.xmlapp/src/main/res/values-fr/metrolist_strings.xmlapp/src/main/res/values-hi/metrolist_strings.xmlapp/src/main/res/values-hr/metrolist_strings.xmlapp/src/main/res/values-hu/metrolist_strings.xmlapp/src/main/res/values-in/metrolist_strings.xmlapp/src/main/res/values-it/metrolist_strings.xmlapp/src/main/res/values-iw/metrolist_strings.xmlapp/src/main/res/values-ja/metrolist_strings.xmlapp/src/main/res/values-ko/metrolist_strings.xmlapp/src/main/res/values-lt/metrolist_strings.xmlapp/src/main/res/values-mfe/metrolist_strings.xmlapp/src/main/res/values-ms/metrolist_strings.xmlapp/src/main/res/values-nb-rNO/metrolist_strings.xmlapp/src/main/res/values-nl/metrolist_strings.xmlapp/src/main/res/values-nn/metrolist_strings.xmlapp/src/main/res/values-or/metrolist_strings.xmlapp/src/main/res/values-pl/metrolist_strings.xmlapp/src/main/res/values-pt-rBR/metrolist_strings.xmlapp/src/main/res/values-pt/metrolist_strings.xmlapp/src/main/res/values-ro/metrolist_strings.xmlapp/src/main/res/values-ru/metrolist_strings.xmlapp/src/main/res/values-sk/metrolist_strings.xmlapp/src/main/res/values-sl/metrolist_strings.xmlapp/src/main/res/values-sv/metrolist_strings.xmlapp/src/main/res/values-ta/metrolist_strings.xmlapp/src/main/res/values-te/metrolist_strings.xmlapp/src/main/res/values-th/metrolist_strings.xmlapp/src/main/res/values-tr/metrolist_strings.xmlapp/src/main/res/values-uk/metrolist_strings.xmlapp/src/main/res/values-vi/metrolist_strings.xmlapp/src/main/res/values-wae/metrolist_strings.xmlapp/src/main/res/values-zh-rCN/metrolist_strings.xmlapp/src/main/res/values-zh-rTW/metrolist_strings.xml
✅ Files skipped from review due to trivial changes (9)
- app/src/main/res/values-wae/metrolist_strings.xml
- app/src/main/res/values-ca/metrolist_strings.xml
- app/src/main/res/values-it/metrolist_strings.xml
- app/src/main/res/values-mfe/metrolist_strings.xml
- app/src/main/res/values-vi/metrolist_strings.xml
- app/src/main/res/values-hr/metrolist_strings.xml
- app/src/main/res/values-zh-rCN/metrolist_strings.xml
- app/src/main/res/values-fa/metrolist_strings.xml
- app/src/main/res/values-sv/metrolist_strings.xml
🚧 Files skipped from review as they are similar to previous changes (23)
- app/src/main/res/values-nl/metrolist_strings.xml
- app/src/main/res/values-el/metrolist_strings.xml
- app/src/main/res/values-as/metrolist_strings.xml
- app/src/main/res/values-be/metrolist_strings.xml
- app/src/main/res/values-te/metrolist_strings.xml
- app/src/main/res/values-es-rUS/metrolist_strings.xml
- app/src/main/res/values-fil/metrolist_strings.xml
- app/src/main/res/values-or/metrolist_strings.xml
- app/src/main/res/values-pt/metrolist_strings.xml
- app/src/main/res/values-nn/metrolist_strings.xml
- app/src/main/res/values-az/metrolist_strings.xml
- app/src/main/res/values-ckb/metrolist_strings.xml
- app/src/main/res/values-nb-rNO/metrolist_strings.xml
- app/src/main/res/values-sl/metrolist_strings.xml
- app/src/main/res/values-sk/metrolist_strings.xml
- app/src/main/res/values-ko/metrolist_strings.xml
- app/src/main/res/values-et/metrolist_strings.xml
- app/src/main/res/values-lt/metrolist_strings.xml
- app/src/main/res/values-bs/metrolist_strings.xml
- app/src/main/res/values-uk/metrolist_strings.xml
- app/src/main/res/values-b+sr+Latn/metrolist_strings.xml
- app/src/main/res/values-hi/metrolist_strings.xml
- app/src/main/res/values-ms/metrolist_strings.xml
f949f5b to
95920dc
Compare
6d83e4b to
890a04f
Compare
6a1ecb5 to
2255399
Compare
|
@nyxiereal could you take another look? |
Problem
Audio playback has reduced clarity and sounds like low bitrate streaming. Additionally, the autoplay functionality (automatically playing the next song when the current one ends) was not explicitly controllable.
Cause
The audio quality setting only offered three options (Auto, High, Low), with "High" not selecting the highest possible quality formats from YouTube. Additionally, there was no explicit user setting to control autoplay behavior.
Solution
Testing
Build successfully completed. The changes have been tested by verifying the new enum values are correctly handled in the format selection logic and the new settings UI.
Related Issues
Summary by CodeRabbit
Release Notes
New Features
Improvements