feat(profiles): highlight current extension step

This commit is contained in:
wonfen
2026-09-22 20:44:59 +08:00
parent 758300ac34
commit 22e3f1ac8a
15 changed files with 41 additions and 17 deletions
+1 -1
View File
@@ -27,7 +27,7 @@
<details>
<summary><strong> 🚀 优化改进 </strong></summary>
- 优化扩展覆写配置和脚本编辑窗口,分别提示作用范围、执行顺序及应用设置优先级
- 优化扩展覆写配置和脚本编辑窗口,提示作用范围、执行顺序及应用设置优先级,并高亮当前步骤
- 优化 DNS 覆写开关:按订阅独立记忆,自动关闭仅影响当前订阅,并提示作用范围
- 优化系统服务兼容性检查:升级后服务版本或协议不兼容时,提示重新安装
- 优化预构建资源,补充 ASN 数据库文件
+27 -3
View File
@@ -1,5 +1,5 @@
import { Alert, Typography } from '@mui/material'
import { useTranslation } from 'react-i18next'
import { Alert, Box, Typography } from '@mui/material'
import { Trans, useTranslation } from 'react-i18next'
const stageHints = {
globalMerge: 'profiles.modals.editor.enhance.globalMerge',
@@ -14,12 +14,36 @@ interface Props {
export const EnhanceHint = ({ stage }: Props) => {
const { t } = useTranslation()
const orderComponents = Object.fromEntries(
Object.keys(stageHints).map((key) => [
key,
<Box
key={key}
component={key === stage ? 'strong' : 'span'}
sx={
key === stage
? {
fontWeight: 'bold',
color: 'primary.contrastText',
bgcolor: 'primary.main',
borderRadius: 0.5,
px: 0.5,
boxDecorationBreak: 'clone',
}
: undefined
}
/>,
]),
)
return (
<Alert severity="info" sx={{ mb: 1.5, flexShrink: 0 }}>
<Typography variant="body2">{t(stageHints[stage])}</Typography>
<Typography variant="body2" sx={{ mt: 0.5 }}>
{t('profiles.modals.editor.enhance.order')}
<Trans
defaults={t('profiles.modals.editor.enhance.order')}
components={orderComponents}
/>
</Typography>
<Typography variant="body2" sx={{ mt: 0.5 }}>
{t('profiles.modals.editor.enhance.settingsPriority')}
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "يُطبّق على جميع الملفات باستخدام نتيجة دمج الإعدادات العامة. يمكن لإعدادات الملف وسكربت الملف تعديل النتيجة لاحقًا.",
"profileMerge": "يُطبّق على هذا الملف فقط بعد الإعدادات العامة والسكربت العام. يمكن لسكربت الملف تعديل النتيجة لاحقًا.",
"profileScript": "يُطبّق على هذا الملف فقط باستخدام نتيجة دمج إعداداته. هذه آخر خطوة للإضافات قبل إعادة تطبيق إعدادات التطبيق.",
"order": "الترتيب: الملف الأصلي ← إعدادات التطبيق ← إعدادات الإضافة العامة ← سكربت الإضافة العام ← إعدادات إضافة الملف ← سكربت إضافة الملف ← إعادة تطبيق إعدادات التطبيق",
"order": "الترتيب: الملف الأصلي ← إعدادات التطبيق ← <globalMerge>إعدادات الإضافة العامة</globalMerge> ← <globalScript>سكربت الإضافة العام</globalScript> ← <profileMerge>إعدادات إضافة الملف</profileMerge> ← <profileScript>سكربت إضافة الملف</profileScript> ← إعادة تطبيق إعدادات التطبيق",
"settingsPriority": "ملاحظة: الحقول التي تديرها إعدادات التطبيق تستخدم دائمًا قيم تلك الإعدادات في التكوين النهائي. تعديل هذه الحقول في الإضافات لا يؤثر على النتيجة النهائية."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Gilt für alle Profile und verwendet das Ergebnis der globalen Konfiguration. Die Profilkonfiguration und das Profilskript können das Ergebnis noch ändern.",
"profileMerge": "Gilt nur für dieses Profil, nach der globalen Konfiguration und dem globalen Skript. Das Profilskript kann das Ergebnis noch ändern.",
"profileScript": "Gilt nur für dieses Profil und verwendet das Ergebnis der Profilkonfiguration. Dies ist der letzte Erweiterungsschritt vor dem erneuten Anwenden der App-Einstellungen.",
"order": "Reihenfolge: Originalprofil → App-Einstellungen → Globale Erweiterungskonfiguration → Globales Erweiterungsskript → Profilerweiterungskonfiguration → Profilerweiterungsskript → App-Einstellungen erneut anwenden",
"order": "Reihenfolge: Originalprofil → App-Einstellungen → <globalMerge>Globale Erweiterungskonfiguration</globalMerge> → <globalScript>Globales Erweiterungsskript</globalScript> → <profileMerge>Profilerweiterungskonfiguration</profileMerge> → <profileScript>Profilerweiterungsskript</profileScript> → App-Einstellungen erneut anwenden",
"settingsPriority": "Hinweis: Von den App-Einstellungen verwaltete Felder übernehmen in der endgültigen Konfiguration immer deren Werte. Änderungen dieser Felder in Erweiterungen haben keine Wirkung."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Applies to all profiles, using the result of the global config merge. The profile config and profile script can still change the result.",
"profileMerge": "Applies only to this profile, after the global config and global script. The profile script can still change the result.",
"profileScript": "Applies only to this profile, using the result of the profile config merge. This is the last extension step before app settings are reapplied.",
"order": "Order: Original profile → App settings → Global extend config → Global extend script → Profile extend config → Profile extend script → App settings reapplied",
"order": "Order: Original profile → App settings → <globalMerge>Global extend config</globalMerge> → <globalScript>Global extend script</globalScript> → <profileMerge>Profile extend config</profileMerge> → <profileScript>Profile extend script</profileScript> → App settings reapplied",
"settingsPriority": "Note: Fields managed by app settings always use those settings in the final config. Changing these fields in extensions has no effect."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Se aplica a todos los perfiles sobre el resultado de combinar la configuración global. La configuración y el script del perfil aún pueden modificar el resultado.",
"profileMerge": "Se aplica solo a este perfil, después de la configuración y el script globales. El script del perfil aún puede modificar el resultado.",
"profileScript": "Se aplica solo a este perfil sobre el resultado de combinar su configuración. Es el último paso de extensión antes de volver a aplicar los ajustes de la aplicación.",
"order": "Orden: Perfil original → Ajustes de la aplicación → Configuración de extensión global → Script de extensión global → Configuración de extensión del perfil → Script de extensión del perfil → Reaplicar ajustes de la aplicación",
"order": "Orden: Perfil original → Ajustes de la aplicación → <globalMerge>Configuración de extensión global</globalMerge> → <globalScript>Script de extensión global</globalScript> → <profileMerge>Configuración de extensión del perfil</profileMerge> → <profileScript>Script de extensión del perfil</profileScript> → Reaplicar ajustes de la aplicación",
"settingsPriority": "Nota: Los campos gestionados por los ajustes de la aplicación siempre conservan esos valores en la configuración final. Modificarlos en las extensiones no tiene efecto."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "با استفاده از نتیجهٔ ادغام پیکربندی سراسری روی همهٔ پروفایل‌ها اعمال می‌شود. پیکربندی و اسکریپت پروفایل همچنان می‌توانند نتیجه را تغییر دهند.",
"profileMerge": "پس از پیکربندی و اسکریپت سراسری فقط روی این پروفایل اعمال می‌شود. اسکریپت پروفایل همچنان می‌تواند نتیجه را تغییر دهد.",
"profileScript": "با استفاده از نتیجهٔ ادغام پیکربندی پروفایل فقط روی این پروفایل اعمال می‌شود. این آخرین مرحلهٔ افزونه پیش از اعمال مجدد تنظیمات برنامه است.",
"order": "ترتیب: پروفایل اصلی ← تنظیمات برنامه ← پیکربندی افزونهٔ سراسری ← اسکریپت افزونهٔ سراسری ← پیکربندی افزونهٔ پروفایل ← اسکریپت افزونهٔ پروفایل ← اعمال مجدد تنظیمات برنامه",
"order": "ترتیب: پروفایل اصلی ← تنظیمات برنامه ← <globalMerge>پیکربندی افزونهٔ سراسری</globalMerge> ← <globalScript>اسکریپت افزونهٔ سراسری</globalScript> ← <profileMerge>پیکربندی افزونهٔ پروفایل</profileMerge> ← <profileScript>اسکریپت افزونهٔ پروفایل</profileScript> ← اعمال مجدد تنظیمات برنامه",
"settingsPriority": "توجه: فیلدهایی که تنظیمات برنامه مدیریت می‌کند، در پیکربندی نهایی همیشه از مقادیر همان تنظیمات استفاده می‌کنند. تغییر این فیلدها در افزونه‌ها اثری بر پیکربندی نهایی ندارد."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Berlaku untuk semua profil, menggunakan hasil penggabungan konfigurasi global. Konfigurasi profil dan skrip profil masih dapat mengubah hasilnya.",
"profileMerge": "Berlaku hanya untuk profil ini, setelah konfigurasi global dan skrip global. Skrip profil masih dapat mengubah hasilnya.",
"profileScript": "Berlaku hanya untuk profil ini, menggunakan hasil penggabungan konfigurasi profil. Ini adalah langkah ekstensi terakhir sebelum pengaturan aplikasi diterapkan kembali.",
"order": "Urutan: Profil asli → Pengaturan aplikasi → Konfigurasi ekstensi global → Skrip ekstensi global → Konfigurasi ekstensi profil → Skrip ekstensi profil → Penerapan ulang pengaturan aplikasi",
"order": "Urutan: Profil asli → Pengaturan aplikasi → <globalMerge>Konfigurasi ekstensi global</globalMerge> → <globalScript>Skrip ekstensi global</globalScript> → <profileMerge>Konfigurasi ekstensi profil</profileMerge> → <profileScript>Skrip ekstensi profil</profileScript> → Penerapan ulang pengaturan aplikasi",
"settingsPriority": "Catatan: Bidang yang dikelola oleh pengaturan aplikasi selalu menggunakan nilai pengaturan tersebut dalam konfigurasi akhir. Mengubah bidang ini melalui ekstensi tidak berpengaruh."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "すべてのプロファイルに適用され、グローバル拡張設定のマージ結果を受け取ります。後続のプロファイル拡張設定・スクリプトで結果を変更できます。",
"profileMerge": "このプロファイルのみに適用され、グローバル拡張設定・スクリプトの後にマージされます。後続のプロファイルスクリプトで結果を変更できます。",
"profileScript": "このプロファイルのみに適用され、プロファイル拡張設定のマージ結果を受け取ります。アプリ設定が再適用される前の最後の拡張ステップです。",
"order": "実行順序:元のプロファイル → アプリ設定 → グローバル拡張設定 → グローバル拡張スクリプト → プロファイル拡張設定 → プロファイル拡張スクリプト → アプリ設定の再適用",
"order": "実行順序:元のプロファイル → アプリ設定 → <globalMerge>グローバル拡張設定</globalMerge> → <globalScript>グローバル拡張スクリプト</globalScript> → <profileMerge>プロファイル拡張設定</profileMerge> → <profileScript>プロファイル拡張スクリプト</profileScript> → アプリ設定の再適用",
"settingsPriority": "注意:アプリ設定が管理するフィールドは、最終的にアプリ設定の値が優先されます。拡張設定やスクリプトでこれらのフィールドを変更しても反映されません。"
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "모든 프로필에 적용되며 전역 확장 설정이 병합된 결과를 받습니다. 이후의 프로필 확장 설정 및 스크립트가 결과를 변경할 수 있습니다.",
"profileMerge": "이 프로필에만 적용되며 전역 확장 설정 및 스크립트 이후에 병합됩니다. 이후의 프로필 스크립트가 결과를 변경할 수 있습니다.",
"profileScript": "이 프로필에만 적용되며 프로필 확장 설정이 병합된 결과를 받습니다. 앱 설정이 다시 적용되기 전의 마지막 확장 단계입니다.",
"order": "실행 순서: 원본 프로필 → 앱 설정 → 전역 확장 설정 → 전역 확장 스크립트 → 프로필 확장 설정 → 프로필 확장 스크립트 → 앱 설정 재적용",
"order": "실행 순서: 원본 프로필 → 앱 설정 → <globalMerge>전역 확장 설정</globalMerge> → <globalScript>전역 확장 스크립트</globalScript> → <profileMerge>프로필 확장 설정</profileMerge> → <profileScript>프로필 확장 스크립트</profileScript> → 앱 설정 재적용",
"settingsPriority": "참고: 앱 설정이 관리하는 필드는 최종 구성에서 항상 앱 설정의 값을 사용합니다. 확장 설정이나 스크립트에서 이 필드를 변경해도 반영되지 않습니다."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Применяется ко всем профилям после объединения с глобальной конфигурацией. Конфигурация и скрипт профиля ещё могут изменить результат.",
"profileMerge": "Применяется только к этому профилю после глобальной конфигурации и глобального скрипта. Скрипт профиля ещё может изменить результат.",
"profileScript": "Применяется только к этому профилю после объединения с его конфигурацией. Это последний шаг расширения перед повторным применением настроек приложения.",
"order": "Порядок: Исходный профиль → Настройки приложения → Глобальная конфигурация расширения → Глобальный скрипт расширения → Конфигурация расширения профиля → Скрипт расширения профиля → Повторное применение настроек приложения",
"order": "Порядок: Исходный профиль → Настройки приложения → <globalMerge>Глобальная конфигурация расширения</globalMerge> → <globalScript>Глобальный скрипт расширения</globalScript> → <profileMerge>Конфигурация расширения профиля</profileMerge> → <profileScript>Скрипт расширения профиля</profileScript> → Повторное применение настроек приложения",
"settingsPriority": "Примечание: Поля, управляемые настройками приложения, в итоговой конфигурации всегда используют значения этих настроек. Изменения таких полей в расширениях не действуют."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Genel yapılandırmanın birleştirilmiş sonucunu kullanarak tüm profillere uygulanır. Profil yapılandırması ve profil betiği sonucu hâlâ değiştirebilir.",
"profileMerge": "Genel yapılandırma ve genel betikten sonra yalnızca bu profile uygulanır. Profil betiği sonucu hâlâ değiştirebilir.",
"profileScript": "Profil yapılandırmasının birleştirilmiş sonucunu kullanarak yalnızca bu profile uygulanır. Uygulama ayarları yeniden uygulanmadan önceki son genişletme adımıdır.",
"order": "Sıra: Özgün profil → Uygulama ayarları → Genel genişletme yapılandırması → Genel genişletme betiği → Profil genişletme yapılandırması → Profil genişletme betiği → Uygulama ayarlarının yeniden uygulanması",
"order": "Sıra: Özgün profil → Uygulama ayarları → <globalMerge>Genel genişletme yapılandırması</globalMerge> → <globalScript>Genel genişletme betiği</globalScript> → <profileMerge>Profil genişletme yapılandırması</profileMerge> → <profileScript>Profil genişletme betiği</profileScript> → Uygulama ayarlarının yeniden uygulanması",
"settingsPriority": "Not: Uygulama ayarları tarafından yönetilen alanlar, son yapılandırmada her zaman bu ayarların değerlerini kullanır. Bu alanları genişletmelerde değiştirmenin etkisi yoktur."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "Глобаль конфигурацияне берләштерү нәтиҗәсен кулланып, барлык профильләргә кулланыла. Профиль конфигурациясе һәм профиль скрипты нәтиҗәне әле үзгәртә ала.",
"profileMerge": "Глобаль конфигурация һәм глобаль скрипттан соң шушы профильгә генә кулланыла. Профиль скрипты нәтиҗәне әле үзгәртә ала.",
"profileScript": "Профиль конфигурациясен берләштерү нәтиҗәсен кулланып, шушы профильгә генә кулланыла. Бу — кушымта көйләүләрен яңадан куллану алдыннан соңгы киңәйтү адымы.",
"order": "Тәртип: Башлангыч профиль → Кушымта көйләүләре → Глобаль киңәйтү конфигурациясе → Глобаль киңәйтү скрипты → Профиль киңәйтү конфигурациясе → Профиль киңәйтү скрипты → Кушымта көйләүләрен яңадан куллану",
"order": "Тәртип: Башлангыч профиль → Кушымта көйләүләре → <globalMerge>Глобаль киңәйтү конфигурациясе</globalMerge> → <globalScript>Глобаль киңәйтү скрипты</globalScript> → <profileMerge>Профиль киңәйтү конфигурациясе</profileMerge> → <profileScript>Профиль киңәйтү скрипты</profileScript> → Кушымта көйләүләрен яңадан куллану",
"settingsPriority": "Искәрмә: Кушымта көйләүләре идарә иткән кырлар соңгы конфигурациядә һәрвакыт шул көйләүләрнең кыйммәтләрен куллана. Бу кырларны киңәйтүләрдә үзгәртү тәэсир итми."
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "对所有订阅生效,接收全局扩展配置合并后的结果;后续的订阅扩展配置和订阅脚本仍可修改结果。",
"profileMerge": "仅对当前订阅生效,在全局扩展配置和全局脚本之后合并;后续的订阅脚本仍可修改结果。",
"profileScript": "仅对当前订阅生效,接收订阅扩展配置合并后的结果,是应用设置回写前的最后一个扩展步骤。",
"order": "执行顺序:订阅原文 → 应用设置 → 全局扩展配置 → 全局扩展脚本 → 订阅扩展配置 → 订阅扩展脚本 → 应用设置回写",
"order": "执行顺序:订阅原文 → 应用设置 → <globalMerge>全局扩展配置</globalMerge> → <globalScript>全局扩展脚本</globalScript> → <profileMerge>订阅扩展配置</profileMerge> → <profileScript>订阅扩展脚本</profileScript> → 应用设置回写",
"settingsPriority": "注意:由应用设置接管的字段最终以应用设置为准,在扩展配置或脚本中修改这些字段不会生效。"
}
},
+1 -1
View File
@@ -203,7 +203,7 @@
"globalScript": "對所有訂閱生效,接收全域擴充設定合併後的結果;後續的訂閱擴充設定和訂閱腳本仍可修改結果。",
"profileMerge": "僅對目前訂閱生效,在全域擴充設定和全域腳本之後合併;後續的訂閱腳本仍可修改結果。",
"profileScript": "僅對目前訂閱生效,接收訂閱擴充設定合併後的結果,是應用程式設定回寫前的最後一個擴充步驟。",
"order": "執行順序:訂閱原文 → 應用程式設定 → 全域擴充設定 → 全域擴充腳本 → 訂閱擴充設定 → 訂閱擴充腳本 → 應用程式設定回寫",
"order": "執行順序:訂閱原文 → 應用程式設定 → <globalMerge>全域擴充設定</globalMerge> → <globalScript>全域擴充腳本</globalScript> → <profileMerge>訂閱擴充設定</profileMerge> → <profileScript>訂閱擴充腳本</profileScript> → 應用程式設定回寫",
"settingsPriority": "注意:由應用程式設定接管的欄位最終以應用程式設定為準,在擴充設定或腳本中修改這些欄位不會生效。"
}
},