Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users) fix(frontend): actually apply TUIC v4/v5 split to frontend Previous commit 20d47e8 only modified backend files — frontend Listeners.tsx and ListenerConfigFields.tsx were not included due to a file copy error. This commit applies the frontend changes: - Listeners.tsx: PROTOCOLS array splits 'tuic' into 'tuic-v4'/'tuic-v5' - ListenerConfigFields.tsx: - ALWAYS_TLS_PROTOCOLS includes tuic-v4/tuic-v5 - Form condition: protocol === 'tuic' || 'tuic-v4' || 'tuic-v5' - case 'tuic': includes tuic-v4 and tuic-v5 fallthrough - token field: only shows for tuic-v4 and tuic (backward compat) - tuic-v5: no token field (uses panel-managed users)
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the Oxlint configuration
If you are developing a production application, we recommend enabling type-aware lint rules by installing oxlint-tsgolint and editing .oxlintrc.json:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["react", "typescript", "oxc"],
"options": {
"typeAware": true
},
"rules": {
"react/rules-of-hooks": "error",
"react/only-export-components": ["warn", { "allowConstantExport": true }]
}
}
See the Oxlint rules documentation for the full list of rules and categories.