You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Несколько операторских полей во вкладке Конфиг (support URL, текст анонса) → новые заголовки ответа /sub; profile-web-page-url выводится автоматически из host+token (ведёт на лендинг из Человеко-ориентированная страница подписки с QR и кнопками импорта в приложения #106). 2) Кликабельные заголовки столбцов таблицы пользователей (имя, трафик, истечение) для сортировки.
Паритет с конкурентами
Заголовки: Hiddify/Marzban/Remnawave/v2RayTun (profile-web-page-url, support-url, announce). Сортировка таблицы: Remnawave/Marzneshin/Hiddify. Обе мелочи есть у всех.
Чего не хватает сейчас (код)
sub/handler.go отдаёт только 4 заголовка (Subscription-Userinfo, Profile-Title, Profile-Update-Interval, Content-Disposition) — нет support-url/profile-web-page-url/announce, поэтому клиенты не рисуют кнопки «Дом»/«Поддержка». mihomo.Profile несёт только Title/Filename/UpdateInterval. В SPA таблица юзеров не сортируется по столбцам (только серверная пагинация/фильтр).
Зачем
Заголовки дают in-app кнопки «Дом»/«Поддержка»/анонсы без выхода из прокси-приложения — паритет с Marzban/Remnawave/v2RayTun почти бесплатно. Сортировка таблицы — базовое удобство для поиска тяжёлых/истекающих юзеров, которого в subgen нет.
Предлагаемая реализация
Заголовки: расширить mihomo.Profile полями SupportURL/Announce; добавить optional response-headers в openapi /sub-операцию (ogen-параметры), хендлер их выставляет; web-page-url derive из request host + token. Поля редактируются в config_save/config_get (Профиль уже сохраняется). Сортировка:users_get уже серверно-пагинируется — добавить параметры sort/order (openapi), ORDER BY в users-репозитории; во Vue — кликабельные th с индикатором направления.
Категория: ux · Приоритет: low · Размер: S · Ранг: 10/10
Что построить
/sub;profile-web-page-urlвыводится автоматически из host+token (ведёт на лендинг из Человеко-ориентированная страница подписки с QR и кнопками импорта в приложения #106). 2) Кликабельные заголовки столбцов таблицы пользователей (имя, трафик, истечение) для сортировки.Паритет с конкурентами
Заголовки: Hiddify/Marzban/Remnawave/v2RayTun (
profile-web-page-url,support-url,announce). Сортировка таблицы: Remnawave/Marzneshin/Hiddify. Обе мелочи есть у всех.Чего не хватает сейчас (код)
sub/handler.goотдаёт только 4 заголовка (Subscription-Userinfo,Profile-Title,Profile-Update-Interval,Content-Disposition) — нетsupport-url/profile-web-page-url/announce, поэтому клиенты не рисуют кнопки «Дом»/«Поддержка».mihomo.Profileнесёт толькоTitle/Filename/UpdateInterval. В SPA таблица юзеров не сортируется по столбцам (только серверная пагинация/фильтр).Зачем
Заголовки дают in-app кнопки «Дом»/«Поддержка»/анонсы без выхода из прокси-приложения — паритет с Marzban/Remnawave/v2RayTun почти бесплатно. Сортировка таблицы — базовое удобство для поиска тяжёлых/истекающих юзеров, которого в subgen нет.
Предлагаемая реализация
Заголовки: расширить
mihomo.ProfileполямиSupportURL/Announce; добавить optional response-headers в openapi/sub-операцию (ogen-параметры), хендлер их выставляет; web-page-url derive из request host + token. Поля редактируются вconfig_save/config_get(Профиль уже сохраняется). Сортировка:users_getуже серверно-пагинируется — добавить параметрыsort/order(openapi),ORDER BYв users-репозитории; во Vue — кликабельныеthс индикатором направления.Затронутые файлы
internal/mihomo/profile.go(SupportURL/Announce),internal/handlers/sub/handler.goopenapi/{sub,config_save,config_get,users_get}.yaml,internal/repository/users/list.go(ORDER BY)internal/handlers/{users_get,config_save,config_get}/,internal/handlers/web/static/{app.js,index.html}Продуктовый ресёрч: изучены аналоги (Marzban/Marzneshin, 3x-ui, Remnawave, Hiddify, sub-store + клиентские стандарты импорта). Паритет и subgen-gap код-обоснованы. Ранг = продуктовый приоритет.