Skip to content

Implement student learning support features#1061

Open
akish99 wants to merge 8 commits into
vicharanashala:mainfrom
akish99:my-work
Open

Implement student learning support features#1061
akish99 wants to merge 8 commits into
vicharanashala:mainfrom
akish99:my-work

Conversation

@akish99

@akish99 akish99 commented Jun 5, 2026

Copy link
Copy Markdown

Summary

Implemented and improved student learning support features in the platform.

Changes Made

  • Added lesson bookmark functionality for students
  • Added personal notes support
  • Added confused/clarity feedback feature
  • Added teacher-facing analytics for confusion signals
  • Improved student lesson interaction flow
  • Fixed related UI and backend integration issues

Testing

  • Tested bookmark creation and retrieval
  • Tested student notes visibility
  • Tested confused button flow
  • Verified teacher analytics display
  • Checked frontend and backend integration locally

Demo

https://drive.google.com/file/d/194NwwqKjvTirugiFVU4dQGsoinryCW6H/view?usp=drive_link

MeenakshiArunsankar and others added 8 commits April 28, 2026 18:34
* chore: ignore debugger agent file from git tracking

* fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students

* fix: bypass recaptcha for course registration
* chore: ignore debugger agent file from git tracking

* fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students
* chore: ignore debugger agent file from git tracking

* fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students

* fix: bypass recaptcha for course registration

* fix: Resolve progress tracking bugs for quiz and video completion

- Fix getUserProgress resetting completed-course position to first item (Bug B)
  Removed code that overwrites currentModule/currentSection/currentItem when
  course.completed is true. Students should not be reset to the beginning on login.

- Fix quiz exhausted-attempts not setting endTime on watchTime (Bug C)
  Added stopItem call in exhausted-attempts error handler to properly close the
  watchTime document, matching the behavior of the success path.

- Fix non-idempotent stopItemTracking throwing on already-stopped watchTime (Bug E)
  Changed to treat already-stopped items as safe instead of throwing NotFoundError.
  Only validate watch times that were actually returned by stopItemTracking.

These changes complete the progress tracking fixes for marking videos and quizzes
as completed while preventing duplicate progress updates and handling edge cases.
…nd backend pipeline (vicharanashala#976)

* feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped)

* fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements

* fix: query watchTime collection instead of enrollment for GuruSetu feedback export
* feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped)

* fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements

* fix: query watchTime collection instead of enrollment for GuruSetu feedback export

* feat(quiz-export): add Progress % column after Email in export

Include percentCompleted in quiz score export payload and map it into frontend export data.\nInsert a new Progress % column immediately after Email while keeping all existing columns unchanged.
* feat(gurusetu): add exclusive Gurusetu pilot feedback export button and backend pipeline for instructor download (enrollment-based, modular, course-scoped)

* fix(gurusetu): strictly export only students/videos with >50% watch time as per original requirements

* fix: query watchTime collection instead of enrollment for GuruSetu feedback export
…haranashala#982)

Backend:
- BaseService: retry WriteConflict (code 112) with backoff, not just
  TransientTransactionError-labelled errors
- ProgressService.stopItem: skip sequence validation for already-completed
  items (rewatch scenario) — students who earned an item can always stop it
- ProgressService.getModuleWiseProgress: parallelize readItemsGroup calls
  with Promise.all instead of serial await-in-loop (fixes 84s response time)

Frontend:
- hooks.ts: set retry:0 on useStopItem to eliminate React Query's internal
  retry storm (was causing up to 532 concurrent stop requests)
- video.tsx: gate NavigatingOverlay on reachedVideoEnd state so it only
  shows after the video actually ends, not on background queue flushes
- video.tsx: add isAlreadyWatched guard to endTime and near-completion
  triggers — rewatched videos (startItem returns empty watchItemId) now
  call onNext() directly without hitting the stop API
- video.tsx: redesign NavigatingOverlay with app design tokens (primary
  amber, Libre Baskerville serif quote mark, card/border/muted tokens),
  12 quotes on AI in education from Indian authors
- course-page.tsx: Rewatch Video button now walks backwards through all
  previous sections using courseVersionData when sectionItems cache is
  cold (e.g. after page refresh), skipping quiz-only sections until it
  finds an actual video item

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: ignore debugger agent file from git tracking

* fix(access-restricted): pass cohortId through _isPreviousItemCompleted to prevent false ForbiddenError for cohort students

* fix: bypass recaptcha for course registration

* fix: Resolve progress tracking bugs for quiz and video completion

- Fix getUserProgress resetting completed-course position to first item (Bug B)
  Removed code that overwrites currentModule/currentSection/currentItem when
  course.completed is true. Students should not be reset to the beginning on login.

- Fix quiz exhausted-attempts not setting endTime on watchTime (Bug C)
  Added stopItem call in exhausted-attempts error handler to properly close the
  watchTime document, matching the behavior of the success path.

- Fix non-idempotent stopItemTracking throwing on already-stopped watchTime (Bug E)
  Changed to treat already-stopped items as safe instead of throwing NotFoundError.
  Only validate watch times that were actually returned by stopItemTracking.

These changes complete the progress tracking fixes for marking videos and quizzes
as completed while preventing duplicate progress updates and handling edge cases.

* fix: stop API errors, rewatch 403s, and Rewatch Video navigation

Backend:
- BaseService: retry WriteConflict (code 112) with backoff, not just
  TransientTransactionError-labelled errors
- ProgressService.stopItem: skip sequence validation for already-completed
  items (rewatch scenario) — students who earned an item can always stop it
- ProgressService.getModuleWiseProgress: parallelize readItemsGroup calls
  with Promise.all instead of serial await-in-loop (fixes 84s response time)

Frontend:
- hooks.ts: set retry:0 on useStopItem to eliminate React Query's internal
  retry storm (was causing up to 532 concurrent stop requests)
- video.tsx: gate NavigatingOverlay on reachedVideoEnd state so it only
  shows after the video actually ends, not on background queue flushes
- video.tsx: add isAlreadyWatched guard to endTime and near-completion
  triggers — rewatched videos (startItem returns empty watchItemId) now
  call onNext() directly without hitting the stop API
- video.tsx: redesign NavigatingOverlay with app design tokens (primary
  amber, Libre Baskerville serif quote mark, card/border/muted tokens),
  12 quotes on AI in education from Indian authors
- course-page.tsx: Rewatch Video button now walks backwards through all
  previous sections using courseVersionData when sectionItems cache is
  cold (e.g. after page refresh), skipping quiz-only sections until it
  finds an actual video item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions github-actions Bot added frontend Changes to the frontend of the project backend labels Jun 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend frontend Changes to the frontend of the project

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants