Skip to content

Backlog/v12 liveops - #3012

Merged
AlexSanchez-bit merged 13 commits into
release/v12.0.0from
backlog/v12_liveops
Oct 29, 2026
Merged

AlexSanchez-bit merged 13 commits into
release/v12.0.0from
backlog/v12_liveops

Conversation

@AlexSanchez-bit

Copy link
Copy Markdown
Contributor

No description provided.

@AlexSanchez-bit AlexSanchez-bit linked an issue Oct 29, 2026 that may be closed by this pull request
1 of 2 tasks
Signed-off-by: Alex Sánchez  <alex.sanchez@utmstack.com>
@github-actions

Copy link
Copy Markdown

🛑 AI review — High/critical findings

One or more high/critical issues were found. Please review and fix before merging if they're real.

⚠️ architecture (silas-1.7-pro) — minor findings

Summary: Frontend-only changes introduce app-wide alert polling, mutable global handler state, and duplicated helpers; no critical-path or agent contract changes.

  • medium frontend/src/app/routes/index.tsx:58 — AlertCountProvider is mounted around all routes, causing app-wide polling and coupling unrelated pages to the alerts feature. Consider mounting it only where alert counts are needed or using a narrower layout provider.
  • medium frontend/src/features/alerts/hooks/use-alert-count.tsx:49 — The provider registers a default toast handler and keeps mutable handler state in a ref, creating global side effects. Prefer explicit local subscriptions or a shared notification service with clear ownership.
  • medium frontend/src/features/liveops/pages/LiveOpsPage.tsx:66 — LiveOpsPage removes and re-registers the global NEW_ALERT_NOTIFICATION_INDEX handler, coupling the page to global alert-count state. Let the provider own the default handler or use a page-local subscription.
  • medium frontend/src/features/liveops/hooks/useLiveOpsAlerts.ts:39 — The hook is described as the single fetch point but only fetches on window/page changes and no longer polls, while LiveOpsPage still uses a tick that does not refresh data. Move polling into the data provider or make the refresh path explicit.
  • low frontend/src/features/liveops/components/Header.tsx:6 — isExternal duplicates private-IP detection logic that also exists in LiveOpsPage. Move the helper to a shared module to avoid drift.

🛑 bugs (silas-1.7-pro) — high/critical — please review

Summary: LiveOps page lost its 10s polling loop (stale data forever) and infinite scroll replaces instead of appends alert pages; Timeline drag listeners leak on unmount.

  • critical frontend/src/features/liveops/hooks/useLiveOpsAlerts.ts:40 — The old LiveOpsPage polled alerts every 10 s via setInterval(() => void refresh(win), POLL_MS). The new useLiveOpsAlerts hook only fetches inside useEffect(..., [win, page]) with no interval, so the LiveOps page shows stale data indefinitely until the user manually changes the window or page. Reproduce: open LiveOps, wait 60 s, confirm no new alerts appear without interaction.
  • high frontend/src/features/liveops/hooks/useLiveOpsAlerts.ts:30 — setAlerts(r.data) replaces the entire alerts array with the newly fetched page instead of appending. The LiveOpsData interface documents 'Cumulative list: every batch from 0 to page' and LeftSidebar renders an InfiniteScrollSentinel that calls loadMore, but each scroll-to-bottom discards previously loaded alerts and shows only the latest 300. Reproduce: with >300 alerts in the window, scroll the left sidebar to the bottom; the list jumps to the next page's alerts rather than growing.
  • medium frontend/src/features/liveops/components/Timeline.tsx:90 — startPan attaches mousemove and mouseup listeners to window inside the mousedown handler with no cleanup path if the component unmounts mid-drag (e.g. user navigates away while panning). The listeners keep firing, calling setView on an unmounted component (React warning) and leaking until the next mouseup. Track drag state in a ref and remove listeners in a useEffect cleanup on unmount.

✅ security (silas-1.7-pro) — clean

Summary: No vulnerabilities introduced; no customer-facing personal names or internal identifiers found in the visible diff.

No findings.

🔴 go-deps — pending updates

🔍 Discovered 31 Go projects

📦 Dependencies with updates available:

  📁 ./agent:
     - github.com/threatwinds/go-sdk: v1.1.28 → v1.1.38
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./tools/rulecheck:
     - github.com/threatwinds/go-sdk: v1.1.31 → v1.1.38

  📁 ./agent-manager:
     - github.com/threatwinds/go-sdk: v1.1.31 → v1.1.38
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./collectors/forwarder:
     - github.com/threatwinds/go-sdk: v1.1.31 → v1.1.38
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./collectors/as400:
     - github.com/threatwinds/go-sdk: v1.1.31 → v1.1.38
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./collectors/utmstack:
     - github.com/threatwinds/go-sdk: v1.1.31 → v1.1.38
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./installer:
     - github.com/cloudfoundry/gosigar: v1.3.128 → v1.3.130

  📁 ./backend:
     - github.com/aws/aws-sdk-go-v2/config: v1.33.11 → v1.33.12
     - github.com/aws/aws-sdk-go-v2/credentials: v1.20.11 → v1.20.12
     - github.com/aws/aws-sdk-go-v2/service/sts: v1.51.5 → v1.51.6
     - github.com/crowdstrike/gofalcon: v0.23.0 → v0.24.0
     - google.golang.org/api: v0.309.0 → v0.310.0
     - google.golang.org/grpc: v1.84.0 → v1.85.0

  📁 ./plugins/aws:
     - github.com/aws/aws-sdk-go-v2: v1.47.4 → v1.47.5
     - github.com/aws/aws-sdk-go-v2/config: v1.33.11 → v1.33.12
     - github.com/aws/aws-sdk-go-v2/credentials: v1.20.11 → v1.20.12
     - github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs: v1.90.2 → v1.90.3

  📁 ./plugins/gcp:
     - google.golang.org/api: v0.309.0 → v0.310.0

  📁 ./plugins/crowdstrike:
     - github.com/crowdstrike/gofalcon: v0.23.0 → v0.24.0

  📁 ./log-input:
     - google.golang.org/grpc: v1.84.0 → v1.85.0

❌ Please update dependencies before merging.

@AlexSanchez-bit
AlexSanchez-bit merged commit 2e4e43b into release/v12.0.0 Oct 29, 2026
1 check passed
@AlexSanchez-bit
AlexSanchez-bit deleted the backlog/v12_liveops branch October 29, 2026 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

live operations view

1 participant