feat: Phase 1 — Config UI Schema system with per-field widget routing

- Backend: add Arma3ConfigGenerator.get_ui_schema() with widget hints per field
- Backend: add ServerService.get_config_schema() and GET /config/schema endpoint
- Frontend: add FieldSchema/ConfigSchema types + useServerConfigSchema hook
- Frontend: new TagListEditor component for dynamic string-list editing
- Frontend: ConfigEditor now routes each field to correct widget (text/number/password/textarea/select/toggle/tag-list)
- Frontend: password fields have show/hide toggle; toggles render as checkbox; tag-list uses TagListEditor
- Tests: 8 new tests covering hook and TagListEditor; all 136 tests green
This commit is contained in:
Tran G. (Revernomad) Khoa
2026-04-17 20:27:06 +07:00
parent e71dd9a600
commit dedf082491
8 changed files with 370 additions and 20 deletions

View File

@@ -134,6 +134,15 @@ def get_config(
return _ok(ServerService(db).get_config(server_id))
@router.get("/{server_id}/config/schema")
def get_config_schema(
server_id: int,
db: Annotated[Connection, Depends(get_db)] = None,
_user: Annotated[dict, Depends(get_current_user)] = None,
):
return _ok(ServerService(db).get_config_schema(server_id))
@router.get("/{server_id}/config/preview")
def get_config_preview(
server_id: int,