Skip to content

refactor(settings): adopt shared field composition - #631

Merged
zacjones93 merged 26 commits into
codex/ui-crew-organizer-coveragefrom
codex/settings-adopt-field-primitives
Jul 15, 2026
Merged

refactor(settings): adopt shared field composition#631
zacjones93 merged 26 commits into
codex/ui-crew-organizer-coveragefrom
codex/settings-adopt-field-primitives

Conversation

@zacjones93

@zacjones93 zacjones93 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • migrate the immutable profile email display to the shared Field compound
  • migrate the four athlete physical-stat proxy controls to Field while leaving canonical React Hook Form controls unchanged
  • strengthen route tests around generated label and description associations and preserve canonical metric submission behavior
  • refresh the generated UI inventory and LAT contract

Impact

This is a behavior-preserving consumer migration. Existing IDs, descriptions, disabled email semantics, unit conversion handlers, schemas, server payloads, and layout remain unchanged. The inventory now records two Start route consumers of Field and two fewer direct Label consumers.

Validation

  • focused profile and athlete route tests: 7 passed
  • full wodsmith-start suite: 141 files, 2,945 tests passed
  • wodsmith-start type-check
  • monorepo pre-push lint and type-check
  • scoped Biome check
  • UI inventory freshness
  • page coverage freshness
  • lat check
  • GitNexus pre-edit risk LOW for both route components; final delta risk LOW with no affected flows

Stack

Base: PR #630, codex/ui-crew-organizer-coverage.


Summary by cubic

Adopted shared Field composition in settings and introduced EmptyState and Metric from @repo/ui across Crew and Start to improve semantics and accessibility. Fixed mobile nav overflow and organizer/admin heading semantics while preserving behavior and data contracts.

  • Refactors

    • Composed Field.Root/Legend/... for judge rotation collections, scaling levels, registration option groups, profile email, and athlete mixed-unit proxy controls.
    • Replaced local empty states with EmptyState and preview counters with Metric in import flows, templates, heats, venues, invites, division mapping, and organizer panels; added app barrels components/ui/empty-state and components/ui/metric; updated UI inventory to include empty-state and metric.
    • Kept IDs, schemas, payloads, unit conversions, and layout unchanged; minor print/table sizing tweaks in exports.
  • Bug Fixes

    • Contained public header navigation within the mobile viewport; stabilized admin sidebar hydration and active link styles; ensured a single H1 on the Admin dashboard.
    • Derived crew demo event dates from the event timezone across DST; aligned token/series landmarks and organizer panel semantics.

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

Review in cubic

@coderabbitai

coderabbitai Bot commented Jul 10, 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: 26 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: 3eb80926-bfad-490d-91f9-4f8c20ca8959

📥 Commits

Reviewing files that changed from the base of the PR and between 1aecf06 and 6b02bc9.

📒 Files selected for processing (6)
  • apps/wodsmith-start/docs/ui-library-inventory.md
  • apps/wodsmith-start/src/routes/_protected/settings/athlete/index.tsx
  • apps/wodsmith-start/src/routes/_protected/settings/profile/index.tsx
  • apps/wodsmith-start/test/routes/settings/athlete.test.tsx
  • apps/wodsmith-start/test/routes/settings/profile.test.tsx
  • lat.md/auth.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/settings-adopt-field-primitives

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.

@zacjones93

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 10, 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.

@zacjones93

Copy link
Copy Markdown
Contributor Author

Independent review receipt for exact head 6b02bc9\n\nVerdict: LGTM — no blocking findings in the pinned six-file PR delta.\n\nVerified:\n- GitHub reports exactly the six intended files: two settings routes, their two focused test files, generated UI inventory, and LAT auth contract. No shared primitive, app adapter, schema, server function, or submission code changed.\n- Profile migrates only the immutable email display to Field through the existing Start adapter. The stable profile-email id, generated description id, disabled semantics, value, accessible label and description, layout spacing, and payload exclusion are preserved.\n- Athlete migrates exactly four proxy controls: imperial feet, imperial inches, imperial pounds, and metric kilograms. Metric height remains the canonical heightCm FormField, and all other RHF FormField controls remain unchanged.\n- Proxy values, onChange/onBlur handlers, conversion functions, hydration, schema, server call, and canonical submission payload are unchanged.\n- Focused tests assert consumer-visible accessibility associations and retain hydration/submission behavior without coupling to Field internals: 7/7 passed locally.\n- Wodsmith Start type-check passed locally. UI inventory freshness, page coverage freshness, lat check, git diff --check, and scoped source Biome checks passed.\n- Generated inventory counts are consistent: Field route consumers 0 to 2 and direct Label route consumers 40 to 38. LAT references resolve and accurately describe the preserved boundary.\n- GitNexus compare reports LOW risk and 0 affected execution flows. The local graph index is stale relative to this one-commit consumer delta, and MCP graph reads currently hit a LadybugDB storage-version mismatch; this does not change the diff-based review conclusion.\n- CodeRabbit status is green but its substantive review was rate-limited; there are no CodeRabbit findings.\n\nCI at review time: builds, lints, one E2E shard, crew demo E2E, DB typecheck, GitGuardian, stack, and CodeRabbit are green. The second E2E shard plus Start/Crew typecheck and Start tests are still running, so final merge readiness remains gated on those checks.

@zacjones93 zacjones93 closed this Jul 15, 2026
@zacjones93
zacjones93 merged commit d6316c1 into codex/ui-crew-organizer-coverage Jul 15, 2026
53 of 144 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