Conversation
- 錯題本:答錯的題目記進 localStorage(wrongIds),任何模式答對即移除; 首頁顯示「錯題重練(N 題)」按鈕,每輪隨機抽最多 6 題, 重練只加 XP 不計首通關 bonus、不動關卡最佳紀錄 - streak:完成關卡或重練時更新連續學習天數(本地時區日界), 首頁以火焰徽章顯示;中斷一天即重算 - 新增 flame、rotate-ccw 線型圖示與 secondary-btn 樣式 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Warning Review limit reached
Next review available in:50 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdds wrong-answer and streak persistence, a review flow for up to six wrong questions, review-specific quiz completion behavior, and home-screen controls and styling for streaks and review sessions. ChangesWrong Question Review
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant Home
participant App
participant QuestionData
participant Quiz
participant Progress
Home->>App: Start wrong-question review
App->>QuestionData: getWrongQuestions(wrongIds)
QuestionData-->>App: Return ordered wrong questions
App->>Quiz: Render review quiz with up to six questions
Quiz->>Progress: answerQuestion(questionId, correct)
Quiz->>Progress: finishReview(xpEarned)
Progress-->>Quiz: Updated progress and streak
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/App.jsx (1)
15-21: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winPrefer Fisher-Yates over
sort(() => Math.random() - 0.5).
Array.sortwith a random comparator produces a biased distribution — not all permutations are equally likely. For selecting a review subset this is low-impact, but Fisher-Yates is equally simple and correct.♻️ Proposed Fisher-Yates shuffle
function startReview() { // 抽最多 6 題錯題組成一輪重練(洗牌避免每次順序相同) const pool = getWrongQuestions(progress.wrongIds) - const shuffled = [...pool].sort(() => Math.random() - 0.5).slice(0, REVIEW_SIZE)+ const shuffled = [...pool]+ for (let i = shuffled.length - 1; i > 0; i--) {+ const j = Math.floor(Math.random() * (i + 1))+ ;[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]+ }+ shuffled.splice(REVIEW_SIZE) if (shuffled.length === 0) return setView({ name: 'review', questions: shuffled }) }🤖 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/App.jsx` around lines 15 - 21, Replace the biased random comparator in startReview with a Fisher-Yates shuffle, using a copied pool so the original question order is not mutated, then select the first REVIEW_SIZE questions and preserve the existing empty-result guard and review view update.
🤖 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/screens/Quiz.jsx`:
- Around line 46-50: Prevent XP from being double-counted on the result screen
by updating the result XP display logic in the component’s completion/render
path: after finishReview or finishLevel updates progress.xp, display progress.xp
directly instead of adding finalXp. Apply this consistently to both review and
normal quiz flows.
---
Nitpick comments:
In `@src/App.jsx`:
- Around line 15-21: Replace the biased random comparator in startReview with a
Fisher-Yates shuffle, using a copied pool so the original question order is not
mutated, then select the first REVIEW_SIZE questions and preserve the existing
empty-result guard and review view update.
🪄 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: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 28b71e97-f709-4a4d-8125-1879436e6b78
📒 Files selected for processing (7)
src/App.jsxsrc/components/Icons.jsxsrc/data/chapters.jssrc/hooks/useProgress.jssrc/index.csssrc/screens/Home.jsxsrc/screens/Quiz.jsx
Uh oh!
There was an error while loading. Please reload this page.
- 結算時 progress.xp 已含本輪 XP,Mascot 改直接吃 progress.xp, 避免等級條/進化階段多算一次 - 錯題抽題改 Fisher-Yates,修掉 sort(random) 的偏差 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
Summary by CodeRabbit
New Features
UI Improvements