3x-ui/internal
w3struk ae9bbdf267
fix(web): serve panel SPA routes from NoRoute (#5536)
* fix(web): serve panel SPA routes from NoRoute

Return the React shell for authenticated panel document routes that are not explicitly registered in Gin, such as /panel/hosts. Keep API, CSRF, static-file, method, and Accept exclusions so API misses remain 404 and auth semantics stay unchanged.

* fix(web): remove unreachable panel path guard

The panel path is always built by appending /panel, so it can never be empty.
Remove the redundant fallback branch without changing SPA routing behavior.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(web): allowlist static-asset extensions in SPA fallback

The blanket path.Ext check rejected any panel route whose last segment contained a dot, which would reintroduce the refresh 404 for a future client route carrying a dotted parameter (version, domain, or email-like value). Restrict the static-asset exclusion to a known, case-insensitive extension allowlist and add predicate regression cases.
2026-06-24 21:19:12 +02:00
..
config feat(update): add rolling dev update channel for per-commit builds 2026-06-24 18:11:22 +02:00
database feat(iplimit): gate IP limit on fail2ban and reset stale limits 2026-06-22 23:15:58 +02:00
eventbus perf: prevent cron job overlap, auto-set GOMEMLIMIT, fix tgbot userStates race 2026-06-22 02:48:58 +02:00
logger refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
mtproto refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
sub fix(sub): drive display remarks from the template and split multi-host subpage links 2026-06-24 16:45:23 +02:00
util perf: prevent cron job overlap, auto-set GOMEMLIMIT, fix tgbot userStates race 2026-06-22 02:48:58 +02:00
web fix(web): serve panel SPA routes from NoRoute (#5536) 2026-06-24 21:19:12 +02:00
xray Use efficient APIs and simplify loops 2026-06-23 14:12:28 +02:00