Feature/localization ja#2396
Conversation
Updated Italian strings in changelogs for improved clarity and consistency.
[ci skip]
Renamed the central AI orchestration class from AiOrchestrator to AiHandler and updated all references across the codebase.
…s all providers - Create UnifiedModelFilter utility that filters out embedding, image, TTS, speech, moderation, vision-only, and other non-chat models - Update GeminiAiClient to use UnifiedModelFilter instead of hardcoded markers - Update GenericOpenAiClient to use UnifiedModelFilter instead of inline filter
These providers all use OpenAI-compatible APIs. Switching from dedicated client classes to GenericOpenAiClient eliminates duplicate code. The old class files are kept on disk but no longer referenced.
Add CUSTOM provider with hasConfigurableUrl=true and requiresApiKey=true for user-configured self-hosted/custom API endpoints.
CUSTOM provider uses GenericOpenAiClient with an empty default URL (user configures it via settings). createClientWithUrl allows creating a client with a custom base URL for configurable-URL providers.
…ncesRepository Add getBaseUrl/setBaseUrl generic accessors for configurable-URL providers. Add customApiKey, customModel, customSystemPrompt, customBaseUrl convenience flows for the CUSTOM provider.
Ollama is a cloud API-based provider (requires API key, fixed URL), separate from the CUSTOM provider which allows custom endpoints.
A new composable that opens a ModalBottomSheet with a searchable LazyColumn of AI models. Includes search filtering, model count display, and visual selection state.
… and base URL config field
…(unified into GenericOpenAiClient)
…y to AiClient interface
|
了解しました。承認を待ちます。 Understood. I'll wait for approval. Thank you. |
- Add PAUSE_ON_VOLUME_ZERO DataStore key + flow + setter to UserPreferencesRepository - Collect pref in MusicService and pause playback when volume hits 0 - ReplayGain programmatic volume adjustments are unaffected - Add Python script to inject localized strings into all 12 locale files - Add ContentObserver on Settings.System.CONTENT_URI to detect hardware volume key changes and pause when media stream reaches 0 - Registers observer in onCreate, unregisters in onDestroy
- Add Volume subsection with SwitchSettingItem to SettingsCategoryScreen - Add pauseOnVolumeZero field to SettingsUiState - Add pauseOnVolumeZeroFlow to SettingsViewModel combine() block - Add setPauseOnVolumeZero() setter in SettingsViewModel - Inject settings_volume_section, settings_pause_on_volume_zero and _desc into strings_settings.xml for all 12 locales - Remove duplicate keys from strings.xml (AAPT2 duplicate resources fix) - Fix rogue spaces in Korean strings_settings.xml entries
Processing all songs in a single pass exhausted the 256 MB heap on devices with large Telegram channels (reproduced at 65k songs, PixelPlayerHQ#2172). Songs are now processed and flushed to Room in batches of 500, keeping peak memory bounded regardless of channel size. - Album songCounts accumulated across all chunks; every chunk re-upserts albums it touches so the final count is always correct - Deletion diff runs after all chunks using the complete synced ID set - Deletions batched in 500s to respect SQLite variable limits - Remove duplicate getAllArtistsListRaw() call (was called twice) Co-authored-by: Claude <claude@anthropic.com>
…er-issues Align artist parsing with conservative default delimiters
feat(playback): pause on volume zero + OOM fix for large Telegram channels
…st-song-count fix(playlists): prevent lost playlist edits from concurrent song removals (PixelPlayerHQ#2391)
feat(ai): massive architecture overhaul, new providers, and generation tuning
…strings Update French lyrics mode strings for consistency MERGE PixelPlayerHQ#2347 and PixelPlayerHQ#2352 FIRST
Update Strings to show beta 7.5
ui: fix layout jump when collapsing telegram channel topics and Added Telegram, GitHub buttons in About screen
|
thank you for your contributions for translating the app to your local language however, we have to keep this pr open for a while because we're still on beta, adding more and more things to the app and that makes translations half-baked. thank you. |
… glyphs NetEase library sync (PixelPlayerHQ#2431): - syncUnifiedLibrarySongsFromNetease() built SongEntity without sourceType, so rows defaulted to SourceType.LOCAL. NetEase tracks showed up in the local media library, the incremental-sync deletion diff was a no-op (getAllNeteaseSongIds filters source_type=2), and logout cleanup via clearAllNeteaseSongs deleted nothing. Now set sourceType = NETEASE and artistsJson, matching the SyncWorker path. - getSongUrl defaulted to "exhigh" with no lossless tier, so SVIP accounts were capped to lower quality. Default to "lossless" and fall back through exhigh/higher/standard so non-privileged accounts still resolve a URL. Lyrics card glyphs (PixelPlayerHQ#2427): - Extended Unicode glyphs (e.g. Icelandic æ ð þ) rendered as tofu because the lyrics text used the bundled Google Sans Rounded variable font, which drops those codepoints at runtime. Render lyrics with the platform default font (fontFamily = null), which has full Latin Extended coverage.
…source-and-lyrics-glyphs fix: NetEase source tagging + lossless quality, and lyrics-card extended Unicode glyphs
fix: Button color
fix(library): show home icon in folder breadcrumbs when at root level
|
Hello! I just seen this. I did this same thing in my own PR #2457, and was wondering if you'd like to review it? (I did not realize this PR was open, as I tend to track new items more than anything.) |
how could you not see this even though you mentioned the pr in your old pr, dude. |
I'm not quite sure what everyone's talking about, but since I want to incorporate the latest features, I'll follow the branch and make adjustments as needed! |
…ttings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Hello. I’m a PixelPlayer user from Japan.
I use this project on a daily basis, but since it currently only supports English-speaking regions, I wanted to display the interface in Japanese. I’ve completed the localization and am submitting a pull request.
I’ve been working as a software engineer with languages like C# and TypeScript since before AI became widespread, but lately I’ve been relying almost exclusively on Claude Code and other LLMs to interpret specifications. I also have some experience with Android apps. I reviewed the code based on the commit details. Then, I visually checked for any differences in meaning between the English and Japanese text during the localization process. I also ran tests to ensure that no changes other than the Japanese localization were made.
This is my first time submitting a pull request on GitHub, so I apologize if I’ve violated any rules or been rude in any way.
I hope this contribution from Japan proves useful.
System Requirements