Skip to content

feat: phase 5.3 — contextual help tooltips for score modifier, LWW sync, proctoring#150

Merged
NesiciCoding merged 4 commits into
mainfrom
worktree-agent-a23f860f50c1d6b63
Jun 20, 2026
Merged

feat: phase 5.3 — contextual help tooltips for score modifier, LWW sync, proctoring#150
NesiciCoding merged 4 commits into
mainfrom
worktree-agent-a23f860f50c1d6b63

Conversation

@NesiciCoding

@NesiciCoding NesiciCoding commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Part of Phase 5 (UI/UX Polish) — sub-phase 5.3 Help & Documentation.

What

  • Promotes the existing HelpPopover from src/components/Tests/ to a shared src/components/ui/Tooltip.tsx; the old path now re-exports it so existing Tests imports keep working (no new dependency, no new abstraction).
  • Adds contextual "?" help affordances for three features that were only documented in DocsPage:
    • Score modifier — GradeStudent modifier field (re-pointed to the new help.* namespace).
    • LWW sync behaviour — Admin → Database tab (last-write-wins + offline pending-queue protection).
    • Proctoring flags — TestResults integrity panel and LiveMonitor.
  • New top-level help.* namespace (6 keys) translated in EN/NL/FR/DE/ES.

Verification

  • npm run typecheck clean
  • npm run lint 0 errors (pre-existing warnings only)
  • npm test 1609 passed / 103 files, i18n parity green

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features

    • Added contextual help popovers across the application to explain score modifiers, synchronization conflict handling, and proctoring/monitoring signals.
    • Included a help icon popover in key pages (e.g., grading, live monitoring, test results, and the database connection card).
  • Localization

    • Updated help/tooltip copy and reorganized translation keys, so the same guidance appears consistently in English, German, Spanish, French, and Dutch.

…nc, proctoring

Promote the Tests HelpPopover to a shared src/components/ui/Tooltip.tsx
(old path re-exports it) and add "?" help affordances for three complex
behaviours that were previously only explained in the docs page:

- Score modifier (GradeStudent) — re-pointed to the new help.* namespace
- LWW sync / offline pending-queue protection (Admin → Database)
- Proctoring flags (TestResults integrity panel + LiveMonitor)

New top-level help.* namespace (6 keys) added to all 5 locales.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@NesiciCoding, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 55 minutes and 17 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

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

🚦 How do rate limits work?

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

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, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9d0e8c7b-369f-40cf-9ec9-0011caac1a90

📥 Commits

Reviewing files that changed from the base of the PR and between beced25 and 945b7d4.

📒 Files selected for processing (11)
  • src/components/Tests/HelpPopover.tsx
  • src/components/ui/HelpPopover.tsx
  • src/locales/de.json
  • src/locales/en.json
  • src/locales/es.json
  • src/locales/fr.json
  • src/locales/nl.json
  • src/pages/AdminPage.tsx
  • src/pages/GradeStudent.tsx
  • src/pages/LiveMonitorPage.tsx
  • src/pages/TestResultsPage.tsx
📝 Walkthrough

Walkthrough

The HelpPopover component is moved from src/components/Tests/HelpPopover.tsx (now a re-export shim) into src/components/ui/Tooltip.tsx as the default export. A new help i18n section with score modifier, last-write-wins, and proctoring strings is added to five locale files. The component is then inserted into AdminPage, LiveMonitorPage, TestResultsPage, and GradeStudent (which also switches to the new i18n keys).

Changes

HelpPopover Relocation and Rollout

Layer / File(s) Summary
HelpPopover implementation and re-export shim
src/components/ui/Tooltip.tsx, src/components/Tests/HelpPopover.tsx
Tooltip.tsx gains the full HelpPopover component (toggle state, outside-click listener, positioned popover). Tests/HelpPopover.tsx is replaced with a single export { default } from '../ui/Tooltip' re-export.
New help i18n keys in all five locales
src/locales/en.json, src/locales/de.json, src/locales/es.json, src/locales/fr.json, src/locales/nl.json
Each locale gains a help object with score_modifier_title/body, lww_title/body, and proctoring_title/body strings. The scoped gradeStudent.help_modifier_* keys are removed from all five locales.
HelpPopover wired into pages
src/pages/AdminPage.tsx, src/pages/GradeStudent.tsx, src/pages/LiveMonitorPage.tsx, src/pages/TestResultsPage.tsx
AdminPage renders HelpPopover with help.lww_* keys in the Database card header. GradeStudent switches from gradeStudent.help_modifier_* to help.score_modifier_*. LiveMonitorPage and TestResultsPage add HelpPopover with help.proctoring_* keys.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • NesiciCoding/RubricMaker#140: Introduced the original src/components/Tests/HelpPopover.tsx that this PR refactors into a re-export shim, directly overlapping on the component definition.
  • NesiciCoding/RubricMaker#146: Added HelpPopover to GradeStudent.tsx for the score modifier label; this PR switches that same usage to the new help.score_modifier_* i18n keys.

Poem

🐇 Hop hop, the popover found a new home,
From Tests/ to ui/, no longer alone.
Five locales now whisper of proctoring lore,
Of last-write-wins sync and score modifiers more.
The shim re-exports with a one-liner cheer—
A tidy refactor, the warren is clear! 🌟

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding contextual help tooltips for three specific features (score modifier, LWW sync, proctoring) as part of phase 5.3.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch worktree-agent-a23f860f50c1d6b63

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 and usage tips.

