Skip to content

Releases: saymer-alt/link-generators

v1.11.3 — понятное исключение серверов подписки

Choose a tag to compare

@saymer-alt saymer-alt released this 22 Oct 17:58
ceba3f3

В этом небольшом исправлении генератор яснее объясняет, какие серверы из подписки будут исключены. Патч подготовлен по результатам реального использования: пользователь отметил все серверы, кроме Германии, полагая, что галочки их разрешают, и получил противоположный результат.

Главное

  • В списке имён постоянно написано: галочка исключает сервер, не разрешает его. Кнопки названы «Исключить все показанные» и «Снять все галочки»; действие поиска сохранено.
  • Показаны разные источники исключений: галочки, ручной регулярный фильтр и их пересечение. Снятие галочек не очищает ручной фильтр.
  • Появляется предупреждение при исключении всех или не менее 90% известных имён.
  • Сводка preview различает количество полученных узлов и количество уникальных имён после фильтрации; больше нет вычитания уникальных имён из числа физических узлов.
  • В справке уточнено: отмеченное имя экранируется, но по текущей семантике regex ищется как подстрока. Поэтому совпадение может захватить и более длинное название. Проверка привязанных exact-match исключений выделена в #312.

Проверено

  • Browser regression: сценарий исключений, поиск, исключение всех, порог 90%, ручной фильтр и дублирующиеся имена.
  • Generator CI: статические, Chromium, Firefox/WebKit, проверка с Mihomo 1.19.31/1.19.32; результаты сверяются для окончательного release commit, а не ранее проверенного PR-коммита.
  • Проверка YAML parity: незатронутые конфигурации должны сохранить прежнюю семантику; web4core.runtime.js, HWID, proxy routing, DNS и TUN не менялись.

Совместимость и границы

  • Существующие конфигурации на роутерах не изменяются автоматически, требуется явная пересборка и импорт.
  • Фильтрация имён не изменена: это прежде всего исправление интерфейса, диагностических счётчиков и предупреждений.
  • Preview может быть частичным из-за формата подписки, CORS и различий с runtime Mihomo. Счётчики основаны на известных именах и не гарантируют фактическую доступность серверов.
  • Зелёная проверка YAML не гарантирует работу камер, UDP/P2P и конкретных внешних маршрутов.
  • Функции и архитектурные работы 1.12, отдельные HWID per-provider и прямое управление LAN-конфигом в релиз не включены.

PR #313 (main) · PR #311 (stable).

Тег v1.11.3 соответствует протестированному stable ceba3f37.

v1.11.2 — ручной GLOBAL и автоматические группы приоритетов

Choose a tag to compare

@saymer-alt saymer-alt released this 19 Oct 18:38
9bec25c

В версии 1.11.2 исправлена маршрутизация при включённом Tiered Failover в mode: rule.

Главное

Раньше генератор переписывал MATCH,GLOBAL в MATCH,🪜 TIERED-AUTO. В результате переключение GLOBAL в панели Mihomo не влияло на трафик, попавший в это последнее правило, хотя автоматическая Tiered-группа отображалась внутри GLOBAL.

Теперь правило остаётся MATCH,GLOBAL, а 🪜 TIERED-AUTO находится первым участником ручной группы GLOBAL:

proxy-groups:
  - name: GLOBAL
    type: select
    proxies:
      - "🪜 TIERED-AUTO"
      - REJECT
      # остальные уже имевшиеся группы/выходы, если они есть
rules:
  - MATCH,GLOBAL

Это схематичный фрагмент, не готовый конфиг и не перечень всех автоматически созданных участников.

Пользовательский сценарий

При выборе 🪜 TIERED-AUTO действует автоматическая политика приоритетов (выход из строя → резерв → возвращение). В панели Mihomo можно явно выбрать другой имеющийся участник GLOBAL или REJECT и затем вернуться к Tiered root. Новая версия не добавляет DIRECT в список ручных выходов без твоего решения.

Совместимость

  • При выключенном Tiered генератор выдаёт тот же YAML, что и версия 1.11.1 в сравниваемых сценариях.
  • С включённым Tiered меняется лишь окончание MATCH: прежнее MATCH,🪜 TIERED-AUTO заменяется на MATCH,GLOBAL. Доступность реального прокси на конкретном VPS от этого не гарантируется.
  • Существующие сохранённые YAML со старым MATCH,🪜 TIERED-AUTO не мигрируют сами собой: нужно пересобрать конфиг либо проверить и исправить маршрут вручную. Проверяйте GLOBAL.proxies и фактический выбор в контроллере.
  • DPR RULE-SET-маршруты, явно направленные в другие группы, продолжают использовать собственные селекторы; изменение MATCH не превращает GLOBAL в универсальный перехват всех правил.

