3x-ui/frontend/src
MHSanaei 7078abc14a
feat(frontend): make Storybook a validated, fully covered component workbench
Storybook existed only as an undocumented local tool: 9 of 24 reusable components had stories, autodocs pages were bare prop tables, nothing built or tested the stories, and no contributor doc mentioned the workbench existed.

Every reusable component under src/components/ now has a co-located story with enriched autodocs (component descriptions plus per-prop argTypes, kept as string metadata since the repo bans line comments). Stories double as headless Chromium tests through the Storybook vitest addon, with axe accessibility checks enforced as errors and play-function interaction tests covering the modals, the RHF field bridge, the config block, and the select-all buttons. The preview now mirrors the panel's real theme DOM (body class, shared AntD theme config, seeded theme storage) so what stories render matches production.

CI and make verify gain a static Storybook build as a compile gate, and the frontend test job installs Chromium so story tests run on every PR. Contributor docs (frontend README, CONTRIBUTING, agent guides) document the workbench, the story conventions, and the Controls setup. Node engines move to 24 LTS and gen:api drops the type-stripping flags that Node 24 makes default.
2026-07-14 03:37:21 +02:00
..
api feat(hosts): bulk-add multiple hosts to multiple inbounds (#5677) 2026-07-08 23:35:20 +02:00
components feat(frontend): make Storybook a validated, fully covered component workbench 2026-07-14 03:37:21 +02:00
entries refactor(frontend): replace axios with the native Fetch API 2026-07-08 01:09:18 +02:00
generated fix(api): preserve 64-bit integer schema formats (#5908) 2026-07-12 10:58:02 +02:00
hooks feat(outbound): add real-delay connection test mode 2026-07-06 08:35:48 +02:00
i18n
layouts feat(a11y): screen-reader & keyboard accessibility across the panel (#5486) (#5652) 2026-06-29 12:51:29 +02:00
lib feat(xray): update xray-core to v26.7.11 and adapt panel 2026-07-12 00:30:47 +02:00
models feat(settings): let users clear stored secrets from the UI 2026-07-02 13:57:34 +02:00
pages feat(frontend): hide redundant migration download on sqlite panels 2026-07-12 20:14:42 +02:00
schemas feat: Add outbound egress metadata (IP + country) (#5886) 2026-07-12 15:09:52 +02:00
styles feat(hosts): managed Hosts for per-host subscription link overrides (#5409) 2026-06-17 12:06:55 +02:00
test feat(xray): update xray-core to v26.7.11 and adapt panel 2026-07-12 00:30:47 +02:00
utils Frontend dev tooling (Husky, lint-staged, MSW, Storybook) + full React Hook Form migration (#5859) 2026-07-08 13:28:37 +02:00
env.d.ts refactor(frontend): replace axios with the native Fetch API 2026-07-08 01:09:18 +02:00
main.tsx refactor(frontend): replace axios with the native Fetch API 2026-07-08 01:09:18 +02:00
queryClient.ts
routes.tsx feat(sidebar): move Routing/Outbounds to top-level items with clean URLs 2026-06-22 22:20:26 +02:00