Merge Log tab into Server tab and remove Log tab

The Log tab provided a service health panel and log viewer. These are
consolidated into the Server tab with a new ServerHealthSection component
that encapsulates all log-related functionality.

- Extract service health panel and log viewer into ServerHealthSection component
- Add severity-based log line color coding (ERROR=red, WARNING=yellow, DEBUG=gray)
- Implement log filtering, line count selection, and auto-refresh controls
- Scroll to bottom when new log data arrives
- Render health metrics grid with version, jail count, bans, failures
- Show read-only log level and log target in health section
- Handle non-file targets with informational banner
- Import ServerHealthSection in ServerTab and render after map thresholds
- Remove LogTab component import from ConfigPage
- Remove 'log' from TabValue type
- Remove Log tab element from TabList
- Remove conditional render for LogTab
- Remove LogTab from barrel export (index.ts)
- Delete LogTab.tsx and LogTab.test.tsx files
- Update ConfigPage docstring

All 115 frontend tests pass (8 fewer due to deleted LogTab tests).
This commit is contained in:
2026-03-14 21:58:34 +01:00
parent 9630aea877
commit 1da38361a9
5 changed files with 17 additions and 212 deletions

View File

@@ -8,7 +8,7 @@
* Jails — per-jail config accordion with inline editing
* Filters — structured filter.d form editor
* Actions — structured action.d form editor
* Server — server-level settings, logging, database config, map thresholds + flush logs
* Server — server-level settings, map thresholds, service health + log viewer
* Regex Tester — live pattern tester
* Export — raw file editors for jail, filter, and action files
*/
@@ -19,7 +19,6 @@ import {
ActionsTab,
FiltersTab,
JailsTab,
LogTab,
RegexTesterTab,
ServerTab,
} from "../components/config";
@@ -55,8 +54,7 @@ type TabValue =
| "filters"
| "actions"
| "server"
| "regex"
| "log";
| "regex";
export function ConfigPage(): React.JSX.Element {
const styles = useStyles();
@@ -85,7 +83,6 @@ export function ConfigPage(): React.JSX.Element {
<Tab value="actions">Actions</Tab>
<Tab value="server">Server</Tab>
<Tab value="regex">Regex Tester</Tab>
<Tab value="log">Log</Tab>
</TabList>
<div className={styles.tabContent} key={tab}>
@@ -94,7 +91,6 @@ export function ConfigPage(): React.JSX.Element {
{tab === "actions" && <ActionsTab />}
{tab === "server" && <ServerTab />}
{tab === "regex" && <RegexTesterTab />}
{tab === "log" && <LogTab />}
</div>
</div>
);