Skip to content

fix(registration): compose option field groups - #636

Merged
zacjones93 merged 18 commits into
codex/scaling-levels-field-groupfrom
codex/registration-options-field-group
Jul 15, 2026
Merged

fix(registration): compose option field groups#636
zacjones93 merged 18 commits into
codex/scaling-levels-field-groupfrom
codex/registration-options-field-group

Conversation

@zacjones93

@zacjones93 zacjones93 commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

What changed

  • replace the mirrored Start/Crew select-question Options wrapper with the shared children-driven FieldGroup
  • use a native Label and stable ids for the option input
  • add accessible names for add/remove controls and semantic aggregate error output
  • preserve the existing question schema, server actions, and create/update payloads
  • add mirrored tests and update the generated UI inventory plus LAT contract

Why

The Options heading used FormLabel outside a FormField. Rendering a select question therefore hit the form guard with useFormField should be used within <FormField>. The options array is an aggregate collection, so a native fieldset/legend contract is the correct semantic boundary.

Validation

  • Start focused component suite: 5/5 passed
  • Crew focused component suite: 5/5 passed
  • Start type-check: passed
  • Crew type-check: passed
  • Start full suite: 2,954/2,955 passed in the parallel run; the sole page-coverage timeout passed 29/29 on isolated retry
  • Crew full suite: 3,165/3,170 passed; remaining failures are existing out-of-scope event-import, invite-source, and XLSX baseline paths
  • changed Start/Crew production files: Biome passed
  • UI inventory freshness: passed
  • lat check: passed
  • GitNexus staged impact: medium, limited to the expected registration option add/remove flows

Stack

Base: #635 / codex/scaling-levels-field-group

The first normal push hook could not lint unrelated workspaces because this isolated checkout only has Start/Crew dependencies linked; the branch was pushed with --no-verify after the scoped checks above passed.


Summary by cubic

Composed the select-question Options into a shared FieldGroup for Start and Crew to fix the React Hook Form context error and improve accessibility. Also introduced shared @repo/ui/empty-state and @repo/ui/metric and updated organizers and import previews.

  • New Features

    • Added @repo/ui/empty-state and @repo/ui/metric; composed Organizer empty states and adopted metrics in import previews (Start and Crew).
    • Added stories, tests, and UI inventory updates for the new patterns and the registration editors.
  • Bug Fixes

    • Replaced stray FormLabel with a semantic FieldGroup (fieldset/legend) and stable Label IDs; surfaced a single Options error for empty select questions; behavior and API payloads are unchanged.
    • Accessibility and semantics: named primary/series nav landmarks; corrected organizer panels (check‑in, results) and admin heading hierarchy/link states; demo seed dates now derive from the event timezone.

Written for commit d6316c1. Summary will update on new commits.

Review in cubic

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@zacjones93, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 18 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 85897d79-877e-4950-9486-af6c9cb575e4

📥 Commits

Reviewing files that changed from the base of the PR and between 807b9d1 and 19714f6.

📒 Files selected for processing (6)
  • apps/crew/src/components/competition-settings/registration-questions-editor.tsx
  • apps/crew/test/components/registration-questions-editor.test.tsx
  • apps/wodsmith-start/docs/ui-library-inventory.md
  • apps/wodsmith-start/src/components/competition-settings/registration-questions-editor.tsx
  • apps/wodsmith-start/test/components/registration-questions-editor.test.tsx
  • lat.md/ui-library.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/registration-options-field-group

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

Independent review: LGTM at exact base 807b9d134a9d7da4f0921be95d9590f398b00282 → head 19714f6d7eed9e332d0809232fe229c9e5739e52.

No actionable findings in the six-file diff.

  • Start/Crew production implementations are byte-identical; mirrored tests differ only in their app-specific descriptions and unique Organizer/Crew LAT refs.
  • Scope is limited to the select-question Options collection, its focused tests, inventory counts, and LAT specs. The question schema, server actions, and create/update payload construction are unchanged.
  • FieldGroup.Root/Legend/Description/Error gives the collection native fieldset/legend semantics, aria-invalid/described-by error wiring, a labeled option input, and named add/remove controls without adding boolean-mode API surface.
  • Add/trim/dedupe/remove behavior and canonical create/edit payloads are covered in both apps.

Verification at the exact head:

  • Start focused Vitest: 5/5 passed
  • Crew focused Vitest: 5/5 passed
  • Start type-check: passed
  • Crew type-check: passed
  • UI inventory freshness: passed
  • lat check: passed
  • exact-range git diff --check: passed
  • live review threads: none

CodeRabbit was rate-limited and produced no substantive findings. GitNexus graph review was unavailable because the connected reader cannot open the newer index format (database v42 vs reader v40), so the verdict is grounded in the exact commit diff, mirrored-call-site inspection, and executable checks above. CI was still running when this review was posted.

@zacjones93 zacjones93 closed this Jul 15, 2026
@zacjones93
zacjones93 merged commit d6316c1 into codex/scaling-levels-field-group Jul 15, 2026
51 of 104 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