gui: log search & filters — regex, global-search integration, deep history paging #554

Closed
opened 2026-07-23 08:29:49 +00:00 by p13marc · 0 comments
p13marc commented 2026-07-23 08:29:49 +00:00 (Migrated from github.com)

Part of #542.

Problem

Log search in the GUI is shallow: the message filter in zensight/src/view/specialized/syslog.rs is substring-only while its placeholder text ("error|failed") promises regex; the stream renders at most 100 rows with no way to page deeper; and the global search overlay (zensight/src/view/search.rs) matches only protocol/source/metric paths — log content is unsearchable from the app's main search surface.

Proposal

  • Regex message filter: compile the filter input as regex (fall back to substring on invalid, with a subtle error hint); applies to the local buffer instantly and is pushed as pattern= to the sensor query for history depth.
  • Deep history browsing: "load older" pagination through the sensor's cursor-paginated search (server-side search issue), replacing the hard 100-row ceiling with windowed rendering.
  • Global search integration: typing in the global overlay offers a "search logs for ''" action that jumps to the Logs view with the filter pre-applied (content itself stays sensor-side; the overlay just routes).
  • Time-range picker on the logs feed (last 15m/1h/6h/24h/custom) mapped to from/to selectors.
  • Keep the filter state shareable with the alert-pivot work (one LogsFilter struct → view routing).

Acceptance

  • A regex filter narrows the live feed and, on "search history", returns matching lines from days back via sensor pagination.
  • Global search routes "search logs for …" into the pre-filtered Logs view.
  • Invalid regex degrades gracefully to substring with a visible hint.
  • iced_test::simulator coverage: filter application, pagination trigger, global-search routing.

Depends on the server-side search issue.

Part of #542. ## Problem Log search in the GUI is shallow: the message filter in `zensight/src/view/specialized/syslog.rs` is substring-only while its placeholder text (`"error|failed"`) promises regex; the stream renders at most 100 rows with no way to page deeper; and the global search overlay (`zensight/src/view/search.rs`) matches only `protocol/source/metric` paths — log *content* is unsearchable from the app's main search surface. ## Proposal - **Regex message filter**: compile the filter input as regex (fall back to substring on invalid, with a subtle error hint); applies to the local buffer instantly and is pushed as `pattern=` to the sensor query for history depth. - **Deep history browsing**: "load older" pagination through the sensor's cursor-paginated search (server-side search issue), replacing the hard 100-row ceiling with windowed rendering. - **Global search integration**: typing in the global overlay offers a "search logs for '<text>'" action that jumps to the Logs view with the filter pre-applied (content itself stays sensor-side; the overlay just routes). - Time-range picker on the logs feed (last 15m/1h/6h/24h/custom) mapped to `from`/`to` selectors. - Keep the filter state shareable with the alert-pivot work (one `LogsFilter` struct → view routing). ## Acceptance - A regex filter narrows the live feed and, on "search history", returns matching lines from days back via sensor pagination. - Global search routes "search logs for …" into the pre-filtered Logs view. - Invalid regex degrades gracefully to substring with a visible hint. - `iced_test::simulator` coverage: filter application, pagination trigger, global-search routing. Depends on the server-side search issue.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
marcpardo/zensight#554
No description provided.