Skip to content

fix(start): correct organizer panel semantics - #640

Merged
zacjones93 merged 13 commits into
codex/ui-crew-token-series-coveragefrom
codex/empty-state-semantic-fixes
Jul 15, 2026
Merged

fix(start): correct organizer panel semantics#640
zacjones93 merged 13 commits into
codex/ui-crew-token-series-coveragefrom
codex/empty-state-semantic-fixes

Conversation

@zacjones93

@zacjones93 zacjones93 commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • replace the organizer check-in page's empty-state adapter with a route-owned instructional card
  • expose the kiosk launcher as a real new-tab link with noopener noreferrer and an h2 page heading
  • render the organizer results load-failure branch as a destructive alert with a real retry action wired to the existing router invalidation flow
  • keep true no-event empty states, route loaders, permissions, score data, and mutation behavior unchanged
  • document and test the semantic distinctions in LAT

Why

The check-in screen is instructional content, not an empty collection, and the missing score-entry-data branch is an actionable error, not an empty state. Correcting those categories before the broader EmptyState migration prevents the shared abstraction from encoding the wrong semantics.

Stack

Validation

  • focused organizer semantics + capability/data preservation: 9 tests passed
  • full WODsmith Start suite: 145 files / 2,957 tests passed
  • WODsmith Start type-check
  • targeted Biome check (one unchanged pre-existing non-null assertion warning in the results loader)
  • full pre-push monorepo lint and type-check
  • lat check
  • git diff --check

Summary by cubic

Corrects organizer panel semantics and aligns empty states with shared UI primitives. Adds a compact @repo/ui/metric pattern and migrates summary previews; cleans up Start admin headings and link hydration.

  • Bug Fixes

    • Check-in uses CheckInInstructions with an h2 and safe new‑tab kiosk link.
    • Results failures use ResultsLoadError with a working router‑invalidate retry.
    • Start admin: stabilized sidebar link state/hydration, set a single h1 on the dashboard, and fixed demo competitions headings.
  • Refactors

    • Adopted @repo/ui/empty-state across organizer UIs; OrganizerEmptyState now composes it and preserves actions.
    • Introduced @repo/ui/metric; migrated import/preview summaries (combined imports, volunteers, heats, templates, copy‑prior‑event) and added a Storybook story.
    • Kept true empty states, loaders, permissions, and score‑entry behavior unchanged; added focused tests and captured Start admin evidence.

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

Review in cubic

@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: 16 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: ebf7941d-0732-4389-9897-08cbf151ff86

📥 Commits

Reviewing files that changed from the base of the PR and between 8717ec9 and 21f62cd.

📒 Files selected for processing (6)
  • apps/wodsmith-start/src/routes/compete/organizer/$competitionId/-components/check-in-instructions.tsx
  • apps/wodsmith-start/src/routes/compete/organizer/$competitionId/-components/results-load-error.tsx
  • apps/wodsmith-start/src/routes/compete/organizer/$competitionId/check-in.tsx
  • apps/wodsmith-start/src/routes/compete/organizer/$competitionId/results.tsx
  • apps/wodsmith-start/test/routes/compete/organizer-semantic-panels.test.tsx
  • lat.md/organizer-dashboard.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/empty-state-semantic-fixes

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.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@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.

@zacjones93

Copy link
Copy Markdown
Contributor Author

Independent review: LGTM at exact base 8717ec9d70aca1f07bebad48d6e86160b81ffdda → head 21f62cd28191b0e47b9b2f9838272dbd84280910.

Verified the exact six-file diff and live review-thread state (no unresolved threads). The check-in landing now owns an instructional Card/labelled section, keeps the route-level h2, and exposes the unchanged kiosk URL/action as a real safe new-tab anchor (target="_blank", rel="noopener noreferrer"). The results data-missing branch is a destructive role="alert" with an h3 under the existing h2; its retry invokes the supplied action, and the route wires that directly to the existing router.invalidate(). True no-event OrganizerEmptyState branches, loaders, permission gates, event selection, and score/save/publish flows are unchanged.

The local component APIs are narrowly route-owned and children/prop semantics are appropriate. Tests prove labelled-region/h2 semantics, preserved guidance and exact kiosk href/new-tab safety, alert announcement/content, and one retry action invocation. LAT leaves/refs are unique and lat check passes.

Local validation: focused 2/2; full wodsmith-start 2,957/2,957; Start type-check; changed-file Biome (only the pre-existing non-null-assertion warning at results.tsx:81); git diff --check; lat check. GitNexus reports LOW blast radius and no affected execution processes. CI was still finishing at comment time; completed build/lint/E2E shards were green.

@zacjones93 zacjones93 closed this Jul 15, 2026
@zacjones93
zacjones93 merged commit d6316c1 into codex/ui-crew-token-series-coverage Jul 15, 2026
42 of 64 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