diff --git a/README.md b/README.md index bd22a77..18dfef4 100644 --- a/README.md +++ b/README.md @@ -58,10 +58,15 @@ The token field accepts a raw Graylog API token, the Base64 value after `Basic ` or a complete `Basic ` header. Tokens are stored only in the local runtime configuration and are never returned by the dashboard API. -Use `Load selected stream fields` after choosing a stream. The field table shows -Graylog datatype/capability metadata and lets you select an entity field, a time -field, and categorical/numeric fields for the stream profile. Profiles are stored -under `graylog_stream_profiles` in `state/fgai-config.json`. +Use `Edit profile` on a stream to load its fields. The field table shows Graylog +datatype/capability metadata and lets you select an entity field, a time field, +and categorical/numeric fields for the stream profile. Profiles are stored under +`graylog_stream_profiles` in `state/fgai-config.json`. + +The settings page treats stream enablement and profile editing separately. The +checkboxes decide which streams are monitored. Click `Edit profile` on one stream +to load its fields and edit only that stream's profile; saving with no active +profile editor leaves existing profiles unchanged. Enabled streams are normalized through the same event model. Stream profiles define the entity, timestamp, categorical, and numeric fields used for baselines. diff --git a/ROADMAP.md b/ROADMAP.md index 584f0f5..28d6682 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -89,6 +89,7 @@ Acceptance: deployment, restart, upgrade, backup, and monitoring have documented Goal: optimize the UI for security investigation rather than raw tables. +- [x] Separate stream enablement from one-profile-at-a-time profile editing. - [ ] Replace remaining long tables with compact incident and entity cards where appropriate. - [ ] Add incident filters for stream, severity, entity type, review state, and time range. - [ ] Add baseline versus current charts per selected entity and field. diff --git a/src/fgai/dashboard.py b/src/fgai/dashboard.py index 4b5b2ea..3a1b1fe 100644 --- a/src/fgai/dashboard.py +++ b/src/fgai/dashboard.py @@ -55,6 +55,8 @@ HTML = """ .field-row code { width: fit-content; } .field-controls { display: flex; flex-wrap: wrap; gap: 10px; } .field-controls label { white-space: nowrap; } + .stream-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 4px 0; } + .stream-row button { border: 1px solid #39709a; background: #0b2944; color: #d9e8f7; padding: 4px 8px; cursor: pointer; } .review-actions { display: flex; flex-wrap: wrap; gap: 6px; min-width: 250px; } .review-actions button { border: 1px solid #39709a; background: #0b2944; color: #d9e8f7; padding: 6px 8px; cursor: pointer; } .review-actions button[data-status="false_positive"] { border-color: #b7823a; color: #ffd36e; } @@ -80,7 +82,7 @@ HTML = """

Events and Anomalies

Baseline and Stream Health

Correlation Map

AI Assessment

LLM assessment disabled.

Investigation Incidents

Anomalies

Recommendations

Field Baseline Deviations

Related Activity Across Sources

Block Candidates

Threat Intelligence

Policy Findings

Diagnostics

-

Runtime Configuration

+

Runtime Configuration