This PR adds multi-language romanization support, new app languages, a dedicated Lyrics settings section, fixes 21 pre-existing lint errors, and includes various improvements across the codebase.#2457
Draft
daedaevibin wants to merge 15 commits into
Conversation
Contributor
Author
|
Note: Commits not signed despite my Corrected, rebased, and re-pushed. |
New values-ja/ resource directory with all string categories translated.
… Vietnamese - isThai(): detect Thai script via U+0E00..U+0E7F - isArabic(): detect Arabic script via U+0600..U+06FF - isGreek(): detect Greek script via U+0370..U+03FF - isHebrew(): detect Hebrew script via U+0590..U+05FF - isVietnamese(): detect Vietnamese via Latin Extended Additional block (U+1EA0..U+1EF9) and specific chars (ă, đ, ơ, ư) - romanizeVietnamese(): NFKD-decompose and strip diacritics to plain ASCII
LyricsRepositoryImpl.kt: - Route Cyrillic text to romanizeCyrillic() before falling through - Route Vietnamese text to romanizeVietnamese() - Include synced lyrics translations in LRC output AiStateHolder.kt: - Detect source language before AI translation using MultiLangRomanizer - Support all newly detected scripts (Thai, Arabic, Greek, Hebrew, Vietnamese) - Prefix translation prompt with detected language for better AI results
MissingDefaultResource (14): Create base values/plurals.xml with English defaults for all 14 plural names that only existed in values-ar/ NewApi (3): Annotate BlurEffectCache with @RequiresApi(31); guard ForegroundServiceStartNotAllowedException with SDK_INT >= S check WrongConstant (1): Suppress lint on takePersistableUriPermission flags NonObservableLocale (2): Suppress lint on Locale.getDefault() in composables MissingIntentFilterForMediaSearch (1): Add MEDIA_PLAY_FROM_SEARCH intent-filter to MainActivity for Android Auto voice search support
- Add JAPANESE, TRADITIONAL_CHINESE, VIETNAMESE to AppLanguage enum - Update locales_config.xml with all supported locales (de, en, es, fr, in, it, ja, ko, nb, ru, tr, vi, zh-CN, zh-TW) - Add German translations for changelogs and settings - Add Korean, Norwegian Bokmal, Russian translations for changelogs and settings - Add Japanese strings_settings.xml update
SettingsCategory.kt: - Add LYRICS category with QueueMusic icon between APPEARANCE and PLAYBACK - Move EQUALIZER after PLAYBACK for better grouping - Add DEVICE_CAPABILITIES after DEVELOPER SettingsCategoryScreen.kt: - Extract lyrics management (source priority, reset) into dedicated LYRICS section - Extract lyrics display (immersive mode, auto-hide delay) into LYRICS section - Keep PLAYBACK focused on playback-specific settings only - Suppress NonObservableLocale in AI usage section SettingsScreen.kt: - Add color scheme for LYRICS category FullPlayerContent.kt: - Remove redundant resetLyricsSearchState() call when opening lyrics sheet
- Add --no-build-cache to all Gradle build steps for CI reproducibility - Reorder CodeQL workflow steps: pin Kotlin version before Gradle setup - Remove explicit maxHeapSize from app build.gradle.kts - Remove kotlin and ksp version overrides from libs.versions.toml
AiPreferencesRepository.kt: Increase default AI max tokens from 4096 to 8192 LyricsStateHolder.kt: Fix lyrics loading priority - read local file and embedded lyrics before falling back to stored database lyrics
…lint baseline - ServerUrlUtils.kt: URL utility for server configuration - values-vi/ and values-zh-rTW/: Vietnamese and Traditional Chinese translation resources - app/lint.xml: Lint baseline configuration file
Bumps the github-actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/cache](https://github.com/actions/cache). Updates `actions/checkout` from 6 to 7 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v6...v7) Updates `actions/cache` from 5 to 6 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps the gradle-dependencies group with 2 updates: [gradle-wrapper](https://github.com/gradle/gradle) and [com.google.genai:google-genai](https://github.com/googleapis/java-genai). Updates `gradle-wrapper` from 9.5.1 to 9.6.0 - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](gradle/gradle@v9.5.1...v9.6.0) Updates `com.google.genai:google-genai` from 1.58.0 to 1.60.0 - [Release notes](https://github.com/googleapis/java-genai/releases) - [Changelog](https://github.com/googleapis/java-genai/blob/main/CHANGELOG.md) - [Commits](googleapis/java-genai@v1.58.0...v1.60.0) --- updated-dependencies: - dependency-name: gradle-wrapper dependency-version: 9.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies - dependency-name: com.google.genai:google-genai dependency-version: 1.60.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
…/github-actions-02325a8da5 chore(deps): bump the github-actions group with 2 updates
…dependencies-4659e02046 chore(deps): bump the gradle-dependencies group with 2 updates
Contributor
Author
|
Drafted AI Errors arise after extended periods of time? Results: Incapable of doing repair work at this time due to many at-home items occuring, including my Aunt's new baby! Since I will be assisting with this child as she is a single mother, I have to relay my time to items of immediate concern, this includes my own physical health and similar items. You may leave comments and or reviews on problematic items for me to see, I will review and correct any where possible as soon as I am available. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✨ New Features
Multi-language romanization (
MultiLangRomanizer)isThai(),isArabic(),isGreek(),isHebrew(),isVietnamese()— enables automatic language identification for AI translation promptsromanizeVietnamese(): NFKD-decomposes and strips diacritics to plain ASCII Latin (e.g., "Việt Nam" → "Viet Nam")LyricsRepositoryImplfor all songs with Cyrillic textAiStateHolder.detectLyricsLanguage()identifies the source language before sending translation requests, prefixing prompts with detected language for better AI resultsNew app languages
values-ja/) — 10 string files across all categoriesvalues-vi/) and Traditional Chinese (values-zh-rTW/): Complete translation resource setslocales_config.xmlnow registers all 14 supported locales for Android 13+ language pickerLYRICS settings category
🐛 Bug Fixes
Lint errors (21 resolved)
MissingDefaultResourcevalues/plurals.xmlwith English defaults for all Arabic-only plural namesNewApiBlurEffectCachewith@RequiresApi(31); guardedForegroundServiceStartNotAllowedExceptionwith SDK checkWrongConstanttakePersistableUriPermissionflagsNonObservableLocaleLocale.getDefault()in composable functionsMissingIntentFilterForMediaSearchMEDIA_PLAY_FROM_SEARCHintent-filter to MainActivity for Android Auto voice searchLyrics loading priority
LyricsStateHolder: local files → embedded metadata → stored database lyrics (was incorrectly prioritizing stored lyrics over local sources)AI max tokens
resetLyricsSearchState()call when opening the lyrics sheet🔧 CI & Build
--no-build-cacheto all Gradle build steps in CI workflows for reproducible buildsmaxHeapSizefromapp/build.gradle.ktsgradle/libs.versions.toml🛡️ Security & Utility
ServerUrlUtils.kt: Server URL validation utility to prevent SSRF/malformed URLs in Jellyfin, Navidrome, and GDrive configurationsapp/lint.xml: Lint baseline configuration to manage known issues📦 New Files