| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-07-20 | 9.6 kB | |
| Version 3.5.2 source code.tar.gz | 2026-07-20 | 129.7 MB | |
| Version 3.5.2 source code.zip | 2026-07-20 | 134.5 MB | |
| Totals: 3 Items | 264.2 MB | 0 | |
Changes
Students (Learner-facing features)
- Fix [#16488]: Remove unnecessary parentheses wrapping in fraction asciimath output (#26229)
- Fix learner story progress auth checks (#26246)
- [GSoC 2026] M1.2 - Fix part of [#19614]: Implement redesigned topic header layout (#26200)
- [GSoC 2026] M1.1 - Fix Part of [#24717]: Add certificate assessment dashboard skeleton (#26191)
- Fix [#24221], [#24885], [#24946], [#24925], [#25502], [#24327]: Prevent snapshot mismatches in learner dashboard home tab tests (#25733)
- [GSoC 2026] M1.1 - Fix part of [#19614]: Integrate redesigned Topic Viewer feature flag (#26188)
- Fix [#18371]: Fix schema validation error for decimal answers in NumericInput interactions (#25972)
- Fix [#10162]: Non-currency input invalid error (#25831)
- Fix [#25903]: Add element stabilization to fix flaky drag-and-drop sort acceptance test (#25962)
- Fix [#18515]: Added frontend redundancy validation for TextInput interactions (#25993)
- Fix [#17219]: Remove unnecessary parentheses wrapping in fraction symbol dict (#25959)
- Fix [#23158]: Solve timeoutError: waiting for selector Fraction Input (#26016)
- Fix [#10899]: Add validation to prevent negative tolerance in NumericInput (#25808)
- Fix part of [#24968]: Hide deprecated interactions (PencilCode, MusicNotes, CodeRepl, GraphInput, InteractiveMap) from UI (#25506)
- Fix [#20694]: Prevent search bar shifting on Community Library page during typing (#25930)
- Fix [#13689]: NumericExpression division symbol display per customization arg (#25897)
- Fix [#16358]: Improve error message for invalid prefix operator (#25676)
- Fixes [#25278]: Text formatting to correctly highlight sentence during voiceover playback (#25787)
- Fix [#25786]: Fixing Not a prefix operator error (#25798)
- Fix [#16667]: Add frontend validation for negative selection counts in Item Selection (#25781)
- Fix [#25512]: Ambiguity in Search Functionality: Tag Selection vs Free-Text Input (#25758)
- Fix [#24943]: Correct background color display on Next Lesson button (#25727)
- Fix [#23682]: Fix YouTube video embed broken due to recent YouTube policy update (#25767)
Creators (Contributors/Editors — topics, translations, voiceover artists, exploration editors)
- Fix [#26406]: Update translation certificate wording, signee, and layout (#26430)
- Fix [#26457]: Display user readable error message when subtopic save failure (#26625)
- Fix [#25488]: Resolve voiceover submission error by fixing accent code state-sync (#26199)
- [GSoC 2026] M 1.3 - Fix part of [#24933]: Add generalized translation opportunity services for multiple content types (#26202)
- Fixes part of [#21166]: Feature that allows users to unpublish stories temporarily (#26050)
- [GSoC 2026] M 1.2 - Fix part of [#24933]: Implement domain logic for TranslationOpportunity and generic entity types for PinnedOpportunity (#26104)
- Fix [#18312]: Workflow to assign reviewers (#25709)
- Fix [#25804]: Add Nepali to supported dashboard languages (#26164)
- [GSoC 2026] M 1.1 - Fix part of [#24933]: Add query methods to TranslationOpportunityModel (#26083)
- Fix [#23381]: Resolve modal close timeout in preview-math-interactions acceptance test (#26015)
- Fix [#20605]: Disable translation modal save buttons on validation errors (#25799)
- Fix [#25793]: Refactored subtopic page pre-processing logic from apply_change_list (#26087)
- Fix [#25803]: Extract subtopic page update logic from apply_change_list (#25943)
- Fix [#25710]: Add Beam jobs to recover orphaned translation data (#25871)
- Fix [#18519]: Allow question admins to edit content directly within the Topics and Skills dashboard (#24552)
- Fix [#25794]: Extracted topic command handling into small helper functions in apply_change_list (#25855)
- Fix [#23895]: Navbar tooltips appear when hovering full editor tile (#25712)
- Fix part of [#24600]: Migrate embedding.js and explorationImprovementsTab.js E2E tests to acceptance tests (#25280)
- Fix [#25802]: Refactored study guide handling from apply_change_list (#25924)
- Fix [#18103]: Added unique row IDs and aria-labels for schema-based-list-editor (#25309)
- Fix [#25851], [#25832], [#25830]: Wait for specific tab to render before switching in contributor dashboard (#25854)
- Fix [#25792]: Extracted study guide preprocessing in apply_change_list (#25865)
- Fixes prod ops issues filed during automated voiceover testing (#25856)
- Fix [#23302] and [#24157]: Replace can_create_topic with can_access_topics_and_skills_dashboard for topic URL fragment checks (#25605)
- Fix [#25805]: Resolve overlapping UI buttons on translation review modal (#25861)
- Fix [#22725]: Fix contributor dashboard username label overlap (#25338)
- Adds beam job for voiceover synthesis by language accent (#25759)
- Fix [#20338]: Resolve race condition in exploration metadata model save (#25535)
- Fixes part of [#16837]: Adds beam jobs to mark stale instances of voiceover regeneration records as failed (#25396)
- Fix [#24604]: Add acceptance tests for explorationStatistics.js (#25195)
- Fix [#25334]: "Publish Chapters" took too long to be clickable (#25556)
- Fixes [#25174]: Designs a new batched workflow for voiceover generation (#25132)
- Fix [#23362]: SVG editor cropping, auto-scaling, and text rendering (#25736)
Others (Partners, Parents, Infra, Dev Process, Blog, General)
- Update versions to 3.5.2 (#26696)
- Adds [#26363] and fixes merge conflicts.
- Cherry picked PR [#26265] and fixes merge conflicts.
- [GSoC 2026] M1.3 - Fix part of [#24716]: Added general_feedback_services.py and captcha_services.py (#26194)
- Fix [#25094]: Add Blog link to About section in mobile sidebar (#26080)
- [GSoC 2026] M1.1 - Fix part of [#24715]: Set up dedicated Node.js runtime for Playwright (#26192)
- Fix redirect bypass in return_url validation (#26236)
- [GSoC 2026] M1.5 - Fix part of [#24716]: Added interfaces for feedback, Entrypoint Feedback button and Feature flags to gate it (#26195)
- [GSoC 2026] M1.1 - Fix part of [#24716]: Added WebFeedbackThreadModel, WebFeedbackMessageModel, FeedbackSessionLogModel and general_feedback_domain file (#26179)
- Fix [#25975]: Prevent ExpressionChangedAfterItHasBeenCheckedError on LTR to RTL switch (#26218)
- Fix part of [#23496]: Enforce strict checks for group 2 and 3 files (#25901)
- [GSoC 2026] M1.2 - Fix part of [#24716]: Added centralized nested validators in domain_objects_validator.py for session_info payload shape (#26183)
- Deprecate enable_multiple_classrooms feature flag (#25825)
- Fix part of [#23496]: Enforce the strict type checks for groups 28,29,31 (#25963)
- Fix [#25795]: Replace if-else with handler map (#26145)
- Added gradual strict Angular template checks with legacy allowlist (#25996)
- Fix [#21473]: Use clickOnElement to guard language dropdown against layout race condition (#26058)
- Update PR template issue-reference wording as per discussion (#25976)
- Fix part of [#23496]: Enforce strict typescript checks for group 4 files (#26052)
- Update CODEOWNERS to ensure spec files are owned by relevant teams (#26107)
- Fix [#23881]: Solve Flake in snapshot matching RTLArabicHomePage-diff (#26079)
- Fixes [#25321], [#25836]: correcting the flow of getting userinfo first and then emitting events (#25306)
- Fix [#25307]: Stop email retries for permanent 4xx client errors (#25746)
- Fix [#25756], [#26023]: Add waitForSelector before DOM assertions in blog search acceptance test to fix flaky failures (#25954)
- Fix part of [#23496]: Enforce strict typescript checks for group 17,18,19,23 (#25936)
- Fix [#25991]: CampaignBannerComponent test failing in frontend unit tests (#25992)
- Fix [#25087]: validation for Message text and Thread subject inside feedback (#25672)
- Added HTML linter check for new embedded style tags (#25940)
- Fix [#25439]: Use AlertsService for toast message on blog admin page (#25790)
- Refactor About page partnerships/CTA into reusable components and fix missing aria-labels (#25826)
- Fix [#21644]: Fail full-stack acceptance tests on backend server errors (#25670)
- Fix part of [#23496]: Enforce strict typescript checks for group 30 (#25392)
- Fix [#18220]: migrating packages from dependencies.json to package.json part 1 and additional cleanup to remove dependencies.json entirely (#24880)
- Fix [#25570]: Snapshot mismatch on donor page (#25691)
- Fix [#21200]: fixing waiting for selector div.modal-content (#25632)
- Fix [#24924]: remove invalid ARIA menu roles and fix WCAG AA contrast violations in navbar (#25432)
- Fix part of [#24149]: migration of dependencies.json to package.json Part 3 (#24930)
- Fix part of [#23496]: Enforce strict checks for group 20 and 21 files (#25509)
- Fix [#20338]: Resolve race condition in exploration metadata model save (#25535) (duplicate title, see Creators)
- Fix [#23905]: Handle GitHub API rate limiting in url_open (#25303)
- Fix part of [#21308]: Improve backend controller branch coverage with targeted tests and dead-branch cleanup (#25685)
- Fix part of [#21308] to cover edge cases in backend code (#25113)
- Fix [#24107]: Remove duplicate keyword search button in blog page (#25761)
- Fix [#23308]: fixed screenshot capture on local acceptance test failure (#25356)
- Fix [#24883]: Removing the oppia lightweight root (#25416)
- Fix [#24093]: Improved blog search to support searching by partial words (#25766)