Проверки

  • RED-before → GREEN-after для дефекта #279.
  • Браузерные тесты Builder/DPR/Tiered, Project Save/Load, Config Studio, Firefox/WebKit и регрессии изменения DNS/WG.
  • Реальные бинарники Mihomo 1.19.31 и 1.19.32 в отдельной синтетической loopback-лаборатории: ручное переключение GLOBAL, автоматический переход между эшелонами, возврат и REJECT.
  • Byte parity при Tiered OFF; при Tiered ON допускается исключительно согласованная дельта MATCH.

Границы доказательства: это контролируемые TCP/HTTP runtime-тесты, не полевое подтверждение UDP, MASQUE H3, DNS-leak-free и клиентского dataplane на реальном VPS/роутере. Серверные конфигурации и работающие устройства не менялись.

PR #295 (main) · PR #296 (stable) · issue #279.

Тег v1.11.2 соответствует протестированному stable 9bec25cb.

v1.11.1 — исправления интерфейса и импорта Mihomo

Choose a tag to compare

@saymer-alt saymer-alt released this 13 Oct 17:17
a2f3d9f

Патч улучшает контекстные подсказки, объясняет работу URL-подписок и упрощает импорт имён узлов из работающего Mihomo. Парсинг и генерируемые конфигурации сохраняют прежнее поведение.

Главное

  • Подсказки, включая динамические WG, остаются внутри viewport; учтён классический scrollbar и поведение Firefox.
  • Рядом с основным вводом объяснены proxy-ссылки, подписки и отдельные WG/AWG-файлы; доступен переход к настройке подписок без переключения значения.
  • Runtime importer предлагает готовые адреса и свой endpoint; API secret отправляется на нового получателя только после подтверждения.

Добавлено

  • Presets 192.168.1.1:9090, 192.168.0.1:9090, 127.0.0.1:9090 и «Свой адрес…» в существующем импортере GET /providers/proxies.

Исправлено

  • Обрезание tooltip у Allow LAN/TUN; ограничены реальные ширина и высота, длинный текст прокручивается, позиция обновляется при scroll/resize и после Firefox hover styles (PR #267).
  • Уточнено смешивание обычных proxy-ссылок и URL-подписок в обоих режимах: ON сохраняет динамические providers, OFF читает подписку по явному Build и встраивает её текущие узлы (PR #269).
  • При смене endpoint отменённый runtime-запрос больше не оставляет статус «Загрузка…» (PR #270).
  • Вместо пустого advanced select видно «Выберите system / mixed», включая восстановление старого проекта с gVisor. Выбор остаётся явным, настройки SOCKS-only/TUN/Per-Proxy не разблокируются (PR #272).

Безопасность

  • Runtime importer по-прежнему читает только GET /providers/proxies по кнопке; выбор/ввод адреса не запускает запросы или сканирование.
  • Новый получатель API secret требует подтверждения; адрес и secret остаются в памяти вкладки, не записываются в проект/localStorage и не передаются через fallback worker.
  • Успешный «Сбросить проект» очищает и скрытый custom-адрес, и подтверждение получателя secret. Старый адрес не возвращается; повторная отправка нового secret требует нового согласия. Cancel/ошибка Reset сохраняют сессию, успешный Reset отменяет запрос и отклоняет поздний ответ.
  • Выбираемый адрес runtime controller не меняет external-controller, bind/listen, WAN или настройки VPS в генерируемом YAML.

Проверено

  • Production Generator CI — 6/6, runtime provenance, GitHub Pages deployment.

  • Chromium, Firefox, WebKit: geometry/scrollbar/scroll/resize, mouse/keyboard, динамические подсказки, Sub Mode, runtime mocks/secret consent и Project roundtrip.

  • Полный Generator CI: node/browser, Owner Experience Gate, Config Studio/Save/Load/Reset/Reverse, security/privacy/stress, AWL/Tiered/DPR, runtime provenance, реальные Mihomo 1.19.31 и 1.19.32.

  • YAML byte parity со stable v1.11.0: 10/10 неизменённых сценариев. Exact candidate/production SHA, CI и Pages фиксируются в отчёте выпуска #273.

Совместимость и границы

  • POST-RELEASE FIELD / NOT RUN: native Firefox zoom 150/200/250/300% на компьютере Владимира ещё не проверялся. Владелец перенёс эту ручную приёмку на публичную версию после выпуска; автоматические headless/viewport тесты её не заменяют.
  • Полный RU/EN-переключатель и расширение TUN/MIPS в SOCKS-only оставлены для v1.12 и не входят в патч.
  • Статические графы и mihomo -t не доказывают настоящий маршрут, отсутствие DNS leaks или WG/AWG handshake. Реальные контроллеры, VPS и роутеры не изменялись.

Тег v1.11.1 соответствует протестированному stable a2f3d9fcc3feb82b45320f80e386b18b42ee0eba.

v1.11.0 — Config Studio 2.0 и проекты генератора

Choose a tag to compare

@saymer-alt saymer-alt released this 11 Oct 14:41
3ecfabf

Config Studio 2.0 объединяет анализ и безопасное редактирование Mihomo YAML с сохранением проектов Builder и восстановлением поддерживаемых настроек из существующего конфига. Улучшены диагностика маршрутизации, интерфейс и защита от случайной потери данных.

Главное

  • Config Studio 2.0: локальный импорт и анализ YAML, редактирование рабочей копии, diff, Undo/Reset и экспорт.
  • Проекты Builder и Reverse Build: сохранение и восстановление .lgproject.json, предварительное сравнение, подтверждение изменений и честная диагностика EXACT/DERIVED/MISSING/UNSUPPORTED/CONFLICT.
  • Интерфейс UX-01–54: улучшены формы, управление графом, работа с YAML, клавиатура и адаптация для узких экранов.

Добавлено

  • DNS ↔ Routing Intelligence: статические проверки resolver policies, respect-rules, proxy-server-nameserver, first-match/PASS и режимов DIRECT/GLOBAL с пометками неопределённых зависимостей.
  • Visual Routing Graph: взаимосвязи правил, групп, провайдеров и DNS, поиск и фокус; это статическая модель, а не измеренный сетевой маршрут.
  • Редактор HTTP(S) proxy-provider в Studio с настройкой interval, path, download target и health-check; создание не загружает подписку автоматически и не подключает её к группам без явного указания use:.

Изменено

  • Для новых общих WG/AWG dialer-групп стандартное имя — SHARED-DIALER; явные WARP-DIALER и существующие имена/цели не переименовываются автоматически.
  • Формат проекта остаётся schemaVersion: 1; предусмотрено восстановление совместимых старых тестовых проектов.
  • Physical Topology остаётся исследовательской функцией за выключенным внутренним gate и не включена в публичный GUI.

Исправлено

  • Все кнопки Builder → Config Studio передают актуальный VALID YAML в Studio, а не открывают пустую вкладку; старый документ защищён подтверждением замены (PR #247).
  • Copy/Download/Studio блокируются для отсутствующего или устаревшего результата Build; устранены гонки фонового импорта и восстановления.
  • Исправлены сохранение WG/AWG targets, TUN/DNS OFF, переименование provider targets, отмена/reset, длинные поля и отображение элементов на узких экранах.
  • Сохранены проверки AWL, Tiered Failover, DPR и защита от некорректных комбинаций.

Безопасность

  • Ограничены сложность и размер импортируемых YAML/JSON, опасные структуры отклоняются.
  • Секреты и tokenized subscription URLs маскируются в диагностике/trace/diff; исходные конфигурации и экспортируемые проекты сохраняют рабочие секреты — не публикуйте их.
  • Редактирование конфигурации локальное; отдельные явно запрошенные сетевые операции документированы в DATAFLOW.

Проверено

  • Generator CI — финальный stable, все 6 заданий PASS: Node/browser, Chromium, Firefox, WebKit, проверки Mihomo 1.19.31 и 1.19.32.
  • GitHub Pages — production deployment SUCCESS.
  • Владелец подтвердил открытие публичной страницы; локально проверил видимую верхнюю часть Builder при native browser zoom 150%, 200%, 250% и 300%. Полный интерфейс при этих масштабах не проверялся.
  • Проверены Studio, Project Save/Restore, Reverse, AWL/Tiered/DPR, security/stress, YAML parity в неизменённых сценариях. mihomo -t и loopback tests не подтверждают WAN/UDP/handshake.

Совместимость и границы

  • Минимальная поддерживаемая Mihomo — 1.19.31, проверенная рекомендуемая — 1.19.32.
  • Не все поля произвольного YAML и исходные URL подписок можно восстановить через Reverse; сохраняйте оригинальные YAML, WG/AWG-профили и проект.
  • Статический граф не доказывает настоящий маршрут трафика, отсутствие DNS leaks или фактический WG/AWG handshake; production Keenetic/VPS не изменялись в рамках выпуска.

Тег v1.11.0 соответствует протестированному stable 3ecfabfb2362d341587d6db4968b494f5bd3d3a6.

v1.10.0 — Routing + Subscription + Runtime + AWG Intelligence

Choose a tag to compare

@saymer-alt saymer-alt released this 07 Oct 18:11
447af22

v1.10.0 завершает тему Routing + Subscription + Runtime + AWG Intelligence: строгие эшелоны выходов, authoritative импорт узлов из работающего Mihomo, стабильная identity устройства для панелей подписки и определение поколений WG/AWG с честными бейджами.

Главное

  • Tiered Failover (#148): «🪜 Приоритетные эшелоны выходов» (по умолчанию ВЫКЛЮЧЕНО) — строгий приоритет: трафик идёт через первый эшелон, где есть живой выход; следующий используется, только когда весь предыдущий недоступен. Runtime-семантика доказана на реальном Mihomo 1.19.31/1.19.32 детерминированным харнессом.
  • Mihomo Runtime Node Import (#159): спросить сам работающий Mihomo, какие provider-узлы он фактически загрузил (GET /providers/proxies; прямой запрос браузером, paste/upload JSON как fallback; read-only, без API-мутаций, секрет только в памяти вкладки). Runtime-only узлы попадают в обычный exact Exclude Filter.
  • Стабильная device identity (#156/#163): один логический роутер = один стабильный HWID для preview и всех провайдеров конфига; пересборки/reload не ротируют идентичность; управление — явное (переименование, «🎲 Сменить ID», удаление лишних; последнюю удалить нельзя).
  • WG/AWG generation intelligence (#157): карточки профилей показывают поколение (WG / AWG 1.x / 1.5–2.x / 3.x / 3.1 / AWG ?) с честной уверенностью; матрица маркеров на источниках (amneziawg-go uapi.go, документация AmneziaWG, реестр совместимости); без ложных точных версий; diagnostics-only.

Добавлено

  • Honest preview (#158): preview больше не выглядит authoritative там, где парсер знает о неполноте — «⚠ Preview неполный: N элемент(ов)…» при отброшенных схемах; Clash/Mihomo YAML называется прямо вместо generic network-error; reconciliation Preview ∩ / только preview / только runtime.
  • Subscription preview hardening (#152): залипание «Загрузка…» устранено (явная state-машина IDLE/LOADING/STALE/SUCCESS/PARTIAL/FAILED), UNKNOWN ≠ 0 («количество узлов: неизвестно»), живые сводки union без double-count, ограниченный бюджет preview-операции, честная диагностика fallback-этапа («Direct: …; Fallback: …»), Device Model выше Exclude Filter.
  • Tiered UX + race fix (#165): компактные карточки (↑/↓/🗑/+), disabled стрелки на краях, единый «+ Добавить эшелон»; незафиксированный выбор участника больше не теряется при перерисовке.
  • Resizable node list (#166): оба списка узлов вертикально изменяемые; чисто визуальное состояние.
  • Config Dependency Graph и Domain Coverage видят эшелоны; Domain Coverage — первый consumer графа.

Исправлено

  • IPv6-only WG-профили отклоняются с понятной диагностикой вместо полурабочего маршрута (v1.8-контракт, подтверждён в field-test).
  • Owner LAN-пример в Runtime Import заменён на нейтральный synthetic (приватность).

Совместимость и границы

  • Mihomo: минимум 1.19.31, рекомендуемый/протестированный 1.19.32. AWG v3-семантика (HP/trailers/таймеры) требует ≥ 1.19.30 — на старых ядрах 3.1-поля молча игнорируются.
  • Tiered Failover: health-пробы HTTP only; UDP не заявляется.
  • Runtime Import: браузер должен суметь достучаться до контроллера (listen-адрес/CORS/разрешение локальной сети/secret); при отказе — paste/upload JSON. Запросы к контроллеру никогда не идут через проектный воркер.
  • Дедуп-семантика панелей подписки (HWID vs User-Agent) — UNKNOWN: генератор больше не создаёт расщепления идентичностей со своей стороны, поведение конкретных панелей не верифицировалось.
  • Причина расхождения preview/runtime для отдельных узлов (кейс AEZA) — не объявляется доказанной; Runtime Import является authoritative источником фактических имён независимо от причины.

Проверено

  • Generator CI зелёный на release-коммите stable; mihomo -t успешен на 1.19.31 и 1.19.32 (в том числе для представителей всех поколений WG/AWG: WG / AWG 3.1 / AWG 1.5–2.x); tiered runtime lab на реальном Mihomo 1.19.31 — все сценарии PASS; ALL PARITY против v1.9.0 baseline.
  • Owner field-test на реальном конфиге (FIELD-OBSERVED): страница с корректным бейджем; бейджи поколений на реальных профилях (AWG 3.x и AWG 1.5–2.x классы); IPv6-only WG корректно отклоняется; subscription preview и Runtime Import работают; AEZA воспроизведена как runtime-only с корректным reconciliation и «только в runtime»-пометкой; пустой эшелон блокирует Build; добавление участника после явного «+» работает; многоэшелонная сборка и trace проходят.
  • Известные нефункциональные UX-наблюдения (P2, отложены в v1.11): выбор участника требует явного «+»; один target может состоять в нескольких эшелонах; дефолтное имя «Personal» неочевидно; отклонённый WG-профиль нельзя скрыть индивидуально.

Тег v1.10.0 соответствует протестированному stable 447af22.

v1.9.0 — Configuration Intelligence и WARPSCOUT import

Choose a tag to compare

@saymer-alt saymer-alt released this 06 Oct 16:47
a1d4c53

v1.9.0 открывает тему Configuration Intelligence: генератор теперь не только собирает
конфиг, но и объясняет маршрут, покрытие доменов и то, что он изменил в пользовательском
вводе, — плюс полная поддержка импорта WARPSCOUT/MASQUE и явные AWG-настройки стабильности.

Главное

  • WARPSCOUT-aware MASQUE import: генератор распознаёт YAML с type: masque, переносит
    точные endpoint/SNI каждого транспорта (H3/QUIC и H2/TCP) и объясняет решение;
    несовместимые identity и неизвестные транспорты отвергаются явно.
  • AWG stability (#137): явные переключатели «🛡 NAT keepalive 25 с» (вкл. по умолчанию)
    и «🧪 Тест обрывов: отключить RandomTrailers» — без ручного редактирования .conf.
  • Routing Intelligence: семантический путь правил в Inspector, честная маркировка
    устаревшей диагностики и новый Domain Coverage Checker.

Добавлено

  • Импорт WARPSCOUT/MASQUE YAML: сканирование всех прокси, точные endpoint'ы на транспорт,
    селектор при неоднозначности, fail-closed на несовместимую identity и неизвестные сети.
  • Секция «⚙️ Advanced MASQUE»: точный endpoint/SNI, свои списки портов, приоритет
    «точный endpoint → порты → встроенная стратегия».
  • «🛡 Поддерживать AWG-соединение через NAT (keepalive 25 с)» — по умолчанию включено;
    существующее целое значение не меняется; диапазон сводится к 25 с явной диагностикой.
  • «🧪 Тест обрывов: отключить RandomTrailers» — по умолчанию выключено; диагностический
    эксперимент с предупреждением.
  • Domain Coverage Checker: для списка доменов — победившее правило, провайдер,
    статический путь до цели (с dialer-цепочками), честные UNKNOWN/UNCOVERED/INVALID.
  • Upstream compatibility registry (Any-Tech-ARCHITECT → Mihomo) со слежением за
    изменениями исходников и уровнями доказанности.
  • Research-документация: MTU-модель WireGuard/AWG, классы runtime-отвалов, полевые
    контракты WARPSCOUT.

Изменено

  • Таргет политики «Отдельная группа выбора» → «🎛 Своя SELECT-группа (переключается в Mihomo)».
  • Routing order и «Проверить домен» показывают тип группы и фактический состав участников
    из итогового конфига вместо двусмысленного «правило → группа с тем же именем».
  • Диагностика помечает устаревший snapshot после изменения настроек (без скрытой пересборки).
  • Шаблон политики «🚀 Proxy (свои домены через прокси)» (симметрия к «⬇️ Direct»).
  • Бейдж версии: development-сборки показывают vX.Y.Z-dev · MAIN.

Исправлено

  • Несовместимая пара H3+H2 из разных WARP-аккаунтов больше не может быть импортирована
    как гибрид — явный fail-closed отказ.
  • Ключ, найденный в неподдерживаемом кандидате, больше не «валидирует» поддерживаемый
    профиль без собственного ключа.
  • Стейл-состояние от предыдущего импорта (поля, бейдж) не переживает новый MASQUE-парс.

Безопасность

  • Ключи и точные endpoint живут только в памяти страницы: ни localStorage/sessionStorage,
    ни URL, ни логи; значения секретов не печатаются в диагностиках (только имена профилей
    и полей).
  • Браузер не обращается к GitHub/upstream за compatibility-данными; реестр — локальный.

Проверено

  • Generator CI на production-коммите: Generator CI / runtime provenance / browser / mihomo -t 1.19.31 / mihomo -t 1.19.32 — зелёные (promotion PR #147); production smoke после деплоя Pages — success (run 37498067192).
  • Ручной field-test: выполнен владельцем по docs/RELEASE-FIELD-TEST-v1.9.md на кандидате 4576e2d (GO).

Совместимость и границы

  • Минимальный Mihomo: 1.19.31; рекомендуемый: 1.19.32.
  • MASQUE-контракт IPv6 endpoint не доказан — такие endpoint'ы отвергаются явно.
  • Fixed keepalive 25 под диапазон — user-visible compatibility policy, не эквивалент
    исходной random-range семантики; отключается переключателем.
  • mihomo -t PASS означает принятие синтаксиса/схемы, не гарантию runtime-семантики.
  • Auto-MTU остаётся выключенным (диагностика MTU — без изменения YAML); watchdog/auto-restart
    не входят в генератор.
  • Node/colo/SNI из сканов — наблюдения, а не постоянные свойства endpoint'ов.

Тег v1.9.0 соответствует протестированному stable a1d4c53.

v1.8.0 — WG/AWG hardening и Routing Diagnostics

Choose a tag to compare

@saymer-alt saymer-alt released this 06 Oct 08:40
660b6b6

Большой релиз надёжности генератора: усилена обработка WG/AWG, добавлена офлайн-диагностика маршрутизации и устранены тихие семантические подмены значений.

Главное

  • WG/AWG IPv4-only contract: профили эмитятся строго IPv4-only (ip-version: ipv4 — hostname не уходит в AAAA); IPv6-only интерфейс, IPv6 literal endpoint'ы и AllowedIPs-списки, опустевшие после IPv4-фильтрации, отклоняются явно с понятной ошибкой. Снимает отказ Mihomo 1.19.32 «IPv6 requires MTU ≥ 1280» на dual-stack профилях с низким MTU (найдено на реальном WARP-профиле MTU 1200).
  • MTU chain planner (diagnostics-only): расчётные потолки для цепочек dialer-proxy (plain WG −75/хоп; ContentPaddingAddition замещает align16; RandomTrailers → честный unknown). Generated YAML не меняется; auto-MTU выключен до live-PoC.
  • No-silent-drop для AWG-значений: каждое поле импорта получает отчёт статуса; невалидные и непереносимые значения показываются WARN'ом на карточке и не попадают в YAML молча.
  • Routing Diagnostics: офлайн-инспектор итогового маршрута домена/IP, Rule Provider Explorer, детекторы дубликатов и перекрытий, человекочитаемый preview — без сети, без сохранений.
  • Надёжность цепочек и релиз-инфраструктура: WG/AWG → WG/AWG цели при пустом вводе больше не деградируют; циклы отвергаются; бейдж версии сборки; preview-артефакт main и production Pages smoke.

Добавлено

  • Rule Provider Explorer — read-only инвентарь rule-providers итогового конфига: счётчики, scalar-метаданные, ссылки RULE-SET → target, честные «UNUSED»/«Referenced but missing»; локальное содержимое — только у inline-провайдеров.
  • Routing Inspector / Diagnostics в панелях политик по доменам: победившее правило, маршрут, альтернативы, объяснение first-match, строгий детектор перекрытий; DNS/GEOSITE-зависимое честно возвращает UNKNOWN.
  • Custom health-check URL (только абсолютные http/https; браузером не проверяется и не сохраняется — проверяет сам Mihomo).
  • docs/ROADMAP.md (backlog после v1.8.0), docs/RELEASE-FIELD-TEST.md (checklist приёмки релиза), RELEASE-STANDARD.md (формат GitHub Releases).
  • Build main preview (Actions artifact) и Production Pages smoke (badge/Build/console против production).

Изменено

  • Терминология MASQUE: «H3 / QUIC» и «H2 / TCP»; имена генерируемых профилей — WARP-MASQUE-H3-QUIC и WARP-MASQUE-H2-TCP-<порт>.
  • Импорт WARP-вкладки стал source-neutral: «📥 Импорт WARP YAML» (бот, WARPSCOUT или другой совместимый источник); парсер не изменился.
  • Default health-check URL переключён на официальный Mihomo-documented https://www.gstatic.com/generate_204.
  • AWG duration/range-поля (RekeyTimeout и родственные) переносятся строкой — контракт строковых опций Mihomo; булевы — строго из набора 1/true/yes/0/false/no.

Исправлено

  • PersistentKeepalive = 25-35 (диапазон) больше не сворачивается молча в 25: raw-факт сохраняется, пользователь видит WARN, поле не эмитится (Mihomo принимает только целое).
  • Строгий числовой парсинг: Jc = 123abc больше не превращается в 123; значения вне uint32 → INVALID и не эмитятся.
  • Peer/профиль, у которого все AllowedIPs — IPv6 (список пуст после фильтрации), теперь fail-closed reject вместо молчаливого полумёртвого объекта.
  • MTU planner: снят double-count align+15 в CPA-ветке (padding-ветки AWG v3 взаимоисключающие).
  • WG/AWG → WG/AWG цели dialer при пустом основном вводе больше не исчезают из «Промежуточный выход».

Безопасность

  • WG/AWG конфиги — memory-only: приватные ключи не попадают в localStorage/sessionStorage/URL/IndexedDB (закреплено regression-тестами).
  • Диагностика не печатает key material (HeaderProtectionKey — только «(present)»).
  • VPS-профили: controller bind 127.0.0.1, Allow LAN — router-only, клампы на уровне Build (tamper DOM не влияет).
  • Custom health-check URL не фетчится браузером и нигде не хранится.

Проверено

  • Mihomo 1.19.31 и 1.19.32 (CI compat + реальные core-прогоны failover/AWL/whitelist).
  • Полный Generator CI: browser/static/node suites, parity 7/7 (byte-identical), runtime provenance против опубликованного source.
  • Owner field-test на RC (GO).
  • Production Pages smoke: badge v1.8.0 · STABLE, synthetic Build VALID, page errors отсутствуют.

Совместимость и границы

  • auto-MTU НЕ включён: планировщик — только диагностика; изменение MTU требует mipstack/live PoC (см. docs/ROADMAP.md).
  • WARPSCOUT-aware import endpoint'ов и кастомные MASQUE порты отложены в v1.9 (#125).
  • mihomo -t подтверждает синтаксическую/структурную валидность конфига и не доказывает сетевую достижимость/handshake.
  • Доступность H3/QUIC и H2/TCP зависит от сети/оператора — проверяйте в своём окружении (docs/WARPSCOUT-*.md).

Тег соответствует протестированному stable 660b6b6.

v1.7.1 — Безопасность VPS-профилей и UX-полировка

Choose a tag to compare

@saymer-alt saymer-alt released this 05 Oct 08:58
a7d381b

v1.7.1 — Безопасность VPS-профилей и UX-полировка

Patch-релиз поверх v1.7.0: безопасность дефолтов deployment-профилей, заметность новых функций и закатанные по field-test находкам UX-шероховатости.

🔒 Безопасность / safety

  • Allow LAN — только для профиля «Роутер / обычный TUN». В обоих VPS-профилях переключатель выключен и заблокирован, а сборка независимо от DOM не выдаёт allow-lan: true / bind-address: "*" — раньше tamper чекбокса мог открыть Mihomo наружу.
  • Контроллер Mihomo в VPS-профилях слушает только 127.0.0.1:9090 (раньше — 0.0.0.0:9090 без секретного ключа: при открытом на VPS TCP/9090 полный доступ к API был снаружи). Web UI выключен — контроллер не генерируется вовсе. Для удалённого управления — SSH-туннель; в документации разобран пример нескольких VPS (local 9091 → remote 127.0.0.1:9090) и различие «порт на VPS» vs «локальный forwarded-порт».

🧭 UX

  • «📋 Показать серверы подписки» — Server List перенесён в блок основных переключателей (рядом с Allow LAN / Mixed Port / Web UI / URL-подписки) и переименован из незаметного «Получить список серверов подписки». Privacy-контракт прежний: по умолчанию выключено — генератор не запрашивает подписку браузером; список и выбор исключений появляются в разделе Exclude Filter.
  • 📱 Device Model — подсказка теперь объясняет, что писать: понятное имя устройства, которое панель подписки увидит как x-device-model; при пустом поле используется служебное Saymer Link Generators Preview; на стабильный HWID не влияет.
  • Legacy dialer-блок — «Ручная общая dialer-группа (Legacy)»: понятное назначение, скрыт до загрузки первого WG/AWG, тестовые примеры VPS-DK/EE/SE заменены нейтральными.
  • Ссылка на WARP-вкладку в Builder теперь называет её полностью: «⚡ WARP MASQUE Links».

🚦 Политики по доменам: новые шаблоны

«🐙 GitHub / Development», «🪟 Microsoft», «🍎 Apple», «💬 Social Networks» — стартовые списки стабильных доменов, свободно редактируемые после вставки.

📚 Документация и hardening

  • Закрыт docs drift: README (режим белых списков — router-only), генератор-гайд (Server List, gateway-профиль), MIHOMO (Server List/Device Model в таблице контролов, legacy dialer помечен), quick-start FAQ.
  • js-yaml@4.1.0 с CDN подключается с SRI-контрольной суммой (integrity + crossorigin).
  • Новые regression-тесты: профильные контракты Allow LAN/controller bind (включая DOM-tamper), privacy storage, DPR-пресеты; parity-гейты подтверждены byte-identical для unaffected сценариев.

✅ Совместимость

Проверено на Mihomo 1.19.31 и 1.19.32. Конфиги, собранные для роутера без изменения настроек, остаются байт-в-байт прежними; меняются только VPS-дефолты безопасности и прежние «случайные» открытые порты.

Границы релиза: worker и subscription-логика не менялись; тег соответствует протестированному stable.

v1.7.0 — Subscription Server List, Exclude Filter и собственный Worker

Choose a tag to compare

@saymer-alt saymer-alt released this 04 Oct 16:55
da9bd38

v1.7.0 — Subscription Server List, Exclude Filter и собственный Worker

Главное

  • Opt-in «Получить список серверов подписки» — toggle (OFF по умолчанию) разрешает браузеру прочитать подписку и показать selectable-список фактических имён узлов с поиском, «Выбрать все»/«Снять все» и счётчиками. Выбранные имена экранируются и OR-объединяются с ручным Exclude Filter — одинаковое исключение в Sub ON и Sub OFF. Toggle OFF = ноль сетевых запросов и ноль расходования device registration.
  • Sub OFF inline expansion — подписка читается обязательно, Exclude Filter (manual + selected) применяется к фактическим именам до сборки, оставшиеся узлы встраиваются статическими proxies. Некорректное regexp — fail-closed в обоих режимах.
  • Стабильный preview HWID (link-generators.subscription-preview-hwid.v1) — не random-per-request; device-limited панели не регистрируют новое устройство на каждый Build.
  • Device Model — пользовательское значение из «📱 Device Model» отправляется как x-device-model; пусто — fallback Saymer Link Generators Preview. HWID не зависит от Device Model.
  • Собственный CORS fallback worker (sub.saymer-87.workers.dev) — POST JSON контракт с device headers, deploy через GitHub Actions.

Надёжность

  • Async Build race fix: stale fetch не перезаписывает output/state/Copy (seq-guard).
  • CORS fallback: POST JSON allowlist (x-hwid + x-device-model), legacy GET simple request, redirect manual + scheme revalidation + limit, shared 15s overall deadline, 8 MiB response cap, no-store.
  • Production smoke job в deploy workflow (8 synthetic checks).
  • Runtime provenance + production Pages verification.
  • Mihomo 1.19.31 + 1.19.32 compatibility (CI matrix).

Проверено

  • Owner Geodema field-test: PASS (реальные узлы вместо placeholder, HWID стабилен, Device Model доставлен, union filter работает).
  • Generator CI: GREEN (все jobs).
  • Fork CI (web4core): GREEN (207/207).
  • Production Pages acceptance: PASS.
  • Synthetic worker smoke: PASS (8/8 checks).

Files changed

12 files, +1406/−73 (web4core: src/main.js, workers/subscription/index.js + wrangler.toml, deploy workflow, тесты; link-generators: index.html, AGENTS.md, CHANGELOG, DATAFLOW, TESTING, tests).

v1.6.1 — WG/AWG upload validation hotfix

Choose a tag to compare

@saymer-alt saymer-alt released this 02 Oct 11:57
5c81abb

v1.6.1 — WG/AWG upload validation hotfix

Hotfix-релиз поверх v1.6.0: исправляет реальный production-кейс — загрузка серверного WireGuard-конфига роняла всю сборку с технической ошибкой wireguard: missing host. Полный список изменений v1.6.0 — в CHANGELOG.md.

Исправлено

  • WG/AWG-файлы теперь валидируются отдельно уже при загрузке (web4core.validateBean до публикации профиля) — невалидный файл больше не доходит до Build.
  • Один невалидный профиль больше не ломает весь batch: валидные профили из смешанного набора сохраняются и могут быть собраны (partial batch success).
  • Серверный WG-конфиг без Endpoint в [Peer] распознаётся как неподходящий клиентский outbound с понятным объяснением.
  • Ошибки привязаны к имени файла; технические сообщения WireGuard преобразованы в понятные пользовательские причины (с вторичной строкой «Технически: …»).
  • Добавлен постоянный список отклонённых файлов под менеджером профилей.
  • «🧹 Очистить все» сбрасывает как профили, так и rejected-state.
  • File picker принимает только поддерживаемые расширения (.conf / .wg / .awg).

Проверено

  • Реальные WG/AWG владельца: 6/6 PASS (включая AWG 3.1 от Keenetic и WARP-конфиги).
  • Реальные mierus-ссылки: 4/4 PASS. Реальные tuic-ссылки: 4/4 PASS.
  • Реальная provider-подписка: PASS во всех provider-сценариях.
  • Реальная смешанная матрица (subscription + WG, direct + dialer, DPR, AWL, профили): PASS.
  • mihomo -t: 18/18 successful на реальных данных, 1.19.31 и 1.19.32-compatible.
  • wg-profiles: 24/24. runtime: 63/63. whitelist 10/10, masque 7/7, policy 33/33 + 14/14, vps-detection 54/54, help-ux 11/11, failover 3/3, AWL PASS.
  • YAML parity: 13/13 BYTE-IDENTICAL. Runtime provenance: PASS.

Реальные ключи, endpoints, токены и URL подписок в релиз не включены.