From f5a5317d7c75e54830d7f9573fd2fdbfda87a7cb Mon Sep 17 00:00:00 2001 From: twilgate <170779666+twilgate@users.noreply.github.com> Date: Fri, 10 Jul 2026 02:42:43 +0400 Subject: [PATCH 1/2] fix(subscription): route InHive to links_base64 instead of sing_box (#658 follow-up) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to #658. The sing_box generator (app/subscription/singbox.py) drops kcp/xhttp/splithttp. InHive is a universal client that ingests raw share-links natively, so removing it from the sing_box rule lets its UA fall through to the links_base64 catch-all — the full, unstripped format. Co-Authored-By: Claude --- app/db/migrations/versions/9af04c077ede_init_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/db/migrations/versions/9af04c077ede_init_settings.py b/app/db/migrations/versions/9af04c077ede_init_settings.py index b8d019fd9..7bf5afbb6 100644 --- a/app/db/migrations/versions/9af04c077ede_init_settings.py +++ b/app/db/migrations/versions/9af04c077ede_init_settings.py @@ -204,7 +204,7 @@ def append_rule(pattern: str) -> None: "target": "clash_meta", }, {"pattern": r"^([Cc]lash|[Ss]tash)", "target": "clash"}, - {"pattern": r"^(SFA|SFI|SFM|SFT|[Kk]aring|[Hh]iddify[Nn]ext|[Ii]n[Hh]ive)|.*[Ss]ing[\-b]?ox.*", "target": "sing_box"}, + {"pattern": r"^(SFA|SFI|SFM|SFT|[Kk]aring|[Hh]iddify[Nn]ext)|.*[Ss]ing[\-b]?ox.*", "target": "sing_box"}, {"pattern": r"^(SS|SSR|SSD|SSS|Outline|Shadowsocks|SSconf)", "target": "outline"}, { "pattern": r"^.*", # Default catch-all pattern From 2839d6fd77e05e4035214a5c49dfbf89d320472f Mon Sep 17 00:00:00 2001 From: twilgate <170779666+twilgate@users.noreply.github.com> Date: Fri, 10 Jul 2026 03:02:22 +0400 Subject: [PATCH 2/2] =?UTF-8?q?feat(subscription):=20recognize=20InHive=20?= =?UTF-8?q?=E2=86=92=20xray=20(full=20config),=20not=20sing=5Fbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to #658. Instead of silently falling through to the links_base64 catch-all, add an explicit InHive rule targeting the xray generator, which carries the full transport set (xhttp/kcp/reality/hysteria2) — same intent as Happ getting structured configs. The sing_box generator drops kcp/xhttp/splithttp. Co-Authored-By: Claude --- app/db/migrations/versions/9af04c077ede_init_settings.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/db/migrations/versions/9af04c077ede_init_settings.py b/app/db/migrations/versions/9af04c077ede_init_settings.py index 7bf5afbb6..c69e3412e 100644 --- a/app/db/migrations/versions/9af04c077ede_init_settings.py +++ b/app/db/migrations/versions/9af04c077ede_init_settings.py @@ -206,6 +206,12 @@ def append_rule(pattern: str) -> None: {"pattern": r"^([Cc]lash|[Ss]tash)", "target": "clash"}, {"pattern": r"^(SFA|SFI|SFM|SFT|[Kk]aring|[Hh]iddify[Nn]ext)|.*[Ss]ing[\-b]?ox.*", "target": "sing_box"}, {"pattern": r"^(SS|SSR|SSD|SSS|Outline|Shadowsocks|SSconf)", "target": "outline"}, + { + # InHive: universal client (sing-box fork + Xray parity); ingests raw + # share-links / Xray-JSON natively. Serve the full, unstripped xray format. + "pattern": r"^[Ii]n[Hh]ive", + "target": "xray", + }, { "pattern": r"^.*", # Default catch-all pattern "target": "links_base64",