Commit Graph
8006 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 917f9252d2 chore: trigger CI re-run 2026-03-30 18:19:15 +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 f759933253 fix(ui): FAIL-first sort, FAIL-only filter, and mute scope for findings drill-down
Address 3 product blockers from Pepe's review:

- Add sort=-status to getFindingGroupResources and
  getLatestFindingGroupResources so FAIL resources appear before PASS
  in the drill-down list (sort kept as future-proofing even when
  filter[status]=FAIL makes it a no-op for now)
- Add filter[status]=FAIL to both resource endpoints so drill-down
  only shows impacted resources, matching the count in the group header
- Add filter[status]=FAIL to createResourceFindingResolutionUrl so
  muting a group only affects active FAIL findings, not all historical
- Use .set() after appendSanitizedProviderFilters to guarantee
  hardcoded FAIL wins even if caller passes filter[status] in filters
  (prevents duplicate filter[status] params with undefined API behavior)
- Apply symmetric .set() pattern in findings-by-resource.ts for
  consistency

26 tests (10 new). All passing.
Judgment Day: 2 rounds, 0 discrepancies remaining.
2026-03-30 16:08:49 +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
Alan Buscaglia a7f18ec41f chore: init feature branch for findings groups improvements 2026-03-30 14:20:31 +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
3b875484b0 feat(m365): add device registration MFA and harden Intune enrollment CA check (#10222)
Co-authored-by: Hugo Brito <hugopbrito@users.noreply.github.com>
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-30 13:36:05 +02:00
lydiavilchezandpedrooot 442b379777 feat(google-workspace): add CIS Foundations Benchmark v1.3.0 compliance (#10462)
Co-authored-by: pedrooot <pedromarting3@gmail.com>
2026-03-30 12:57:12 +02:00
Adrián Peña 2a8b6261e1 fix(api): false 404 and sorting on finding group resources endpoints (#10510) 2026-03-30 12:47:16 +02:00
Alan Buscaglia 6df74529d6 refactor(ui): remove "Clear all" button from filter pills strip (#10481) 2026-03-30 12:26:01 +02:00
César Arroba 6f6d62f51f fix(ci): remove DOCKER_HUB_REPOSITORY secret and add toniblyx mirror push (#10512) 2026-03-30 11:53:04 +02:00
Hugo Pereira BritoandDaniel Barranquero 7148086410 feat(m365): add entra_conditional_access_policy_block_o365_elevated_insider_risk security check (#10232)
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-30 11:49:29 +02:00
Alan Buscaglia 4ef0b1bf2c fix(ui): fix pre-commit hook skipping lint, tests, and build (#10494) 2026-03-30 10:44:59 +02:00
César Arroba de492a770c fix(ci): remove DOCKER_HUB_REPOSITORY secret from sdk container workflow (#10509) 2026-03-30 10:20:38 +02:00
César Arroba e9009f783b fix(ci): remove setup-buildx-action from create-manifest jobs (#10508) 2026-03-30 10:01:32 +02:00
Raajhesh Kannaa ChidambaramandRaajhesh Kannaa Chidambaram db1edf5ca7 feat(aws): add internet-exposed category to 13 checks (#10502)
Co-authored-by: Raajhesh Kannaa Chidambaram <495042+raajheshkannaa@users.noreply.github.com>
2026-03-30 08:59:29 +02:00
82d3ccec18 fix(oci): Add multi region filtering argument support (#10473)
Co-authored-by: Ronan Chota <ronan.chota@saic.com>
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-30 08:45:16 +02:00
rchotacodeandRonan Chota ff46281f64 fix(oci): Fix service region support (#10472)
Co-authored-by: Ronan Chota <ronan.chota@saic.com>
2026-03-30 08:19:32 +02:00
Josema Camacho 94e234cefb fix(api): use raw FK ids in membership post_delete signal to avoid cascade lookup failures (#10497) 2026-03-27 16:16:28 +01:00
Pepe Fagoaga 8267fc4813 fix(step_security): keep notify in audit mode (#10496) 2026-03-27 16:01:24 +01:00
Josema Camacho 8bfeee238b feat(api): replace _provider_id property with label-based isolation and regex injection for custom queries (#10402) 2026-03-27 14:31:56 +01:00
Josema Camacho cc197ea901 feat(api): add periodic cleanup of stale Attack Paths scans with dead-worker detection (#10387) 2026-03-27 14:17:22 +01:00
Pepe FagoagaandCopilot 2b5d015e09 feat(security): add missing endpoints to allowlist (#10495)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-27 13:53:52 +01:00
Adrián Peña 73e0ac6892 chore: update dependencies (#10492) 2026-03-27 13:13:47 +01:00
Adrián Peña 700b51ddad chore: update Python version references from 3.9 to 3.10 (#10493) 2026-03-27 13:13:36 +01:00
Pepe Fagoaga 417be55604 feat(security): block mode for hardened runners (#10482) 2026-03-27 13:08:59 +01:00
Hugo Pereira Brito f75ce7b4dd feat(ui): add OpenCypher query editor (#10445) 2026-03-27 10:58:48 +00:00
Hugo Pereira BritoandDaniel Barranquero 269d9dfe41 feat(cli): add --resource-group flag to filter checks by resource group (#10479)
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-27 11:55:28 +01:00
Apoorv DarshanandPepe Fagoaga 7b0ce7842b fix: remove return statements from finally blocks (#10102)
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
2026-03-27 09:23:15 +01:00
Terry FranklinandPepe Fagoaga 0a11ca4a68 feat(celery): VALKEY_SCHEME environment variable (#10420)
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
2026-03-27 09:22:35 +01:00
Adrián Peña c953fa7e67 fix(api): resolve check_title filter to check_id for consistent finding-group counts (#10486) 2026-03-27 09:05:02 +01:00
Pepe Fagoaga 73907db856 fix(trivy-scan): don't comment if PR from fork (#10490) 2026-03-27 08:37:19 +01:00
041f95b3df feat(ec2): add check for SG ingress from public IPs to any port (#10335)
Co-authored-by: Raajhesh Kannaa Chidambaram <495042+raajheshkannaa@users.noreply.github.com>
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-26 17:21:16 +01:00
stepsecurity-app[bot]andPepe Fagoaga 716c130140 feat(security): security best practices from StepSecurity (#10480)
Signed-off-by: StepSecurity Bot <bot@stepsecurity.io>
Co-authored-by: stepsecurity-app[bot] <188008098+stepsecurity-app[bot]@users.noreply.github.com>
Co-authored-by: Pepe Fagoaga <pepe@prowler.com>
2026-03-26 13:58:19 +01:00
Hugo Pereira BritoandDaniel Barranquero c651f60e3a feat(m365): add entra_conditional_access_policy_mdm_compliant_device_required check (#10220)
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-26 11:36:30 +01:00
Adrián Peña dd00d71a07 fix(api): fix finding groups muted filter, counters and reaggregation (#10477) 2026-03-26 10:35:21 +01:00
Sandiyo ChristanandDaniel Barranquero 834d1bca49 feat(awslambda): enrich Function model with inventory fields and add 3 security checks (#10381)
Co-authored-by: Daniel Barranquero <danielbo2001@gmail.com>
2026-03-26 10:33:39 +01:00
Davidm4r 2cf45c72b6 fix(api): remove MANAGE_ACCOUNT permission requirement for listing or create a tenant (#10468) 2026-03-26 09:41:16 +01:00
Pepe Fagoaga 213e18724d fix: Prowler's changelog (#10475) 2026-03-25 16:07:45 +01:00
Pepe Fagoaga 571141f57c fix(aws): set partition's region for global services (#10458) 2026-03-25 15:47:51 +01:00
Adrián Peña 45f0909c3e chore(api): pin all unpinned dependencies to exact versions (#10469) 2026-03-25 13:27:04 +01:00
Alan Buscaglia b01fcc6cb2 fix(ui): refine filter clear and undo behavior in Findings page (#10446) 2026-03-25 13:20:10 +01:00
Adrián Peña 2ddd5b3091 chore: bump minimum Python to 3.10 and pin SDK dependencies (#10464) 2026-03-25 12:32:28 +01:00