Commit Graph
353 Commits
Author SHA1 Message Date
alejandrobailo a8ea78e7ed fix(ui): scope Enter-only search to controlled mode, restore uncontrolled debounce 2026-03-31 16:43:55 +02:00
Alan Buscaglia f43274097b fix(ui): fix Lighthouse AI button contrast — dark text on light gradient
Replace text-foreground (white in dark mode) with text-slate-900 (dark)
on the Lighthouse AI button. The gradient background (green→cyan) is
always light, so dark text ensures readable contrast in both themes.
2026-03-30 18:01:56 +02:00
Alan Buscaglia c086e3a8d0 fix(ui): always show search input — remove collapse/expand animation
The search input is now always visible in all tables. Removed:
- Collapsed state (icon-only button with hover to expand)
- isExpanded state and shouldStayExpanded logic
- handleMouseEnter/handleMouseLeave/handleIconClick handlers
- Transition animations for expand/collapse

The input starts at w-64 (or w-[28rem] with badge) and stays visible.
Focus/blur still tracked for border styling only.
2026-03-30 17:59:59 +02:00
Alan Buscaglia bba2f274b8 fix(ui): search commits on Enter only in all tables (uncontrolled mode)
Change DataTableSearch uncontrolled mode from debounce-on-keystroke to
commit-on-Enter for ALL tables (findings, providers, scans, etc.).

- handleChange now only updates the display value (internalValue)
  without triggering URL updates or showing a loading spinner
- onKeyDown Enter handler commits the search: updates URL params
  (prefixed or filter[search]) and resets to page 1
- Removes all debounce logic from the uncontrolled path — typing is
  instant feedback, searching is explicit user intent via Enter
- Controlled mode with onSearchCommit unchanged (already Enter-only)
2026-03-30 17:57:55 +02:00
Alan Buscaglia d717add78a fix(ui): trigger refresh imperatively on search commit instead of useEffect
Replace useEffect-based refresh on resourceSearch change with
imperative queueMicrotask(() => inlineRef.current?.refresh()) in the
onSearchCommit callback. This follows the project convention of
avoiding useState+useEffect patterns that mirror props.

The hook uses refs (filtersRef.current) which update on render but
don't auto-trigger fetches. queueMicrotask ensures the state update
from setResourceSearch is flushed before refresh reads the new filters.
2026-03-30 17:56:03 +02:00
Alan Buscaglia b129abe42e fix(ui): suppress misleading spinner in commit-on-Enter search mode
When onSearchCommit is provided, the loading spinner should only appear
after Enter is pressed (actual search commit), not on every keystroke.

- Skip setIsLoading(true) in handleChange when onSearchCommit is present
- Cancel pending debounce timer when Enter fires (prevents stale
  onSearchChange from firing 500ms after commit)
- Sync display state via onSearchChange on Enter to keep input and
  committed state consistent
- Fix pre-existing React.ReactNode namespace usage in data-table.tsx

6 tests passing (1 new test for debounce cancellation on Enter).
2026-03-30 17:34:09 +02:00
Alan Buscaglia 5a85752839 fix(ui): UX improvements for findings grouped view — Pepe's feedback
Address 6 UX items from Pepe's product review:

- Lighthouse AI: change 'View This Finding' to 'Analyze This Finding
  With Lighthouse AI'
- Remediation headings: shorten 'Terraform Command' to 'Terraform' and
  'CloudFormation Command' to 'CloudFormation' for cleaner labels
- Search on Enter: split resourceSearch into input display state and
  committed search state, fire actual search only on Enter key.
  Remove resourceSearch from InlineResourceContainer key to prevent
  full remount on every keystroke
- Muted icon: add 'Muted' text indicator with VolumeX icon in resource
  row status cell for muted findings
- Risk section: wrap in danger-styled container with border-danger and
  bg-bg-fail-secondary background for visual emphasis
- Section headings: upgrade Risk/Description labels from text-xs to
  text-sm font-semibold. Add border separator after Description section

Also fix pre-existing React.ReactNode namespace usage in data-table.tsx
(replaced with named import type).

18 tests across 3 test suites (2 new, 1 extended). All passing.
Judgment Day: 1 round, 0 CRITICAL, warnings documented as follow-ups.

Known follow-ups:
- Spinner fires on keystroke in commit-on-Enter mode (cosmetic)
- Debounce timer not cancelled on Enter (edge case, no crash)
- Remediation card labels still text-xs (inconsistent with overview)
2026-03-30 16:34:07 +02:00
Alan Buscaglia 1bf13bf567 fix(ui): code quality improvements for findings grouped view
- Replace `any` with `unknown` + type guards in finding-groups and
  findings-by-resource adapters (4 adapter functions hardened)
