Skip to content

ui: port findings panel to new design#4

Open
Moriz82 wants to merge 1 commit into
mainfrom
worktree-agent-a5aa8508
Open

ui: port findings panel to new design#4
Moriz82 wants to merge 1 commit into
mainfrom
worktree-agent-a5aa8508

Conversation

@Moriz82

@Moriz82 Moriz82 commented Apr 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • Rewrites FindingsPanel.tsx to the new-UI two-pane layout: severity summary stats, searchable list with chip filters, and a detail pane (target / evidence / remediation / actions).
  • Wires to real backend (/api/findings?limit=5000); severity counts are derived client-side from the list. No mock data.
  • Adds components/icons.tsx + components/Severity.tsx primitives, styles/screens.css with tokens and findings selectors.
  • Mounts the Findings tab in the Operations nav group (it was imported but never rendered). Adds onOpenInGraph prop + gossamer:navigate / gossamer:open-in-graph window events so panels can flip tabs without prop drilling.

Action wiring

  • Rerun scan → dispatches gossamer:navigate to Operations (rescans need a scanner + target picked in that flow).
  • Export report → client-side JSON download of findings + counts.
  • Open in graph → calls onOpenInGraph(id) or falls back to gossamer:open-in-graph event.
  • Copy cURL → builds curl -sk -i '<target>' from the finding's target URL, copies to clipboard.
  • Mark as triaged / Suppress → disabled with "coming soon" tooltip (no backend mutation endpoint exists; per spec we don't fake the state).

Test plan

  • npx tsc --noEmit clean for all touched files (pre-existing errors in GraphPanel/OperationsPanel are unchanged).
  • npm run build succeeds.
  • Playwright E2E: loaded /, navigated to Findings, toggled a severity chip, clicked a finding row. Detail pane rendered correctly with target / evidence / remediation / actions. Zero console errors.

Screenshot (1 real finding from a live crawl): Findings list + detail pane render; target extracted from the |-delimited finding key when matched_at/url are absent.

🤖 Generated with Claude Code

Rewrites FindingsPanel.tsx to match the new-UI layout: header with totals
and rerun/export actions, severity summary stats, searchable filterable
list, and a detail pane with target/evidence/remediation/actions.

Wires to real backend: `/api/findings?limit=5000` for list data, derives
severity counts client-side. Mark as triaged / Suppress disabled (no
backend persistence yet). Open in graph flips the tab via a new
`onOpenInGraph` prop + matching `gossamer:open-in-graph` / `gossamer:navigate`
window events so other panels can navigate without prop drilling.

Adds `components/icons.tsx` and `components/Severity.tsx` as reusable
primitives and `styles/screens.css` with tokens + findings selectors.

Also registers the Findings tab in the Operations nav group (it was
imported but never mounted before).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant