Skip to content

Conversation

@kotAPI
Copy link
Collaborator

@kotAPI kotAPI commented Sep 13, 2025

This release adds tests around the codebase, improves API support across multiple components, introduces new features like Steps + Minimap and roving focus in CheckboxGroups, while cleaning up builds, docs, and accessibility.

✨ Features

  • Added roving focus support for CheckboxGroups.
  • Improved RadioGroup behavior and accessibility.
  • Enhanced Select component behavior.
  • Introduced Steps + Minimap basic implementation.
  • Refactored multiple components to support forwardRef:
    • RadioGroup, ToggleGroup, Splitter, Table, Tabs, ContextMenu, Collapsible, DataList, Code, BlockQuote, Badge, Card, Avatar, VisuallyHidden.

🧪 Tests & Accessibility

  • Expanded a11y test coverage: axe-core, Accordion, Slider, RadioGroup, AlertDialog, Dialog, Primitive asChild, and SSR hydration scenarios.
  • Added portal test utilities for Dialog/AlertDialog.
  • Stabilized and silenced noisy test warnings.
  • Enforced global test coverage thresholds.
  • Parallelized Jest test runs with sharding for faster feedback.

🛠 Fixes & Refactors

  • Fixed SelectPrimitiveItemProps export typing.
  • Refined NavigationMenu typing.
  • Increased Rollup build memory limit and excluded Storybook files from builds.
  • Silenced “Primitive asChild” warnings in tests.

📚 Docs & Chores

  • Added CodeRabbit sponsor hero to docs.
  • Added Changeset workflow for release management.
  • Improved WCAG tree navigation support.
  • Minor styling fixes and dark mode improvements.
  • Updated Toggle API: onChangeonPressedChange.

Summary by CodeRabbit

  • New Features
    • Roving focus for CheckboxGroups; improved RadioGroup accessibility/behavior; enhanced Select interactions; initial Steps with Minimap; broad forwardRef support.
  • Bug Fixes
    • Fixed Select item props export typing; refined NavigationMenu typing.
  • Refactor
    • Toggle API renamed from onChange → onPressedChange (migration required).
  • Tests
    • Expanded a11y coverage, portal test utilities, silenced noisy warnings, enforced coverage, enabled Jest sharding.
  • Chores
    • Added changeset/workflow and CI build job; increased build memory and excluded Storybook from builds; docs/styling tweaks.

@changeset-bot
Copy link

changeset-bot bot commented Sep 13, 2025

🦋 Changeset detected

Latest commit: e42b205

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@radui/ui Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 13, 2025

Walkthrough

Adds a new Changeset documenting feature, test/a11y, fix/refactor, and docs changes and adds a CI build job; introduces a public API breaking change: Toggle prop renamed from onChange to onPressedChange.

Changes

Cohort / File(s) Summary
Changeset / Release notes
.changeset/fluffy-ties-decide.md
Adds release notes describing new features (roving focus, RadioGroup/Select improvements, Steps+Minimap, forwardRef across many components), tests & accessibility updates (axe-core, portal utils, coverage thresholds, Jest sharding), fixes/refactors (typing, build config), docs/chores, and documents the Toggle API rename.
CI workflow
.github/workflows/test.yml
Adds a new build job (depends on test) that checks out code, sets up Node 20, installs deps, runs npm run build:rollup, and uploads dist as an artifact for pushes to main. Updates workflow path filters for triggers (.changeset/**, .github/workflows/**) and minor formatting.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as Developer (push/pr)
  participant GH as GitHub Actions
  participant Test as test job
  participant Build as build job
  participant Repo as Repository
  participant Artifact as Artifact Store

  Dev->>GH: push / pull_request (paths filtered)
  GH->>Test: run job `test`
  Test-->>GH: success
  GH->>Build: run job `build` (needs: test)
  Build->>Repo: actions/checkout
  Build->>Build: setup-node (Node 20, npm cache)
  Build->>Build: npm ci
  Build->>Build: npm run build:rollup
  alt push to main
    Build->>Artifact: upload dist (radui-ui-dist)
  else other events
    Note right of Build: upload skipped
  end
  Build-->>GH: job complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

release

Suggested reviewers

  • GoldGroove06

Poem

I twitch my whiskers, hop with glee—
A Changeset popped for all to see.
Toggles renamed, workflows hum,
Tests and docs and forwardRef come.
I bury carrots in each line—🥕🐇

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "Release 0.1.0" is concise and directly reflects the primary purpose of this changeset (publishing version 0.1.0), so it accurately relates to the PR contents; however it is generic and does not call out notable items like the breaking Toggle onChange→onPressedChange rename or major accessibility/test updates.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release/0.1.0

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
.changeset/fluffy-ties-decide.md (4)

16-22: Document test infra knobs (coverage thresholds, sharding).

Add concrete values or a pointer (CONTRIBUTING.md) for:

  • global coverage thresholds,
  • how sharding is configured/invoked (env vars, CI matrix).

Apply:

@@
- - Enforced **global test coverage thresholds**.
- - Parallelized Jest test runs with **sharding** for faster feedback.
+ - Enforced **global test coverage thresholds** (see CONTRIBUTING.md for exact numbers).
+ - Parallelized Jest test runs with **sharding** (docs in CONTRIBUTING.md: how to run locally and CI config).

24-27: Clarify type-surface impact for TS consumers.

If SelectPrimitiveItemProps export typing or NavigationMenu typing changes can cause compile errors, flag them as “type-affecting” and note any renames.

Apply:

@@
- - Fixed `SelectPrimitiveItemProps` export typing.
- - Refined **NavigationMenu typing**.
+ - Fixed `SelectPrimitiveItemProps` export typing (type-only change; may surface new, correct errors in consumer apps).
+ - Refined **NavigationMenu typing** (no runtime impact).

27-27: Unify quoting style around code identifiers.

Use backticks only: Primitive asChild. Avoid curly quotes around code.

- - Silenced “Primitive `asChild`” warnings in tests.
+ - Silenced Primitive `asChild` warnings in tests.

5-5: Tighten the opening summary for scannability.

Minor copy edit to front-load the most impactful items.

-This release adds tests around the codebase, improves API support across multiple components, introduces new features like Steps + Minimap and roving focus in CheckboxGroups, while cleaning up builds, docs, and accessibility.
+This release introduces new features (Steps + Minimap, roving focus in CheckboxGroup), adds forwardRef across components, expands a11y/tests, and cleans up builds and docs.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between af5edbf and 93ebcd3.

📒 Files selected for processing (1)
  • .changeset/fluffy-ties-decide.md (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: coverage
🔇 Additional comments (2)
.changeset/fluffy-ties-decide.md (2)

26-26: Confirm CI/build memory settings are aligned with the changeset

Repo search found no references to NODE_OPTIONS, --max_old_space_size, or Rollup in CI configs — verify CI sets equivalent Node memory flags (or update CI) to match .changeset/fluffy-ties-decide.md and prevent flaky builds.


1-3: Frontmatter OK — @radui/ui exists and minor bump will move 0.0.47 → 0.1.0.
Root package.json reports @radui/ui@0.0.47, so no frontmatter change is required; changeset enumeration failed due to a search (fd) error — re-run verification to list all .changeset files if you want full confirmation.

@github-actions
Copy link
Contributor

Coverage

This report compares the PR with the base branch. “Δ” shows how the PR affects each metric.

Metric PR Δ
Statements 88.42% +0.00%
Branches 63.37% +0.00%
Functions 72.98% +0.00%
Lines 87.32% +0.00%

Coverage improved or stayed the same. Great job!

Run npm run coverage locally for detailed reports and target untested areas to raise these numbers.

@kotAPI kotAPI merged commit b471ddb into main Sep 13, 2025
10 checks passed
@kotAPI kotAPI deleted the release/0.1.0 branch September 13, 2025 13:46
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
.changeset/fluffy-ties-decide.md (2)

5-5: Singularize “CheckboxGroups” → “CheckboxGroup”.

Keep naming consistent with the component.

-… roving focus in CheckboxGroups, while cleaning …
+… roving focus in CheckboxGroup, while cleaning …

13-15: Optional: alphabetize the forwardRef list for scanability.

Minor readability win; no functional impact.

🧹 Nitpick comments (5)
.github/workflows/test.yml (4)

53-60: Pin Actions to commit SHAs for supply-chain hardening.

actions/checkout and actions/setup-node are versioned by tag; prefer pinning to a specific commit SHA with a comment indicating the tag.

Example:

-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v4
+        # pin: 3df4b4… (v4)
-      - name: Setup Node.js
-        uses: actions/setup-node@v4
+      - name: Setup Node.js
+        uses: actions/setup-node@v4
+        # pin: 6f234a… (v4)

Also applies to: 74-81


43-68: Add explicit job timeouts to prevent hanging runs.

CI stability: set timeout-minutes on jobs to fail fast on stuck tests.

   test:
     name: Jest (${{ matrix.shard }}/${{ matrix.total }})
     runs-on: ubuntu-latest
+    timeout-minutes: 20

85-86: Ensure the Rollup memory increase is effective in CI.

If the memory bump was done via NODE_OPTIONS locally, mirror it here to avoid sporadic OOMs.

-      - name: Build package
-        run: npm run build:rollup
+      - name: Build package
+        env:
+          NODE_OPTIONS: --max_old_space_size=4096
+        run: npm run build:rollup

If this is already handled inside the npm script, ignore.


88-96: Optional: publish PR build artifacts for reviewer QA.

Keeping upload gated to main is safe; consider adding a second upload step for PRs with short retention to ease manual verification.

       # Upload dist only on pushes to main (skip for PRs)
       - name: Upload dist artifact
         if: github.event_name == 'push' && github.ref == 'refs/heads/main'
         uses: actions/upload-artifact@v4
         with:
           name: radui-ui-dist
           path: dist
           if-no-files-found: error
           retention-days: 2
+
+      - name: Upload dist artifact (PR preview)
+        if: github.event_name == 'pull_request'
+        uses: actions/upload-artifact@v4
+        with:
+          name: radui-ui-dist-pr
+          path: dist
+          if-no-files-found: error
+          retention-days: 1
.changeset/fluffy-ties-decide.md (1)

44-50: Tiny formatting nit in the snippet.

There appears to be extra trailing spaces after “// After”. Clean up to avoid copy/paste noise.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 93ebcd3 and e42b205.

📒 Files selected for processing (2)
  • .changeset/fluffy-ties-decide.md (1 hunks)
  • .github/workflows/test.yml (5 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-12-12T08:34:33.079Z
Learnt from: decipher-cs
PR: rad-ui/ui#417
File: src/components/ui/Dropdown/Dropdown.stories.tsx:43-50
Timestamp: 2024-12-12T08:34:33.079Z
Learning: Ensure to verify existing ARIA attributes in components before suggesting additions during code reviews, especially in the `Dropdown.Trigger` component in `src/components/ui/Dropdown/Dropdown.stories.tsx`.

Applied to files:

  • .changeset/fluffy-ties-decide.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Build
  • GitHub Check: coverage
🔇 Additional comments (1)
.changeset/fluffy-ties-decide.md (1)

36-65: Confirm versioning policy: breaking change with a “minor” bump under 0.x.

This changeset declares a minor bump with BREAKING CHANGES. That’s acceptable for 0.x if your policy treats minor as breaking. Please confirm that’s intentional for 0.1.0 and documented for consumers.

branches: [ main ]
paths:
- 'src/**' # Only run when files in this directory change
- 'src/**'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Confirm path filters cover all workspaces and build inputs.

If this repo uses workspaces/monorepo folders (e.g., packages/**), tests/builds may be skipped unintentionally. Verify the filters align with your package.json workspaces and any config files Rollup/Jest read.

Run to check and compare against the filters:

Also applies to: 17-18, 22-22, 32-33


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== top-level dirs =="
ls -1

echo "== workspaces from package.json (if any) =="
if command -v jq >/dev/null 2>&1 && [ -f package.json ]; then
  jq -r '.workspaces // .packages // empty' package.json
fi

echo "== config files that affect build/test =="
fd -a -I -t f -g '.eslint*' -g '.prettier*' -g 'babel.config.*' -g 'jest.*' -g 'vitest.*' -g 'tsconfig.*' -g 'rollup*.config.*' -g 'postcss.config.js' -g 'vite.config.*' || true

Length of output: 1021


Update CI path filters to include repo-level configs and non-src inputs.

package.json has no workspaces; with the workflow limited to 'src/' changes to root config/support files won't trigger CI.
Observed root files/dirs: package.json, package-lock.json, jest.config.ts, tsconfig.json, playwright.config.ts, postcss.config.cjs, rollup.config.cjs, rollup-css.config.js, rollup-tokens.config.js, tailwind.config.js, build-components.cjs, scripts/, test-utils/, e2e/, styles/.
Action: edit .github/workflows/test.yml (the line with "- 'src/
'") to also match those files/dirs — e.g. add globs: 'package.json', 'package-lock.json', 'tsconfig.json', 'jest.config.ts', 'playwright.config.ts', 'rollup*.config.*', 'postcss.config.cjs', 'tailwind.config.js', 'scripts/', 'test-utils/', 'e2e/', 'styles/'.

🤖 Prompt for AI Agents
.github/workflows/test.yml around line 7: the workflow's paths filter only
includes 'src/**' so changes to repo-level config and other non-src files won't
trigger CI; update the paths list to include the recommended globs (e.g.
'package.json', 'package-lock.json', 'tsconfig.json', 'jest.config.ts',
'playwright.config.ts', 'postcss.config.cjs', 'tailwind.config.js',
'rollup*.config.*', plus directories like 'scripts/**', 'test-utils/**',
'e2e/**', 'styles/**') by replacing or extending the existing "- 'src/**'" entry
with all these entries so changes to those files will trigger the workflow.

@coderabbitai coderabbitai bot mentioned this pull request Sep 13, 2025
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.

2 participants