- Add unmount cleanup for AbortController in use-resource-detail-drawer
  to prevent memory leaks on mid-flight unmount
- Add try/catch/finally error handling for onBeforeOpen in floating mute
  button to prevent permanent spinner state on network errors
- Replace hardcoded colors (border-gray-300, bg-white, text-slate-950)
  with semantic tokens (border-default-200, bg-background, text-foreground)
  for dark mode compatibility
- Change non-accessible `<p onClick>` to `<button>` with w-full and
  type=button in column-finding-groups for keyboard accessibility
- Fix region flag mapping: asia-east1 (Taiwan) now correctly shows flag_tw
  instead of flag_hk by adding specific rule before Hong Kong regex
- Fix import type usage in adapter files (value imports preserved for
  runtime constants like FINDINGS_ROW_TYPE)
- Restore pageRef.current = 1 in refresh() for error path safety

43 new tests across 7 test files. 50 total tests passing.
TypeScript: 0 errors. ESLint: 0 errors.
Judgment Day: 2 rounds, 0 discrepancies remaining.
2026-03-30 15:45:01 +02:00
Alan Buscaglia 9c1dba9295 fix(ui): security and crash fixes for findings grouped view
- Fix SSRF path traversal: encode checkId with encodeURIComponent in
  getFindingGroupResources and getLatestFindingGroupResources URL paths
- Fix SSR crash: add isMounted guard for createPortal(document.body) in
  InlineResourceContainer to prevent document access during server render
- Fix invalid Tailwind: replace mt-[-10] (no unit) with -mt-2.5 scale token
- Fix unbounded page[size]: cap at 500 via Math.min in URL builder as
  defense-in-depth alongside existing chunking
- Fix pageRef race condition: move page counter increment inside fetchPage
  after successful non-aborted response, remove redundant pre-set from
  refresh() to prevent permanent page skip on concurrent abort

