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
Conversation
|
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
|
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. |
…th 7 updates Bumps the gradle-dependencies group with 7 updates in the / directory: | Package | From | To | | --- | --- | --- | | [gradle-wrapper](https://github.com/gradle/gradle) | `9.6.0` | `9.6.1` | | [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.59.2` | `2.60` | | [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.59.2` | `2.60` | | [io.ktor:ktor-server-core-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` | | [io.ktor:ktor-server-netty-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` | | [io.ktor:ktor-server-cio-jvm](https://github.com/ktorio/ktor) | `3.5.0` | `3.5.1` | | [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.59.2` | `2.60` | Updates `gradle-wrapper` from 9.6.0 to 9.6.1 - [Release notes](https://github.com/gradle/gradle/releases) - [Commits](gradle/gradle@v9.6.0...v9.6.1) Updates `com.google.dagger:hilt-android` from 2.59.2 to 2.60 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](google/dagger@dagger-2.59.2...dagger-2.60) Updates `com.google.dagger:hilt-android-compiler` from 2.59.2 to 2.60 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](google/dagger@dagger-2.59.2...dagger-2.60) Updates `com.google.dagger:hilt-android-compiler` from 2.59.2 to 2.60 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](google/dagger@dagger-2.59.2...dagger-2.60) Updates `io.ktor:ktor-server-core-jvm` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](ktorio/ktor@3.5.0...3.5.1) Updates `io.ktor:ktor-server-netty-jvm` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](ktorio/ktor@3.5.0...3.5.1) Updates `io.ktor:ktor-server-cio-jvm` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](ktorio/ktor@3.5.0...3.5.1) Updates `io.ktor:ktor-server-netty-jvm` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](ktorio/ktor@3.5.0...3.5.1) Updates `io.ktor:ktor-server-cio-jvm` from 3.5.0 to 3.5.1 - [Release notes](https://github.com/ktorio/ktor/releases) - [Changelog](https://github.com/ktorio/ktor/blob/main/CHANGELOG.md) - [Commits](ktorio/ktor@3.5.0...3.5.1) Updates `com.google.dagger.hilt.android` from 2.59.2 to 2.60 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](google/dagger@dagger-2.59.2...dagger-2.60) --- updated-dependencies: - dependency-name: gradle-wrapper dependency-version: 9.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: com.google.dagger:hilt-android dependency-version: '2.60' dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies - dependency-name: com.google.dagger:hilt-android-compiler dependency-version: '2.60' dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies - dependency-name: com.google.dagger:hilt-android-compiler dependency-version: '2.60' dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies - dependency-name: io.ktor:ktor-server-core-jvm dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: io.ktor:ktor-server-netty-jvm dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: io.ktor:ktor-server-cio-jvm dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: io.ktor:ktor-server-netty-jvm dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: io.ktor:ktor-server-cio-jvm dependency-version: 3.5.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: com.google.dagger.hilt.android dependency-version: '2.60' dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
|
Just fixed most to all AI errors in #2497, your changes should work now! |
…dependencies-0242c4ee8e chore(deps): bump the gradle-dependencies group across 1 directory with 7 updates
Shall I merge your PR into my fork and test or would you like another approach? Any suggestions welcome, thanks! :) |
|
yea i am still working on some final fixes so you can |
|
Doing it now! :)
|
|
hey btw @daedaevibin can you provide me with some logs and more info on the ai issues so i can check other stuff as well? |
Actually, those issues were noticed during normal usage after an extended period of time. About three days later it started working, but the entire prompt response from the ai was being output where the lyrics go, including formatting markers like |
|
Oh then it should already fixed in the xml conversion for the new ai response handeler and token limiter. I have created a new class type promt for the ai lyrics so using that should resolve most of the issued you can analyze my code and update your lyrics part with it it should reslove all issues. |
|
For the token system i have added a new Generation Parameters to combat the same issues for the other playlists where the responses was cut in half due to restraints |
Bumps the gradle-dependencies group with 6 updates: | Package | From | To | | --- | --- | --- | | [org.junit.platform:junit-platform-launcher](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` | | [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` | | [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` | | [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` | | [com.google.errorprone:error_prone_annotations](https://github.com/google/error-prone) | `2.36.0` | `2.50.0` | | [org.junit.jupiter:junit-jupiter-params](https://github.com/junit-team/junit-framework) | `6.1.0` | `6.1.1` | Updates `org.junit.platform:junit-platform-launcher` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.jupiter:junit-jupiter-api` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.vintage:junit-vintage-engine` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `com.google.errorprone:error_prone_annotations` from 2.36.0 to 2.50.0 - [Release notes](https://github.com/google/error-prone/releases) - [Commits](google/error-prone@v2.36.0...v2.50.0) Updates `org.junit.jupiter:junit-jupiter-params` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.jupiter:junit-jupiter-api` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) Updates `org.junit.vintage:junit-vintage-engine` from 6.1.0 to 6.1.1 - [Release notes](https://github.com/junit-team/junit-framework/releases) - [Commits](junit-team/junit-framework@r6.1.0...r6.1.1) --- updated-dependencies: - dependency-name: org.junit.platform:junit-platform-launcher dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.vintage:junit-vintage-engine dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: com.google.errorprone:error_prone_annotations dependency-version: 2.50.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: gradle-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-params dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies - dependency-name: org.junit.vintage:junit-vintage-engine dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: gradle-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
…dependencies-8e3801c0aa chore(deps): bump the gradle-dependencies group with 6 updates
✨ 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