Conversation
Fix:253229 Practice Level showing incorrect issue fixed
IssueId #253762 fix : "F2-A3--> On F2 completion total 4 addLesson calls added
… addLesson submileston addded
IssuesId #253762 fix : addLesson issues in F3 A1 and A2 . B milestone addLesson submileston addded
Fix:In add lesson api "mB" as a milestone is added for the F1,F2,F3
IssueId #253762 fix : addLesson issue in M1 of milestone type and progress issue
… for Telugu language
Issue #253715 fix: Incrse the font size for Sree Krushnadevaraya font…
"Fix:#253229 Letter recognition demo vedio palys in every practice session"
Issue #253715 fix: increase the font size for Sree Krushnadevaraya font
Issue #0000 fix: telugu font issue fixes
HIndi F series Content
Issue #0000 fix: Correct box fixes for telugu font
Issue #0000 fix: Added loader for get set result api response
Issue #0000 fix: Getset result loader annimation changes
Task #0000 fix : M2 contentlimit set to 10 for P4
Tassk #0000 fix : M2 contentlimit set to 10 for P4
…0.3-sandbox-hotfix-loader
All 3.0.3 sandbox language model fixes
Issue #0000 fix: state vs product login fixes
WalkthroughThis PR removes the committed Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
⚔️ Resolve merge conflicts
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
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/all-prod-tn.yml (1)
76-82:⚠️ Potential issue | 🔴 CriticalAdd missing AWS credential environment variables to production workflow build step.
The production workflow is missing
REACT_APP_AWS_ACCESS_KEY_IDandREACT_APP_AWS_SECRET_ACCESS_KEYin the build environment, while the dev and staging workflows include them. The application code uses these credentials insrc/config/awsS3.jsto configure the AWS S3 client for operations like audio uploads. Without these variables, S3 operations will fail in the production build.Add these lines to the build step env in
.github/workflows/all-prod-tn.yml:REACT_APP_AWS_ACCESS_KEY_ID: ${{ secrets.REACT_APP_AWS_ACCESS_KEY_ID }} REACT_APP_AWS_SECRET_ACCESS_KEY: ${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/all-prod-tn.yml around lines 76 - 82, The production workflow build step is missing AWS credential env vars needed by src/config/awsS3.js; add REACT_APP_AWS_ACCESS_KEY_ID and REACT_APP_AWS_SECRET_ACCESS_KEY to the build step env in .github/workflows/all-prod-tn.yml and map them to the corresponding repository secrets (use secrets.REACT_APP_AWS_ACCESS_KEY_ID and secrets.REACT_APP_AWS_SECRET_ACCESS_KEY) so the AWS S3 client can be configured during the production build.
🧹 Nitpick comments (3)
.gitignore (1)
114-115: Deduplicate repeated dotenv ignore rules.Line 114-115 repeat existing behavior already covered by Line 12 (
.env) and Line 15 (*.env*). Keeping a single source of truth makes.gitignoreeasier to maintain.♻️ Proposed cleanup
-build -.env.local -.env +build🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.gitignore around lines 114 - 115, Remove the duplicated dotenv ignore rules by deleting the redundant ".env.local" and ".env" entries and keeping the broader "*.env*" (or a single ".env") pattern so there's a single source of truth; locate the repeated entries named ".env.local" and ".env" in the .gitignore and consolidate to the existing "*.env*" rule (or just ".env") to avoid redundancy and simplify maintenance.postcss.config.js (1)
7-11: Minor: Remove trailing blank lines.Proposed fix
module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, } - - - -🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@postcss.config.js` around lines 7 - 11, The file postcss.config.js contains trailing blank lines at the end; remove the extra empty lines so the file ends immediately after the last statement/closing token (no multiple blank lines or unnecessary EOF newlines), then save and run your formatter/linter (e.g., Prettier/ESLint) to ensure consistent file-end newline behavior.package.json (1)
146-146: RemovereactfromdevDependenciesto avoid duplicate declarations.
reactis already declared independencies(Line 73) and should not be repeated indevDependencies(Line 146). Duplicate dependency declarations can cause version drift and unnecessary lockfile changes.Proposed cleanup
"devDependencies": { "@babel/preset-typescript": "^7.28.5", "@mui/styles": "^5.15.10", "autoprefixer": "^10.4.23", "customize-cra": "^1.0.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "husky": "^9.0.11", "lint-staged": "^11.0.0", "postcss": "^8.5.6", "prettier": "^2.3.2", - "react": "^18.2.0", "react-app-rewired": "^2.2.1", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7" },🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@package.json` at line 146, Open package.json and remove the duplicate "react" entry from the devDependencies object so that "react" exists only under "dependencies"; after editing, run your package manager (npm install or yarn install) to update the lockfile and verify there are no duplicate/react version drift (e.g., confirm "react" appears only under "dependencies").
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/all-app-sandbox.yml:
- Line 86: The predictEngagement code calls axios.post using
process.env.REACT_APP_ENGAGEMENT_PREDICT_URL without checking for undefined;
update the predictEngagement function in learnerAiService.js to defensively
handle a missing URL by checking const url =
process.env.REACT_APP_ENGAGEMENT_PREDICT_URL and if falsy either return early
(skip the call) or log a clear warning and resolve with a safe default rather
than calling axios.post(undefined), so production runs without that env var
won’t throw a network error; ensure the change is made inside the
predictEngagement function and that any callers still receive a predictable
result.
---
Outside diff comments:
In @.github/workflows/all-prod-tn.yml:
- Around line 76-82: The production workflow build step is missing AWS
credential env vars needed by src/config/awsS3.js; add
REACT_APP_AWS_ACCESS_KEY_ID and REACT_APP_AWS_SECRET_ACCESS_KEY to the build
step env in .github/workflows/all-prod-tn.yml and map them to the corresponding
repository secrets (use secrets.REACT_APP_AWS_ACCESS_KEY_ID and
secrets.REACT_APP_AWS_SECRET_ACCESS_KEY) so the AWS S3 client can be configured
during the production build.
---
Nitpick comments:
In @.gitignore:
- Around line 114-115: Remove the duplicated dotenv ignore rules by deleting the
redundant ".env.local" and ".env" entries and keeping the broader "*.env*" (or a
single ".env") pattern so there's a single source of truth; locate the repeated
entries named ".env.local" and ".env" in the .gitignore and consolidate to the
existing "*.env*" rule (or just ".env") to avoid redundancy and simplify
maintenance.
In `@package.json`:
- Line 146: Open package.json and remove the duplicate "react" entry from the
devDependencies object so that "react" exists only under "dependencies"; after
editing, run your package manager (npm install or yarn install) to update the
lockfile and verify there are no duplicate/react version drift (e.g., confirm
"react" appears only under "dependencies").
In `@postcss.config.js`:
- Around line 7-11: The file postcss.config.js contains trailing blank lines at
the end; remove the extra empty lines so the file ends immediately after the
last statement/closing token (no multiple blank lines or unnecessary EOF
newlines), then save and run your formatter/linter (e.g., Prettier/ESLint) to
ensure consistent file-end newline behavior.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: e1008862-19e9-4cdc-ab96-3565fa435533
⛔ Files ignored due to path filters (285)
package-lock.jsonis excluded by!**/package-lock.jsonpublic/audio/audio-preview/Alphabet Chart/Chart Icon/en/ChartNarration.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/Chart Icon/kn/ChartNarration.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/Chart Icon/te/ChartNarration.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/alphabetNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/alphabetNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/alphabetNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/syllableNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/syllableNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/en/syllableNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/alphabetNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/alphabetNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/alphabetNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/syllableNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/syllableNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/kn/syllableNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/alphabetNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/alphabetNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/alphabetNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/syllableNarration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/syllableNarration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/Alphabet Chart/te/syllableNarration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/introduction/en/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/introduction/hi/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/introduction/kn/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/introduction/mr/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/introduction/te/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-hunt/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/all_ready.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/amazing.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/correct_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/fuel_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/fuel_meter.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/fuel_requirement.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/fuel_rilo.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/game_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/great_job.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/intro_destination.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/intro_narrator.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/intro_rocket.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/practice_controls.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/practice_intro.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/practice_question.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/ready_to_start.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/rilo_appears.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/en/wrong_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/all_ready.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/amazing.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/correct_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/fuel_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/fuel_meter.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/fuel_requirement.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/fuel_rilo.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/game_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/great_job.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/intro_destination.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/intro_narrator.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/intro_rocket.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/practice_controls.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/practice_intro.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/practice_question.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/ready_to_start.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/rilo_appears.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/hi/wrong_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/all_ready.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/amazing.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/correct_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/fuel_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/fuel_meter.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/fuel_requirement.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/fuel_rilo.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/game_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/great_job.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/intro_destination.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/intro_narrator.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/intro_rocket.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/practice_controls.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/practice_intro.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/practice_question.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/ready_to_start.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/rilo_appears.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/kn/wrong_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/all_ready.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/amazing.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/correct_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/fuel_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/fuel_meter.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/fuel_requirement.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/fuel_rilo.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/game_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/great_job.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/intro_destination.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/intro_narrator.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/intro_rocket.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/practice_controls.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/practice_intro.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/practice_question.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/ready_to_start.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/rilo_appears.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/mr/wrong_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/all_ready.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/amazing.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/correct_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/fuel_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/fuel_meter.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/fuel_requirement.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/fuel_rilo.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/game_explanation.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/great_job.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/intro_destination.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/intro_narrator.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/intro_rocket.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/practice_controls.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/practice_intro.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/practice_question.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/ready_to_start.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/rilo_appears.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/letter-launcher-story/te/wrong_feedback.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/memory-challenge/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-letter-games/quick-sight/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/fill-in-blanks/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/introduction/en/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/introduction/hi/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/introduction/kn/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/introduction/mr/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/introduction/te/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/sentence-builder/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-sentence-games/true-or-false/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/introduction/en/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/introduction/hi/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/introduction/kn/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/introduction/mr/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/introduction/te/introduction.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/mr/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/mr/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/mr/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/te/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/te/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/te/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/picture-words/te/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/en/bread.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/en/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/en/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/en/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/en/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/hi/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/hi/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/hi/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/hi/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/bread.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/narration2.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/narration3.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/narration4.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/kn/ಪಕ್ಷಿ.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/mr/bread.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/mr/narration1.wavis excluded by!**/*.wavpublic/audio/audio-preview/combined-word-games/sound-match/mr/narration2.wavis excluded by!**/*.wav
📒 Files selected for processing (15)
.env.github/workflows/all-app-sandbox.yml.github/workflows/all-dev-rig-temp.yml.github/workflows/all-dev-rig.yml.github/workflows/all-dev-tn-new.yml.github/workflows/all-dev-tn.yml.github/workflows/all-prod-rig.yml.github/workflows/all-prod-tn-staging.yml.github/workflows/all-prod-tn.yml.github/workflows/all-staging-tn.yml.github/workflows/all-temp-staging .yml.gitignoreconfig-overrides.jspackage.jsonpostcss.config.js
💤 Files with no reviewable changes (1)
- .env
| REACT_APP_MAX_LEVEL: ${{ vars.REACT_APP_MAX_LEVEL }} | ||
| REACT_APP_LEARNER_AI_BASE_URL: ${{ vars.REACT_APP_LEARNER_AI_BASE_URL }} | ||
| REACT_APP_USE_RECOMMENDATION_API: ${{ vars.REACT_APP_USE_RECOMMENDATION_API }} | ||
| REACT_APP_ENGAGEMENT_PREDICT_URL: ${{ vars.REACT_APP_ENGAGEMENT_PREDICT_URL }} |
There was a problem hiding this comment.
REACT_APP_ENGAGEMENT_PREDICT_URL only provided in sandbox/UAT workflows.
This env var is only injected in all-app-sandbox.yml and all-dev-rig.yml. Per src/services/learnerAi/learnerAiService.js:333-347, the predictEngagement function uses this URL directly without checking for undefined:
const url = process.env.REACT_APP_ENGAGEMENT_PREDICT_URL;
axios.post(url, payload, { ... })In environments where this variable is not set, axios.post(undefined, ...) will fail with a network error. Consider:
- Adding defensive handling in
predictEngagementto skip the call when URL is undefined, or - Adding this variable to all workflows where engagement prediction should be active
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/all-app-sandbox.yml at line 86, The predictEngagement code
calls axios.post using process.env.REACT_APP_ENGAGEMENT_PREDICT_URL without
checking for undefined; update the predictEngagement function in
learnerAiService.js to defensively handle a missing URL by checking const url =
process.env.REACT_APP_ENGAGEMENT_PREDICT_URL and if falsy either return early
(skip the call) or log a clear warning and resolve with a safe default rather
than calling axios.post(undefined), so production runs without that env var
won’t throw a network error; ensure the change is made inside the
predictEngagement function and that any callers still receive a predictable
result.
Issue #0000 fix: show loader for getSetResult
Issue #0000 fix: Gamifiation app telemetry fixes
|




All 3.0.3 sandbox
Summary by CodeRabbit
New Features
Chores