fix: fix Arma 3 log discovery and improve config editor UX
- Fix logfiles_router and thread_registry to resolve .rpt log files from Path(server["exe_path"]).parent/server/ instead of the languard data dir, which never contained log files — log list and live tail both now work correctly - Rewrite get_ui_schema() in config_generator to cover all ~80 fields across all 5 sections (server/basic/profile/launch/rcon) with proper toggle/select/number/password/tag-list/hidden widgets and labels; missions field is hidden (managed by Missions tab) - Add formatSelectDisplay() to ConfigEditor so select fields show descriptive text (e.g. "0 - Never") instead of raw numbers in view mode - Add ToggleDisplay for boolean fields (Enabled/Disabled with indicator dot) - Add section tab labels and descriptions to ConfigEditor - Add MissionList UX hints and dynamic Add/In Rotation button labels - Add "hidden" to FieldSchema widget union type - Update API.md, ARCHITECTURE.md, CLAUDE.md, FRONTEND.md, MODULES.md, THREADING.md to document log path fix and schema coverage
This commit is contained in:
@@ -49,9 +49,9 @@ All 7 capabilities implemented:
|
||||
| Module | Class | Purpose |
|
||||
|---|---|---|
|
||||
| `adapter.py` | `Arma3Adapter` | Composite adapter declaring all capabilities |
|
||||
| `config_generator.py` | `Arma3ConfigGenerator` | 5 Pydantic config models, writes server.cfg/basic.cfg/Arma3Profile/beserver.cfg, builds launch args, `get_ui_schema()` for per-field widget hints |
|
||||
| `config_generator.py` | `Arma3ConfigGenerator` | 5 Pydantic config models, writes server.cfg/basic.cfg/Arma3Profile/beserver.cfg, builds launch args, `get_ui_schema()` returns per-field widget hints for all ~80 fields across 5 sections (text, toggle, select, number, password, tag-list, hidden, textarea); `missions` field marked hidden |
|
||||
| `process_config.py` | `Arma3ProcessConfig` | Allowed executables, port conventions (game+1/+2/+3), directory layout |
|
||||
| `log_parser.py` | `RPTParser` | Regex-based .rpt log parser, log file resolver, `list_log_files()`, `get_log_file_path()` |
|
||||
| `log_parser.py` | `RPTParser` | Regex-based .rpt log parser, resolves log path using `Path(server["exe_path"]).parent / "server"` (not languard data dir), `list_log_files()`, `get_log_file_path()` |
|
||||
| `rcon_client.py` | `BERConClient` | BattlEye RCon v2 UDP protocol implementation |
|
||||
| `remote_admin.py` | `Arma3RemoteAdmin` + `Arma3RemoteAdminFactory` | Implements RemoteAdmin protocol using BERConClient |
|
||||
| `mission_manager.py` | `Arma3MissionManager` | .pbo upload, delete, list, rotation config generation |
|
||||
@@ -73,7 +73,7 @@ All 7 capabilities implemented:
|
||||
|---|---|
|
||||
| `router.py` | Server CRUD, lifecycle (start/stop/restart/kill), config read/write/preview, RCon command |
|
||||
| `players_router.py` | Player list, player history, kick/ban by slot_id |
|
||||
| `logfiles_router.py` | List, download, and delete historical `.rpt` log files |
|
||||
| `logfiles_router.py` | List, download, and delete historical `.rpt` log files from `Path(server["exe_path"]).parent / "server"` (not languard data dir) |
|
||||
| `bans_router.py` | Ban CRUD with bans.txt file sync |
|
||||
| `missions_router.py` | Mission list, .pbo upload (500MB), delete, GET/PUT rotation |
|
||||
| `mods_router.py` | List mods, set enabled mods |
|
||||
@@ -107,7 +107,7 @@ All 7 capabilities implemented:
|
||||
|---|---|
|
||||
| `base_thread.py` | `BaseServerThread` — abstract base with stop event, thread-local DB, exception backoff |
|
||||
| `thread_registry.py` | `ThreadRegistry` — manages per-server thread bundles, start/stop/reattach; `get_rcon_client(server_id)` class method exposes live RCon client |
|
||||
| `log_tail.py` | `LogTailThread` — tails log files, parses lines, persists to DB, broadcasts |
|
||||
| `log_tail.py` | `LogTailThread` — resolves log path from `Path(server["exe_path"]).parent`, tails .rpt files, parses lines, persists to DB, broadcasts |
|
||||
| `process_monitor.py` | `ProcessMonitorThread` — detects crashes, triggers auto-restart |
|
||||
| `metrics_collector.py` | `MetricsCollectorThread` — psutil CPU/RAM collection every 10s |
|
||||
| `remote_admin_poller.py` | `RemoteAdminPollerThread` — polls player list via RCon, syncs join/leave events |
|
||||
|
||||
Reference in New Issue
Block a user