♻️ Синхронизация Мода с обновлённым кодом версии 0.17.28/10.17.29/0.17.30(.smali/.xml/ .so).
Учтены упомянутые исправленные ошибки разработчика
1. Fix WireGuard crashes on close
2. Minor fixes for proxy chain, balancer, front proxy and landing proxy.
Fix XHTTP browser dialer crash.
3. Update Hysteria 2 and add minimum/maximum port hopping interval, BBR profile and "reno" congestion control.
Fix a potential issue that causes TUIC and Juicity stuck on close (by sing-quic).
Update uTLS to the latest commit to avoid outdated fingerprints and add FireFox 148 and Safari 26.3 fingerprints. You may need to disable X25519MLKEM768 for some REALITY profiles.
Update mieru
Как выполнялась интеграция/обновление кода(файлов):
# Анализ обновления Exclave 17.28 → 17.30 для `exclavemod`/`exclavetheme`
## Что сравнивалось
- Базовый эталон: `exclave1730` (как «чистая» ветка 17.30).
- Ваши моды: `exclavemod` и `exclavetheme`.
- Сравнение выполнено по списку файлов, который вы дали (strings + smali-эквиваленты Kotlin/Java).
## Ключевой вывод
Обновление нужно делать **не слепой заменой файлов**, а **селективным merge по блокам**, потому что в `exclavemod` уже есть ваши дополнительные функции (IP lookup, TCPing, авто-URL test, авто-имя по IP, авто-удаление и пр.), которые в «чистом» `exclave1730` отсутствуют.
## Что уже есть в `exclavemod` и нельзя терять
В `exclavemod/res/values/strings.xml` уже присутствуют строки под ваши функции:
- `ip_lookup_url`, `ip_lookup_url_summary`;
- `urltest_interval`, `urltest_tolerance`, `auto_url_test_on_update`;
- `connection_test_tcp_ping`, `connection_test_tcp_ping_unavailable`;
- `auto_name_by_ip`;
- `auto_delete_unavailable_on_check`, `auto_delete_unavailable_on_check_background`.
Это прямые признаки, что мод-функционал уже завязан на текущие smali-ветки и их структуру.
## Где видны изменения, связанные с заявленными фикcами 17.28/17.29/17.30
### 1) Proxy chain / balancer / front proxy / landing proxy
Задействованные файлы (smali-эквиваленты):
- `ui/profile/ChainSettingsActivity.smali`
- `ui/profile/BalancerSettingsActivity.smali`
- `fmt/internal/ChainBean.smali`
- `fmt/internal/BalancerBean.smali`
- `fmt/ConfigBuilderKt.smali`
В `exclavemod` уже есть дополнительная логика баланcера:
- поле `tolerance` в `BalancerBean`;
- `balancerTolerance` и обработка `autoDeleteUnavailableOnCheckBalancer` в `BalancerSettingsActivity`.
Это значит: при переносе правок из 17.30 нельзя перетирать эти участки.
### 2) Hysteria 2 (min/max hop interval, BBR profile, congestion control/reno)
В `exclave1730` в `ConfigBuilderKt.smali` есть ссылки на:
- `Hysteria2Bean.congestionControl`
- `Hysteria2Bean.bbrProfile`
- `Hysteria2Bean.hopIntervalMin`
- `Hysteria2Bean.hopIntervalMax`
Но в `exclavemod/res/values/strings.xml` базовые ключи типа `hysteria_bbr_profile` и `hysteria_hop_interval_min/max` отсутствуют.
Следствие: UI-часть и текущая мод-структура у вас уже расходится с эталонной 17.30; переносить нужно аккуратно, точечно.
### 3) TUIC/Juicity close-stuck + WireGuard close crash
Это изменения уровня lifecycle/close-path (служба/раннер/закрытие), т.е. зона:
- `bg/BaseService*.smali` (не только `BaseService.smali`, но и вложенные классы `BaseService$...`).
Важно: при переносе нельзя ограничиться только одним файлом `BaseService.smali`; иначе фикс может примениться частично.
## Что обновлять в `exclavemod` (рекомендация)
1. **Обновлять обязательно (селективно):**
- Блоки фиксов close/crash в `BaseService$...` (полный набор связанных smali по классу BaseService).
- Блоки фиксов цепочек/балансера в `ChainSettingsActivity`, `BalancerSettingsActivity`, `ChainBean`, `BalancerBean`, `ConfigBuilderKt`.
2. **Обновлять условно (после проверки совместимости):**
- Новые Hysteria2/TUIC параметры в UI/конфигах.
- Локализации `strings.xml` под новые ключи.
3. **Не трогать сейчас:**
- `library/core/*` (`go.mod`, `go.sum`, `main.go`) и бинарные `.so` — по вашему требованию.
## Что оставить без изменений ради сохранения ваших модов
Оставить ваши текущие участки/ключи (если при merge возникает конфликт):
- IP lookup (`ip_lookup_*`),
- Speed Test/TCPing (`connection_test_tcp_ping*`, связанные меню/пункты),
- авто-имя по IP (`auto_name_by_ip`),
- авто URL-test/авто-удаление (`auto_url_test*`, `auto_delete_unavailable_on_check*`),
- кастомные поведенческие ветки в `ConfigBuilderKt.smali`, связанные с вашей текущей политикой формирования конфига.
## Почему нельзя просто заменить все файлы 1-в-1 из 17.30
- Потеряются ваши мод-строки и связанная логика UI.
- Высокий риск поломать пользовательские функции, которых нет в оригинале 17.30.
- Для crash-fix по закрытию нужен консистентный перенос **набора связанных smali**, а не одиночных файлов.
## Применимость к `exclavetheme`
- Почти все файлы из вашего списка в `exclavetheme` совпадают с `exclavemod`.
- Поэтому стратегию merge можно повторить почти один-в-один.
- Проверить отдельно только те файлы, где у `exclavetheme` есть расхождение с `exclavemod` (минимум: `res/values/strings.xml`, `ChainBean.smali`).
Обновлённые файлы
app/src/main/res/values-zh-rTW/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/values-zh-rCN/strings.xml
app/src/main/res/values-tr/strings.xml
app/src/main/res/values-nb-rNO/strings.xml
app/src/main/res/values-ja/strings.xml
app/src/main/res/values-it/strings.xml
app/src/main/res/values-in/strings.xml
app/src/main/res/values-fr/strings.xml
app/src/main/res/values-fa/strings.xml
app/src/main/res/values-es/strings.xml
app/src/main/res/values-ar/strings.xml
app/src/main/java/io/nekohasekai/sagernet/ui/profile/ChainSettingsActivity.kt
app/src/main/java/io/nekohasekai/sagernet/ui/profile/BalancerSettingsActivity.kt
app/src/main/java/io/nekohasekai/sagernet/ui/GroupFragment.kt
app/src/main/java/io/nekohasekai/sagernet/fmt/internal/ChainBean.java
app/src/main/java/io/nekohasekai/sagernet/fmt/internal/BalancerBean.java
app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt
app/src/main/java/io/nekohasekai/sagernet/bg/BaseService.kt
library/core/main.go
library/core/go.sum
library/core/go.mod