From ecddd1a7143401c4edacc18e5fe84c4db35bda06 Mon Sep 17 00:00:00 2001 From: Yundi339 Date: Fri, 28 Aug 2026 01:05:54 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fix(settings):=20=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E9=BA=A6=E5=85=8B=E9=A3=8E=E7=8B=AC=E7=AB=8B=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/limelight/preferences/StreamSettings.kt | 1 + app/src/main/res/xml/preferences.xml | 5 +++++ .../limelight/preferences/SettingsResourceHygieneTest.kt | 7 +++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.kt b/app/src/main/java/com/limelight/preferences/StreamSettings.kt index 3d07efd11f..313c20b546 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.kt +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.kt @@ -161,6 +161,7 @@ class StreamSettings : AppCompatActivity() { "category_screen_position" -> R.drawable.phc_video_camera "category_display_behavior" -> R.drawable.phc_perf_resolution "category_audio_settings" -> R.drawable.phc_audio + "category_microphone_settings" -> R.drawable.ic_mic_gm "category_gamepad_settings" -> R.drawable.phc_gamepad "category_input_settings" -> R.drawable.phc_keyboard "category_onscreen_controls" -> R.drawable.phc_game_controller diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 657afb8f8d..5c7e198dd4 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -597,6 +597,11 @@ android:entries="@array/audio_vibration_scene_names" android:entryValues="@array/audio_vibration_scene_values" android:defaultValue="0" /> + + assertTrue( - "$preferenceKey was not moved under $categoryKey", + "$preferenceKey is missing from $categoryKey", preferenceKey in actualKeys, ) } From b8bf7c3701c5a2a124fbd0f61625b2d8ddca577c Mon Sep 17 00:00:00 2001 From: Yundi339 Date: Fri, 28 Aug 2026 01:11:44 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix(settings):=20=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E4=BC=98=E5=8C=96=E6=B8=B8=E6=88=8F=E6=96=87?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3e1fac971a..b4ee7cdcb6 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -488,7 +488,7 @@ 自动恢复串流 当从后台切回Moonlight时,自动恢复串流会话。 主机 - 让游戏设置匹配串流规格 + 自动优化游戏 允许兼容的主机软件根据请求的串流分辨率和质量调整受支持游戏;更改发生在主机上。 同时在主机播放声音 在主机和本设备上同时输出串流音频。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 1c0b82ccb7..3489cd17cd 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -276,7 +276,7 @@ 使用小封面 使用小圖示以在螢幕上顯示更多應用程式 主機 - 讓遊戲設定符合串流規格 + 自動最佳化遊戲 允許相容的主機軟體依照所請求的串流解析度與品質調整支援的遊戲;變更發生在主機上。 在電腦上播放音訊 在電腦和本裝置同時輸出音訊 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2bded2ad15..66bf52eed5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -630,7 +630,7 @@ Automatically resume the stream when returning to Moonlight from the background Host - Match game settings to the stream + Optimize game settings Allow compatible host software to adjust supported games for the requested stream resolution and quality. Changes are made on the host. Play audio on PC Play audio from the computer and this device From fd44f02c32dbb413e8bcc1ad49862f09b735c91d Mon Sep 17 00:00:00 2001 From: Yundi339 Date: Fri, 28 Aug 2026 01:13:29 +0800 Subject: [PATCH 3/8] =?UTF-8?q?fix(settings):=20=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E5=8E=9F=E6=9C=89=20SOPS=20=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b4ee7cdcb6..13f8f3b065 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -488,7 +488,7 @@ 自动恢复串流 当从后台切回Moonlight时,自动恢复串流会话。 主机 - 自动优化游戏 + 自动优化主机设置 允许兼容的主机软件根据请求的串流分辨率和质量调整受支持游戏;更改发生在主机上。 同时在主机播放声音 在主机和本设备上同时输出串流音频。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 3489cd17cd..f1463bdc58 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -276,7 +276,7 @@ 使用小封面 使用小圖示以在螢幕上顯示更多應用程式 主機 - 自動最佳化遊戲 + 最佳化遊戲設定 允許相容的主機軟體依照所請求的串流解析度與品質調整支援的遊戲;變更發生在主機上。 在電腦上播放音訊 在電腦和本裝置同時輸出音訊 From 08d921f6f4547ed14b16847cfaaf11f829a3e718 Mon Sep 17 00:00:00 2001 From: Yundi339 Date: Fri, 28 Aug 2026 01:20:42 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix(settings):=20=E5=B0=86=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E5=92=8C=20HDR=20=E5=BD=92=E5=85=A5=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../limelight/preferences/StreamSettings.kt | 5 +- app/src/main/res/xml/preferences.xml | 104 +++++++++--------- .../SettingsResourceHygieneTest.kt | 11 ++ 3 files changed, 62 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.kt b/app/src/main/java/com/limelight/preferences/StreamSettings.kt index 313c20b546..7b560dfada 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.kt +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.kt @@ -158,7 +158,6 @@ class StreamSettings : AppCompatActivity() { private fun getIconForCategory(key: String): Int { return when (key) { "category_basic_settings" -> R.drawable.phc_settings - "category_screen_position" -> R.drawable.phc_video_camera "category_display_behavior" -> R.drawable.phc_perf_resolution "category_audio_settings" -> R.drawable.phc_audio "category_microphone_settings" -> R.drawable.ic_mic_gm @@ -3547,7 +3546,7 @@ class StreamSettings : AppCompatActivity() { // Remove HDR preference for devices below Nougat if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { LimeLog.info("Excluding HDR toggle based on OS") - val category = findPreference("category_screen_position")!! + val category = findPreference("category_advanced_features")!! // 必须先移除依赖项,再移除被依赖的项,否则会崩溃 val hdrModePref = findPreference("list_hdr_mode") if (hdrModePref != null) { @@ -3581,7 +3580,7 @@ class StreamSettings : AppCompatActivity() { val foundHlg = hdrTypeSupport.hasHlg val foundDolbyVision = hdrTypeSupport.hasDolbyVision - val category = findPreference("category_screen_position")!! + val category = findPreference("category_advanced_features")!! val hdrPref = findPreference("checkbox_enable_hdr") val hdrHighBrightnessPref = findPreference("checkbox_enable_hdr_high_brightness") val hdrBrightnessOverridePref = findPreference("checkbox_hdr_brightness_override") diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 5c7e198dd4..b03da0f2f8 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -111,11 +111,60 @@ android:title="@string/title_force_mtk_max_operating_rate" android:summary="@string/summary_force_mtk_max_operating_rate" android:defaultValue="false" /> + + + + + + + @@ -262,61 +311,6 @@ android:summary="@string/summary_enable_stun" android:defaultValue="false"/> - - - - - - - - - Date: Fri, 28 Aug 2026 01:26:07 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix(settings):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BE=A7=E8=BE=B9=E6=A0=8F=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../limelight/preferences/StreamSettings.kt | 5 +- app/src/main/res/xml/preferences.xml | 121 ++++++++++-------- .../SettingsResourceHygieneTest.kt | 19 ++- 3 files changed, 86 insertions(+), 59 deletions(-) diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.kt b/app/src/main/java/com/limelight/preferences/StreamSettings.kt index 7b560dfada..313c20b546 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.kt +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.kt @@ -158,6 +158,7 @@ class StreamSettings : AppCompatActivity() { private fun getIconForCategory(key: String): Int { return when (key) { "category_basic_settings" -> R.drawable.phc_settings + "category_screen_position" -> R.drawable.phc_video_camera "category_display_behavior" -> R.drawable.phc_perf_resolution "category_audio_settings" -> R.drawable.phc_audio "category_microphone_settings" -> R.drawable.ic_mic_gm @@ -3546,7 +3547,7 @@ class StreamSettings : AppCompatActivity() { // Remove HDR preference for devices below Nougat if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { LimeLog.info("Excluding HDR toggle based on OS") - val category = findPreference("category_advanced_features")!! + val category = findPreference("category_screen_position")!! // 必须先移除依赖项,再移除被依赖的项,否则会崩溃 val hdrModePref = findPreference("list_hdr_mode") if (hdrModePref != null) { @@ -3580,7 +3581,7 @@ class StreamSettings : AppCompatActivity() { val foundHlg = hdrTypeSupport.hasHlg val foundDolbyVision = hdrTypeSupport.hasDolbyVision - val category = findPreference("category_advanced_features")!! + val category = findPreference("category_screen_position")!! val hdrPref = findPreference("checkbox_enable_hdr") val hdrHighBrightnessPref = findPreference("checkbox_enable_hdr_high_brightness") val hdrBrightnessOverridePref = findPreference("checkbox_hdr_brightness_override") diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b03da0f2f8..9619c196cf 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -7,6 +7,7 @@ - - - - - - - - - + + + + + + + + + + + assertEquals( + "Unexpected sidebar order for $categoryKey", + order.toString(), + categories[categoryKey]?.getAttributeNS(ANDROID_NAMESPACE, "order"), + ) + } + expectedKeysByCategory.forEach { (categoryKey, expectedKeys) -> val category = categories[categoryKey] assertNotNull("Missing target category: $categoryKey", category) From 43cc10a46669883522acc43351181ae26bf39bca Mon Sep 17 00:00:00 2001 From: Yundi339 Date: Fri, 28 Aug 2026 08:36:23 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix(settings):=20=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E5=AE=8C=E6=95=B4=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/xml/preferences.xml | 9 +++++++++ .../limelight/preferences/SettingsResourceHygieneTest.kt | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9619c196cf..2c11da371c 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -388,6 +388,7 @@