26 tests across 4 test suites (2 new, 2 extended). All passing.
TypeScript: 0 errors in changed files. ESLint: 0 errors.
Claude Code validation: PASSED.
Pre-existing healthcheck failures (.next/types, @codemirror) unrelated.
2026-03-30 15:10:04 +02:00
50556df713 feat(ui): add findings grouped view (#10425)
Co-authored-by: Adrián Jesús Peña Rodríguez <adrianjpr@gmail.com>
Co-authored-by: Alan Buscaglia <gentlemanprogramming@gmail.com>
2026-03-30 14:17:36 +02:00
Alan Buscaglia 6df74529d6 refactor(ui): remove "Clear all" button from filter pills strip (#10481) 2026-03-30 12:26:01 +02:00
Alan Buscaglia b01fcc6cb2 fix(ui): refine filter clear and undo behavior in Findings page (#10446) 2026-03-25 13:20:10 +01:00
Alan Buscaglia 0599040d4e feat(ui): add batch apply pattern to Findings filters (#10388) 2026-03-24 11:09:11 +01:00
Hugo Pereira Brito 49ba25ba07 feat(ui): add custom attack paths queries (#10397) 2026-03-23 15:36:37 +00:00
Rubén De la Torre Vicoandalejandrobailo 75c4f11475 feat(ui): add skills system infrastructure to Lighthouse AI (#10322)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-03-18 10:28:46 +01:00
lydiavilchezandalejandrobailo 4f93a89d1b feat(ui): add Google Workspace provider integration (#10333)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-03-17 13:28:28 +01:00
451071d694 feat(image): add image provider to UI (#10167)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com>
2026-03-17 10:53:37 +01:00
Pedro Martínandalejandrobailo 712da2cf98 feat(ui): Add CloudTrail Events tab to detail cards (#10320)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-03-17 09:45:29 +01:00
Alejandro Bailo 4cd3b09818 feat(ui): add organization-specific actions to providers table dropdown (#10317) 2026-03-16 10:32:12 +01:00
Alejandro Bailo 22f79edec5 refactor(ui): replace HeroUI Snippet with CodeSnippet component (#10319) 2026-03-13 16:31:39 +01:00
Pedro Martín 3672d19c6a feat(mutelisting): add mute button inside finding detailed view (#10303) 2026-03-13 11:45:10 +01:00
Alejandro Bailo 63e10c9661 refactor(ui): attack paths restyling and component migrations (#10310) 2026-03-12 13:49:34 +01:00
Alejandro Bailo 5346222be2 fix(ui): handle missing relationships in FindingDetail to prevent crash (#10314) 2026-03-12 11:38:03 +01:00
Alejandro Bailo db7554c8fb feat(ui): redesign providers page with modern table and cloud recursion (#10292) 2026-03-11 13:13:28 +01:00
Pedro Martín 23a8d4e680 feat(ui): improve organizations onboarding (#10274) 2026-03-09 16:54:50 +01:00
Alejandro Bailo 1e95b48c86 fix(ui): rename error text token to text-text-error-primary (#10285) 2026-03-09 13:36:31 +01:00
Alejandro Bailo 2e60bb82d5 fix(ui): skip launch step when updating provider credentials (#10278) 2026-03-06 13:39:25 +01:00
Alejandro Bailo b1c5fa4c46 refactor(ui): migrate provider wizard forms from HeroUI to shadcn (#10259) 2026-03-06 10:13:47 +01:00
Alejandro Bailo 73415e2f8a chore(ui): improve provider wizard docs link labels (#10244) 2026-03-04 09:33:32 +01:00
Alejandro Bailo c74fa131ea fix(ui): navigate to launch step after successful test in update mode (#10223) 2026-03-02 15:59:16 +01:00
Alejandro Bailo 80e84d1da4 fix(ui): stabilize provider wizard modal and DataTable rendering (#10194) 2026-02-27 14:35:13 +01:00
Alejandro Bailo ddb6c03c0e test(ui): fix provider E2E test selectors and reliability (#10178) 2026-02-27 10:12:54 +01:00
Anthonyandalejandrobailo 06f6e8b99b fix(ui): apply provider/account filters to Findings Severity Over Time chart (#10103)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-02-27 10:10:47 +01:00
Pedro Martín fac089ab78 feat(compliance): add SecNumCloud for AWS (#10117) 2026-02-26 09:31:19 +01:00
Alejandro Bailo f403971885 feat(ui): add AWS Organizations bulk connect flow (#10157) 2026-02-25 13:16:34 +01:00
Alejandro Bailo 7935e926ac feat(ui): replace route-based provider flow with modal wizard (#10156) 2026-02-25 13:08:17 +01:00
Alejandro Bailo 6d9ef78df1 style(ui): improve shadcn primitives and add shared components (#10153) 2026-02-25 12:19:08 +01:00
bb5a4371bd feat(ui): add Cloudflare provider support (#9910)
Co-authored-by: Alan Buscaglia <gentlemanprogramming@gmail.com>
Co-authored-by: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com>
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-02-23 09:33:17 +01:00
Daniel Barranqueroandalejandrobailo 40f6a7133d feat(ui): add OpenStack provider support (#10046)
Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com>
2026-02-20 09:44:34 +01:00
Alejandro Bailo 5f2e4eb2a6 fix(ui): replace HeroUI dropdowns with shadcn selects (#10097) 2026-02-18 13:46:57 +01:00
Alan Buscaglia 639333b540 feat(ui): setup vitest with react testing library and TDD workflow (#9925) 2026-02-18 11:25:50 +01:00
Pedro Martín 313da7ebf5 feat(ui): add CSV and PDF download buttons to compliance views (#10093) 2026-02-18 09:36:54 +01:00
Pedro Martín ff25d6a8c2 fix(ui): changes for update credetials for AliababaCloud provider (#10098) 2026-02-17 15:50:02 +01:00
Hugo Pereira BritoandAndoni A. 8438a94203 chore: enhance github documentation and ui placeholder (#9830)
Co-authored-by: Andoni A. <14891798+andoniaf@users.noreply.github.com>
2026-02-17 10:48:53 +01:00
Pedro Martín f55983a77d feat(compliance): add csa ccm 4.0 for the aws provider (#10018) 2026-02-12 13:10:59 +01:00
Alejandro BailoandClaude Opus 4.6 86946f3a84 fix(ui): fix findings filter silent reverts by replacing useRelatedFilters effect with pure derivation (#10021)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:57:38 +01:00
Alejandro Bailo ea847d8824 fix(ui): use local transitions for filter navigation to prevent silent reverts (#10017) 2026-02-11 14:41:03 +01:00
Alejandro Bailo f5345a3982 fix(ui): fix filter navigation and pagination bugs in findings and scans pages (#10013) 2026-02-11 11:18:29 +01:00
Alejandro Bailo d54095abde feat(ui): add expandable row support to DataTable (#9940) 2026-02-10 15:51:55 +01:00
Alejandro Bailo a12cb5b6d6 feat(ui): add TreeView component for hierarchical data (#9911) 2026-02-10 15:26:07 +01:00