@github-actions

github-actions Bot commented Jun 20, 2026

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 60.98% (🎯 52%) 5011 / 8217
🔵 Statements 59.74% (🎯 51%) 5701 / 9542
🔵 Functions 49.61% (🎯 42%) 1676 / 3378
🔵 Branches 51.22% (🎯 43%) 4126 / 8054
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/components/Tests/HelpPopover.tsx 100% 100% 100% 100%
src/components/ui/HelpPopover.tsx 46.15% 25% 33.33% 55.55% 16-19, 29
src/pages/GradeStudent.tsx 40.27% 36.4% 30% 41.55% 66, 67, 77-80, 98-121, 171, 172-178, 224, 226, 241, 251, 255-267, 278, 280, 283, 297-306, 310-325, 332, 340-385, 395-397, 405-406, 411-416, 422, 428-430, 437-441, 448-456, 462-467, 474, 479-481, 487, 489, 490, 491, 496-497, 504-505, 515-707, 764-771, 846-965, 1129-1259, 1295-1299, 1329-1809
src/pages/LiveMonitorPage.tsx 68.21% 49.56% 61.22% 72.11% 73-87, 118-128, 140, 156-178, 208-211, 217, 233-237, 240, 290-296, 301-307, 325, 430-460
src/pages/TestResultsPage.tsx 46.84% 41.92% 54.54% 48.14% 18, 42-43, 53, 58-66, 70, 73-101, 108-134, 141-162, 168-194, 201-234, 292-301, 313-324, 352, 385, 398, 554, 580-627
Generated in workflow #523 for commit 945b7d4 by the Vitest Coverage Report Action

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/ui/Tooltip.tsx (1)

1-63: ⚠️ Potential issue | 🟡 Minor

Rename Tooltip.tsx to HelpPopover.tsx to match the component export.

The file exports a default HelpPopover component but is named Tooltip.tsx, creating a filename-to-export mismatch. This violates naming conventions and creates friction for developers. Three imports across the codebase already depend on this pattern (TestResultsPage, LiveMonitorPage, AdminPage) and will need their import paths updated accordingly.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/ui/Tooltip.tsx` around lines 1 - 63, Rename the file
Tooltip.tsx to HelpPopover.tsx to match the exported component name HelpPopover.
After renaming the file, update all three import statements that reference this
file in TestResultsPage, LiveMonitorPage, and AdminPage to use the new filename
path instead of the old Tooltip.tsx path to ensure the imports remain valid.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/ui/Tooltip.tsx`:
- Line 9: Remove the JSDoc comment above the HelpPopover component. The comment
describes what the component does, which is already conveyed by the identifier
name HelpPopover itself. Delete the entire comment block that starts with "/**
Small `{?}`-style icon button" as per coding guidelines that discourage
describing what code does when the identifiers already make that clear.

In `@src/pages/GradeStudent.tsx`:
- Around line 576-577: Remove the old translation keys
gradeStudent.help_modifier_title and gradeStudent.help_modifier_content from all
locale files (en.json, nl.json, fr.json, de.json, and es.json). These keys have
been replaced by the new keys help.score_modifier_title and
help.score_modifier_body which are already in use in GradeStudent.tsx and
properly defined in the locale files. Removing these unused keys will clean up
the locale files and eliminate dead code.

---

Outside diff comments:
In `@src/components/ui/Tooltip.tsx`:
- Around line 1-63: Rename the file Tooltip.tsx to HelpPopover.tsx to match the
exported component name HelpPopover. After renaming the file, update all three
import statements that reference this file in TestResultsPage, LiveMonitorPage,
and AdminPage to use the new filename path instead of the old Tooltip.tsx path
to ensure the imports remain valid.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a0c3836b-021f-4d34-a6e2-92ea0d7e7e95

📥 Commits

Reviewing files that changed from the base of the PR and between 8e22387 and 5458133.

📒 Files selected for processing (11)
  • src/components/Tests/HelpPopover.tsx
  • src/components/ui/Tooltip.tsx
  • src/locales/de.json
  • src/locales/en.json
  • src/locales/es.json
  • src/locales/fr.json
  • src/locales/nl.json
  • src/pages/AdminPage.tsx
  • src/pages/GradeStudent.tsx
  • src/pages/LiveMonitorPage.tsx
  • src/pages/TestResultsPage.tsx

Comment thread src/components/ui/Tooltip.tsx Outdated
Comment thread src/pages/GradeStudent.tsx
NesiciCoding and others added 3 commits June 20, 2026 10:46
Address CodeRabbit review on #150:
- Remove the what-it-does JSDoc on HelpPopover (repo no-comments rule).
- Remove now-dead gradeStudent.help_modifier_title/_content from all 5
  locales (replaced by help.score_modifier_* in this PR).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…0f50c1d6b63

# Conflicts:
#	src/locales/de.json
#	src/locales/en.json
#	src/locales/es.json
#	src/locales/fr.json
#	src/locales/nl.json
Address CodeRabbit: the file exported HelpPopover but was named Tooltip,
a filename/export mismatch. Rename the file and update the three page imports
plus the Tests re-export shim.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@NesiciCoding NesiciCoding merged commit 78c8d1e into main Jun 20, 2026
8 checks passed
@NesiciCoding NesiciCoding deleted the worktree-agent-a23f860f50c1d6b63 branch June 20, 2026 09:31
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