Skip to content

Release v0.5.0: ui develop → main - #358

Merged
0xmanhnv merged 153 commits into
mainfrom
release/v0.5.0
Aug 4, 2026
Merged

Release v0.5.0: ui develop → main#358
0xmanhnv merged 153 commits into
mainfrom
release/v0.5.0

Conversation

@0xmanhnv

@0xmanhnv 0xmanhnv commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Release of everything on develop since v0.4.0. 30 files differ from the v0.4.0 tag (measured by content — see the note on this branch below for why the commit count between tags is not a useful number here).

What this ships

Wire types are generated, not hand-written (#357)

Six API groups now derive their types from the OpenAPI spec. The server won three disagreements the hand-written types had been asserting: tenant_id, critical_groups/high_risk_groups and exposures were declared but never returned; depth, is_direct and parent_component_id were returned but invisible to the UI.

Making the types honest exposed a live bug: (ecosystem as ComponentEcosystem) || active — a Status value copy-pasted into an ecosystem field. TypeScript could not see it because after the cast every operand is a truthy literal, so the fallback is unreachable to the checker and live at runtime.

findings was deliberately left hand-written: ApiFinding is 124 fields against the specs 139 and is read by dozens of components — it deserves its own review rather than a mechanical swap. Worth naming what it is currently blind to: sla_deadline, is_internet_accessible, remediation, and on ApiVulnerability the cisa_kev flag — a KEV indicator the server returns, on a CTEM product.

Compensating controls could not be created at all (#354)

The create form offered Preventive/Detective/Corrective/Compensating. The database accepts segmentation/identity/runtime/detection/otherzero overlap. Every create returned 500. Status offered Pending, which is not a value either. The reduction factor was sent as a percentage into a column constrained to the 0–1 fraction.

Two CI checks that were wrong in a way that read as green (#347, #356, #338)

  • The palette-drift gate turned main red after every release, because it diffs against a base that does not apply on a release PR.
  • docker-scan was gated on event_name == push, so the weekly scheduled security sweep skipped the image entirely and reported success. It had been green without scanning for weeks.

Six suppressed ESLint errors, two of them real bugs (#348)

Removed rather than re-suppressed. Math.random() during render (hydration mismatch) and a bare require() in an ESM config were genuine defects hiding behind the disable comments.

Navigation honesty (#339#343)

47 of the 107 unreachable pages are scaffolds — they render dashboard totals under a domain title, so wiring them into the sidebar would mislead rather than help. The four Exposures pages that carry real data were surfaced; the sidebar stopped promising two that are not built. A regression test now fails the build if a scaffold is added to the sidebar, keyed on the exact useDashboardStats import rather than a fuzzy heuristic — the first version of that check flagged 15 working pages.

Supply chain (#349, #350, #353, #352, #344)

The production image shipped npm, which is where its remaining CVEs lived. Removed. postcss and sharp overridden to clear the last two advisories. Dependency groups updated.

About this branch

The tree is develops byte for byte; one merge -s ours commit records main as a parent.

Releases here are squash-merged, which leaves main with a single parent so git cannot see that develop already contains it — the next release then reports dozens of phantom conflicts in files neither side meaningfully changed. That has happened four times. Merging main back into develop is the textbook answer and does not stick, because the following release squashes again.

Verified before merging that 0 files exist in main but not in develop, so -s ours discards nothing, and the resulting tree was checked to be identical to develop directly rather than trusting ancestry.

dependabot Bot and others added 30 commits July 3, 2026 07:13
Bumps the nextjs group with 13 updates:

| Package | From | To |
| --- | --- | --- |
| [next](https://github.com/vercel/next.js) | `16.2.9` | `16.2.10` |
| [@next/bundle-analyzer](https://github.com/vercel/next.js/tree/HEAD/packages/next-bundle-analyzer) | `16.2.9` | `16.2.10` |
| [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `16.2.9` | `16.2.10` |
| [@next/env](https://github.com/vercel/next.js/tree/HEAD/packages/next-env) | `16.2.9` | `16.2.10` |
| [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) | `16.2.9` | `16.2.10` |
| [@next/swc-darwin-arm64](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/darwin-arm64) | `16.2.9` | `16.2.10` |
| [@next/swc-darwin-x64](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/darwin-x64) | `16.2.9` | `16.2.10` |
| [@next/swc-linux-arm64-gnu](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-arm64-gnu) | `16.2.9` | `16.2.10` |
| [@next/swc-linux-arm64-musl](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-arm64-musl) | `16.2.9` | `16.2.10` |
| [@next/swc-linux-x64-gnu](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-x64-gnu) | `16.2.9` | `16.2.10` |
| [@next/swc-linux-x64-musl](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-x64-musl) | `16.2.9` | `16.2.10` |
| [@next/swc-win32-arm64-msvc](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/win32-arm64-msvc) | `16.2.9` | `16.2.10` |
| [@next/swc-win32-x64-msvc](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/win32-x64-msvc) | `16.2.9` | `16.2.10` |


Updates `next` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](vercel/next.js@v16.2.9...v16.2.10)

Updates `@next/bundle-analyzer` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/packages/next-bundle-analyzer)

Updates `eslint-config-next` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/packages/eslint-config-next)

Updates `@next/env` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/packages/next-env)

Updates `@next/eslint-plugin-next` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/packages/eslint-plugin-next)

Updates `@next/swc-darwin-arm64` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/darwin-arm64)

Updates `@next/swc-darwin-x64` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/darwin-x64)

Updates `@next/swc-linux-arm64-gnu` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/linux-arm64-gnu)

Updates `@next/swc-linux-arm64-musl` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/linux-arm64-musl)

Updates `@next/swc-linux-x64-gnu` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/linux-x64-gnu)

Updates `@next/swc-linux-x64-musl` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/linux-x64-musl)

Updates `@next/swc-win32-arm64-msvc` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/win32-arm64-msvc)

Updates `@next/swc-win32-x64-msvc` from 16.2.9 to 16.2.10
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.10/crates/next-napi-bindings/npm/win32-x64-msvc)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/bundle-analyzer"
  dependency-version: 16.2.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: eslint-config-next
  dependency-version: 16.2.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/env"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-darwin-arm64"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-darwin-x64"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-arm64-gnu"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-arm64-musl"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-x64-gnu"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-x64-musl"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-win32-arm64-msvc"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-win32-x64-msvc"
  dependency-version: 16.2.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the linting group with 2 updates: [prettier](https://github.com/prettier/prettier) and [eslint-module-utils](https://github.com/import-js/eslint-plugin-import/tree/HEAD/utils).


Updates `prettier` from 3.9.1 to 3.9.4
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.9.1...3.9.4)

Updates `eslint-module-utils` from 2.13.0 to 2.14.0
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/utils/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/commits/v2.14.0/utils)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: linting
- dependency-name: eslint-module-utils
  dependency-version: 2.14.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: linting
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the tailwind group with 16 updates:

| Package | From | To |
| --- | --- | --- |
| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.3.1` | `4.3.2` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.3.1` | `4.3.2` |
| [@tailwindcss/node](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-node) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-android-arm64](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/android-arm64) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-darwin-arm64](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/darwin-arm64) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-darwin-x64](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/darwin-x64) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-freebsd-x64](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/freebsd-x64) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-linux-arm-gnueabihf](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/linux-arm-gnueabihf) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-linux-arm64-gnu](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/linux-arm64-gnu) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-linux-arm64-musl](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/linux-arm64-musl) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-linux-x64-gnu](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/linux-x64-gnu) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-linux-x64-musl](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/linux-x64-musl) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-wasm32-wasi](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-win32-arm64-msvc](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/win32-arm64-msvc) | `4.3.1` | `4.3.2` |
| [@tailwindcss/oxide-win32-x64-msvc](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/crates/node/npm/win32-x64-msvc) | `4.3.1` | `4.3.2` |


Updates `@tailwindcss/postcss` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/@tailwindcss-postcss)

Updates `tailwindcss` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/tailwindcss)

Updates `@tailwindcss/node` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/@tailwindcss-node)

Updates `@tailwindcss/oxide` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node)

Updates `@tailwindcss/oxide-android-arm64` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/android-arm64)

Updates `@tailwindcss/oxide-darwin-arm64` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/darwin-arm64)

Updates `@tailwindcss/oxide-darwin-x64` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/darwin-x64)

Updates `@tailwindcss/oxide-freebsd-x64` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/freebsd-x64)

Updates `@tailwindcss/oxide-linux-arm-gnueabihf` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/linux-arm-gnueabihf)

Updates `@tailwindcss/oxide-linux-arm64-gnu` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/linux-arm64-gnu)

Updates `@tailwindcss/oxide-linux-arm64-musl` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/linux-arm64-musl)

Updates `@tailwindcss/oxide-linux-x64-gnu` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/linux-x64-gnu)

Updates `@tailwindcss/oxide-linux-x64-musl` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/linux-x64-musl)

Updates `@tailwindcss/oxide-wasm32-wasi` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node)

Updates `@tailwindcss/oxide-win32-arm64-msvc` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/win32-arm64-msvc)

Updates `@tailwindcss/oxide-win32-x64-msvc` from 4.3.1 to 4.3.2
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/crates/node/npm/win32-x64-msvc)

---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: tailwindcss
  dependency-version: 4.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/node"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-android-arm64"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-darwin-arm64"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-darwin-x64"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-freebsd-x64"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-linux-arm-gnueabihf"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-linux-arm64-gnu"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-linux-arm64-musl"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-linux-x64-gnu"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-linux-x64-musl"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-wasm32-wasi"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-win32-arm64-msvc"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
- dependency-name: "@tailwindcss/oxide-win32-x64-msvc"
  dependency-version: 4.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: tailwind
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the radix-ui group with 35 updates:

| Package | From | To |
| --- | --- | --- |
| [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/accordion) | `1.2.14` | `1.2.15` |
| [@radix-ui/react-alert-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/alert-dialog) | `1.1.17` | `1.1.18` |
| [@radix-ui/react-aspect-ratio](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/aspect-ratio) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-avatar](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/avatar) | `1.2.0` | `1.2.1` |
| [@radix-ui/react-checkbox](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/checkbox) | `1.3.5` | `1.3.6` |
| [@radix-ui/react-context-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/context-menu) | `2.3.1` | `2.3.2` |
| [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.17` | `1.1.18` |
| [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dropdown-menu) | `2.1.18` | `2.1.19` |
| [@radix-ui/react-hover-card](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/hover-card) | `1.1.17` | `1.1.18` |
| [@radix-ui/react-label](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/label) | `2.1.10` | `2.1.11` |
| [@radix-ui/react-menubar](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/menubar) | `1.1.18` | `1.1.19` |
| [@radix-ui/react-navigation-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/navigation-menu) | `1.2.16` | `1.2.17` |
| [@radix-ui/react-popover](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popover) | `1.1.17` | `1.1.18` |
| [@radix-ui/react-progress](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/progress) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-radio-group](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radio-group) | `1.4.1` | `1.4.2` |
| [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/scroll-area) | `1.2.12` | `1.2.13` |
| [@radix-ui/react-select](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/select) | `2.3.1` | `2.3.2` |
| [@radix-ui/react-separator](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/separator) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-slider](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slider) | `1.4.1` | `1.4.2` |
| [@radix-ui/react-switch](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/switch) | `1.3.1` | `1.3.2` |
| [@radix-ui/react-tabs](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tabs) | `1.1.15` | `1.1.16` |
| [@radix-ui/react-toggle-group](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/toggle-group) | `1.1.13` | `1.1.14` |
| [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tooltip) | `1.2.10` | `1.2.11` |
| [@radix-ui/react-arrow](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/arrow) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-collapsible](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/collapsible) | `1.1.14` | `1.1.15` |
| [@radix-ui/react-collection](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/collection) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-dismissable-layer](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dismissable-layer) | `1.1.13` | `1.1.14` |
| [@radix-ui/react-focus-scope](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/focus-scope) | `1.1.10` | `1.1.11` |
| [@radix-ui/react-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/menu) | `2.1.18` | `2.1.19` |
| [@radix-ui/react-popper](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popper) | `1.3.1` | `1.3.2` |
| [@radix-ui/react-portal](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/portal) | `1.1.12` | `1.1.13` |
| [@radix-ui/react-primitive](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/primitive) | `2.1.6` | `2.1.7` |
| [@radix-ui/react-roving-focus](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/roving-focus) | `1.1.13` | `1.1.14` |
| [@radix-ui/react-toggle](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/toggle) | `1.1.12` | `1.1.13` |
| [@radix-ui/react-visually-hidden](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/visually-hidden) | `1.2.6` | `1.2.7` |


Updates `@radix-ui/react-accordion` from 1.2.14 to 1.2.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/accordion/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/accordion)

Updates `@radix-ui/react-alert-dialog` from 1.1.17 to 1.1.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/alert-dialog/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/alert-dialog)

Updates `@radix-ui/react-aspect-ratio` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/aspect-ratio/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/aspect-ratio)

Updates `@radix-ui/react-avatar` from 1.2.0 to 1.2.1
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/avatar/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/avatar)

Updates `@radix-ui/react-checkbox` from 1.3.5 to 1.3.6
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/checkbox/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/checkbox)

Updates `@radix-ui/react-context-menu` from 2.3.1 to 2.3.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/context-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/context-menu)

Updates `@radix-ui/react-dialog` from 1.1.17 to 1.1.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dialog)

Updates `@radix-ui/react-dropdown-menu` from 2.1.18 to 2.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dropdown-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dropdown-menu)

Updates `@radix-ui/react-hover-card` from 1.1.17 to 1.1.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/hover-card/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/hover-card)

Updates `@radix-ui/react-label` from 2.1.10 to 2.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/label/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/label)

Updates `@radix-ui/react-menubar` from 1.1.18 to 1.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/menubar/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/menubar)

Updates `@radix-ui/react-navigation-menu` from 1.2.16 to 1.2.17
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/navigation-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/navigation-menu)

Updates `@radix-ui/react-popover` from 1.1.17 to 1.1.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popover/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popover)

Updates `@radix-ui/react-progress` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/progress/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/progress)

Updates `@radix-ui/react-radio-group` from 1.4.1 to 1.4.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radio-group/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radio-group)

Updates `@radix-ui/react-scroll-area` from 1.2.12 to 1.2.13
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/scroll-area)

Updates `@radix-ui/react-select` from 2.3.1 to 2.3.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/select/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/select)

Updates `@radix-ui/react-separator` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/separator/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/separator)

Updates `@radix-ui/react-slider` from 1.4.1 to 1.4.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slider/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slider)

Updates `@radix-ui/react-switch` from 1.3.1 to 1.3.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/switch/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/switch)

Updates `@radix-ui/react-tabs` from 1.1.15 to 1.1.16
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tabs/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tabs)

Updates `@radix-ui/react-toggle-group` from 1.1.13 to 1.1.14
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/toggle-group/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/toggle-group)

Updates `@radix-ui/react-tooltip` from 1.2.10 to 1.2.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tooltip/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tooltip)

Updates `@radix-ui/react-arrow` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/arrow/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/arrow)

Updates `@radix-ui/react-collapsible` from 1.1.14 to 1.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/collapsible/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/collapsible)

Updates `@radix-ui/react-collection` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/collection/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/collection)

Updates `@radix-ui/react-dismissable-layer` from 1.1.13 to 1.1.14
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dismissable-layer/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dismissable-layer)

Updates `@radix-ui/react-focus-scope` from 1.1.10 to 1.1.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/focus-scope/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/focus-scope)

Updates `@radix-ui/react-menu` from 2.1.18 to 2.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/menu)

Updates `@radix-ui/react-popper` from 1.3.1 to 1.3.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popper/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popper)

Updates `@radix-ui/react-portal` from 1.1.12 to 1.1.13
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/portal/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/portal)

Updates `@radix-ui/react-primitive` from 2.1.6 to 2.1.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/primitive/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/primitive)

Updates `@radix-ui/react-roving-focus` from 1.1.13 to 1.1.14
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/roving-focus/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/roving-focus)

Updates `@radix-ui/react-toggle` from 1.1.12 to 1.1.13
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/toggle/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/toggle)

Updates `@radix-ui/react-visually-hidden` from 1.2.6 to 1.2.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/visually-hidden/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/visually-hidden)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-accordion"
  dependency-version: 1.2.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-alert-dialog"
  dependency-version: 1.1.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-aspect-ratio"
  dependency-version: 1.1.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-avatar"
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-checkbox"
  dependency-version: 1.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-context-menu"
  dependency-version: 2.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dialog"
  dependency-version: 1.1.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dropdown-menu"
  dependency-version: 2.1.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-hover-card"
  dependency-version: 1.1.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-label"
  dependency-version: 2.1.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-menubar"
  dependency-version: 1.1.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-navigation-menu"
  dependency-version: 1.2.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-popover"
  dependency-version: 1.1.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-progress"
  dependency-version: 1.1.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-radio-group"
  dependency-version: 1.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-scroll-area"
  dependency-version: 1.2.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-select"
  dependency-version: 2.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-separator"
  dependency-version: 1.1.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-slider"
  dependency-version: 1.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-switch"
  dependency-version: 1.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-tabs"
  dependency-version: 1.1.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-toggle-group"
  dependency-version: 1.1.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-tooltip"
  dependency-version: 1.2.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-arrow"
  dependency-version: 1.1.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-collapsible"
  dependency-version: 1.1.15
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-collection"
  dependency-version: 1.1.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dismissable-layer"
  dependency-version: 1.1.14
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-focus-scope"
  dependency-version: 1.1.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-menu"
  dependency-version: 2.1.19
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-popper"
  dependency-version: 1.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-portal"
  dependency-version: 1.1.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-primitive"
  dependency-version: 2.1.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-roving-focus"
  dependency-version: 1.1.14
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-toggle"
  dependency-version: 1.1.13
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-visually-hidden"
  dependency-version: 1.2.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
...

Signed-off-by: dependabot[bot] <support@github.com>
…op/nextjs-079d467345

deps(npm): bump the nextjs group with 13 updates
…op/linting-c76d3a9050

deps(npm): bump the linting group with 2 updates
…op/tailwind-339facddb1

deps(npm): bump the tailwind group with 16 updates
…op/radix-ui-ab63858dae

deps(npm): bump the radix-ui group with 35 updates
- The /attack-paths page (Attack Path Analysis — asset reachability scoring via
  the real useAttackPathScoring hook, 445 lines, production-complete) was built
  but had no sidebar entry, so users couldn't reach it. Wire it into
  Prioritization next to Exposure Chains (icon Waypoints) + route-permission.
  A pre-release orphan-route triage confirmed this is the only complete,
  real-data feature page that was unreachable (the rest are dashboard-stats
  facades or Coming-Soon stubs, deliberately left out).
- ValidationCoverageCard: guard sortBands(data.by_severity ?? []) so the card
  can't crash if the API omits by_severity while total > 0.
…ale scaffold

The app already detects locale (proxy → x-locale header → layout) and drives RTL
direction, but there was no translation layer — every string was hardcoded English.
This wires a dependency-free t() mechanism that can be filled in incrementally.

- src/lib/i18n.ts: getDictionary(locale) + translate(dict, key, fallback?, vars?)
  with `{var}` interpolation and en-fallback (a key missing only from a non-en
  catalog still renders sensible text). Catalogs: dictionaries/en.json + vi.json
  (ar falls back to en; its RTL is already handled).
- I18nProvider + useTranslation() — locale resolved server-side and threaded
  through layout → Providers so first paint matches the detected language.
- Pilot: sidebar group titles render via t() (English string as fallback, so
  sidebar-data.ts is unchanged and untranslated items degrade gracefully).
- Unit test: locale lookup, en-fallback, key-fallback, interpolation, ar→en,
  region-stripping, and RTL-still-from-locale.

Chosen custom-over-next-intl for a zero-dependency, fully-incremental foundation;
next-intl remains a clean future migration if ICU features are needed.
Bumps the minor-patch group with 11 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `10.62.0` | `10.63.0` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.80.0` | `7.81.0` |
| [recharts](https://github.com/recharts/recharts) | `3.9.0` | `3.9.2` |
| [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) | `2.10.40` | `2.10.42` |
| [caniuse-lite](https://github.com/browserslist/caniuse-lite) | `1.0.30001799` | `1.0.30001800` |
| [electron-to-chromium](https://github.com/Kilian/electron-to-chromium) | `1.5.380` | `1.5.387` |
| [fast-uri](https://github.com/fastify/fast-uri) | `3.1.2` | `3.1.3` |
| [oxc-resolver](https://github.com/oxc-project/oxc-resolver) | `11.21.3` | `11.23.0` |
| [tldts](https://github.com/remusao/tldts) | `7.4.5` | `7.4.6` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.62.0` | `8.62.1` |
| [webpack](https://github.com/webpack/webpack) | `5.108.1` | `5.108.4` |



Updates `@sentry/nextjs` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `react-hook-form` from 7.80.0 to 7.81.0
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](react-hook-form/react-hook-form@v7.80.0...v7.81.0)

Updates `recharts` from 3.9.0 to 3.9.2
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md)
- [Commits](recharts/recharts@v3.9.0...v3.9.2)

Updates `@apm-js-collab/tracing-hooks` from 0.10.0 to 0.10.1
- [Release notes](https://github.com/apm-js-collab/tracing-hooks/releases)
- [Changelog](https://github.com/apm-js-collab/tracing-hooks/blob/main/CHANGELOG.md)
- [Commits](apm-js-collab/tracing-hooks@tracing-hooks-v0.10.0...tracing-hooks-v0.10.1)

Updates `@opentelemetry/core` from 2.8.0 to 2.9.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.8.0...v2.9.0)

Updates `@opentelemetry/resources` from 2.8.0 to 2.9.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.8.0...v2.9.0)

Updates `@opentelemetry/sdk-trace-base` from 2.8.0 to 2.9.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.8.0...v2.9.0)

Updates `immer` from 10.2.0 to 11.1.11
- [Release notes](https://github.com/immerjs/immer/releases)
- [Commits](immerjs/immer@v10.2.0...v11.1.11)

Updates `@sentry/browser` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/browser-utils` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/core` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/feedback` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/node` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/node-core` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/opentelemetry` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/react` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/replay` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/replay-canvas` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/server-utils` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `@sentry/vercel-edge` from 10.62.0 to 10.63.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.62.0...10.63.0)

Updates `baseline-browser-mapping` from 2.10.40 to 2.10.42
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.10.40...v2.10.42)

Updates `caniuse-lite` from 1.0.30001799 to 1.0.30001800
- [Commits](browserslist/caniuse-lite@1.0.30001799...1.0.30001800)

Updates `electron-to-chromium` from 1.5.380 to 1.5.387
- [Changelog](https://github.com/Kilian/electron-to-chromium/blob/main/CHANGELOG.md)
- [Commits](Kilian/electron-to-chromium@v1.5.380...v1.5.387)

Updates `es-module-lexer` from 2.1.0 to 2.3.0
- [Release notes](https://github.com/guybedford/es-module-lexer/releases)
- [Commits](guybedford/es-module-lexer@2.1.0...2.3.0)

Updates `fast-uri` from 3.1.2 to 3.1.3
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.2...v3.1.3)

Updates `import-in-the-middle` from 3.2.0 to 3.3.0
- [Release notes](https://github.com/nodejs/import-in-the-middle/releases)
- [Changelog](https://github.com/nodejs/import-in-the-middle/blob/main/CHANGELOG.md)
- [Commits](nodejs/import-in-the-middle@import-in-the-middle-v3.2.0...import-in-the-middle-v3.3.0)

Updates `oxc-resolver` from 11.21.3 to 11.23.0
- [Release notes](https://github.com/oxc-project/oxc-resolver/releases)
- [Changelog](https://github.com/oxc-project/oxc-resolver/blob/main/CHANGELOG.md)
- [Commits](oxc-project/oxc-resolver@v11.21.3...v11.23.0)

Updates `tldts` from 7.4.5 to 7.4.6
- [Release notes](https://github.com/remusao/tldts/releases)
- [Changelog](https://github.com/remusao/tldts/blob/master/CHANGELOG.md)
- [Commits](remusao/tldts@v7.4.5...v7.4.6)

Updates `tldts-core` from 7.4.5 to 7.4.6
- [Release notes](https://github.com/remusao/tldts/releases)
- [Changelog](https://github.com/remusao/tldts/blob/master/CHANGELOG.md)
- [Commits](remusao/tldts@v7.4.5...v7.4.6)

Updates `typescript-eslint` from 8.62.0 to 8.62.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.62.1/packages/typescript-eslint)

Updates `webpack` from 5.108.1 to 5.108.4
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](webpack/webpack@v5.108.1...v5.108.4)

---
updated-dependencies:
- dependency-name: "@sentry/nextjs"
  dependency-version: 10.63.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: react-hook-form
  dependency-version: 7.81.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: recharts
  dependency-version: 3.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@apm-js-collab/tracing-hooks"
  dependency-version: 0.10.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/core"
  dependency-version: 2.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/resources"
  dependency-version: 2.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/sdk-trace-base"
  dependency-version: 2.9.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: immer
  dependency-version: 11.1.11
  dependency-type: indirect
  update-type: version-update:semver-major
  dependency-group: minor-patch
- dependency-name: "@sentry/browser"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/browser-utils"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/core"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/feedback"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node-core"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/opentelemetry"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/react"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/replay"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/replay-canvas"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/server-utils"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/vercel-edge"
  dependency-version: 10.63.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: baseline-browser-mapping
  dependency-version: 2.10.42
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: caniuse-lite
  dependency-version: 1.0.30001800
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: electron-to-chromium
  dependency-version: 1.5.387
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: es-module-lexer
  dependency-version: 2.3.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: fast-uri
  dependency-version: 3.1.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: import-in-the-middle
  dependency-version: 3.3.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: oxc-resolver
  dependency-version: 11.23.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: tldts
  dependency-version: 7.4.6
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tldts-core
  dependency-version: 7.4.6
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: typescript-eslint
  dependency-version: 8.62.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: webpack
  dependency-version: 5.108.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Completes the i18n MVP loop from the foundation (#222): users can now actually
pick a language. A LanguageSwitcher submenu in the profile dropdown lists the
supported locales (native names), checks the active one, sets the `locale`
cookie (which the proxy reads above Accept-Language), and reloads so the server
re-renders with the new x-locale. Its own label is translated (common.language),
demonstrating the t() path end-to-end.
fetchAllPages / fetchAllAssets stop at a hard maxPages cap (~50k rows) to avoid a
runaway loop, but silently returned the partial set — the success toast then
claimed "Exported N rows" as if complete, so a tenant with >50k rows exported an
incomplete CSV believing it was whole.

Both now invoke an onTruncated callback when the cap cuts the result short, and
the export handlers (assets, exposures, components, remediation) surface a
warning toast ("Export limited to the first N … — refine filters to export the
rest"). No truncation → no callback, unchanged behaviour. Adds fetchAllPages
unit tests for the truncated and non-truncated paths.
fix(export): warn when export-all is truncated at the page cap
…op/minor-patch-74c79b4d6f

deps(npm): bump the minor-patch group across 1 directory with 31 updates
feat(i18n): language switcher in the profile menu
Extends the i18n foundation (#222) + switcher (#224): the entire sidebar now
localizes, not just the group titles. Adds 95 nav.item.* entries to en + vi
(acronyms/technical terms — API, CI/CD, SBOM, SCIM, SAML, SIEM, MITRE, K8s — kept)
and a NavLabel component that renders each menu item's label via t() with the
English title as fallback (so untranslated items degrade gracefully). Also adds
a catalog-parity test guarding that en and vi keep identical, non-empty keys.

Switch to Tiếng Việt → the whole sidebar reads Bề mặt tấn công / Kho tài sản /
Phát hiện / Kiểm chứng / … Tooltips stay English for now (follow-up).
feat(i18n): translate all sidebar item labels (Vietnamese)
…crown-jewels)

coming-soon-page.tsx is part of the @/features/shared barrel yet imported
PageHeader FROM '@/features/shared' — a circular dependency through the barrel.
Under Turbopack that leaves some barrel exports (e.g. RiskScoreBadge) undefined
at module-init depending on load order, which crashed the crown-jewels table
cell with 'Element type is invalid ... got: undefined'.

Import PageHeader directly from './page-header' to break the cycle. No other
shared component self-imports the barrel.
…port

fix(shared): break barrel self-import cycle crashing /crown-jewels
…sset form

The asset deep-dive found the headline CTEM classification fields were shown but
not settable: the shared asset form hardcoded criticality='medium',
scope='internal', exposure='unknown' on create and never sent them on update —
even though the API accepts them. So an operator could not mark an asset
critical or set its exposure; those fields were backend-inference-only.

- AssetFormDialogShared now renders universal Criticality / Scope / Exposure
  selects (a responsive 3-col row) on every asset type, prefilled from the asset
  in edit mode and sensible defaults on create, and forwards them in the
  submit payload alongside owner_ref.
- asset-page.tsx create/update handlers read these from the form instead of
  hardcoding (create) / omitting (update). The updateAsset hook already forwards
  them.

Pairs with the backend ingest-seam fix (api #276): the scanner infers exposure/
classification on ingest, and humans can now review and override it in the UI.
tsc clean.
…ation

feat(assets): make criticality/scope/exposure editable on every asset form
The asset deep-dive found the identity/dedup pipeline was built end-to-end on the
backend (correlator enqueues reviews; approve/reject endpoints; useDedupReviews/
approveDedupReview/rejectDedupReview hooks all existed) but had ZERO UI consumers
— merges happened invisibly and operators only saw them after the fact in
Identity History. This ships the missing operator surface.

- DedupReviewPage: lists pending reviews (identity, keep asset + finding count,
  merge candidates + finding count, when flagged) with Merge / Keep-separate
  actions wired to the existing approve/reject endpoints; toast + SWR revalidate;
  AssetsWrite-gated; empty/loading/error states.
- Route /assets/duplicates (covered by the existing /assets/** permission wildcard).
- Sidebar: 'Duplicates' item under Asset Inventory (sidebar-route-consistency
  test green — the nav item resolves to a real route).

tsc + lint clean.
feat(assets): dedup review UI — approve/reject correlator-flagged merges
…ffolding

The asset deep-dive found a large dead mock tree shipping unused: the per-type
mock-data (~3.7k lines across 15 files), mock-relationships.ts (1.3k), the
unused AssetPageTemplate scaffold, and a getCachedAssetStats fetcher (zero
consumers) that was the only thing referencing the mock getAssetStats.

All verified unused: the real inventory hits live APIs (useAssets/useAssetStats
etc.), the only getMock* usage elsewhere is asset-groups' own stats, and tsc
caught + I removed the single latent consumer (getCachedAssetStats). Removed the
two barrel re-exports (features/assets + lib). tsc, lint, and the 49 asset
feature tests all green.

Net: -5,206 lines, smaller bundle graph, and no more mock tree misleading future
readers about what's real.
chore(assets): purge ~5.2k lines of dead asset mock-data + scaffolding
…one action (RFC-015 Phase 2)

Frontend for the backend remediation-groups API (api#288). A single patch that
fixes many findings can now be resolved in one click instead of closing each
finding.

- src/features/remediation-groups/: types, SWR hooks (useRemediationGroups +
  useResolveRemediationGroup), and the ResolveGroupDialog (outcome fix_applied
  default / resolved, optional note, large-bulk confirm).
- /remediations page: DataTable of groups (fix title, finding/asset counts,
  severity breakdown reusing the shared SeverityBadge), per-row 'Resolve all'
  gated by findings:remediation:write.
- Sidebar entry under Mobilization + route-permission entries.

Reuses shared primitives (PageHeader, DataTable, SeverityBadge) and the API
client (CSRF-safe post). Default outcome fix_applied → the next rescan verifies.

Tests: hook URL construction (incl. key URL-encoding). type-check + lint clean;
next build green (/remediations route registered).
feat(remediations): Remediations page — resolve a solution family in one action (RFC-015 Phase 2)
dependabot Bot and others added 29 commits July 27, 2026 10:44
Bumps the react group with 2 updates: [react](https://github.com/react/react/tree/HEAD/packages/react) and [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom).


Updates `react` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react)

Updates `react-dom` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react-dom)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: react-dom
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the nextjs group with 13 updates:

| Package | From | To |
| --- | --- | --- |
| [next](https://github.com/vercel/next.js) | `16.2.10` | `16.2.12` |
| [@next/bundle-analyzer](https://github.com/vercel/next.js/tree/HEAD/packages/next-bundle-analyzer) | `16.2.10` | `16.2.12` |
| [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `16.2.10` | `16.2.12` |
| [@next/env](https://github.com/vercel/next.js/tree/HEAD/packages/next-env) | `16.2.10` | `16.2.12` |
| [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) | `16.2.10` | `16.2.12` |
| [@next/swc-darwin-arm64](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/darwin-arm64) | `16.2.10` | `16.2.12` |
| [@next/swc-darwin-x64](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/darwin-x64) | `16.2.10` | `16.2.12` |
| [@next/swc-linux-arm64-gnu](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-arm64-gnu) | `16.2.10` | `16.2.12` |
| [@next/swc-linux-arm64-musl](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-arm64-musl) | `16.2.10` | `16.2.12` |
| [@next/swc-linux-x64-gnu](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-x64-gnu) | `16.2.10` | `16.2.12` |
| [@next/swc-linux-x64-musl](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/linux-x64-musl) | `16.2.10` | `16.2.12` |
| [@next/swc-win32-arm64-msvc](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/win32-arm64-msvc) | `16.2.10` | `16.2.12` |
| [@next/swc-win32-x64-msvc](https://github.com/vercel/next.js/tree/HEAD/crates/next-napi-bindings/npm/win32-x64-msvc) | `16.2.10` | `16.2.12` |


Updates `next` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](vercel/next.js@v16.2.10...v16.2.12)

Updates `@next/bundle-analyzer` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/packages/next-bundle-analyzer)

Updates `eslint-config-next` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/packages/eslint-config-next)

Updates `@next/env` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/packages/next-env)

Updates `@next/eslint-plugin-next` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/packages/eslint-plugin-next)

Updates `@next/swc-darwin-arm64` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/darwin-arm64)

Updates `@next/swc-darwin-x64` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/darwin-x64)

Updates `@next/swc-linux-arm64-gnu` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/linux-arm64-gnu)

Updates `@next/swc-linux-arm64-musl` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/linux-arm64-musl)

Updates `@next/swc-linux-x64-gnu` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/linux-x64-gnu)

Updates `@next/swc-linux-x64-musl` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/linux-x64-musl)

Updates `@next/swc-win32-arm64-msvc` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/win32-arm64-msvc)

Updates `@next/swc-win32-x64-msvc` from 16.2.10 to 16.2.12
- [Release notes](https://github.com/vercel/next.js/releases)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.12/crates/next-napi-bindings/npm/win32-x64-msvc)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.12
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/bundle-analyzer"
  dependency-version: 16.2.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: eslint-config-next
  dependency-version: 16.2.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/env"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/eslint-plugin-next"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-darwin-arm64"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-darwin-x64"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-arm64-gnu"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-arm64-musl"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-x64-gnu"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-linux-x64-musl"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-win32-arm64-msvc"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
- dependency-name: "@next/swc-win32-x64-msvc"
  dependency-version: 16.2.12
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: nextjs
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the linting group with 1 update: [prettier](https://github.com/prettier/prettier).


Updates `prettier` from 3.9.5 to 3.9.6
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.9.5...3.9.6)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: linting
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the radix-ui group with 53 updates:

| Package | From | To |
| --- | --- | --- |
| [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/accordion) | `1.2.16` | `1.2.20` |
| [@radix-ui/react-alert-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/alert-dialog) | `1.1.19` | `1.1.23` |
| [@radix-ui/react-aspect-ratio](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/aspect-ratio) | `1.1.11` | `1.1.15` |
| [@radix-ui/react-avatar](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/avatar) | `1.2.2` | `1.2.6` |
| [@radix-ui/react-checkbox](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/checkbox) | `1.3.7` | `1.3.11` |
| [@radix-ui/react-context-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/context-menu) | `2.3.3` | `2.3.7` |
| [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.19` | `1.1.23` |
| [@radix-ui/react-direction](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/direction) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dropdown-menu) | `2.1.20` | `2.1.24` |
| [@radix-ui/react-hover-card](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/hover-card) | `1.1.19` | `1.1.23` |
| [@radix-ui/react-label](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/label) | `2.1.11` | `2.1.15` |
| [@radix-ui/react-menubar](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/menubar) | `1.1.20` | `1.1.24` |
| [@radix-ui/react-navigation-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/navigation-menu) | `1.2.18` | `1.2.22` |
| [@radix-ui/react-popover](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popover) | `1.1.19` | `1.1.23` |
| [@radix-ui/react-progress](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/progress) | `1.1.12` | `1.1.16` |
| [@radix-ui/react-radio-group](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radio-group) | `1.4.3` | `1.4.7` |
| [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/scroll-area) | `1.2.14` | `1.2.18` |
| [@radix-ui/react-select](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/select) | `2.3.3` | `2.3.7` |
| [@radix-ui/react-separator](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/separator) | `1.1.11` | `1.1.15` |
| [@radix-ui/react-slider](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slider) | `1.4.3` | `1.4.7` |
| [@radix-ui/react-slot](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slot) | `1.3.0` | `1.3.3` |
| [@radix-ui/react-switch](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/switch) | `1.3.3` | `1.3.7` |
| [@radix-ui/react-tabs](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tabs) | `1.1.17` | `1.1.21` |
| [@radix-ui/react-toggle-group](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/toggle-group) | `1.1.15` | `1.1.19` |
| [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tooltip) | `1.2.12` | `1.2.16` |
| [@radix-ui/number](https://github.com/radix-ui/primitives/tree/HEAD/packages/core/number) | `1.1.2` | `1.1.3` |
| [@radix-ui/primitive](https://github.com/radix-ui/primitives/tree/HEAD/packages/core/primitive) | `1.1.5` | `1.1.7` |
| [@radix-ui/react-arrow](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/arrow) | `1.1.11` | `1.1.15` |
| [@radix-ui/react-collapsible](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/collapsible) | `1.1.16` | `1.1.20` |
| [@radix-ui/react-collection](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/collection) | `1.1.12` | `1.1.15` |
| [@radix-ui/react-compose-refs](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/compose-refs) | `1.1.3` | `1.1.5` |
| [@radix-ui/react-context](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/context) | `1.2.0` | `1.2.2` |
| [@radix-ui/react-dismissable-layer](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dismissable-layer) | `1.1.15` | `1.1.19` |
| [@radix-ui/react-focus-guards](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/focus-guards) | `1.1.4` | `1.1.6` |
| [@radix-ui/react-focus-scope](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/focus-scope) | `1.1.12` | `1.1.16` |
| [@radix-ui/react-id](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/id) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/menu) | `2.1.20` | `2.1.24` |
| [@radix-ui/react-popper](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popper) | `1.3.3` | `1.3.7` |
| [@radix-ui/react-portal](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/portal) | `1.1.13` | `1.1.17` |
| [@radix-ui/react-presence](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/presence) | `1.1.7` | `1.1.10` |
| [@radix-ui/react-primitive](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/primitive) | `2.1.7` | `2.1.10` |
| [@radix-ui/react-roving-focus](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/roving-focus) | `1.1.15` | `1.1.19` |
| [@radix-ui/react-toggle](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/toggle) | `1.1.14` | `1.1.18` |
| [@radix-ui/react-use-callback-ref](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-callback-ref) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-use-controllable-state](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-controllable-state) | `1.2.3` | `1.2.6` |
| [@radix-ui/react-use-effect-event](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-effect-event) | `0.0.3` | `0.0.5` |
| [@radix-ui/react-use-is-hydrated](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-is-hydrated) | `0.1.1` | `0.1.3` |
| [@radix-ui/react-use-layout-effect](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-layout-effect) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-use-previous](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-previous) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-use-rect](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-rect) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-use-size](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/use-size) | `1.1.2` | `1.1.4` |
| [@radix-ui/react-visually-hidden](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/visually-hidden) | `1.2.7` | `1.2.11` |
| [@radix-ui/rect](https://github.com/radix-ui/primitives/tree/HEAD/packages/core/rect) | `1.1.2` | `1.1.3` |


Updates `@radix-ui/react-accordion` from 1.2.16 to 1.2.20
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/accordion/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/accordion)

Updates `@radix-ui/react-alert-dialog` from 1.1.19 to 1.1.23
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/alert-dialog/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/alert-dialog)

Updates `@radix-ui/react-aspect-ratio` from 1.1.11 to 1.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/aspect-ratio/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/aspect-ratio)

Updates `@radix-ui/react-avatar` from 1.2.2 to 1.2.6
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/avatar/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/avatar)

Updates `@radix-ui/react-checkbox` from 1.3.7 to 1.3.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/checkbox/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/checkbox)

Updates `@radix-ui/react-context-menu` from 2.3.3 to 2.3.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/context-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/context-menu)

Updates `@radix-ui/react-dialog` from 1.1.19 to 1.1.23
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dialog)

Updates `@radix-ui/react-direction` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/direction/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/direction)

Updates `@radix-ui/react-dropdown-menu` from 2.1.20 to 2.1.24
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dropdown-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dropdown-menu)

Updates `@radix-ui/react-hover-card` from 1.1.19 to 1.1.23
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/hover-card/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/hover-card)

Updates `@radix-ui/react-label` from 2.1.11 to 2.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/label/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/label)

Updates `@radix-ui/react-menubar` from 1.1.20 to 1.1.24
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/menubar/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/menubar)

Updates `@radix-ui/react-navigation-menu` from 1.2.18 to 1.2.22
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/navigation-menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/navigation-menu)

Updates `@radix-ui/react-popover` from 1.1.19 to 1.1.23
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popover/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popover)

Updates `@radix-ui/react-progress` from 1.1.12 to 1.1.16
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/progress/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/progress)

Updates `@radix-ui/react-radio-group` from 1.4.3 to 1.4.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radio-group/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radio-group)

Updates `@radix-ui/react-scroll-area` from 1.2.14 to 1.2.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/scroll-area)

Updates `@radix-ui/react-select` from 2.3.3 to 2.3.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/select/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/select)

Updates `@radix-ui/react-separator` from 1.1.11 to 1.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/separator/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/separator)

Updates `@radix-ui/react-slider` from 1.4.3 to 1.4.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slider/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slider)

Updates `@radix-ui/react-slot` from 1.3.0 to 1.3.3
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slot/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slot)

Updates `@radix-ui/react-switch` from 1.3.3 to 1.3.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/switch/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/switch)

Updates `@radix-ui/react-tabs` from 1.1.17 to 1.1.21
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tabs/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tabs)

Updates `@radix-ui/react-toggle-group` from 1.1.15 to 1.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/toggle-group/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/toggle-group)

Updates `@radix-ui/react-tooltip` from 1.2.12 to 1.2.16
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tooltip/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tooltip)

Updates `@radix-ui/number` from 1.1.2 to 1.1.3
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/core/number/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/core/number)

Updates `@radix-ui/primitive` from 1.1.5 to 1.1.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/core/primitive)

Updates `@radix-ui/react-arrow` from 1.1.11 to 1.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/arrow/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/arrow)

Updates `@radix-ui/react-collapsible` from 1.1.16 to 1.1.20
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/collapsible/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/collapsible)

Updates `@radix-ui/react-collection` from 1.1.12 to 1.1.15
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/collection/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/collection)

Updates `@radix-ui/react-compose-refs` from 1.1.3 to 1.1.5
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/compose-refs/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/compose-refs)

Updates `@radix-ui/react-context` from 1.2.0 to 1.2.2
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/context/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/context)

Updates `@radix-ui/react-dismissable-layer` from 1.1.15 to 1.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dismissable-layer/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dismissable-layer)

Updates `@radix-ui/react-focus-guards` from 1.1.4 to 1.1.6
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/focus-guards/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/focus-guards)

Updates `@radix-ui/react-focus-scope` from 1.1.12 to 1.1.16
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/focus-scope/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/focus-scope)

Updates `@radix-ui/react-id` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/id/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/id)

Updates `@radix-ui/react-menu` from 2.1.20 to 2.1.24
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/menu/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/menu)

Updates `@radix-ui/react-popper` from 1.3.3 to 1.3.7
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popper/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popper)

Updates `@radix-ui/react-portal` from 1.1.13 to 1.1.17
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/portal/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/portal)

Updates `@radix-ui/react-presence` from 1.1.7 to 1.1.10
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/presence/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/presence)

Updates `@radix-ui/react-primitive` from 2.1.7 to 2.1.10
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/primitive/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/primitive)

Updates `@radix-ui/react-roving-focus` from 1.1.15 to 1.1.19
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/roving-focus/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/roving-focus)

Updates `@radix-ui/react-toggle` from 1.1.14 to 1.1.18
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/toggle/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/toggle)

Updates `@radix-ui/react-use-callback-ref` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-callback-ref/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-callback-ref)

Updates `@radix-ui/react-use-controllable-state` from 1.2.3 to 1.2.6
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-controllable-state/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-controllable-state)

Updates `@radix-ui/react-use-effect-event` from 0.0.3 to 0.0.5
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-effect-event/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-effect-event)

Updates `@radix-ui/react-use-is-hydrated` from 0.1.1 to 0.1.3
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-is-hydrated/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-is-hydrated)

Updates `@radix-ui/react-use-layout-effect` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-layout-effect/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-layout-effect)

Updates `@radix-ui/react-use-previous` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-previous/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-previous)

Updates `@radix-ui/react-use-rect` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-rect/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-rect)

Updates `@radix-ui/react-use-size` from 1.1.2 to 1.1.4
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/use-size/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/use-size)

Updates `@radix-ui/react-visually-hidden` from 1.2.7 to 1.2.11
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/visually-hidden/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/visually-hidden)

Updates `@radix-ui/rect` from 1.1.2 to 1.1.3
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/core/rect/CHANGELOG.md)
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/core/rect)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-accordion"
  dependency-version: 1.2.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-alert-dialog"
  dependency-version: 1.1.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-aspect-ratio"
  dependency-version: 1.1.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-avatar"
  dependency-version: 1.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-checkbox"
  dependency-version: 1.3.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-context-menu"
  dependency-version: 2.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dialog"
  dependency-version: 1.1.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-direction"
  dependency-version: 1.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dropdown-menu"
  dependency-version: 2.1.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-hover-card"
  dependency-version: 1.1.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-label"
  dependency-version: 2.1.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-menubar"
  dependency-version: 1.1.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-navigation-menu"
  dependency-version: 1.2.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-popover"
  dependency-version: 1.1.23
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-progress"
  dependency-version: 1.1.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-radio-group"
  dependency-version: 1.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-scroll-area"
  dependency-version: 1.2.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-select"
  dependency-version: 2.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-separator"
  dependency-version: 1.1.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-slider"
  dependency-version: 1.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-slot"
  dependency-version: 1.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-switch"
  dependency-version: 1.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-tabs"
  dependency-version: 1.1.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-toggle-group"
  dependency-version: 1.1.19
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-tooltip"
  dependency-version: 1.2.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/number"
  dependency-version: 1.1.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/primitive"
  dependency-version: 1.1.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-arrow"
  dependency-version: 1.1.15
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-collapsible"
  dependency-version: 1.1.20
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-collection"
  dependency-version: 1.1.15
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-compose-refs"
  dependency-version: 1.1.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-context"
  dependency-version: 1.2.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-dismissable-layer"
  dependency-version: 1.1.19
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-focus-guards"
  dependency-version: 1.1.6
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-focus-scope"
  dependency-version: 1.1.16
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-id"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-menu"
  dependency-version: 2.1.24
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-popper"
  dependency-version: 1.3.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-portal"
  dependency-version: 1.1.17
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-presence"
  dependency-version: 1.1.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-primitive"
  dependency-version: 2.1.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-roving-focus"
  dependency-version: 1.1.19
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-toggle"
  dependency-version: 1.1.18
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-callback-ref"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-controllable-state"
  dependency-version: 1.2.6
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-effect-event"
  dependency-version: 0.0.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-is-hydrated"
  dependency-version: 0.1.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-layout-effect"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-previous"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-rect"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-use-size"
  dependency-version: 1.1.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/react-visually-hidden"
  dependency-version: 1.2.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
- dependency-name: "@radix-ui/rect"
  dependency-version: 1.1.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: radix-ui
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…tes (#331)

Bumps the minor-patch group with 22 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `5.4.0` | `5.5.7` |
| [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `10.66.0` | `10.68.0` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.82.0` | `7.83.0` |
| [recharts](https://github.com/recharts/recharts) | `3.9.2` | `3.10.1` |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.61.1` | `1.62.0` |
| [happy-dom](https://github.com/capricorn86/happy-dom) | `20.11.0` | `20.11.1` |
| [@csstools/css-calc](https://github.com/csstools/postcss-plugins/tree/HEAD/packages/css-calc) | `3.2.1` | `3.3.0` |
| [@csstools/css-color-parser](https://github.com/csstools/postcss-plugins/tree/HEAD/packages/css-color-parser) | `4.1.9` | `4.1.10` |
| [@csstools/css-syntax-patches-for-csstree](https://github.com/csstools/postcss-plugins/tree/HEAD/packages/css-syntax-patches-for-csstree) | `1.1.6` | `1.1.7` |
| [@eslint-community/eslint-utils](https://github.com/eslint-community/eslint-utils) | `4.9.1` | `4.10.1` |
| [@sentry/bundler-plugins](https://github.com/getsentry/sentry-javascript) | `10.66.0` | `10.68.0` |
| [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) | `2.10.43` | `2.11.4` |
| [browserslist](https://github.com/browserslist/browserslist) | `4.28.6` | `4.28.7` |
| [electron-to-chromium](https://github.com/Kilian/electron-to-chromium) | `1.5.393` | `1.5.396` |
| [enhanced-resolve](https://github.com/webpack/enhanced-resolve) | `5.24.2` | `5.24.3` |
| [es-toolkit](https://github.com/toss/es-toolkit) | `1.49.0` | `1.50.0` |
| [flatted](https://github.com/WebReflection/flatted) | `3.4.2` | `3.4.3` |
| [own-keys](https://github.com/ljharb/own-keys) | `1.0.1` | `1.0.2` |
| [rollup](https://github.com/rollup/rollup) | `4.62.2` | `4.62.3` |
| [smol-toml](https://github.com/squirrelchat/smol-toml) | `1.7.0` | `1.7.1` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.64.0` | `8.65.0` |
| [webpack](https://github.com/webpack/webpack) | `5.108.4` | `5.109.0` |



Updates `@hookform/resolvers` from 5.4.0 to 5.5.7
- [Release notes](https://github.com/react-hook-form/resolvers/releases)
- [Commits](react-hook-form/resolvers@v5.4.0...v5.5.7)

Updates `@sentry/nextjs` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `react-hook-form` from 7.82.0 to 7.83.0
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](react-hook-form/react-hook-form@v7.82.0...v7.83.0)

Updates `recharts` from 3.9.2 to 3.10.1
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md)
- [Commits](recharts/recharts@v3.9.2...v3.10.1)

Updates `@playwright/test` from 1.61.1 to 1.62.0
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.61.1...v1.62.0)

Updates `happy-dom` from 20.11.0 to 20.11.1
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v20.11.0...v20.11.1)

Updates `@apm-js-collab/code-transformer` from 0.18.0 to 0.18.1
- [Release notes](https://github.com/nodejs/orchestrion-js/releases)
- [Changelog](https://github.com/nodejs/orchestrion-js/blob/main/CHANGELOG.md)
- [Commits](nodejs/orchestrion-js@code-transformer-v0.18.0...code-transformer-v0.18.1)

Updates `@apm-js-collab/code-transformer-bundler-plugins` from 0.6.2 to 0.7.1
- [Release notes](https://github.com/apm-js-collab/code-transformer-bundler-plugins/releases)
- [Changelog](https://github.com/apm-js-collab/code-transformer-bundler-plugins/blob/main/CHANGELOG.md)
- [Commits](apm-js-collab/code-transformer-bundler-plugins@code-transformer-bundler-plugins-v0.6.2...code-transformer-bundler-plugins-v0.7.1)

Updates `@csstools/css-calc` from 3.2.1 to 3.3.0
- [Changelog](https://github.com/csstools/postcss-plugins/blob/main/packages/css-calc/CHANGELOG.md)
- [Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/packages/css-calc)

Updates `@csstools/css-color-parser` from 4.1.9 to 4.1.10
- [Changelog](https://github.com/csstools/postcss-plugins/blob/main/packages/css-color-parser/CHANGELOG.md)
- [Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/packages/css-color-parser)

Updates `@csstools/css-syntax-patches-for-csstree` from 1.1.6 to 1.1.7
- [Changelog](https://github.com/csstools/postcss-plugins/blob/main/packages/css-syntax-patches-for-csstree/CHANGELOG.md)
- [Commits](https://github.com/csstools/postcss-plugins/commits/HEAD/packages/css-syntax-patches-for-csstree)

Updates `@eslint-community/eslint-utils` from 4.9.1 to 4.10.1
- [Release notes](https://github.com/eslint-community/eslint-utils/releases)
- [Commits](eslint-community/eslint-utils@v4.9.1...v4.10.1)

Updates `@opentelemetry/core` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.9.0...v2.10.0)

Updates `@opentelemetry/resources` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.9.0...v2.10.0)

Updates `@opentelemetry/sdk-trace` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.9.0...v2.10.0)

Updates `@opentelemetry/sdk-trace-base` from 2.9.0 to 2.10.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.9.0...v2.10.0)

Updates `@sentry/browser` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/browser-utils` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/bundler-plugins` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/core` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/feedback` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/node` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/node-core` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/opentelemetry` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/react` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/replay` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/replay-canvas` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/server-utils` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `@sentry/vercel-edge` from 10.66.0 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.66.0...10.68.0)

Updates `baseline-browser-mapping` from 2.10.43 to 2.11.4
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.10.43...v2.11.4)

Updates `browserslist` from 4.28.6 to 4.28.7
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](browserslist/browserslist@4.28.6...4.28.7)

Updates `electron-to-chromium` from 1.5.393 to 1.5.396
- [Changelog](https://github.com/Kilian/electron-to-chromium/blob/main/CHANGELOG.md)
- [Commits](Kilian/electron-to-chromium@v1.5.393...v1.5.396)

Updates `enhanced-resolve` from 5.24.2 to 5.24.3
- [Release notes](https://github.com/webpack/enhanced-resolve/releases)
- [Changelog](https://github.com/webpack/enhanced-resolve/blob/main/CHANGELOG.md)
- [Commits](webpack/enhanced-resolve@v5.24.2...v5.24.3)

Updates `es-toolkit` from 1.49.0 to 1.50.0
- [Release notes](https://github.com/toss/es-toolkit/releases)
- [Changelog](https://github.com/toss/es-toolkit/blob/main/CHANGELOG.md)
- [Commits](toss/es-toolkit@v1.49.0...v1.50.0)

Updates `flatted` from 3.4.2 to 3.4.3
- [Commits](WebReflection/flatted@v3.4.2...v3.4.3)

Updates `import-in-the-middle` from 3.3.1 to 3.3.2
- [Release notes](https://github.com/nodejs/import-in-the-middle/releases)
- [Changelog](https://github.com/nodejs/import-in-the-middle/blob/main/CHANGELOG.md)
- [Commits](nodejs/import-in-the-middle@import-in-the-middle-v3.3.1...import-in-the-middle-v3.3.2)

Updates `own-keys` from 1.0.1 to 1.0.2
- [Changelog](https://github.com/ljharb/own-keys/blob/main/CHANGELOG.md)
- [Commits](ljharb/own-keys@v1.0.1...v1.0.2)

Updates `playwright` from 1.61.1 to 1.62.0
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.61.1...v1.62.0)

Updates `playwright-core` from 1.61.1 to 1.62.0
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.61.1...v1.62.0)

Updates `rollup` from 4.62.2 to 4.62.3
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](rollup/rollup@v4.62.2...v4.62.3)

Updates `smol-toml` from 1.7.0 to 1.7.1
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](squirrelchat/smol-toml@v1.7.0...v1.7.1)

Updates `typescript-eslint` from 8.64.0 to 8.65.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/typescript-eslint)

Updates `webpack` from 5.108.4 to 5.109.0
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](webpack/webpack@v5.108.4...v5.109.0)

---
updated-dependencies:
- dependency-name: "@apm-js-collab/code-transformer"
  dependency-version: 0.18.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@apm-js-collab/code-transformer-bundler-plugins"
  dependency-version: 0.7.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@csstools/css-calc"
  dependency-version: 3.3.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@csstools/css-color-parser"
  dependency-version: 4.1.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@csstools/css-syntax-patches-for-csstree"
  dependency-version: 1.1.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@eslint-community/eslint-utils"
  dependency-version: 4.10.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@hookform/resolvers"
  dependency-version: 5.5.7
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/core"
  dependency-version: 2.10.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/resources"
  dependency-version: 2.10.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/sdk-trace"
  dependency-version: 2.10.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@opentelemetry/sdk-trace-base"
  dependency-version: 2.10.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@playwright/test"
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/browser"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/browser-utils"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/bundler-plugins"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/core"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/feedback"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/nextjs"
  dependency-version: 10.68.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/node-core"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/opentelemetry"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/react"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/replay"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/replay-canvas"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/server-utils"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: "@sentry/vercel-edge"
  dependency-version: 10.68.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: baseline-browser-mapping
  dependency-version: 2.11.4
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: browserslist
  dependency-version: 4.28.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: electron-to-chromium
  dependency-version: 1.5.396
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: enhanced-resolve
  dependency-version: 5.24.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: es-toolkit
  dependency-version: 1.50.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: flatted
  dependency-version: 3.4.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: happy-dom
  dependency-version: 20.11.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: import-in-the-middle
  dependency-version: 3.3.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: own-keys
  dependency-version: 1.0.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: playwright
  dependency-version: 1.62.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: playwright-core
  dependency-version: 1.62.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: react-hook-form
  dependency-version: 7.83.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: recharts
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: rollup
  dependency-version: 4.62.3
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: smol-toml
  dependency-version: 1.7.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: typescript-eslint
  dependency-version: 8.65.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: webpack
  dependency-version: 5.109.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The sidebar hid every destination behind a collapsible section, so the shape of
the product was invisible until you clicked: eight rows that each had to be
opened, and re-opened, to find out what was inside. Navigation you cannot see is
navigation you do not use.

Each group now renders as a quiet uppercase heading over always-visible items —
the pattern the user asked for, and the one Linear/Sentry/GitLab use for exactly
this reason. Nested subsections (Pentest, the Settings clusters) stay collapsible
because they are genuinely a level deeper.

The collapsed icon rail keeps the old per-section dropdown: a rail cannot show
60+ icons legibly, and a heading has nothing to label once the labels are hidden.

Verified: tsc 0 errors, eslint clean, prettier clean, 171 config/nav tests pass,
and the live dev server compiles and serves the route.

Known trade-off, worth a follow-up: Settings alone contributes ~30 items, so the
expanded sidebar is now long. The real fix is not to re-hide it but to move
Settings behind its own shell with a dedicated left nav (already noted as a
backlog item in the UI design review); this change makes that need obvious.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
…ved (#334)

Found while studying OASM's console against ours; none of them are UX gaps.

1. Silent data loss. The Add buttons on attack-surface external/internal/cloud
   built an object, pushed it onto local state and toasted 'added successfully'
   with NO API call anywhere in the file — while the page READ from useAssets.
   The asset was gone on the next reload. Each handler now calls createAsset and
   refetches; cloud creates 'cloud_account' because that is the type its own
   list queries, so the new row appears in the list that just confirmed it.

2. Copying an API key failed silently over plain HTTP. The page called
   navigator.clipboard.writeText directly, which is undefined outside a secure
   context — so on a LAN deployment over http:// the key was never copied and
   nothing said so. We already ship lib/clipboard.ts with an execCommand
   fallback for exactly this; use it.

3. Sorting a server-paginated table silently sorted only the visible page.
   #324 added manualPagination without manualSorting/manualFiltering, so
   tanstack kept sorting and filtering client-side over the one page it had.
   Clicking a column header appeared to sort 6330 findings and actually
   reordered 20. My regression; the findings page had been working around it
   with showSearch={false}.

Also: vitest's exclude used bare directory names, so a git worktree under
.claude/ dragged its own node_modules — and a second copy of the app — into
every local run: ~16,000 tests, 270s, and 274 phantom failures from Playwright
specs vitest cannot execute. Globbed the patterns. The suite is now 768 tests
in 11s, which is the difference between a signal and noise.

Verified: tsc 0 errors, eslint clean, 768/768 pass, and all four affected routes
compile and serve 200 on the live dev server.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
…336)

Two things the findings list could not do.

A filtered view could not be linked to. Severity, status, source, priority and
the search box were all component state, so the address bar read /findings no
matter what was on screen. Sharing a view meant describing the clicks, and a
reload threw the filters away.

Source was single-select, so 'everything from code scanning' was impossible to
ask — that spans sast and secret, and the control allowed one. The API has taken
a comma-separated list all along.

Filters now read and write the query string:

  /findings?severity=critical&sources=sast,secret&status=new

A parameter is omitted when it equals its default, so an unfiltered view stays a
clean /findings rather than a wall of redundant query string. replaceState, not
pushState: a filter is a refinement of the current view, and typing six
characters into search should not cost six presses of Back to escape.

useSyncExternalStore only subscribes to popstate, which replaceState does not
fire — so the hooks also emit and listen for a custom event. Without it the
address bar would update and nothing else on the page would notice.

The source control is now a grouped multi-select driven by the finding-source
catalog rather than a hardcoded JSX list. The hardcoded list had already
drifted: it omitted cspm, which live findings carry, so those findings could not
be filtered for at all. Clicking a category heading selects that whole group,
and the button names the group when the selection matches one exactly, so it
reads 'Source: Code Scanning' rather than 'Source: SAST +1'.

Fourteen tests cover the hooks, including the cases that make a shared link
survive contact with reality: a hand-edited page=abc falls back rather than
breaking the table, a stray trailing comma in sources is ignored, and unrelated
params such as assetId are preserved when a filter changes.

Verified: tsc clean, next lint clean, 28 tests green.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
…and #336 (#337)

Cancel on the scan detail page was gated on scans:write while the route it now
posts to, POST /pipeline-runs/{id}/cancel, requires pipelines:write. #335 moved
the button to a new endpoint and left the permission gate behind, so a
scans:write-only user saw an enabled button that answers 403.

Changing any filter destroyed the URL hash. writeSearch rebuilt the address from
pathname and query only, so /findings#evidence-3 lost its anchor the moment a
filter moved — and the anchor is often why the link was shared.

toggleSource closed over the render-scope array, so two toggles resolved against
the same snapshot lost the first. Now a functional update that reads the
previous value back out of the URL.

useUrlFilterNumber accepted anything Number() would parse: 2.5, 1e9, 0x10. A
page of 2.5 reaches the API as garbage. The first attempt at this guard used
Number.isInteger, which is no defence — 0x10 parses to a perfectly good 16. My
own test caught it. The check is now a decimal-digit regex on the raw string.

Six regression tests, one per defect plus the two 'still works' cases.

Verified: tsc clean, eslint 0 errors, 788 tests across 48 files green.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
… of a copy (#351)

The notification event-type list was maintained by hand here, against
integration.AllEventTypes() in the api. The copies drifted, and six event
types the outbox routes — sla_breach, finding_assigned, approval_requested,
approval_approved, approval_rejected, workflow_notification — had no checkbox,
so no operator could switch them on.

Deletes ALL_NOTIFICATION_EVENT_TYPES, DEFAULT_ENABLED_EVENT_TYPES,
EVENT_CATEGORY_LABELS and the client-side module filter, and reads the catalog
from GET /api/v1/me/event-types instead.

NotificationEventType and NotificationEventCategory are widened to string
rather than deleted. They are used as types by other modules, and narrowing
them to a union is what made this a two-source problem in the first place: a
value the server sends would fail to typecheck here purely because this file
had not caught up.

Three other things on this surface were already broken, not just drifting:

- The dialogs that actually pick event types fetched /api/v1/me/event-types,
  which does not exist — it 404s against a running server. They rendered zero
  checkboxes and no error. Their shape came from a stale OpenAPI entry.
- They also stored the fetched `id` while the outbox matches on the slug, so
  anything they did save would have routed nothing.
- EVENT_CATEGORY_LABELS had no entry for the approval or workflow categories,
  so `EVENT_CATEGORY_LABELS[cat].replace(...)` on a channel routing an approval
  event threw on undefined. #399 makes approval_requested default-on, which
  would have started crashing the channel list for backfilled tenants.

The add and edit dialogs now share one EventTypeSelector rather than each
rendering their own grid. It shows placeholders in flight, an explicit empty
state, and on failure keeps the channel's existing selection visible and
editable — previously a slow or failed request looked identical to "this
workspace has no event types", which invites saving over your own routing.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
Bumps the react group with 2 updates: [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom).


Updates `@types/react` from 19.2.17 to 19.2.18
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@types/react-dom` from 19.2.3 to 19.2.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: "@types/react"
  dependency-version: 19.2.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the minor-patch group with 13 updates:

| Package | From | To |
| --- | --- | --- |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.62.0` | `1.62.1` |
| [@sentry/bundler-plugins](https://github.com/getsentry/sentry-javascript) | `10.68.0` | `10.69.0` |
| [acorn](https://github.com/acornjs/acorn) | `8.17.0` | `8.18.0` |
| [baseline-browser-mapping](https://github.com/web-platform-dx/baseline-browser-mapping) | `2.11.4` | `2.11.11` |
| [electron-to-chromium](https://github.com/Kilian/electron-to-chromium) | `1.5.396` | `1.5.399` |
| [enhanced-resolve](https://github.com/webpack/enhanced-resolve) | `5.24.3` | `5.24.5` |
| [flatted](https://github.com/WebReflection/flatted) | `3.4.3` | `3.4.4` |
| [playwright](https://github.com/microsoft/playwright) | `1.62.0` | `1.62.1` |
| [playwright-core](https://github.com/microsoft/playwright) | `1.62.0` | `1.62.1` |
| [tinyrainbow](https://github.com/tinylibs/tinyrainbow) | `3.1.0` | `3.1.1` |
| [tldts](https://github.com/remusao/tldts) | `7.4.9` | `7.4.10` |
| [tldts-core](https://github.com/remusao/tldts) | `7.4.9` | `7.4.10` |
| [webpack](https://github.com/webpack/webpack) | `5.109.0` | `5.109.2` |


Updates `@playwright/test` from 1.62.0 to 1.62.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.62.0...v1.62.1)

Updates `@sentry/bundler-plugins` from 10.68.0 to 10.69.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.69.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.68.0...10.69.0)

Updates `acorn` from 8.17.0 to 8.18.0
- [Commits](acornjs/acorn@8.17.0...8.18.0)

Updates `baseline-browser-mapping` from 2.11.4 to 2.11.11
- [Release notes](https://github.com/web-platform-dx/baseline-browser-mapping/releases)
- [Commits](web-platform-dx/baseline-browser-mapping@v2.11.4...v2.11.11)

Updates `electron-to-chromium` from 1.5.396 to 1.5.399
- [Changelog](https://github.com/Kilian/electron-to-chromium/blob/main/CHANGELOG.md)
- [Commits](Kilian/electron-to-chromium@v1.5.396...v1.5.399)

Updates `enhanced-resolve` from 5.24.3 to 5.24.5
- [Release notes](https://github.com/webpack/enhanced-resolve/releases)
- [Changelog](https://github.com/webpack/enhanced-resolve/blob/main/CHANGELOG.md)
- [Commits](webpack/enhanced-resolve@v5.24.3...v5.24.5)

Updates `flatted` from 3.4.3 to 3.4.4
- [Commits](WebReflection/flatted@v3.4.3...v3.4.4)

Updates `playwright` from 1.62.0 to 1.62.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.62.0...v1.62.1)

Updates `playwright-core` from 1.62.0 to 1.62.1
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.62.0...v1.62.1)

Updates `tinyrainbow` from 3.1.0 to 3.1.1
- [Release notes](https://github.com/tinylibs/tinyrainbow/releases)
- [Commits](tinylibs/tinyrainbow@v3.1.0...v3.1.1)

Updates `tldts` from 7.4.9 to 7.4.10
- [Release notes](https://github.com/remusao/tldts/releases)
- [Changelog](https://github.com/remusao/tldts/blob/master/CHANGELOG.md)
- [Commits](remusao/tldts@v7.4.9...v7.4.10)

Updates `tldts-core` from 7.4.9 to 7.4.10
- [Release notes](https://github.com/remusao/tldts/releases)
- [Changelog](https://github.com/remusao/tldts/blob/master/CHANGELOG.md)
- [Commits](remusao/tldts@v7.4.9...v7.4.10)

Updates `webpack` from 5.109.0 to 5.109.2
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](webpack/webpack@v5.109.0...v5.109.2)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.62.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: "@sentry/bundler-plugins"
  dependency-version: 10.69.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: acorn
  dependency-version: 8.18.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: minor-patch
- dependency-name: baseline-browser-mapping
  dependency-version: 2.11.11
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: electron-to-chromium
  dependency-version: 1.5.399
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: enhanced-resolve
  dependency-version: 5.24.5
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: flatted
  dependency-version: 3.4.4
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: playwright
  dependency-version: 1.62.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: playwright-core
  dependency-version: 1.62.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tinyrainbow
  dependency-version: 3.1.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tldts
  dependency-version: 7.4.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: tldts-core
  dependency-version: 7.4.10
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
- dependency-name: webpack
  dependency-version: 5.109.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…354)

The create form sent values no row could hold, so the feature had zero rows
on every tenant.

- control_type offered preventive/detective/corrective/compensating. The
  database CHECK allows segmentation/identity/runtime/detection/other —
  zero overlap, so every create failed.
- reduction_factor was entered and sent as a percent ("20"), but the column
  is DECIMAL(3,2) CHECK (>= 0 AND <= 1). The list then rendered a stored
  0.30 as "0.3%", so read and write disagreed with each other as well as
  with the database.
- Recording a test sent PATCH to a route registered as POST, so the Test
  button returned 405 and never worked.
- Every catch was bare (`catch {}`), so the API's error message was
  discarded and the user saw only "Failed to create control".

There was also no way to link a control to an asset, and the asset link is
the only thing that makes a control affect scoring — so even a control that
saved successfully did nothing.

Both vocabularies and the percent<->fraction conversion now live in
src/features/controls/vocabulary.ts, and the Selects are rendered from it,
so the form cannot offer a value the backend rejects. The form speaks
percent (which is how operators think about it) and converts at the API
boundary; whole percents map exactly onto the two-decimal storable set, so
the round trip is lossless.

The create dialog states plainly what a control does today: it caps a
protected asset's findings at P2 rather than P1. The percentage is recorded
and shown as rationale but does not scale the result further, and the copy
no longer implies otherwise.

Control-type badges lost their hardcoded light/dark colour pairs — a
category is not a risk level, and a neutral badge keeps the page out of the
dark-mode drift the UI review flagged.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
The gate answers 'what does this branch ADD', which only means something while
there is a branch to answer for. After the merge those lines are in the base,
so a push run re-asks a question nobody can act on.

Worse, it gets the wrong answer. On a push github.base_ref is empty, so the
expression falls back to develop and the gate diffs main against develop.
Release merges are squashed, so main is not an ancestor of develop, the
merge-base lands before the last release, and a month of already-gated code is
reported as newly added. That is what turned main red immediately after v0.4.0
merged, with a wall of violations none of which came from the release.

Now PR-only. That loses no coverage: every one of those lines was gated on the
PR that introduced it, which is the whole design of --new-from-rev style gates.

Not the docker-scan shape: that one was gated on event_name and therefore never
ran anywhere. Here the check has already run on the only event where it can be
acted upon, and the second run is the one producing a false answer.

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
…them (#357)

* feat(api-types): generate the API wire types instead of hand-writing them

The UI hand-wrote the shape of every API response. That is why the last round
of cross-repo bugs were all contract bugs: the event-type picker fetched
GET /api/v1/me/event-types, a path the OSS server never implemented, because
someone typed the interface from a stale spec rather than from the server.

The response shapes now come from the API's OpenAPI spec.

  src/lib/api/openapi/swagger.yaml    vendored from openctemio/api
    -> swagger2openapi                 (swaggo v1 emits Swagger 2.0;
                                        openapi-typescript v7 reads 3.x only)
    -> openapi-typescript
    -> src/lib/api/generated/api.types.ts

src/lib/api/generated/index.ts is a naming layer over that: the generated
schema keys are Go package paths (internal_infra_http_handler.FindingResponse)
and change whenever a handler type moves package. It declares no field shapes
of its own.

Converted — the six feature groups whose endpoints the server documents:

  asset-types    identical field sets; only optionality changed
  asset-groups   ApiAssetGroup declared tenant_id, which the server does not
                 return. ApiAssetGroupStats declared critical_groups and
                 high_risk_groups; neither exists. Anything reading them read
                 undefined.
  credentials    ApiIdentityExposure declared exposures?: ApiCredential[],
                 which that endpoint does not return — per-identity credentials
                 come from /credentials/identities/{identity}/exposures. It
                 also narrowed identity_type to a three-member union the server
                 does not promise.
  components     the UI was blind to depth, is_direct and parent_component_id —
                 the component's position in the dependency tree.
  scope          field sets already matched.
  findings       NOT converted, see below.

Left hand-written, with the reason recorded in each file:

  • GET /credentials/stats, /credentials/enums, /components,
    /components/{id}/assets and /components/{id}/vulnerabilities return
    map[string]any, so the spec describes them only as "an object". There is
    nothing to generate until those handlers get real response structs.
  • The other 35 *.types.ts files are UI-only — label maps, colour configs,
    filter state, view models behind a transformer — or their endpoints are
    among the 459 registered routes the server does not document at all.

Every generated response field is optional, because swaggo emits no `required`
list for response structs. That is the contract as the server states it, so the
defaults live at the API-to-view-model boundary (the transform*/mapper
functions) rather than in a type that asserts the fields are always present.
The asserting is exactly what let the UI declare fields the server never
returned.

That honesty immediately exposed a live bug: components/api/mapper.ts read
`(apiComponent.ecosystem as ComponentEcosystem) || 'active'` — 'active' is a
Status value, copy-pasted from the line below. TypeScript could not see it,
because after the cast every operand is a truthy string literal, so the
right-hand side is unreachable to the checker while still live at runtime. An
omitted ecosystem would have matched neither the label map nor the colour map.
Now 'npm', matching mapEcosystem()'s existing fallback.

`npm run check:api-types` fails when the generated file and the spec disagree,
and runs in CI unconditionally — it compares a committed file against a pure
function of another committed file, so it has the same answer on a push as on
a pull request.

* fix(api-types): stop prettier rewriting the vendored spec

The pre-commit hook formats *.yaml, and it reformatted src/lib/api/openapi/
swagger.yaml on the way in — 6,665 lines of block-sequence re-indentation. That
file is vendored from openctemio/api and has to stay a byte copy of what the
server generates, otherwise re-vendoring it looks like a contract change every
time and it cannot be diffed against the source of truth.

The generated api.types.ts stays prettier-formatted: scripts/generate-api-types.sh
runs prettier with --config so the committed output matches what format:check
expects.

* feat(api-types): check the vendored spec against openctemio/api

The in-repo drift check proves the generated types match the vendored spec. It
cannot prove the vendored spec still matches the server — which is the same
failure one hop out: the UI would be generating a faithful client for a server
that has moved on.

scripts/check-spec-vendored.sh diffs src/lib/api/openapi/swagger.yaml against
openctemio/api (raw.githubusercontent, branch from API_REF, default develop),
or against a local checkout via SPEC_SOURCE. A fetch failure exits 2 rather
than passing, since a check that cannot run must not report as passed.

NOT wired into ci.yml yet, deliberately. It compares against api's develop, and
the spec this branch vendors only lands there when api#407 merges — wiring it
now would ship a job that is red for a reason no UI change can fix, which is
the same "gate people route around" problem in reverse. The PR body carries the
exact job to add as a one-line follow-up once api#407 is in.

Verified both directions: exit 0 against the api#407 tree, exit 1 with a 46-line
diff against develop as it stands today.

* ci(api-types): wire the vendored-spec check now that api#407 is merged

The script landed unwired in the previous commit for a stated reason: it
compares against openctemio/api's develop, and the spec this branch vendors
had not merged there yet, so the job would have been red for something no UI
change could fix.

api#407 merged, develop's api/openapi/swagger.yaml is now byte-identical to
the vendored copy, and the check passes. Wiring it closes the outer loop: the
in-repo check proves the generated types match the vendored spec, and this
proves the vendored spec is still the server's.

---------

Co-authored-by: Nguyen Manh <0xmanhnv@gmail.com>
The tree is develop's, byte for byte. This merge exists only so the release
PR carries main in its ancestry — releases here are squash-merged, which
leaves main with a single parent and makes the NEXT release report dozens of
phantom conflicts. Verified before merging that no file exists in main but
not in develop, so -s ours discards nothing.
@0xmanhnv
0xmanhnv merged commit 99e4a49 into main Aug 4, 2026
15 checks passed
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