This file contains a summary of changes to the Oppia codebase up to release 3.2.9. All the changes after that can be found in the commit log of the develop branch: https://github.com/oppia/oppia/commits/develop v3.2.9 (31 Dec 2022) ------------------------ Release team * Fix package build (#16773) * Fix constants to access files in correct folder (#16733) * Edit .gcloudignore (#16655) * Add new dispatch workflow (#16194) * Use Cloud Secret (#16142) Learner/Creator Pages * Fix #16590: trigger 'change' event when manually removing a widget from ckeditor (#16746) * Fixed iframe exploration player (#16711) * Fix donate issues (#16650) * GA analytics updates (#16644) * Introduce new Donate page (#16605) * Fixed mailchimp web tag (#16524) * Learner group view: Mobile view Improvements (#16496) * Fixes an e2e flake in AdditionalEditorFeatures (#16495) * Learner Group learners' progress in stories view review update (#16491) * Allowing Uploading Images Larger than 1KB for blog (#16479) * Learner Group UI improvements (#16468) * Fix part of #15753: Fix curated exploration frontend validation checks (#16428) * Fix part of #15753: End exploration interaction warning bug (#16389) * Fix part of #15753: Fix frontend validation for numeric input interaction (#16388) * Fix part of #15753: RTE link frontend validations (#16371) * Fixes #16313 and Adds back M1.3 And M1.4 (Blog Integration) (#16323) * FIX: #16119 Added a copy tooltip + corrected the save progress card indentation and padding (#16321) * Fixes general issues in Blog Dashboard and #16272 -- Copy Of PR 16123 (#16299) * Fix issue #16180 : Alignment of the header (#16293) * Fix part of #15968 : Replace material icons with FA icons. (#16269) * Fix: #15968 Replaced Material Icons with Font Awesome (#16267) * Fix part of #15968: Material icons to Font Awesome icons in 3 files (#16249) * Milestone 2.3: Implements Blog Author Page and feature flag to enable Blog Homepage feature. (#16243) * Fix issue #15537 : Allow search execution by pressing the Enter key on the classroom page search bar (#16242) * Milestone 2.1, 2.2, 2.3 (Learner group MVP): Learner Related Views of learner group (#16240) * Fix part of #15968: Replaced material icons to font awesome in 3 files. (#16239) * Fix part of #15968: Migrate files from Material Icon to Awesome Font Icon (#16233) * Fix part of #15968: Migrate 3 files from Material Icons to Font Awesome Icons (#16230) * Fix button copy in teach/about/splash pages (#16229) * Removed solution dependence on hints (Helping learners when they get stuck). (#16228) * Fix part of #15968: Replaces Material icons with Font Awesome icons in "add answer group", "add audio translation", "exploration save and publish buttons" pages. (#16223) * Add mailchimp android list support (#16217) * material-icons change to font-awesome icons. (#16206) * Fix #14085: Added validation to restrict usage of unsupported math functions. (#16189) * Fix part of #15968: Material-icons change to Font-awesome-icons (#16182) * Add pt-br translations and few more CTAs for android beta launch page (#16161) * Introduce GA4 events (#16158) * Fix: #15157 Fixed window resizing events that hides the buttons and content of different modals in Skill Editor (#16147) * Fixes general issues in Blog Dashboard (#16123) * Fix #16078: Aligned play button (#16113) * Introduce initial android landing page (#16071) * Topic dependency graph input in the classroom (#16063) * Fix #16015: Corrects the placeholder text (#16050) * Fixed delete topic button is partially clickable (#16043) * Milestone 1.3 and 1.4: Adds blog homepage and post page frontend (#16040) * Fixed the end of the exploration dialog box not seems to be clickable (#16036) * Fix part of #15968: Replaces Material icons with Font Awesome icons in some "skill editor" and "story editor" pages. (#16023) * Fix part of #15753: Hide default feedback for multiple choice input when all choices addressed (#16014) * Fix: #15994 added bootstrap class for close button (#16007) * Fix part of #15753: Fix frontend validation for editing hint (#16000) * Fix part of #15753: Fix frontend validation for image caption length (#15999) * Fix #15985 and #16116: Save progress button behaviour (#15991) * Class name change in profile-page.component.js file to avoid class name collision (#15990) * FIX: #16119 Added a copy tooltip + corrected the save progress card indentation and padding (#15989) * Fix part of #15753: Fix validation for outcome labelled as correct (#15984) * Fix part of #15753: Fix frontend validation for numeric input (#15983) * Fix #15892: Handle CD bugs (#15977) * Fix #15875: Fixes a bug that was preventing displaying / tagging of misconceptions (#15966) * UI for the Classroom Admin Page (#15953) * Fix #15756 : adjusted the carousel arrow position (#15939) * M1.4 & M1.5 (Helping learners when they get stuck): Add support for preventing learners from being directed back more than 3 cards in the lesson) (#15938) * Replace material icons (#15926) * Fix #15880 and #15924 (#15925) * (Celebrating learners' accomplishments) Milestones 2.2 & 2.3: Add a congratulatory checkpoint message modal which is linked to the lesson info modal (#15916) * Milestone 1.2: Adding Storage, Domain and Service layer for Blog Post Search functionality (#15914) * Fix #15749 Display the topic name on top of the subtopic name on smaller screens (#15900) * [Backend]: Adds the domain class for the classroom model (#15865) * Fix #13397: Milestone 1.1 - Change 'published_on' to None if Blog Post is Draft (#15862) * (Celebrating learners' accomplishments) Milestone 2.1: Add a utility service for checkpoint celebration (#15849) * Milestone 1.5 (Learner group MVP): Add facilitator views of the learner group (#15840) * Check for Validation Errors Before Reverting an Exploration (#15824) * Functionality to add diagnostic test skills (#15742) * Milestone 1.2 & Milestone 1.3 (Helping learners when they get stuck): Add the frontend changes for the new dest_if_really_stuck component and create new dotted links. (#15698) * Fix #15528: Allow long options in item selection interaction to wrap (#15671) * Fix remaining RTL issues (#15653) * Fix part of N/A: Frontend validation for curated explorations (#15584) Dev Workflow * Update Python to 3.8.15 (#16730) * Fix #16028 and #12647: Cache pip dependencies and make E2E tests use shared webpack build (#16629) * Fix #16542: Changes required for improved deploy process (#16616) * FIx #16446: Avoid installing pylint-quotes from GitHub fork (#16474) * Modify issue forms to make it easier to use (#16452) * Replace yuicompressor with rcssmin (#16403) * Change prereq library to new version and remove `typing_extensions` from some remaining places. (#16367) * Fix part of #14219: Add tests for topic domain (#16304) * Fix Issue forms (#16253) * Modify frontend test job name (#16244) * Introduce Issue forms for non-technical users (#16221) * Drop obsolete todos for issue 14419 from the codebase. (#16074) * Fix #15413: ViewDestroyedError Frontend flake and other flakes also present. (#16030) * Fix #16010: Remove index.yaml order deduplication (#16011) * Print overall backend coverage report (#15949) Miscellaneous * Updates to GA methods (#16719) * Add Amharic (አማርኛ) to supported languages (#16624) * Upload profile picture error message 15793 (#16191) * Fix part of #15942: Beam job generate missing stats models (#16090) * Update authors and changelog for v3.2.8 (#15981) * Fix part of #14419, changing the Enum class from screaming SNAKECASE to PascalCase. (#15931) * Milestone 1.3 (Improving the lesson creation experience): Create the beam job. (#15681) * Introduce GA4 alongside UA analytics (#16038) Angular Migration * Fix #14368: Fix for rte output display showing residual text nodes. (#16700) * Fix Part of #9749: Removal of deadcode i.e. ngjoyride && ui.sortable (#16412) * Fix part of #15753 && #14119: validation bug fix in exploration tags editor in setting tab. (#16391) * Fix part of #9749: Migration of ParamChangesEditorComponent from angularJs to Angular. (#16335) * Fix part of #9749: migration of translation-tab from AngularJs to Angular. (#16295) * Fix Part of #9749: Migration of Audio translation tab components, state-translation-editor. (#16284) * Fix Part of #9749: Migration of Exploration-editor-tab, exploration-save-and-publish-buttons, exploration-save-prompt-modal (#16252) * Fix of #16195: Highlight is not working properly in "Exploration Overview" when on "Translations" fixed, State-graph not showing warning fixed (#16209) * Fix part Of #9749: Migrates Subtopic-Editor-Page to Angular (#16203) * Fix part of #9749: Migrates Topic-Questions tab to Angular (#16138) * Fix Part Of #9749: Migrates Topic Editor Navbar to Angular (#16107) * Fix Part Of #9749: Migrates Entity-Creation Service to Angular (#16081) * Fix #16058: Fraction rule input is not connected properly in the answer group input form (#16072) * Fix part of #9749: Migration of improvements-tab, statistics-tab, feedback-tab in Angular (#16060) * Fix Part of #9749: Migrates Skill-Editor to Angular (#16059) * Migrate exploration player page to angular router. (#15965) * Fix part of #9749: Migration of setting-tab (#15933) * Fix Part of #10700: Refactor Object Factories (#15854) * Remove instances of `$.ajax` (#15833) Bug fixes * Fix #16588 Warning shown to User on Merging Skills of same topic (#16671) * Fix part of #15753: Better frontend emptiness check for HTML content (#16429) * Fix ckeditor RTE to HTML conversion (#16271) * Fix #16079: World map preview not visible (#16248) * Fix #16591: fixed the console error caused by a unhandled function (#16660) * Small update to conversion function 52 to 53 regarding math RTE tag (#16614) * Edited suggestion batch job to fix the translation of type list. (#16483) * Remove unnecessary parts (#16400) * Adds diagnostic test current topic status model (#16399) * Fix #16330: added warnings for errors while adding the voice artists (#16396) * Updated UI for the diagnostic player page (#16392) * Fix of #16356: Context service flake (#16377) * Adds diagnostic test topic tracker model (#16350) * Fix issue #16283: Buttons overlap (#16345) * Fix of Frontend Flake: cannot read properties of undefined (reading 'split'). (#16337) * Revert "FIX: #16119 Added a copy tooltip + corrected the save progress card indentation and padding" (#16315) * Revert "Milestone 1.3 and 1.4: Adds blog homepage and post page frontend" (#16314) * Adds Diagnostic player page directory structure (#16291) * Fix part of N/A: Added the button to fix the commit commands (#16290) * Revert "Fixes general issues in Blog Dashboard" (#16273) * E2E Flake: Error: Add Interaction button is not visible (#16237) * Fix #15368: Broken UI for Volunteer Page (#16235) * Fix export policy docstring for BaseCommitLogEntryModel to use the correct rationale. (#16196) * Align search bar (#16190) * Put android page behind a feature flag; Make more text translatable (#16108) * topic and story viewer flake (#15941) * Backend apis for the classroom admin (#15932) * Controller and service changes for classroom (#15909) * Add a test to detect breakages in the error reporting flow (#15902) * Adds init file in storage/classroom directory. (#15894) * FixPart of 9749: `?` removed + unknown removed + added some comments (#15859) * Fix topicAndStoryEditor flake: create chapter button is not clickable. (#15853) * Fix #15772: set correct image context in question player; fix decoding of foreign chars in SVGs (#15835) Uncategorized Contributor Pages * Fix #16536: Filter out obsolete translation suggestions in review contributor dashboard (#16578) * Removed `voiceover application` from codebase. (#16343) * Fix #13919: Include review errors in review message (#16306) * Fix 16088 - [Contributor dashboard] Nit Change in Help Text for Hindi… (#16268) * (Contributor Recognition Infrastructure) Milestone 2.1: Add new frontend endpoints to call the ContributorStatsSummariesHandler (#16153) * Fix part of #16020: Fixed issue with lazy loading on CD (#16103) * Fix part of #13055: Handle translation cards that only consist of digits. (#16067) * (Contributor Recognition Infrastructure) Milestone 1.6: Implement controller layer for the project (#16044) * Fix part of #16020: Fix UI issues on the Contributor Dashboard (#16025) * (Contributor Recognition Infrastructure) Milestone 1.5: Write asynchronous tasks to send new rank notifying emails (#15960) * (Making Contributor Dashboard UI Responsive) Milestone 2.2: Implement the new UI for translation submission modal (#15956) * (Contributor Recognition Infrastructure) Milestone 1.4: Add required email services to notify contributors about levels they achieved (#15940) * (Contributor Recognition Infrastructure) Milestone 1.3: Add required suggestion services to handle contributor stats (#15917) * Fixed UI issues on the Contributor Dashboard raised by the translation team (#15868) * Fix #15514: Add "contributor dashboard debug" flag to Oppia local dev server start script (#15857) * Fix #11905, #15892: Navigate to initial page after closing suggestion review modal (#15851) * (Contributor Recognition Infrastructure) Milestone 1.1: Introduce storage models for contribution stats (#15821) * Fix #11686: Add filtering to the language selector drop-down in the Contributor Dashboard (#15809) * (Making Contributor Dashboard UI Responsive) Milestone 2.1: Implement the new UI for question submission modal (#15784) * Fix #15386: Improve experience for untranslatable cards (#15717) Data handling * Remaining changes for the #15861 (#16525) * Adds validation for rte tags in translation html for translation suggestion (#16481) * Move some backend validations to execute in strict mode only. (#16457) * Fix #11471: Flush cache before any job is run (#16439) * Do not log unavailable Beam job as exception (#16425) * Fixes part of #15942: Trigger stats model update during exp migration (#16352) * Fix #13162: Added schemas to StateCompleteEventHandler, LeaveForRefresherExpEventHandler, and SuggestionEmailHandler. (#16148) * Fix part of #13162: Added schemas to SubTopicViewerPage of subtopic_viewer.py (#16124) * Fix #16031: Flush cache after job run (#16109) * Fix part of #13820: Adds backend validation for RTE content and translations of exploration state (#16065) * Fix part of #13162: Added schemas to TopicViewerPage of topic_viewer.py (#16054) * Introduce audit migration jobs (#15928) * Added schema to QuestionsListHandler of questions_list.py (#15872) * Conversion function for exploration validation checks (#15861) * Add exploration migration job (#15837) * Fix part of #13821: Backend validation for general state interaction. (#15797) * Fix part of #13822: Backend validation for general state (#15796) Automated QA Team * Fix #16411: Upgrade Actions in GitHub Workflows (#16485) * E2E Flake: Fixes Conversation not visible and English in exploration language is not visible (#16451) * Increase max space for karma to fix "Browser Disconnected" issue (#16434) * E2E Flake: All Exploration summary tile is taking too long to appear (#16426) * Fix coverage flake in save-version-mismatch-modal.component.ts (#16414) * E2E Flake: Error First RTE Element not visible (#16320) * Fix exploration-editor-page coverage flake (#16280) * Milestone 2.2 (Improve line and branch coverage for the frontend and the backend): Increased coverage in some backend files (#16231) * E2E Flake: Mat Tab Toggle options take too long to appear. (#16225) * Fix part of #14219: Adds test coverage for value generators (#16198) * Milestone 2.1 (Improve line and branch coverage for the frontend and the backend): Increased coverage in some backend files (#16193) * Fixes #16152: Updates the test to make sure temporary files are deleted (#16188) * Fix #16168: Fix Context service flake in stats-reporting.service.spec.ts (#16177) * Flake check frontend tests on merge into develop (#16174) * Add tags to incoming issues (#16144) * E2E Flake: Expected ' ' to equal {{some string}}. (#16139) * Milestone 2.5, 2.6, 2.7 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#16106) * Fixing ffmpeg video reporter for webdriverio test suites. (#16080) * Bug fix in `run_backend_test.py` (#16056) * Fix a case of `First RTE element is not visible` (#16034) * Fix a flake in the question editor player. (#16032) * Milestone 2.3 and 2.4 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15969) * Milestone 1.6 (Improve line and branch coverage for the frontend and the backend): Added associated test file for some scripts (#15964) * (Celebrating learners' accomplishments) Milestone 2.4: Add E2E tests (#15946) * Milestone 1.5 (Improve line and branch coverage for the frontend and the backend): Added associated test file for some scripts (#15919) * Fix #13824: Clarify backend test shard error messages (#15908) * Alert when E2E or Lighthouse tests fail on develop (#15903) * Fixes fade in flake for statecontent editor. (#15893) * Milestone 2.1 and 2.2 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15882) * Moving from Ubuntu 18.04 to 22.04 in Github actions (#15879) * Fix "Failed: undefined" Flake (#15867) * Milestone 1.4 (Improve line and branch coverage for the frontend and the backend): Added associated test file for some scripts (#15700) * (Making the Contributor Dashboard UI Responsive) Milestone 2.3: Adding mobile e2e tests for the Contributor Dashboard and changing the default 'collapsed' status of the cards in the state-editor (#15536) Server Errors * Fix #16008: Add custom elements polyfill (#16404) * Fix #16005: Add polyfill for Object.entries (#16185) * Fixes several server errors (#15967) Typing * Added Mypy type annotations to the `core/controller` directory's files. (#16342) * Fix part of #13341: Added Mypy type annotations to the `script directory`'s pending files. (#16226) * Fix part of #13341: Added Mypy type annotations to the `script directory`'s root level files. (#16169) * Added Mypy type annotations to the `extensions` directory. (#16083) * Fixes some assert issues. (#15980) * Fixing ChangeDomain typing issue in the backend type annotations. (#15958) * Fix part of #10474: Make typescript checks strict left in PR #15799 & #15620 (#15912) * Added linters for exceptional types in backend type annotations (#15905) * Added Mypy type annotations ~ miscellaneous (#15870) * FixPart of #9749:?. removed from html files (#15869) * Added Mypy type annotations to `core/test` (#15864) * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.10 (#15827) * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.9 (#15801) * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.7 (#15693) Speed improvement * Fix part of #15968: Replace material icons with FA icons (#16227) Translations * Routine update of translations (#16082) Python Migration * Fix part of #14419: PARAM_NAMES, VALID_MODEL_NAMES, and FILTER_FIELD_NAMES refactored to ParamNames, ValidModelNames, and FilterFieldNames. Values changed to UPPERCASE (#15951) * Fix #15567: Python Interpreter Migration from 3.7.10 to 3.8.12 (#15508) v3.2.8 (03 Sep 2022) ------------------------ Learner/Creator Pages * Milestone 1.4 (Learner group MVP): Add facilitator dashboard and learner group creation journey (#15709) * Merge the Lesson information modal on the top-navbar with the one on the footer (#15781) * Fix #15892: Handle CD bugs (#15977) * Fix #15883: fix html select component logic (#15974) * Fix #15875: Fixes a bug that was preventing displaying / tagging of misconceptions (#15966) * Fix #15885: fix image region interaction drag offset to account for scroll location (#15934) * Fix release issues (#15907) * Fix skill delete issue (#15881) * Fix #13397: Milestone 1.1 - Change 'published_on' to None if Blog Post is Draft (#15862) * Fix #15730: the category language button was incorrectly placed. I needed to adjust the CSS (#15843) * Fix issue #14815: change padding in oppia-classroom-view-container, the search container (#15842) * Fix part of #15757: Fix graph and image click interaction (#15808) * (Celebrating learners' accomplishments) Make changes based on Web PMs' feedback (#15780) * Adding Comment To Explain- Why Blog Post Models are not Versioned (#15775) * Fix #15745 and #15744: Fix UI issues on learner-facing pages. (#15773) * Fix #14974: Text no longer floats outside the answering box (#15766) * Fix #15684: Resolve topic and skill editor dashboard UI issue on smaller screen sizes (#15741) * Fixes backend flake introduced by #15626 (#15731) * Fix #15480: Orientation of donate page not correct (#15727) * Milestone 1.8 (Improving the lesson creation experience): Make changes in the controller layer and also create the backend api service. (#15689) * Milestone 1.1 (Helping learners when they get Stuck): State migration for the field `dest_if_really_stuck` (#15644) * (Celebrating learners' accomplishments) Milestone 1.3: Add milestone message and post chapter recommendations (#15634) * Fix issue with 'Cancel Button' on customization modal when using the 'Copy Tool' (#15629) * Milestone 1.2 (Learner group MVP): Add learner group related handlers and services (#15626) * Milestones 1.4, 1.5, 1.6 and 1.7 (Improving the lesson creation experience): Allow users to see changes in the exploration metadata. (#15615) * [Backend]: Adds classroom model (#15810) * Update topic model and its related domain methods for accommodating diagnostic test skills. (#15694) * Fix #15739: Link author list items to profile page in the lesson info modal (#15798) Angular Migration * Fix #15874: Console error on trying to tag misconception to a question on skill editor page (#15906) * Fix part of #9749: contributorDashboard ui fix (#15823) * Fix part of #9749: Migrate contributor dashboard page, state graph visualization, version diff visualization and question directives (#15768) * Fix Part of #9749: rule-editor, router.service, skill-editor-routing.service, answer-group-editor and other services/componets (Question-creation service removed dead code) (#15674) * Fix part of #9749: Migrates angular html bind (#15568) * Implement application wide error handler (#15783) * Fix major breakage on develop caused by #15674 (#15723) Contributor Pages * Fix #11905, #15892: Navigate to initial page after closing suggestion review modal (#15851) * Fix #15746: Don't set active topic to 'ALL' in contributor dashboard page. (#15841) * Changed color of pagination buttons on the modals on the contributor dashboard. (#15839) * (Making Contributor Dashboard UI Responsive) Milestone 1.4: Implement the new UI for question review modal (#15703) * (Making Contributor Dashboard UI Responsive) Milestone 1.3: Implement the new UI for translation review modal (#15670) * (Making Contributor Dashboard UI Responsive) Milestone 1.2: Implement the mobile UI for list item components (#15627) Automated QA Team * Avoid Collisions of Backend Coverage Filenames (#15847) * Milestone 1.5 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15836) * Revert "Milestone 1.5 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO." (#15830) * Fix E2E flake: Trying to fix "Cannot read property 'getDirection' of undefined" flake in state content editor (#15819) * Fix #14280: Try to fix blog page flake: "Cannot read property 'getDirection' of undefined" (#15818) * Replace JS `fetch` with Angular `http` (#15816) * Fix E2E Metrics Reporting and Reruns (#15815) * Remove unnecessary state-editor-content code in e2e test. (#15806) * Upload frontend coverage reports and webpack bundles as artifacts for debugging (#15791) * Milestone 1.6 and 1.7 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15790) * Add a waitFor to try and address "successful report" flake. (#15789) * Fix 'ExplorationTitleInput is not visible' flake in the exploration editor. (#15788) * Make pre_push_hook_test.py assertRaisesRegex stricter (#15786) * Fix #13357: Rerun Downloads in scripts/ (#15782) * Fix bug in check_backend_associated_test_file script (#15774) * Fix #15728, #15729, #15720, #15721 frontend flakes introduced by #15674 (#15734) * Milestone 1.5 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15726) * (Celebrating learners' accomplishments) Milestone 1.4: Add E2E tests (#15725) * Milestone 1.4 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15701) * Milestone 1.3 (Improve line and branch coverage for the frontend and the backend): Updated run_backend_test script to calculate per-file branch coverage (#15697) * Milestone 1.3 (Migrate away from protractor): Migrated few test suite from protractor to webdriverIO. (#15655) * Milestone 1.1 (Improve line and branch coverage for the frontend and the backend): Checks to ensure that every backend file has an associated test file (#15625) * Install Python Dev Dependencies to Virtual Environment (#15602) Typing * Fixed customization arg rename migration issue. (#15844) * Fix part of #10474: Make typescript checks strict for few more files (#15799) * Fix #15716: MyPy's failing tests on develop. (#15771) * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.8 (#15762) * Address pending review comments of #15475 (#15716) * Added Mypy type annotations to the files of `core/jobs/batch_jobs` directory. (#15711) * Added Mypy type annotations to the files of `core/jobs/transforms/validation` directory. (#15687) * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.6 (#15663) * Fix part of #10474: Make typescript checks strict for few more files (#15620) * #14033: Adding mypy type annotations to stats_domain.py (#15479) Data handling * Add exploration migration job (#15837) Translations * Update a string for item selection input (#15829) * Routine update of translations. (#15777) Dev Workflow * Fix part of #12912: Enable pylint 'super-with-arguments' (#15812) * Fix #15654: Remove e2e classname used for styling in core/templates/css/oppia.css (#15811) * Update CODEOWNERS to use teams (#15787) * Attempt to suppress ev_epollex_linux error (#15776) * Fix #15152, #15153, #15224, #14625: Move generation of RTL CSS into webpack (#15576) * Increase memory limit for the webpack build process (#15943) * Add hash in filenames of CSS files generated by webpack (#15863) Python Migration * Fix part of #12912: Reenable `consider-using-dict-items` pylint rule (#15769) Bug fixes * Fix CSS scoping (#15724) v3.2.7 (05 Aug 2022) ------------------------ Learner/Creator Pages * Fix #15743 and #15685: UI issues with the search bar on the Math classroom page (#15778) * Fix #15745 and #15744: Fix UI issues on learner-facing pages. (#15773) * Fix #15147: filter box toggle issue on /topics-and-skill-dashboard (#15673) * Milestone 1.3 (Learner group MVP): Add frontend models and backend service api for Learner groups (#15656) * Fix #15650 and #15591: Update progress nav when state content changes; Update z-index for modals that need to be stacked (#15651) * Fix #15150: Learner Dashboard fix for no scroll bar present to check the progress of community lessons if more than 3 lessons are present. (#15616) * (Celebrating learners' accomplishments) Milestone 1.2: Modify the ratings-and-recommendations component and make sign up section dismissable (#15611) * Fix part of #13764: Frontend validation for at least one explanation for Medium Rubric (#15609) * (Celebrating learners' accomplishments) Milestone 1.1: Add end chapter check-mark and confetti (#15589) * Fix #14199: Fixed math OSK UI for iOS devices. (#15585) * Milestone 1.1 (Learner group MVP): Add learner group related models and domains (#15583) * Milestone 1.1 (Improving the lesson creation experience): Create the new domain objects (#15582) * Fix #15511: Add a Uploading animation when user clicks 'Use This Image' (#15564) * Fix #15540: Misplaced icon in EndExploration interaction (#15558) * Fix #15507: The mobile UI for the answer selection modal is offset to the left (#15520) * Backend changes for Logged-out experience (User Checkpoints Project) (#15422) * Fix part of #14702: Add the stale tab detection functionality for topic editor page (#15278) * Fix #15739: Link author list items to profile page in the lesson info modal (#15798) * Fix editor issues: schema-based-list-editor not populating the choices; editing images not working (#15704) * Learner checkpointing: Follow up changes (#15547) * Improved validation and minor fixes to clear the erroring deferred job queue (#15491) * Frontend changes for logged-out experience (User checkpoints project) (#15482) Bug fixes * Fix CSS scoping (#15724) Miscellaneous * Rearrange import order to fix typing_extensions error when deploying (#15691) * Add gtag.js to the app (#15683) * Milestone 1.2 (Improving the lesson creation experience): Create the new storage model and implement its lifecycle (#15607) Automated QA Team * Fix e2e CI error (Failed to load resource: the server responded with a status of 405 ()) (#15688) * Fix #15676: Fixes the flake in ImageWithRegionsEditorComponent (#15678) * Fix part of #14219: Increase Per-File Backend Test Coverage for tasks.py (#15566) * Fix part of #14219: Increase Per-File Backend Test Coverage (#15356) * Milestone 1.2 (Migrate away from protractor): Setup webdriverio and migrate few tests suite from protractor to webdriverIO (#15614) Dev Workflow * Changes in logged-out User Checkpoints backend (Follow-up to #15422) (#15667) * Fix Part of #10700: Refactor Object Factories (#15652) * Add new flag "download_combined_frontend_file" to frontend test execution file (#15635) * Fix part of #8668: Document url-interpolation.service.ts with jsdoc (#15628) * Codeowner changes for LaCE team (#15619) * Fix #15152, #15153, #15224, #14625: Move generation of RTL CSS into webpack (#15576) * Remove import from utils (#15557) * Fix codemirror (#15555) * Purge python utils (#15441) * Revert "Fix part of #14702: Add the stale tab detection functionality for topic editor page" (#15593) Release team * Fix #15381: Update CODEOWNERS to add Nithesh (#15661) Data handling * Allow bigger JobRunResult (#15658) * Fix Part of #13162: Add schema for UsernameCheckHandler and ReaderFeedbackHandler (#15605) * Fix Part of #13162: Add schema for RecommendationsHandler (#15597) * Fix part of #13822: Added backend validation for sub-topic url fragment (#15500) * Fix part of #13822: Added backend validation for story_is_published to be boolean (#15417) Contributor Pages * Fix #15648: Remove limit from in-review translation suggestion query (#15649) * (Making Contributor Dashboard UI Responsive) Milestone 1.1: Implement the mobile UI for dashboard tabs and navigation (#15594) * Fix #15570: Fix change detection issue in question editor modal. (#15573) * Fix #12425: Change Drag and Drop sort input so it displays the answer HTML instead of the contentID (#15496) * Fix #15385: Added functionality to persist translator language on [CD - Translate Text]. (#15460) Typing * Fix part of #14033: Added Mypy type annotations to some files of domain folder. -- M1.5 (#15640) * Fix part of #14033: Added Mypy type annotations to some files of `domain` folder. -- M1.4 (#15618) * Fix #13500: Data passed to platform storage service is always in bytes (#15598) * Fix part of #14033: Added Mypy type annotations to some files of `domain` folder. -- M1.3 (#15596) * Fix part of #14033: Added Mypy type annotations to some files of `domain` folder. -- M1.2 (#15580) * Fix part of #10474: Enable typescript strict mode for all the newly added files and number of errors along with errors log. (#15578) * Improve splash page loading speed : Remove material icons (#15549) * Added Mypy type annotations to `validation_decorators.py` and `job_result_transforms.py` (#15501) * Fix part of #10474: Cover ExtractImageFilenamesFromModelService with strict checks (#15495) * Fix part of #14033: Added Mypy type annotations to `param_domain` and `story_domain` (#15483) * Fix part of #14033: Type annotate html_cleaner.py (#15435) Angular Migration * Fix part of 9749: Migration of training-data.service.ts, training-panel, exploration-warnings.service.ts, parameter-metadata.service.ts and more. (#15604) * Fix Part of #9749: Migrate Outcome editor (#15438) Speed improvement * Improve loading speed of splash and math page (#15477) v3.2.6 (03 Jul 2022) ------------------------ Contributor Pages * Fix #15552 and part of #15639: Fix contributor dashboard (#15666) * Fix #15648: Remove limit from in-review translation suggestion query (#15649) * Fix #15431: Update skill opportunity progress percentage denominator to 10 (#15450) * Fix #15321: Show review message for accepted suggestions (#15405) * Fix part of #15182: Organize translations in translation review page by lesson (#15295) Speed improvement * Improve loading speed of splash and math page (#15477) * Fix images on splash (#15459) Bug fixes * Fix #15638: Fix broken page and broken FA icons (#15641) * Fix pre-commit linter and release scripts (#15608) Learner/Creator Pages * Fix #15369: Users can now use the keyboard to navigate the Learner Dashboard (#15556) * Fix #15538, #15541, #15534, #15527: Fix console error when previewing a skill; fix invalid profile URL in the history tab; fix controller schema validation error (#15553) * Fix edits allowed banner showing when the page hasn't loaded (#15510) * Fix svg sanitization logic to handle mixed camelCase attrs correctly (#15492) * Fix #15370: Can report an exploration from the keyboard (#15488) * Enable translations for the topic name in the "Master Skills for..." text on the practice tab (#15481) * Fix part of #15444: Add delay to fix issue with dropdowns on the exploration-settings-page (#15474) * Prevent page from reloading when attempting to navigate to the learner dashboard while currently on the learner dashboard (#15448) * Fix part of #14702: Add the stale tab and unsaved changes detection functionality for story editor page (#15443) * Fix #15246: Prerequisite skills from other topics now load properly in the chapter editor (#15442) * Fix part of #14702: Add the stale tab and unsaved changes detection functionality for skill editor page (#15440) * Fix #15376: Make classroom page responsive (#15418) * Add admin utility to rollback explorations (#15397) * Fix #15375: Make splash page's benefits subsection responsive on wider screens (#15391) * Fix part of #13822: Add validation for Curated Lesson Category (#15342) * Fix part of #14219: Increase interaction_registry test coverage to 100% (#15339) * Fix #14261: Voiceover of multiple choice components (#15315) * Fix part of #15134: Add a border to the language selector button (#15305) * Fix #15263: Make titles on exploration cards readable (#15297) * Fix #14085: Deprecate math interactions' unsupported rules and update cust arg name. (#15271) * Introduce backend changes for Logged in user checkpoints (#15213) * Fix #15526 and #15523: Console errors when ENTER key is used in a numeric input field and Unable to enter numbers in formats using a comma as a decimal separator (#15575) Dev Workflow * Remove import from utils (#15557) * Fix codemirror (#15555) * Fix how we revert wiki changes from web interface (#15494) * Fix #15489: Upgrade pip-tools to v6.6.2 for pip 22.1.1 support (#15490) * Upgrade pip-tools to v6.6.1 for pip 22.1 support (#15465) * Revert updates to the wiki made through the web interface (#15446) * Purge python utils (#15441) * Fix #15425: Increase max_old_space_size for webpack (#15437) * Upgrade Beam to 2.38.0 (#15400) * Run clean up before build and ensure webpack_bundles is non-empty (#15317) * Fix bug in hanging indent checker (#15226) * Fix secret names for revert-web-wiki-updates workflow (#15467) * Make instructions for getting help clearer in the PR template. (#15355) Typing * Fix part of #14033: Added Mypy type annotations to `fs_services` and `rating_services` (#15424) * Fix part of #14033: Type annotate user_query_services.py (#15395) * Add Mypy type annotations to pending files of storage models. (#15390) * Add schema for params dict in reader controller (#15388) * Add Mypy type annotations to pending files of jobs/types directory. (#15373) * Fix part of #10474: Strict checks for skill-selector.component.ts (#15310) * Fix part of #13341: Type annotate typescript_checks (#15289) * Fix part of #14033: Added MyPy type annotation to the file role_services.py (#15286) * Fix part of #13341: Type annotate common.py (#15258) * Fix part of #10474: Make typescript checks strict for few more files (#15257) * Type annotate classroom_services (#15241) * Fix part of #13341: Type annotate regenerate_requirements.py, run_frontend_tests.py and run_custom_eslint_tests.py (#15208) * Fix part of #10474: Make typescript checks strict for few more files (#15089) Release team * Fix deployment issue on MacOS (#15454) Translations * Routine update of translations (#15449) * Fix part of #14960: Page title translations - 2 (#15445) * Fix part of #14960: Page title translations - 1 (#15304) Automated QA Team * Relax Lighthouse uses-responsive-images assertion (#15434) * Extend failure notifications to backend, lint, and type checks (#15416) * Fix Context Service Flake in Translation Tab Component (#15398) * Fix part of #14219 :Increased coverage to 100% for user.gae_models_test (#15393) * Fix frontend time flake and other miscellaneous fixes (#15389) * Fix part of #14219: Increase role_services test coverage to 100% (#15384) * Extend lighthouse timeout for retrieving sourcemaps (#15379) * Fix part of #14219: Raise backend test coverage to 100% for core.constants.py (#15292) * Fix part of #14219: install_third_party_libs.py (#15290) * Fix part of #14219: Increase core.jobs.job_test_utils_test to 100% test coverage (#15272) * Fix part of #14219: Increasing backend test coverage of core.utils_test to 100% (#15161) Data handling * Fix part of #14419: Changed the format of REPORT_TYPE class (#15296) * Fix part of #14419: Changed the format of PARAM_NAMES class (#15291) * Fix part of #13822: Backend validation of skill medium rubrics explanations. (#15235) * Fix part of #14537: Refactor fs_domain (#15221) * Fix part of #13822: Validation for rubric explanations (#15173) * Add job to populate mailchimp database (#15120) * Fix part of #13341: Type annotate build.py, check_e2e_tests_are_captured_in_ci.py, check_frontend_test_coverage.py (#15104) * Refactor param domain file (#15048) * Fix part of #13162: Add Schema for AnswerSubmittedEventHandler (#14494) * Improve validation and minor fixes to clear the erroring deferred job queue (#15491) Angular Migration * Fix part of #9749: Migrate Schema Based Editors (#14776) v3.2.5 (04 May 2022) ------------------------ Contributor Pages * Fix #15321: Show review message for accepted suggestions (#15405) * Fix #14715 Stop update requests when no changes are detected (#15053) * Support legacy translation command in the translation suggestion review edit flow (#15333) Learner/Creator Pages * fix few learner exp quality issues and add 'more' button for feedback updates in the learner dashboard (#15273) * Fix #15253: update skill editor when state changes; Add discard button in SVG editor (#15254) * fix change detection issue in skill review editor (#15247) * Update index.yaml and fix change detection issues in skill / topic editor (#15242) * Fix #15234: Fixed issue with slider (#15237) * Fix #15023, #15037: Hide learner suggestions in the feedback tab and show correct open feedback count; Fix errors in skill questions tab (#15220) * Fixed some UI issues in sidenav and topnav (#15218) * Removed unnecessary calls to analytics service (#15154) * Fix part of #14702: Add favicon and staleness detection services and add some functions in local storage service. (#15100) * Fix #11560: Add "Lesson Info" Modal. (#15065) * Goals tab based on learner dashboard doc (#14987) * Fix part of #14085: Added MatchesUpToTrivialManipulations rule for math interactions. (#14977) * Add logs to debug server error in rte parser (#14897) * Fix stacking issue with "tag misconceotion modal" (#15267) Dev Workflow * Upgrade Beam to 2.38.0 (#15400) * Use group in codeowners and remove Hardik (#15276) * Fail noisily if a process crashes. (#15250) * Upgrade frontend and backend libs (#15243) * Update comments of non-null assertion. (#15236) * Fix #15225: Skip pylint cyclic import check (#15229) * Transfer code ownership from @DubeySandeep (#15219) * Use our fork of pylint-quotes (#15216) * Fix #13991: Fix flaky build tests (#15187) * Update PR template (#15054) * Fix part of #7450: Replaced private methods in SuggestionServicesUnitTests (#15001) * Revert "Fix part of #10474: Make typescript checks strict for some files." (#15252) * fix race condition causing fe test to be flaky (#15230) Release team * Add step to inform server errors team before deploying release (#15383) * Update branch protection rule prompt (#15281) * Update maintenance mode to return status code as 200 instead of 503 (#15210) Data handling * Fix part of #15311: Fix takeout in app feedback and add more granular debugging (#15359) * Fix part of #13822: Add backend validation check for question state schema version. (#15264) * Fix part of #13341: Type annotate create_expression_parser.py, create_topological_sort_of_all_services.py, install_chrome_for_ci.py (#15186) * Fix part of #13341: Type annotate clean.py, run_tests.py, scripts_test_utils.py (#15181) * Fix part of #14351: Enforce normalized data (#15044) * Fix part of #13822: Added beam jobs for skill misconception ID validation (#15039) * Fix part of #14085: Added audit job for math interactions. (#14952) * Fix part of #14537: Refactor improvements domain (#14866) Speed improvement * Improve speed of splash and learn/math (#15275) * Improve speed of splash and learn/math (#15142) * Revert "Improve speed of splash and learn/math" (#15223) Typing * Removing all annotated files from core/jobs. (#15228) * Fix part of #14033: Added Mypy type annotations to some files. (#15119) * Fix part of #14033: Type annotate translatable_object_registry (#15118) * Fix part of #10474: Make typescript checks strict for few more files (#15085) * Fix part of of #14033: Type annotate email_services file (#15062) * Fix part of #14033: Added Mypy type annotations to `user_domain.py` (#15057) * Fix part of #10474: Make typescript checks strict for some files. (#15049) * Fix part of #14033: Added Mypy type annotations to `collection_domain.py` (#14958) Angular Migration * Fix part of #11329: oppia-interactive-music-notes-input.directive (remove addClass) (#15151) * Fix Part of #9749: Migrates Music-Notes Input Interaction to Angular (#14841) * Fix Part of #9749: Migrate End exploration interaction with separate backend-api-service. (#14766) v3.2.4 (29 Mar 2022) ------------------------ Learner/Creator Pages * Fix #15023, #15037: Hide learner suggestions in the feedback tab and show correct open feedback count; Fix errors in skill questions tab (#15220) * Fix #15188: Fix Drag and Drop interaction short response html so it displays _html instead of _contentId (#15211) * Fixes 15159, 15156, 15163, 15180, 14752 (#15192) * Fix #15166: Add hacky translation support for breadcrumbs on classroom related pages (#15167) * Removed unnecessary calls to analytics service (#15154) * Fix #15101: Question submission image issue (#15131) * Fix #15123: Show classroom promo in navbar regardless of user state (#15125) * Fixes scroll issues (#15114) * Fix base64 parsing issue in svg editor upload functionality (#15109) * fixes broken UI on lessons tab. (#15068) * Fix #15024: fixes feedback's reload behaviour. (#15067) * Fix #14944: Copy text in translation mode (#15061) * Fix #14855: Edits navbar to ensure learning view does not break (#15045) * Fix part of #14219: Make test coverage in question_fetchers 100% (#15040) * Fixes #15005: Topic prerequisite skill checking is broken and prevents topic being published. (#15025) * Fix part of #14702: Add entity editor browser tabs info domain object (#15019) * Fix #14982, Fix part of #14960: Fixing search bar's language and categories drop-down and repetition of search results. (#14991) * Fix part of #14960: UI improvements on exploration and classroom pages (#14979) * Fix part of #14960: Updated UI of preferred languages chip (#14978) * Fix part of #14960: Open chapter from the topic page in the same tab instead of opening in a new tab. (#14976) * Fix part of #14960: Remove extra margin from beneath the lesson completion card (#14964) * Fix part of #13822: Backend validation for non-duplicate exploration rights user IDs (#14962) * Added new menu item `about oppia foundation` (#14961) * Fix part of #14829: Added RTL formatting for remaining files. (#14934) * Fix #14845: Problems related to skill editor component in the exploration editor (#14933) * Fix #14921: Made Image-editor component and edit-profile-picture component responsive (#14932) * Check uniqueness of topic name without considering leading and trailing spaces (#14925) * Fixes UI Inconsistencies in the Review Player (#14919) * Add some debug info to track #14708 if it occurs again (#14915) * Learner dahsboard fixes based on learner dashboard doc (#14898) * Fix #14793: Strip invalid tags and attribute from SVGs instead of showing a warning. (#14876) * Fixes The order of In-progress lessons. (#14868) * Minor UI enhancements in Goals Tab on Learner Dashboard. (#14863) * Fix #14712: Added warning checks for author recommended exploration ids (#14853) * Change hover behaviour of cards on the learner's dashboard (#14852) * Minor UI improvements in Navbar (#14837) * Minor UI changes in side-navbar. (#14836) * Fix part of #13764: set minimum number of questions for Topic until practice tab can be displayed (#14799) * Added new empty lessons tab and fixes feedback tab's title position. (#14768) * Fix #14788: Results page now doesn't show skills with no questions (#14762) * Fix #14634: Add checks to validate explorations before adding them as chapters (#14747) * Switch default values of autogenerated text-to-speech and correctness feedback for explorations (#14746) * Fix #13010: Allow learners to enter decimals in formats other than English (#14744) * Fix #14646: Make display of concept card link inline. (#14731) * Fixes creator dashboard button's screen position, added hover effect on main menu and removed extra unit spaces. (#14721) * Fix #14667: Adds I18N keys for preference page (#14685) * Fix #14621: Change concept-card modal's z-index so it stacks correctly over other modals (#14670) * Fix #14432: Shows previous subtopic card when at last subtopic of the topic. (#14660) * Fixes Leaner Dashboard Issues (#14654) * Fixes #14636: Bug on collection player page on mobile devices (#14637) * Fix part of #14219: Increasing backend test coverage of core.domain.story_fetchers_test to 100% (#14632) * Changing the login overlay to have the new UI (#14607) * Align lesson titles on collection page so they don't overlap with the path line (#14591) * Fixes practice tab's start button behaviour (#14583) * Fix #14431: Resolves all navbar related fixes for rtl languages (#14559) * Change layout of exploration and collection cards on community-library for mobile UI (#14527) * Fix #13566: Updates languages names in voiceover dropdown and other fixes. (#14523) * Implemented new UI changes in lessons page (mobile view). (#14512) * Redesign Search bar and Fix #14447: Change dropdown buttons' z-index so they don't appear over the sidebar (#14486) * Add RTL support to the major viewer pages (#14375) * Fix #13737: Voiceover does not repeat when user submits answer before voiceover has finished (#14367) * Fix part of #14085: Making math interactions consistent with the android definitions. (#14197) * Fix part of #13764: Story notes and skill rubric explanation validation. (#14159) * Registers translatable fields in Exploration, Question & State based on new translation architecture. (#14534) * Fix base64 to unicode decoding issue (#15002) * Fix part of #13764: For curated lessons outcome refresher_exploration_id should be None (#14908) * Fix 14787: Fixes topic editor tab when wrong URL fragment is entered in `Topic URL Fragment` (#14903) * Fix #15011: Replace choppy animation and introduce fade in out as a short term fix (#15081) * Fix part of #11329: conversation-skin.directive (remove: addclass and removeclass) (#15066) * Fixed different behavior of navbar items. (#14862) * Skip regenerating summary with new contributor if exp is not found (#14846) * Fixes #14704: Uploading of exploration in yaml format. (#14800) Speed improvement * Improve speed (#15116) Release team * Fix path for app yaml file (#15107) * Allow option to choose default browser (#15076) * Add CORS header to app.yaml (#15043) * Remove usage of credits form for changelog generation (#14911) * Re-add rtl css to develop (#14907) * Update authors and changelog for v3.2.3 (#14904) * Allow multiple remote urls to be used for release (#14894) * Fix cloud sdk version and add a check to avoid this issue in future (#14616) * Fix #14354, #14328 and #57 (on release-scripts): Multiple Release script fixes (#14380) Translations * Routine update of translations. (#15092) * Fix #14998: Extended hacky translations for next recommended chapter name translation (#14999) * Fix #14947: Mcq options translations not showing up (#14948) * Fix #14881: Extended hacky translations for navbar topic titles (#14882) * Routine update of translations. (#14789) * Imlementation of Hacky translations for the all classroom related pages (#14631) * Adds Base structure for the new translation architecture (#14515) Contributor Pages * Fix part of #14355 Allow filtering reviewable translation suggestions by topic [Frontend] (#15074) * Fix #14826: Implement pagination in Contributor Dashboard Contributions tab. (#15072) * Fix part of #14355 Allow filtering reviewable translation suggestions by topic [Backend] (#15070) * Fix #14358: Slow load times for translation opportunities (#14784) * Fix #14206: Unable to remove question contribution rights in admin dashboard (#14577) * Fixed length of filter by topics container (#14561) * Fix #11761: Add a dropdown to replace the sidebar in contributor's dashboard when the screen becomes too narrow (#14342) Data handling * Fix part of #13341: Type annotate third_party_size_check.py, start.py, setup_gae.py (#15069) * Fix part of #13822: Add backend validation check for story description. (#15038) * Fix part of #14419: ANDROID_TEXT_SIZE and ANDROID_NETWORK_TYPE enums refactored (#15015) * Fix #10383: fix nerdamer typing (#14963) * Fix Part of #13162: Adds schema for handler UserInfoHandler class (#14922) * Upgrade lighthouse (#14917) * Replace validation method with object class (#14901) * Fix part of #13162: Added SiteLanguageHandler schema (#14886) * Fix part of #13162: Added Schema for ExportAccountHandler (#14880) * Fix part of #13162: Added Urlhandler schema with required changes (#14879) * Topic domain refactor (#14844) * Fix part of #14537: Refactor feedback domain file. (#14802) * Fix part of #14537: Refactor wipeout domain (#14764) * Fix #14751: Allow int in float ininstance checks (#14758) * Fix Part of #13162: Adds schema for handler FetchSkillsHandler class (#14749) * Fix part of #13822: Exploration title should have max length of 36 (#14748) * Refactor beam_job_domain file (#14742) * Fix #14705: Allow any param dict, add more files to GCoud ignore file, fix MyPy bug by adding stubs (#14724) * Fix #14022: Tidy-up admin related pages and remove remainders of MapReduce jobs (#14663) * Fix part of #13162: Added Schema for EditableSkillDataHandler (#14623) * Fix Part of #13162: Added Schema for SignUpPage (#14614) * Fix part of #14555: Implement a schema type to validate variable no of keys in dict (#14571) * Fix part of #14383: Refactor comma_separated_*_ids (#14563) * Fix part of #14537: Introduce lint checks for importing services inside domain files (#14553) * Fix part of #13162: Added schema for ExplorationEmbedPage (#14481) * Job to extract email, collection id of users who created collection (#14461) * Fix part of #13162: Setup schemas on topic editor (#14356) * Skill opportunity job (#14324) Miscellaneous * Fix tests/methods that refer to private functions in Python inside core.domain.exp_services_test.py (#15060) * Fix #14827: Clarifies the error messages for NumericInputInteraction (#14918) * Upgrade libs (#15127) * Revert "Improve speed" (#15121) * Transfer codeowner files from Eric to Kevin (#14753) * Update README file to add social media (#14745) * Update year to 2022 (#14700) * Fix frontend test flake caused by #14342 (#14638) * Fix #14524: Frontend testing (#14619) * Revert #14470 (#14613) Angular Migration * exploration-improvements.service.ts from AngularJS to Angular (#15051) * dead code (#15028) * Fixed part of #9749: Migrated concept-card-editor and skill-preview modal (#14939) * Fix Part of #10700: Refactor Object Factories (#14888) * Fix Part of #9749: state-interaction-editor from AngularJS to Angular (#14873) * Fix part of #9749: Migrated outcome-destination-editor (#14865) * Fix Part of #9749: Migrate State content editor (#14838) * Fix part of 9749: customize-interaction-modal.component migrated from AngularJS to Angular (#14798) * Fix part of #9749: Migrated state-solution-editor component (#14790) * Fix Part of #9749: Migrate and Redesign DragAndDrop interaction (#14774) * Fix part of #9749: Migrated add-or-update-solution modal component (#14771) * Migrate ExplorationStatesService and GraphDataService to Angular 2+ (#14701) * Fix part of #9749: Migrate whole NumberWithUnits interaction directive. (#14681) * Fix part of #9749: Migrated ques-misconception-editor (#14672) * Fixes Part of #9749: Migrate Whole RatioExpressionInput directive interaction (#14661) * Fix part of #9749: Migrate Solution-editor & solution-explanation-editor to angular (#14656) * Fix Part of #9749: Migrates Interaction Pencil Code Editor to Angular (#14624) * Fix Part of #9749: Migrate whole ItemSelectionInput directive inside interaction. (#14593) * Fix part of #9749: Migrated reviews-materials-editor component (#14590) * Fix part of #9749: Migrated skill-misconception-editor directive (#14588) * Fix part of issue #9749: State-hints-editor, hint-editor, response-header component from angularJS to angular (#14576) * Fix part of #9749: Migrated select-skill-difficulty-modal, question-editor-save modal, confirm-question-exit-modal etc. (#14565) * Fix part of #9749: Migrate translation-suggestion-review-modal (#14546) * Fix Part of #9749: Migrate change subtopic assignment modal (#14493) * Fix part of #14187: Migrate contribution-and-review-service to angular and fully cover it with frontend tests (#14471) * Fix part of 9749: Migrate help-modal.controller (#14406) * Fix part of #9749: Migrate conversation skin, conversation skin embed and exploration player page directives (#14087) Typing * Fix part of #10474: Make typescript checks strict for few more files. (#15046) * Fix part of #14033: Added MyPy type annotation to the file image_services.py (#15032) * Fix part of #10474: Make typescript checks strict for few more files (#15027) * Fix part of #14033: Added Mypy type annotations to some files. (#15008) * Fix part of #10474: Make typescript checks strict for few more files (#14990) * Fix part of #10474: Make typescript checks strict for subtopic_viewer/*.ts folder (#14989) * Fix part of #10474: Make typescript checks strict for few files (#14988) * Fix part of #14033: Added Mypy type annotations to `activity_services.py` (#14986) * Fix part of #10474: Make typescript checks strict for few files. (#14983) * Fix part of #14033: Type annotate user_query_domain (#14931) * Fix part of #10474: Make typescript checks strict for skills-list.component ans spec (#14871) * Fix Part of #13015: Removing use of `unknown` as a type in Interactions (#14775) * Added strict tests for more files (#14664) * Fix part of #10474 : Make typescript checks strict for `core/templates/components/skill-selector/merge-skill-modal.component.ts` (#14644) * Fix part of #10474 : Make typescript checks strict for `core/templates/domain/editor/undo_redo/base-undo-redo.service.ts` (#14633) * Fix part of #10474: Make typescript checks strict for ExplorationObjectFactory (#14600) * Fix part of #14033: Type annotate Topic domain (#14595) * Fix part of #14033: Added Mypy type annotations to some files. (#14469) Developer UX * Upgrade elasticsearch and limit its memory usage (#15033) * Fix part of #7450: Replace testing of private methods in BuildTests (#15020) * Add error message to debug flaky test (#14970) * Fix Part of #11496: Add lint check for browser.switchTo().activeElement() method (#14959) * Upgrade frontend and backend libs (#14902) * Upgrade to fixed version of pip-tools (#14860) * Catch errors at the time of javascript compilation (#14849) * Remove codeowner for the pylint files (#14824) * Fix pip compile (#14813) * Fix part of #12912: Enables 'missing-raises-doc' and 'cyclic-import' pylint checks (#14772) * Upgrade frontend libs (#14737) * Fix part of #12912: Enables raise-missing-from pylint check (#14719) * Upgrade libraries (#14642) * Update PULL_REQUEST_TEMPLATE.md (#14629) * Move import under third party exec code (#14606) * Fix part of 14219: Increasing backend test coverage of core.storage.classifier.gae_models_test to 100% (#14573) * Fix part of #14419: SERVER_MODES refactored to ServerModes and values changed to UPPERCASE (#14556) * Fix part of #12912: Enables `consider-using-in` pylint check (#14520) * Fix part of #12912: Changes deprecated python methods (#14506) * Fix parts of #12912: Enables `no-else-continue` and `no-else-raise` pylint checks (#14504) * Fix part of #10616: Added eslint check "lines-between-class-members" (#14496) Automated QA Team * Fix part of #14219: Increasing backend test coverage of core.domain.playthrough_issue_registry_test to 100% (#15026) * Fix part of #14219: Add backend tests to achieve 100% per-file backend coverage with classifier_domain_test (#14996) * Fix part of #14219: Increasing backend test coverage of core.domain.topic_fetchers_test to 100% (#14981) * Fix part of #14187: Added frontend coverage for `oppia-footer.component.ts` (#14973) * Fix part of #14219: Increasing backend test coverage of core.domain.story_services_test to 100% (#14942) * Fix part of #14187: Add frontend test for audio-preloader.service.ts (#14927) * Fix part of #14187: Add frontend test for story-node.model.ts (#14923) * Fixes part of #14219: 100% test coverage for skill_domain and suggestion_services (#14920) * Fixed part of #14219: 100% per-file backend test coverage for acl_decorators.py (#14892) * Fix part of #14219: Increasing backend test coverage of core.domain.topic_services_test to 100% (#14891) * Fix part of #14219: Increasing backend test coverage of core.domain.summary_services_test to 100% (#14890) * Add more tests to SVG editor (#14884) * Fix part of #14219: Increasing backend test coverage of core.domain.exp_fetchers_test to 100% (#14883) * Fix part of #14219: Increasing backend test coverage of core.domain.blog_services_test to 100% (#14854) * Fix part of #14219: Increasing backend test coverage of core.domain.skill_fetchers_test to 100% (#14835) * Fix part of #14219: Increasing backend test coverage of core.controllers.blog_homepage_test to 100% (#14834) * Resolving Add to 'play later' list icon taking too long to load flake in learner dashboard (#14822) * Fix "Wait timed out after 10001ms" flake in wipeout suite. (#14818) * Fix part of #14219: Increasing backend test coverage of core.domain.exp_services_test to 100% (#14816) * Fix part of #14219: Increase backend coverage for `classifer_services.py` to 100% (#14812) * Fix part of #14219: Increasing backend test coverage of `core.domain.skill_services_test` to 100% (#14801) * Fix part of #14187: Add remaining frontend tests for some files for 100% coverage (#14796) * Fix part of #14187: Add fronted tests for `normalize-whitespace-punctuation-and-case.pipe.ts` (#14773) * fixed part of #14219: 100% per-file backend test coverage for question_domain.py (#14759) * Fix part of #14219: Increasing backend test coverage of core.domain.feedback_services_test to 100% (#14756) * Fix part of #14187: Cover some files with frontend tests (#14729) * Fix part of #14187: Add remaining frontend tests for `truncate-and-capitalize.pipe.ts` (#14699) * Fix part of #14187: Adds frontend tests for `subtopic.model.ts` (#14696) * fixed part of #14219: 100% per-file backend test coverage for event_services.py (#14682) * Fix part of #14219: Increasing backend test coverage of `core.storage.auth.gae_models_test` to 100% (#14665) * Fix part of #14219: Increasing backend test coverage of `core.storage.question.gae_models_test` and `core.jobs.job_utils_test` to 100% (#14662) * Fix part of #14187: Add remaining frontend tests for three files (#14650) * Fixed part of #14219: Increased backend test coverage of `core.storage.opportunity.gae_models_test`, `core.controllers.story_editor_test`, `core.controllers.skill_editor_test` and `core.storage.statistics.gae_models_test` to 100% (#14641) * Fix parts of #14219: Increasing backend test coverage of `core.storage.recommendations.gae_models_test` and `core.storage.subtopic.gae_models_test` to 100% (#14610) * Fix part of #14219: Increasing backend test coverage of `core.domain.email_manager_test`, `core.domain.action_registry_test` and `core.domain.config_domain_test` to 100% (#14601) * Fix part of #14219: 100% per-file backend test coverage for editor.py (#14594) * Fix part of #14219: Increasing backend test coverage of `core.storage.config.gae_models_test`, `core.domain.html_validation_service_test` and `core.domain.stats_domain_test` to 100% (#14589) * Fix part of #14219: Increasing backend test coverage of `core.storage.story.gae_models_test` to 100% (#14586) * Fix part of #14219: Increasing backend test coverage of `core.storage.blog.gae_models_test` to 100% (#14585) * Fix part of #14219: Increasing backend test coverage of `core.storage.audit.gae_models_test` to 100% (#14584) * Fix part of #14219: Increasing backend test coverage of `core.domain.learner_goals_services_test` and `core.domain.recommendations_services_test` to 100% (#14582) * Fix part of #14219: Increasing backend test coverage of `core.domain.param_domain_test` to 100% (#14581) * Fix part of #14219: Increasing backend test coverage of core.storage.improvements.gae_models_test to 100% (#14580) * Fix part of 14219: Increasing backend test coverage of `core.domain.rights_domain_test` to 100% (#14578) * Fixes part of 14219: Increasing backend test coverage of `core.domain.taskqueue_services_test` to 100% (#14564) * Fix part of 14219: Increasing backend test coverage of `core.domain.activity_domain_test` to 100% (#14558) * Fix part of #14219: Increasing backend test coverage of `core.platform.storage.cloud_storage_emulator_test` to 100% (#14548) * Fix part of #14219: Increasing backend test coverage of core.controllers.resources_test to 100% (#14541) * Fix part of #14219: Increase backend test coverage of core.controllers.profile_test to 100% (#14529) * Add support for E2E rerun overrides (#14508) * Enable screenshots on the develop branch of oppia/oppia (#14473) * Fix #12219: Migrate typescript tests to Github actions and filter circle ci tests to run only on develop branch (#14439) Bug fixes * Fixed #15009: Scroll to the top while navigating to the static pages. (#15010) * Fix part of #14960: Center aligning this text with their images. (#14993) * Fix failing mypy checks of `core.domain.rights_domain_test` (#14649) * Fix shared component error for: Migrate delete-hint-modal.template, delete-interaction-modal.template, delete-last-hint-modal.template, delete-solution-modal.template, follow #14454 PR: (#14522) Server Errors * Fix #13624: Limit number of characters that can be entered in the skill description text field (#14940) * Include additional data when error is thrown to better understand issue #14709 should it arise again (#14938) * Fix #14711: Unsubscribe from observables to prevent detectChanges calls after component destruction (#14926) * Fix #14710: Fixes `newWidgetSelector` being assigned null. (#14905) * Investigating server error described in issue #14707 (#14887) * Fix #14714: Modified conditional checks for adding content ids (#14867) * Fixes #14713: ngModel:numfmt error in the editor page (#14850) Python Migration * Fix part of #13956: Migrate function python_utils.open_file (#14728) * Fix part of #13956: Replaced python_utils.divide with "//" python3 operator (#14657) * Fix part of #13956: Replaced python_utils.parse_query_string with urllib.parse.parse_qs (#14640) * Fix part of #13956: python_utils.url_unsplit->urllib.unsplit (#14338) * Fix part of #13956: Replaced python_utils.ZIP() with zip() (#14279) * Fix part of #13956: Remove `yaml_from_dict` from python_utils.py (#13970) v3.2.3 (10 Feb 2022) ------------------------ Learner/Creator Pages * Fix #14693: Allows changing thumbnail background color. (#14783) * Fix #14426: Resolved Multiple Choice Options Shuffling Between Attempts (#14777) * Fix #14694: Stack skill name label and radio button container properly and add text explaining score calculation on the practice session results page (#14716) * Fix #14683: Learner dashboard minor UI fixes for mobile view (#14688) * Fix #14667: Adds I18N keys for preference page (#14685) * Fixes unnecessary underlining on hover and focus on the top navigation bar (#14608) * Changing the login overlay to have the new UI (#14607) * Fix #14431: Resolves all navbar related fixes for rtl languages (#14559) * Fix #14084: Allow resize image to 200%; Surface exp role editor error (#14557) * Fix #14397 : Contributors page not found (#14540) * Fix #14530: Change question-editor-container's position so it moves up when screen is scrolled (#14535) * Change layout of exploration and collection cards on community-library for mobile UI (#14527) * Fix #13680 Remove voice artists' role in the description text (#14463) * Fix #14188: Fix the Score Circle on the results page so it animates properly (#14452) * Implemented new navbar : Home navbar menu item (#14438) * Fix #11898: Align social-media icons (#14436) * Fix #14389: Increase HTML length validation check limits (#14391) * Fix #14255 Added extra space at bottom of the story editor page (#14381) * Implemented new UI for the 'Get Involved' Tab of the top navbar and fixes issue with keyboard navigation (#14345) * Fix part of #14085: Making math interactions consistent with the android definitions. (#14197) Data handling * Fix #14751: Allow int in float ininstance checks (#14758) * Fix translation stats job (#14554) * Fix part of #13162: Add backend test and schema to validate StoryUrlFragmentHandler class arguments (#14489) * Fix part of #14351: Extended Schema validator (#14465) * Fix part of #13162: Add schema for ReviewableSuggestionsHandler (#14407) * Add skill and story migration jobs (#14361) * Fix Part of #13162: Add argument schema for ProfileHandler, SignupHandler classes (#14257) Contributor Pages * Fix #14669: Translation modal and other UI fixes in Contributor Dashboard Page (#14680) * Fix #14519: Contributor profile page UI fixes (#14562) * Fix #14230: Strip whitespace when comparing translation content html and exploration content html (#14396) Developer UX * Fix parts of #12912: Enables `useless-object-inheritance` (#14551) * Fix part of #12912: Enables no-else-break pylint check (#14474) * Upgrade libraries (#14430) * Updates cron time for pending review notification (#14364) * Upgrade libraries (#14236) Python Migration * Fix part of #14419: Refactor ValidationModes class and values (#14592) * Fix part of #13956: remove python_utils.create_enum (#14301) * Script for auto extending index.yaml (#14293) Bug fixes * Remove submodule (#14568) (#14569) * Fixed #14510: Fixed working of delete answer group modal component (#14516) * FE Flake in Router Service (#14318) * Fixes few server errors and addresses some follow-up comments from #14352 (#14518) Translations * Routine update of translations. (#14789) * Imlementation of Hacky translations for the all classroom related pages (#14631) * Routine update of translations. (#14570) Automated QA Team * Fix part of #14219: Increasing backend test coverage of `core.controllers.library_test` to 100% (#14545) * Fix part of #14219: Increasing backend test coverage of `core.controllers.questions_list_test` to 100% (#14538) * Fix part of #14219: Increasing Backend Test Coverage of `extensions.rich_text_components.components_test` to 100% (#14528) * Fix #14525: Fix incorrect error of no backend tests (#14526) * Fix part of #14219: Write tests to fix 100% per file coverage for collection_domain.py (#14499) * Fix part of #14219: 100% per-file backend test coverage for base.py (#14495) * Fix part of #14219: Add a test to complete gae_models coverage (#14466) * Fix part of #14219: Add tests to completely cover scripts/common.py (#14442) * Fix part of #14187: Cover current-interaction and language-util services fully (#14434) * Add e2e test to prevent supplemental cards regression (#14320) * Add frontend test for schema-based-html-viewer.directive.ts (#14205) Typing * Added strict checking for more files (#14539) * Fix part of #10474 : Make typescript checks strict for base-components/base.module.ts (#14513) * Fix part of #10474 : Make typescript checks strict for editable-topic-backend-api.service.ts (#14459) * Fix part of #14033: Type annotate improvements and feedback domain files (#14445) * Fix part of #14033: Type annotate Classifier and Classroom domain (#14369) * Fix part of #10474: Make typescript checks strict for core/templates/components/graph-services/graph-layout.service.ts file (#14311) * Fix #14231: Added required strict typescript checks to import question-player-state-service (#14274) Angular Migration * Fix #14514: Remove dead code for voiceover tab on contributor dashboard page. (#14517) * Fix #14502 & Fix part of #9749: use one modal for save-pending-changes-modal. (#14509) * Fix #14501 & Fix Part of #9749: skill-prerequisite-skills-editor solved data not showing issue and moved it from angularJs to angular (#14505) * Fixed part of #9749: Migrated skill-rubrics-editor component (#14500) * Fixed part of #9749: Migrated Add-Worked Editor directive to component (#14490) * Fix part of issue #9749: migrate forms-templates from AngularJS to Angular (#14488) * Fixed part of #9749: Migrated misconception editor directive (#14487) * Fix part of #9749: Migrated Add-worked-example and delete worked example modal (#14477) * Fix part of #9749: Migrate save-pending-changes-modal.template (#14476) * Fix part of #8472: Migrates exploration correctness feedback, exploration param changes, exploration param specs services. (#14475) * Fix part of #9749: Migrate to skill-editor-save-modal.component (#14470) * Fixed part of #9749: Migrated Add Misconception modal (#14467) * Fix Part of #9749: Migrate delete-hint-modal.template, delete-interaction-modal.template, delete-last-hint-modal.template, delete-solution-modal.template into component (#14454) * Fix part of #9749: Migrates topic-editor-send-mail, topic-editor-save, delete story modal (#14451) * Fixed part of #9749: Migrated preview set parameter modal (#14435) * Fix part of 9749: Migrate delete-answer-group-modal.template (#14429) * Fixed part of #9749: Migrated revert-exploration-modal component (#14421) * Fix part of issue #9749: migrate translation-tab TranslationTabBusyModal, DeleteAudioTranslationModal from angularjs to angular (#14411) * Fix part of issue #9749: migrate welcome translation modal from angularjs to angular (#14410) * Fixed part of #9749: Migrated add-hint-modal component (#14401) * Fix part of issue #9749: migrate preview-summary-tile-modal to angular component and some services (#14388) * Fix a part of #14278 : Exploration rights Service small important change in code (#14387) * Fixed part of #8472: Migrated confirm-state-modal component (#14377) * Fixed part of #8472: Migrated topic-editor-save-modal to Angular component (#14363) * Migrate and encapsulate logic from conversation skin directive to ratings-and-recommendations component. (#14049) * Fix Part of #9749: Migrates Creator-Dashboard-Page to Angular (#13906) Release team * Add notes to the release coordinator page (#14472) * Fix problems in pre push hook (#14457) Miscellaneous * Fix #13162: Add schema and introduce new approach for saving multiple images in suggestion handler. (#14063) v3.2.2 (05 Jan 2022) ------------------------ Learner/Creator Pages * Fix breaking of navbar throughout all screen sizes (#14498) * Fixes an issue where multiple calls where being made to the backend (#14460) * Fix #14390: Concept cards have line breaks before and above them (#14443) * Implemented new navbar : Home navbar menu item (#14438) * Fix #14404: Fixes sidebar freezing behaviour (#14420) * Fix #14011: Made misaligned subtopic tiles responsive (#14392) * Fix #14304: Removed navbar links linking pages to new tabs (#14346) * Implemented new UI for the 'Get Involved' Tab of the top navbar and fixes issue with keyboard navigation (#14345) * Fix #14305: Change Foundation Page Title (#14329) * Implemented the new UI for the Learn (formerly Classroom) Tab of the navbar and fixes #13667 (#14294) * Adding a “Create exploration” button to the top bar of creator-dashboard (#14292) * Fix part of #13764: page title fragment for web should have min-length 5 characters (#14264) * Implemented new UI changes in side Navigation bar (#14258) * Implemented donate nav item according to the new navbar view (#14232) * Fix - Hints visible on results page, #13248: Adding href to topic viewer page urls (#14224) * Fix issue #12165 overflow of skill description (#14203) * Implemented the new UI for the results page (#14193) * Add translation keys for interaction specific constant translations (#14158) * Fix #14330: Pass isLearnAgainButton input to the progress-nav component (#14371) * Fix mobile usability issues (#14198) * Added confirmation before leaving practice tab to prevent accidental session close. (#14128) Contributor Pages * Add languages: Hausa, Igbo, Yoruba (#14378) * Fix #14300 When the language is changed on the contributor dashboard, the view doesn't update for a while. (#14357) * Fix #14339: Unblock translation review process from server error raised while fetching translations to review (#14341) * Fix #14234 Unable to accept/reject a suggestions during reviews. (#14283) * Fix #14265: Make translation language selector to show selected language correctly (#14268) Data handling * Add email job to registry (#14393) * Add debugging to suggestions stats job (#14350) * Fix part of #13162: Adds schemas for TopicsAndSkillsDashboardPageDataHandler, TopicAssignmentsHandler, SkillsDashboardPageDataHandler (#14323) * Remove Brian for codeowners (#14319) * Fix part of #13162: Added schema for the SkillRightsHandler and SkillEditorPage class in skill_editor.py (#14251) * Fix part of #13162: Add schemas to validate ExplorationStartEventHandler and ExplorationActualStartEventHandler class arguments (#14222) * Wipeout changes (#14221) * Fix #13974: Remove unneeded constants (#14213) * Fix #14103: Shifts handler schema constants to a separate file (#14212) * Fix Part of #13162: Add argument schema for ExplorationCompleteEventHandler, ExplorationMaybeLeaveHandler, SolutionHitEventHandler classes (#14208) * Fix part of #13162: Adds schema for the PromoBarHandler in resources.py (#14171) Bug fixes * Fix popperJS (#14386) Python Migration * Fixes part of #13956: python_utils.urllib_unquote (#14374) * Fix part of #13935: Remove python_utils.url_parse function (#14336) * Fixed part of #13956: Remove python_utils.zip_longest function (#14317) * Fix part of #13956: Using Python3 urlrequest (#14303) * Fix part of #13956: remove python_utils.string_io() and python_utils.url_open() (#14299) * Fixed part of #13956: Remove python_utils.PRINT function (#14284) * Introduce helper transforms for jobs (#14120) * Fix part of #11314: Change "offset" from str to int, cursor to offset and address remaining TODO's (#14172) Angular Migration * Fix part of issue #9749: migrate setting-tab modals (delete, unpublish, reassign, ... ) to Angular Component (#14359) * Fix part of issue #9749: migrate create new subtopic modal to angular component (#14347) * Fix part of #8016: Migration of Exploration rights Service from AngularJS to Angular (#14278) * Fix part of #8016: Make Http Calls of question-suggestion-review-modal.controller.ts and translation-suggestion-review-modal.controller.ts through service component. (#14246) * Fix #9749: migrate Create feedback thread modal to angular component (#14269) * Fixes part of #9749: Migrate few instances of angular-html-bind (#14263) * Fix part of #8016: Make HTTP Calls of setting-tab.component.ts through service component (#14153) * Fix Part of #9749: Migrates Collection-Player-Page to Angular (#12729) Translations * Routine update of translations. (#14349) Developer UX * Update CONTRIBUTING.md to be the same as our wiki (#14334) * Fix part of #10616: Add eslint rule 'member-delimiter-style' (#14244) * Fix part of #10616: Add eslint rule to ensure consistent type definitions (#14162) * Fix some errors and omissions in the lint script. (#14321) Miscellaneous * Temporarily remove @BenHenning from codeowners (#14286) * Remove myself from oppia-web CODEOWNERS (#14216) * Use legacy cust args for v47 to v48 schema migration (#14352) * Fix #14126: Pass the normalized values for url path elements to the handler (#14127) Automated QA Team * Fix part of #13467: Fixes frontend coverage issue with `save-validation-fail-modal.component.ts` (#14275) * Fix part of #14187: Cover some files with frontend tests (#14242) * Disable GPU for Selenium to try and fix renderer timeout (#14220) * Fix part of #14187: Write frontend tests for some components (#14179) * Fix #13952: Per-file backend coverage tests (#14166) * Fix part of #10798: Fixed end-to-end tests for workflow.js (#14124) Typing * Fix part of #10474: Cover translate-text.service.ts and music-phrase-player.service.ts with strict checks. (#14201) * Fix part of #8015: pretest-question-backend-api.service returns domain object instead of dict (#14192) * Fix part of #14033: Added type annotations to wipeout_domain (#14163) * Fix part of #10474: Typescript Strict Check for skill-backend-api.service.ts (#14137) * Fix part of #14033: Type annotate opportunity domain (#14123) * Fix part of #10474: Cover Top-Navigation-Bar component with strict checks (#14106) * Fix part of #14033: Add Mypy type annotations to domain files (#14058) * Fix part of #13687: Convert dicts to domain objects as a part of normalization through schema validation. (#13678) v3.2.1 (27 Nov 2021) ------------------------ Learner/Creator Pages * Fix #14227: Disable "Add Thumbnail" button when user has not uploaded new thumbnail (#14297) * Fix #14235: Enable to submit question suggestions with image region interations (#14289) * Fix #14228 and #14253: Set classroom filter choices in skills tab and fix change detection/propagation issue in the supplemental card component (#14270) * Fix #10315, #14200: Fixes white spacing issues in RTE (#14233) * Fix submitting answers using 'enter key' in Interactions. (#14195) * Add same padding on both top and bottom of drag and drop answer fields. (#14191) * Fix #14009: adds animation to topic navbar and fixes background banner. (#14184) * Fix part of #12858: Add Dutch, Slovak and Ukrainian to the list of site-supported languages. (#14183) * Fix #14055: Disables making changes to topic if user has no topic rights. (#14139) * Fix skill edit editor lag issue (#14129) * Fix part of #13764: Add frontend validation checks for exploration tags (#14119) * Learner dashboard fixes (#14105) * Learner dashboard fixes (#14101) * Fix part of #13764: Add validation checks for Outcome, Hint and Solution Explanation (#14035) * Fix #14007: Removed extra dropdown icon from admin page navbar (#14008) * Fix part of #13380: Fixed exploration player rtl formatting issues (#13980) * Scale and center SVG in the editor (#14178) * Fix #12452 and #13358: Guppy Configuration Service (#14138) * Fix part of #13764: State content should be a valid HTML string with at most 10,000 characters (#13918) * Fix part of #13603: Validation for Continue, Text Input, Multiple Choice Interaction (#13838) Angular Migration * Fix #14225: Move modal creation logic from service to component for remove from play later playlist modal (#14291) * Fix part of #9749: Migrate few instances of angular-html-bind (#14263) * Migrate confirm discard change modal template (#14167) * Fix part of issue #9749: migrate exploration-publish-modal to angular component (#14152) * Fix part of #8016: Make Http Calls of history-tab.component.ts through service component (#14111) * Fix #14052: Introduce i18n service for encapsulating all translation logic (#14099) * Fix part of #9749: Migrates editor reloading modal to angular (#14089) * Fix part of issue #9749: migrate post-publish-modal to angular component (#14079) * Fix part of #8472: Migrate question player state service (#14074) * Fix part of #9749: Migrates welcome modal to angular (#13890) * Fix part of #9749: Migrates Score-Ring, Concept-Card, Completion-Graph to Angular (#13837) * Fix part of #9749: Migrate tutor card directive (#12892) * Fix part of #9749: Migrate Progress nav directive (#12864) Contributor Pages * Fix #14234 Unable to accept/reject a suggestions during reviews. (#14283) * Add Azerbaijani language to contributor dashboard. (#14273) * Fix #14265: Make translation language selector to show selected language correctly (#14268) * Fix translation stats job to work with sets (#14254) * Fix #14189: Make translations editable for reviewers (#14194) * Fix part of #14072, 14027: Surface submit translation suggestion errors and admin dashboard cleanup (#14151) * Fix #13440: Make it clearer what language is being translated (#14104) * Fix #14004 Handle frontend display of skill opportunities correctly (#14097) * Fix part of #12013: Update exploration changed UI to make old content less ambiguous (#14047) * Fix #13833: Disables 'Translate' button when all translations are in review (#13972) * Fix #12181: [Contributor Dashboard] Allow filtering of translation opportunities by topic (#13539) Bug fixes * Fix lang param not working due to mulitple lang cookies. (#14266) * Fix tasks on production (#14176) * Fix multiple production issues (#14164) * Address comments from PR 14101 (#14142) Data handling * Add voiceover admin role to admin user (#14252) * Update note for pre-deletion page. (#14181) * Fix part of #13162: Add argument schema for ReleaseCoordinatorPage, JobsHandler, JobOutputHandler, MemoryCacheHandler classes. (#14175) * Fix part of #10474: Made typescript checks strict for display-solutio… (#14051) * Fix part of #13162: Add schema for PretestHandler, StorePlaythroughHandler, and StatsEventsHandler. (#14046) * Fix #12297: Use Firebase Session Cookie for PlatformFeatureService.sa… (#14002) * Fix part of #13162: Add schema for handlers in story_editor and story_viewer (#13914) * Fix part of #13162: Add argument schema for LearnerIncompleteActivityHandler, RatingHandler and FlagExplorationHandler classes (#14131) * Add schema for subscribe, unsubscribe handlers. (#13995) Python Migration * Introduce Cloud Logging (#14185) * Refactor future imports and MyPy typing (#14132) * Update setup.py version on new release (#14062) * Fix part of #13956 : Handle ExitStack without python_utils (#14037) * Fix small Python 3 migration issues (#14005) * Fix part of #13956: python_utils.with_metaclass (#13998) * Fix #13956: Migrate python_utils.redirect_stdout to Python 3 function (#13997) * Fix #13956: Remove the use of python_utils.OBJECT (#13996) * Fix part of #13956: Remove python_utils.nullcontext (#13993) * Fix part of #13956 and fix #11547: Remove python_utils.reraise_exception (#13992) * Give jobs a standard module and naming convention (#13989) * Fix part of #13956: Remove python_utils.url_split (#13987) * Fix part of #13956: Remove python_utils.RANGE variable (#13983) * Fix part of #13956: python utils.url_encode-->urllib.parse.urlencode (#13978) * Fix part of #13956: Removed the ROUND variable and its references (#13976) * Fix part of #13956: Replace python_utils.MAP, python_utils.NEXT with map, next (#13969) * Fix part of #13956: python_utils.url_quote->urllib.parse.quote (#13964) * Fix part of #13935: Handle input without python_utils (#13955) * Remove enforcing python_utils function usage from pylint (#13954) * Fix part of #13935: Handle str and bytes without python_utils (#13882) Miscellaneous * Fix #14116: Fix typo in core/controllers/admin.py (#14117) * Fix part of #8668: Document suggestion-modal.service.ts file (#14125) Typing * Fix part of #14033: Type annotate value_generators_domain (#14180) * Fix part of #10474: Cover profile-page-backend-api.service with strict checks (#14140) * Fix part of #10474: Fixing typescript strict checks issues for StoryObjectFactory.ts (#14134) * Fix part of #14033: Type annotate rights_domain (#14108) * Fix part of #14033: Type annotate learner progress domain files (#14093) * Fix part of #10474: Made typescript checks strict for exploration-foo… (#14045) * Fix #10474: cover autogenerated audio player service (#14043) * Fix part of #10474: Enable strict mode in subtopic.model.ts (#14039) * Fix part of #14033: Type annotate activity_domain file (#14034) * Fix part of #10616: Introduced typescript-eslint/method-signature-style rule (#13922) * Fix part of #10474: Cover more files with strict checks (#13876) * Fix part of #10474: Made typescript checks strict for filtered-choices-field.component.ts and spec (#13819) * Fix part of #14033: Mypy type annotations added to takeout_domain and translation_domian (#14149) * Introduce MyPy reviewers (#14135) * Change codeowner for mypy script and add directories to mypy denylist (#14032) Release team * Fix issues in release (#14174) Developer UX * Fix #14094: Reinstate codeownership of learner analytics files. (#14160) * Fix `--save_datastore` flag in start command (#14133) * Fix #14080: Pip index global config bug (#14112) * Add code to help with the Python 2 unavailable issue (#14076) * Fix part of #10616: Introduce @typesctript-eslint rules that extend eslint rules (#14029) * Make output from scripts/typescript_checks.py pretty (#14025) * Fix part of #13956: python_utils.url_retrieve->urllib.request.urlretrieve (#13990) * Adds quote before the message to fix no message issue (#13984) * Fix part for #13956: Removes "python utils.url_unquote_plus" (#13981) * Fix part of #10616: Introduced typescript-eslint/consistent-type-assertions rule in the codebase (#13942) * Fix #13872: Brave browser support added for development server (#13873) * Fix part of #10474: Oppia-Response-Code-Repl with strict checks (#13768) * Add "pending review notification" workflow (#14100) * Change pending review notification workflow config to run on workflow_dispatch event (#14177) * Fix part of #13467: Coverage flake in edit-profile-picture-modal.component (#14088) Automated QA Team * Quote webhook url in action (#14145) * Fix part of #10798: Fix end to end tests for SkillEditorPage.js (#14114) * Fix #14090: Tighten rerun policies based on failure rates (#14092) * Consolidate Backend Tests (2nd PR) (#14081) * Fix #10798: End-to-End Tests with action.js and waitFor.js in TopicsAndSkillsDashboardPage.js (#14077) * Fix #14057: Change List Service [Coverage-Flake] (#14068) * Fix error message when user needs to set chromedriver version (#14053) * Resolve `getValidationIssues` E2E flake (#14038) * Fix part of #10798: Fixing End-to-End Tests with action.js and waitFor.js for forms.js (#13924) Translations * Routine update of translations (#14065) * Routine update of translations (#14182) v3.2.0 (28 Oct 2021) ------------------------ Learner/Creator Pages * Add language parameter to URL (#14023) * Fix #11932: Sort translation opportunities by topic (#13916) * Link concept card when user is not signed in (#13898) * Fix timeout issue in learner dashboard (#13857) * Fix part of #13327: Improvements in the blog dashboard interface (#13817) * Fix part of #13764: Skill misconceptions must have unique names (#13816) * Fix part of #13764: Thumbnail filename validation check (#13807) * Fix part of #13449: Image Caption and Skill Review Text Validation Checks (#13785) * Fix part of #13764: Exploration title should have max length of 36 (#13777) * Fix #13691: Added default init value for position of terms (#13706) * Add event listener to avoid navigation when offline and disable tabs which are not workable offline (#13698) * Move all the new components to the learner dashboard folder (#13690) * Add pages to lighthouse and adds e2e tests for blog dashboard (#13683) * Fix part of #13603: Interaction validation for EndExploration (#13604) * Fix part of #13449: RTE validation for Image alt tag (#13593) * Fix #13531 and #13586: Add translation keys for more user facing texts (#13591) * Add a form to update blog author and publishing date (#13590) * Allow marking translations as stale in the editor (#13584) * Complete the blog dashboard frontend (#13575) * Enable editor tab to work offline and save changes when there is reliable network source (#13544) * Add blog post editor (#13522) * Redesign and update the Learner Dashboard Page E2e tests (#13518) * Redesign and update the Learner Dashboard Page (#13515, #13513) * Add Customization_Arg to Numeric Input (#12992) * Remove logicProof Interaction (#13336) * Add SameSite=None and Secure to cookie options to support iframe (#13623) Bug fixes * Fix #14019: Save topic draft without commit message (#14096) * Adds missing styles to story viewer page (#13904) * Secure manual URL redirection in the frontend (#13892) * Fix #13850: Lazy loaded pages are scrollable now on mobile device (#13851) * Fix failing lint check introduced by #13681 (#13759) * Fix RTL for bullet points in editor; Fix CD emails bug (#13727) Contributor Pages * Fix #12888: Improve status of translation progress bar (#13835) * Fix #12013: Show latest exploration content in translation review modal (#13946) * Use supported languages list when computing incomplete translation languages on opportunity update (#13902) * Fix #13657: Fetch additional skill opportunities to fulfill page size as necessary (#13783) * Fix #11735: Allow reviewers to edit question suggestions (#13742) * Fix #12959: Enable translations of rules in the contributor dashboard (#13580) * Fix part of #13475: Only create exploration opportunities for published stories (#13529) * Send CD emails to admins based on suggestion type; Empty translations should show in CD (#13615) Data handling * Include deletion of TranslationContributionStatsModel in Wipeout (#14006) * Fix part of #13162: Add argument schema for ProfilePictureHandler and ProfilePictureHandlerByUsernameHandler (#13772) * Fix part of #13162: Adds schema for the DeleteAccountHandler (#13767) * Add schema for platform_feature and practice_sessions modules (#13481) * Add schema for improvements, features and review_tests modules (#13456) * Add schema for email_dashboard and feedback modules (#13450) * Add schema for editor and library modules (#13422) * Fix android #3016: Create domain object, domain services, cron scrubber, and controller for receiving feedback reports (#12367) Release team * Fix build and release scripts (#14000) * Change link to the release rota wiki (#13870) * Fix #13717: Refactor site analytics service and introduce a mock gtag function when app can't send analytics. (#13718) Python Migration * Fix #11465: Migrates the codebase from Python 2 to Python 3 (#13395) * Fix part of #13956: Remove is_string and get_args_of_function from python_utils.py (#13973) * Fix part of #13956: Remove python_utils.url_join (#13971) * Add opportunity summary job (#13948) * Schedule Apache Beam jobs with CRON (#13947) * Introduce pip package beam (#13938) * Complete the API of Apache Beam jobs (#13913) * Improve performance of Beam Jobs tab (#13874) * Add refresh interval for beam jobs tab (#13855) * Use Dataflow Library to query status of Dataflow Jobs (#13845) * Add prod-behavior for running Apache Beam jobs (#13812) * Implement job generating translation contribution stats (#13811) * Fix organization of Beam Jobs (#13771) * Implement job generating exploration recommendations (#13754) * Implement job collecting weekly dashboard stats (#13749) * Implement job indexing explorations in search (#13740) * Fix part of #11475: Implement Apache Beam jobs tab for DEV mode (#13662) * Implement Python 3 related changes release cut and hotfix (#13669) Developer UX * Only report frontend test status on failure (#13943) * Remove terser from build (#13899) * Upgrade libraries (#13867) * Send notification to chat-room for frontend test failure on develop (#13866) * Fix part of #11496: Introduce lint check for no use of forEach (#13844) * Add .python-version dynamically created file to .gitignore (#13770) * Add libbz2-dev to install_prerequisites.sh (#13750) * Fix gunicorn workers not properly exiting (#13746) * Update tsconfig-strict to cover more directories (#13707) * Upgrade frontend and backend libs (#13682) * Fix #13664: Remove sudo from pip install (#13661) * Increase max-old-space-size for karma process to 4096 MB (#13616) * Fix the lint issue: 'use {} instead of dict()' (#13720) * Fix #13150: Upgraded guppy to the latest version (#13962) * Replace SVG parsing library with a more robust one (#13791) Automated QA Team * Fix #13889: Gracefully handle missing backend library in pre-push (#13963) * Fix flaky test checking window narrowness (#13951) * Fix #10798: Fix e2e tests for ExplorationEditorPage.js (#13937) * Fix #10798: Fix e2e tests for StoryEditorPage.js (#13931) * Fix part of #10798: Use action.js and waitFor.js in TopicEditor.js (#13887) * Fix part of #10798: Fix e2e tests for ExplorationEditorTranslationTab.js (#13856) * Fix #13741: Do not merge from develop in backend CI workflow (#13854) * Fix undefined message mismatch and failure to set URL (#13842) * Output backend test and installation messages as unicode instead of bytes (#13836) * Resolve "Expected False to equal to True" flake in topicAndStoryEditor.js (#13804) * Decode result from run_cmd with UTF-8 (#13792) * Check memory usage of e2e runs (#13781) * Resolve "Expected 0 to equal 1" flake in creatorDashboard.js (#13780) * Resolve "'Type a number' to equal 'Ingresa un n��mero'" flake in users suite (#13765) * Fix site-analytics-service frontend flake (#13731) * Add remaining tests to fix flake for top-navigation-bar.component.ts (#13685) * Fix part of #13467: Fix the conversation-skin.directive frontend test flake (#13675) * Explain why an e2e suite does not get rerun (#13665) * Add e2e to check the feature that enable offline exploration editing (#13597) * Add unit tests and converted AJS directives to AJS components (#13587) * Fix part of #4057: Fully cover player-correctness-feedback-enabled.service.ts (#13519) Miscellaneous * Fix #13864: Remove empty cards from settings tab (#13945) * Fix #13153: Use different color for CTA 'go' (#13941) * Fix #13723: Do not redirect partially-logged-in users from /logout (#13729) * Fix #13724: Hide username validation error once username is valid (#13728) * Add about foundation page (#13643) * Add volunteer page (#13488) Angular Migration * Fix part of #9749: Migrate rating display directive (#13907) * Fix part of #9749: Migrate state-diff-modal.controller into angular component (#13805) * Fix #13656: Make Topic Landing Pages accessible (#13671) * Fix #13619: Remove Google Analytics require from mock-ajs.ts and introduce a common import file (#13640) * Migrate signup page to angular router (#13582) * Fix part of #9749: Migrate subtopic viewer page (#13538) * Fix part of #9749: Migrate email dashboard pages to angular (#13537) * Migrate more pages to angular router (#13533) * Fix part of #9749: Migrate collection editor page (#13514) * Fix part of #9749: Migrate supplemental card directive (#12918) * Fix part of #9749: Migrate learner view info directive (#12863) * Fix part of #9749: Migrate topics and skills dashboard page (#12563) Typing * Add type annotations for platform.auth and platform.search (#13629) * Add type annotations (#13589, #13565, #13524) * Introduce generics for ndb.Query (#13865) * Remove casts to `Key` by modyfing stubs (#13756) * Add proto generated TS to tsconfig strict (#13748) * Fix mypy in platform folder (#13695) * Fix part of #8423: Change Python 2 styled type annotations to Python 3 style (#13681) * Fix part of #13637: Remove interstitial Skills, SkillRights and ConceptCard (#13638) * Update set/getPageTitle to set/getDocumentTitle in PageTitleService (#13684) * Fix part of #10474: Cover some files with TS strict checks (#13598, #13578, #13555, #13520) * Fix part of #10474: Enable strict typescript checks for some files (#13585, #13532, #13459, #13633) Translations * Routine update of translations (#13692) * Allow marking individual translations as stale (#13776) * Fix #13568: Numeric captions in images are ignored for translation validation (#13577) v3.1.4 (01 Sep 2021) ------------------------ Contributor Pages * Fix #12276: Hide action button for submitted suggestions when their corresponding opportunities are deleted (#13738) Translations * Routine update of translations. (#13517) Developer UX * Fix part of #10474: Enables strict typescript checks for some files - (2.5) (#13532) * Update PULL_REQUEST_TEMPLATE.md (#13530) * Update oppiabot to v1.4.0 (#13512) * Fix part of #10474: Enables strict typescript checks for some files - (2.3) (#13473) * Fix part of #10474: Made strict typescript checks for image-upload-helper (#13466) * Fix part of #10474: Cover ExplorationImprovementsModel with strict TypeScript checks (#13457) * Fix part of #8423: Implement lint check for keeping element selectors at the tops of files. (#13441) * Fix Part of #10474: Cover some files with TS strict checks - 11 (#13426) * Migrate "disallow bypassSecurity" regex check to eslint (#13424) * Fix part of #10474: Enables strict typescript checks for some files - (2.2) (#13394) * Fixes part of #10474: add some files in ts-strict (#13369) * Fix Part of #10474: Cover some files with TS strict checks - 10 (#13368) * Fix part of #10474: Enables strict typescript checks for some files - (2.1) (#13354) * Fix #13071: Removes logging unwanted errors in frontend test (#13253) * Fix #13326: Removes the unwanted bypass import-only-modules flag (#13495) * Updates codeowners for jobs/transforms and jobs/types folder (#13482) * Adds schema in custom_landing_pages and pages modules. (#13478) * Updating codeowner (#13464) * Add frontend-test-reviewers team to codeowners file (#13458) * M2.1: Add type annotations (#13413) * Added unit tests for the following files (#13409) * Allow users to have multiple roles and removes banned role (#12989) Data handling * fixes part of #12792 implement the _get_change_domain_class for topic, subtopic validation (#13384) * Adds schema for handler classes creator_dashboard, learner_dashboard, learner_playlist modules (#13355) * fixes part of #12792 implement the _get_change_domain_class for skill, story validation (#13307) Miscellaneous * Fix #13723: Do not redirect partially-logged-in users from /logout (#13729) * Fix #13447: Removes roles related flags from the response (#13511) * Revert "Fix part of #9749: Migrate library page." (#13497) Bug fixes * Fix interpolation of html tags on get started page. (#13433) * Fix coverage flake introduced in #13219 (#13419) Learner/Creator Pages * Milestone 2.3: Adds Blog Card And Parts of Blog Dashboard Page (#13472) * Consolidate Image RTE components (#13485) * Initialise Carousel after library page data has loaded (#13751) * Fix part of #13449: RTE validation for checking if the url for a link begins with https:// (#13536) * Components and modals on the exploration editor page will be preloaded. [Milestone2.1] (#13407) * Redesigning and Updating the Learner Dashboard Page Milestone-2.2 (#13402) * Only include images from the current exp version for download (#13527) * Fix refresh of page when hitting enter on a TextInput interaction (#13634) * Send CD emails to admins based on suggestion type; Empty translations should show in CD (#13615) * Update tsconfig-strict to cover directories (#13551) * Fix #13509: Bug fixes related to item select (#13526) * Fix #13655 and #13639 (#13715) * Fix #13653, #13630, #13666, #13651 (#13713) * Fix #13691: Added default init value for position of terms. (#13706) * Fix #13545, #13546, #13547: Fixes editor facing bugs (#13583) * Fix #13168: dnd rule editor issues (#13558) * Fix #13220: Math interaction regex fix for Safari (#13553) * Fixed failing skill-mastery test (#13510) * Added subtopic mastery handler (#13468) * Milestone 2.2: Adds Backend Api services for blog dashboard. (#13439) * Add SameSite=None and Secure to cookie options to support iframe (#13623) * Add Google Analytics require to mock-ajs (#13620) * Logic proof job (#13618) Angular Migration * Fix #13656: Make Topic Landing Pages accessible. (#13671) * Migrate Library page (#13498) * Migrate 14 static pages to angular router. (#13483) * Fix part of #9749: Migrate Stewards landing page (#13415) * Fix part of #9749: Migrate Signup page (#13414) * Fix part of #9749: Migrate library page. (#13412) * Remove angularjs from 9 more pages (#13367) * Introduce angular router (#13305) Automated QA Team * Fix #13757: Fix rubric alignment when submitting questions (#13758) * Frontend Unit Tests(8): Add frontend tests for multiple files (#13535) * Tighten rerun policies based on e2e metrics (#13505) * Frontend Unit Tests(7): Add frontend tests for multiple files (#13503) * Frontend tests for topic-editor-navbar.component (#13501) * Fixing the Embedding flake (#13493) * Resolving "Creating topic takes too long" in topicAndStoryEditor.js (#13492) * Added units tests for outcome-destination-editor & state-hints-editor (#13479) * Frontend Unit Tests(6): Cover multiple component files (#13476) * Fix #13421: Run backend tests in core/tests (#13470) * Resolving "https://pencilcode.net/lib/pencilcodeembed.js - Failed to load resource: net::ERR_CERT_DATE_INVALID" error (#13455) * Fixing a Flake in Topic and Story Editor File Upload Features (#13446) * Fixed the E2E flake introduced in #13325 (#13445) * Added tests for question-editor & outcome-editor (#13442) * Fix #12993: Restore @U8NWXD as codeowner (#13428) * Frontend Unit Tests(5): Cover multiple component files (#13423) * Added unit tests for version-diff-visualization & rule-editor (#13418) * Add unit test for top-navigation-bar and fix flake (#13286) * Fix part of #13467 Fixes frontend test flake in noninteractiveimage.component (#13525) * Fix #13249: Fix mypy pre-push checks (#13490) * Added unit tests for conversation skin directive (#13432) v3.1.3 (07 Aug 2021) ------------------------ Contributor Pages * Fix #13148: Handle unicode translation suggestions correctly (#13387) * Fix language selection dropdown change detection issue (#13316) * Fix #12184: Add domain layer and frontend changes for surfacing translation contribution stats (#13285) * Fix #11881: Consolidate add/remove contribution rights controller handlers (#13279) * Fix part of #12184: Create translation contribution stats storage model and corresponding population one off job (#13201) * CP fixes for June release (#13198) * Fix #13055: Don't make numeric content eligible for translation in contributor dashboard (#13056) * Fix #12221: Only show skill/question opportunities for topics that are part of a classroom (#12982) * Fix #12960: Add Spanish and Portuguese translation tips to contributor dashboard (#12975) * Adds contributor dashboard admin roles and relevant page for the user with this new role (#12916) Angular Migration * Fix part of #9749: Migrates Subtopic Summary Tile to Angular (#13386) * Fix part of #9749: Migrate Preferences page (#13219) * Fix part of #9749: Migrate classroom page. (#13127) * Fix part of #9749: Migrate Admin page. (#13125) * Fix part of #9749 Migrated Services and Modals for Exploration Editor Page (#13107) * Remove angularjs from 11 pages. (#13098) * Fix #12855: Remove unused angularjs libraries: angularjs headroom, toastr and ngAudio (#13082) * Remove angularjs from about page. (#13073) * Fix part of #10700: Refactor Object Factories for StateCard (#13028) * Fix part of #10700: Refactor Object Factories for Fraction (#13024) * Fix part of #9749, #8473: Migrate part of topic editor page. (#12878) * Migrate Interactions: Numeric Expressions Input (#12753) * Fix Part of #9749: Migrates Thumbnail-Uploader to Angular (#12667) Miscellaneous * Fix #12736: Restore codeowners (#13283) * Update CODEOWNERS for going away (#13121) * Added Mailchimp API integration for mailing lists (#12373) * Add back ngx-mat-select-scroll to package.json (#13364) Data handling * Fix wipeout on test and backup server (#13383) * hide logic Proof in front end (#13372) * Adds schema for collection_editor (#13343) * Fix part of #12792 implement the _get_change_domain_class for config, question validation (#13273) * Fix part of #12792 implement the _get_change_domain_class for collection validation (#13247) * Adds schema for handlers concept_card_viewer & contributor_dashboard modules (#13225) * Adds schema for handlers in moderator, collection_viewer & cron modules (#13224) * Adds schema for handlers admin, classifier, & classroom modules (#13223) * Schema-Validation-System(SVS) architecture (#13065) * Fix part of #12568, #11475 implement the _get_change_domain_class for exploration validation (#12999) * Allowing deprecated commands in validation (#12990) * Normalizing with given default_value for arguments by SVS architecture. (#13370) * Fixes Typescript issue in oppia-short-response-mulitple-choice-input.component and mypy issue in schema_utils.py (#13335) * Update schema validation service architecture for handling cases of different args in same request method (#13277) * FIx part of #12688 add relationshipsof for user model (#13063) * Fix #13054: Adding support for running backend type checks (#13060) * Fix failing stict_typescript_checks on develop (#13191) * Adds logic to handle request method (#13274) * Fix #13239 and #13171: Adding type annotations to root files and fix constants errors with mypy (#13269) * Adds new handler class name in HANDLER_CLASS_NAMES_WHICH_STILL_NEED_SCHEMAS (#13264) Developer UX * Migrate "disallow HttpClient" regex check to eslint (#13405) * Remove unused templateUrl lint check (#13404) * Migrate "disallow relative import in require" regex check to eslint (#13375) * Added unit-tests and strict type checking for state-property.service (#13366) * Fix #12718: Use init-hook to fix command line calls to pylint (#13339) * Fix #13119: Add Vojta back as a codeowner (#13333) * Migrate "only allow imports relevant part of lodash" regex check to eslint (#13317) * Fix Part of #10474: Cover some files with TS strict checks - 9 (#13304) * Migrate lint check to prohibit the use of inject call (#13302) * Migrate lint check to disallow innerHTML property. (#13301) * Fix Part of #10474: Cover some files with TS strict checks - 8 (#13293) * Disallow $parent and $broadcast angularJs property (#13291) * Migrate disallow-flags regex checks to Eslint (#13275) * Fix Part of #10474: Cover some files with TS strict checks - 7 (#13270) * Fix Part of #10474: Cover some files with TS strict checks - 6 (#13263) * Migrate throw-related regex checks to Eslint (#13252) * Fix part of #10474: Enables strict typescript checks for some files - (9) (#13246) * Fix part of #8423: Disallowed invalid await (#13227) * Disallowed unwanted browser methods in protractor files (#13205) * Fix Part of #10474: Enables strict typescript checks for some files - (8) (#13204) * Fix part of #10474: add learner-exploration-summary and spec in tsconfig-strict.json (#13183) * Fix part of #10474: Enables strict typescript checks for some files - (7) (#13178) * Fix #13172: Controller to initialize android specific structures (Milestone 1.2) (#13174) * Fix Part of #10474: Enables strict typescript checks for some files - (6) (#13135) * Fix Part of #10474: Enables strict typescript checks for some files- (5) (#13111) * Fixes part of #8423: lint check to ensure root element selectors use HTML classes that start with "protractor-test-" (#13105) * Fix part of #8423: Implement lint check for constant variable names are in all-caps (#13086) * Fix Part Of #10474: Make TypeScript checks strict for some files - (4) (#13078) * Fix part of #10474: Enables strict typescript checks for some files - (3) (#13052) * Fix Part of #10474: Make Typescript checks strict for some files - (2) (#13044) * Fix part of #10474: Cover some files with TS strict checks - 3 (#13043) * Update authors and changelog for v3.1.2 (#13363) * Add CLA Check using Github Action (#13141) Release team * Adds prompt for mailchimp api key in the release process (#13332) Bug fixes * Fix frontend coverage flake introduced in #13127 (#13323) * Fix #13142: Fix author profiles dropdown (#13238) * Remove strict image filepath validation in the translation flow; minor bug fixes; (#13396) * Fix #13451: import -> require toastr.css (#13588) Python Migration * Fix Firebase auth (#13345) * Fix part of #11475: Delete all references to continuous jobs (#13313) * Fix part of #11475: Delete UserStatsAggregator job (#13271) * Fix part of #11475: Delete the FeedbackAnalyticsAggregator continuous job (#13237) * Fix part of #11475 Migrate wipeout oneoff to task service (#13231) * Fix part of #11475: Add batch_jobs directory (#13228) * Fix part of #12688 add id relationshipsof for models: collection, exploration, feedback, question, topic (#13226) * Fix part of #11475: Add helper methods for creating stdout/stderr values (#13188) * Removes notification page (#13180) * Fix part of #11475: Add PutResults() PTransform for jobs (#13100) * Fix part of #11475: Add Apache Beam jobs tab to Release Coordinator page (#13070) * Fix part of #11475: Delete all non-essential one off jobs (#13021) Learner/Creator Pages * Fix #13463 and #13460: Linking more questions in question editor and mailchimp api key error (#13571) * Fix #13448: Show placeholder text in Numeric Input interaction (#13560) * Fix #13168: dnd rule editor issues (#13558) * Fix Multiple Choice Interaction shuffle (#13502) * Milestone 2.1 : Adding format heading drop-down to RTE. (#13400) * Fixed errors in goals tab (#13392) * Adding message when skill is deleted in skill Review RTE (#13377) * Changes in the functions added in #13116 (#13342) * Milestone 1.5 : Adds blog admin page frontend. (#13300) * Milestone1.4 :Adding Blog HomePage Controllers. (#13278) * Fix #13156: Introduce new attribute thumbnail_size_in_bytes for Subtopics (#13242) * Multiple users can make the changes to the exploration simultaneously when their changes are not conflicting. Milestone1.2 (#13233) * Adding Blog Models Validations: Part of Milestone 1.2 (#13232) * UI changes to library and story viewer page (#13216) * Milestone 1.3: Adds Blog Dashboard Controllers, Blog Admin page Controllers and blog-admin-backend-api service. (#13207) * Preloads skill images; Adds a job to copy question images to the correct storage path; Make 'coming soon' topic tiles not clickable (#13184) * Fix #13049: Introduce new attribute thumbnail_size_in_bytes for Topic models (#13175) * Partnerships page (#13120) * Milestone 1.2 : Adds Blog Domain, Services and Validators. (#13118) * Adding function to check for mergeability and also to get composite change list between two versions. Milestone 1.1 (#13116) * Fix #13067, #13068, #12951 and #12857 - Moved language selector to navbar, fixed URLs and translations (#13074) * Adding new License page and removing Credits link from footer (#12985) * Adds new voiceover admin role and allows voiceover admin to assign voice artist to explorations (#12687) * Refactor implementation of cookie module. (#13403) * Refractors UrlInterpolationService to not return null at interpolateUrl (#13371) * Fixing a flake in learnerDashboard.js (#13381) * Fix #13406: Clear currently played audio track when the card changes (#13430) * Fix #13251: Temporarily remove StateTopAnswersStatsService initialization and registering of relevant callbacks (#13353) * Fix #13158: Storing the thumbnail size (in bytes) for StoryNode (#13312) * Fix #13170: Create Exploration for android specific interactions (Milestone 1.1) (#13029) * Fix #13295 - warning text is within the box (#13296) * pixels are perfectly fine when we upload the picture (#13255) * Redesigning and Updating the Learner Dashboard Page Milestone-1.5 (#13241) * Redesigning and Updating the Learner Dashboard Page Milestone-1.4 (#13222) * Introduce Cookie banner (#13250) * Redesigning and Updating the Learner Dashboard Page Milestone-1.3 (#13181) * Fix #13157: Storing the thumbnail size (in bytes) for Story (#13159) * Fix #13025: Show the topic/story in-editor nav option only after StoryEditorStateService has been initialised (#13087) * Adds unit tests for exploration engine service (#13084) * Redesigning and Updating the Learner Dashboard page Milestone-1.2 (#13081) Automated QA Team * Improving e2e workflow files for release and translatewiki branches to function properly (#13382) * Adds unit tests for the following files (#13340) * Adds unit tests for state-editor and answer-group-editor (#13334) * Add unit tests for question-player component (#13322) * Frontend Unit Tests(4): Cover multiple component files (#13319) * Frontend Unit Tests(3): Cover multiple component files (#13303) * Unit test for questions-list.component.ts (#13287) * Adds unit tests for the following files (#13284) * Frontend tests for image-with-regions-editor.component (#13258) * Adds unit tests for admin page (#13230) * Frontend unit tests for state-responses, rating-display and question-difficulty-selector component/directive (#13217) * Frontend Unit Tests: Cover multiple component files (#13213) * Adds unit tests for admin roles tab (#13206) * Adds unit tests for the following multiple files. (#13192) * Adds unit tests for audio bar component (#13177) * Unit test for exploration creation service (#13176) * Fix #13160: frontend test coverage failure (#13163) * Unit tests for hint and solution button component (#13154) * Unit test for thumbnail uploader component (#13138) * Adds unit tests for stats reporting service (#13132) * Fixing flakes in ExplorationHistoryTab and ExplorationsTranslationsTab (#13117) * Adds unit tests for list of small services (#13112) * Add unit test story summary tile (#13110) * Add unit test image uploader skill selector (#13102) * Unit tests for sharing-links.component.ts and state-editor.service.ts (#13069) * Frontend Unit Tests: Cover small component files (#13017) * Adds frontend tests for unicode string editor component (#12996) * Separate MockTranslatePipe from Unit-test.utils.ts (#13149) * Frontend Unit Tests: Cover multiple component files (#13137) * Fix typescript check failure (#13321) * Introduce E2E tests to test allowing multiple collaborators to work on the exploration. (#13325) * Changing E2E Rerun Policies (#13318) * Frontend tests for graph-viz.component (#13298) * Adds frontend tests for filepath-editor.component (#13297) * Fixing a flake in contributorDashboard.js (#13259) * Fixes: #13281 Resolves flake in admin page (#13282) * Resolving one of the Lighthouse Flakes (#13280) * Resolving e2e flake "Expected false to equal to true" in `topicAndStoryEditor` (#13218) * Fixing a flake in the learner suite (#13214) * Fix top-navigation-bar coverage flake (#13212) * Fix for flake in oppia-interactive-image-click-input.component (#13267) * Fix pre-push mypy checks (#13310) * Fix #13088: Add pre-push checks for MyPy (#13114) * Fixes failing typescript checks and FE tests on develop (#13266) * Fixing the 401 Error in the Moderator Page (users e2e suite) (#13124) * Resolving "Toast message takes too long to appear" e2e flake (#13123) v3.1.2 (10 Jul 2021) ------------------------ Contributor Pages * Fix #13173: Modify translation submission validation to check for custom tags (#13309) * Fix part of #12184: Create translation contribution stats storage model and corresponding population one off job (#13201) * CP fixes for June release (#13198) Angular Migration * Fix N/A: Optimize Story-Summary-Tile change detection cycles (#13064) * Fix #7359: Use transclusion components in exploration editor page (#13040) * Fix part of #9749: Migrate Oppia footer directive. (#13003) * Fix part #9749: Migrate svg filename editor (#12977) * Fix part of #9749: Migrate Profile page. (#12926) * Fix part of #9749: Migrate I18nFooter Directive (#12925) * Migrate ckeditor directives to Angular. (#12881) * Fix part of #9749: Migrate Preview thumbnail. (#12870) * Fix part of #9749: Migrate input response pair. (#12853) * Introduce ngx-translate as a replacement for translate pipe (#12790) * Fix part of #9749 Migrated Services and Modals for Exploration Editor Page (#12781) * Fix part of #9749: Migrate remaining object editors in extensions. (#12775) * Fix part of #9749: Migrate audio bar directive (#12766) * Fix part of #9749, #8472: Migrate Display hint modal service and dependencies. (#12756) * Fix Part Of #9749: Migrates Navbar Of Story-Editor-Page to Angular (#12741) * Fix Part of #9749: Migrate story-summary-tile to Angular (#12728) * Fix part of #9749: Migrate Exploration Footer and dependencies (#12703) * Fix part of #8472: Topic editor state service migrated. (#12664) * Fix part of #9749: Migrates Top-Navigation-Bar to Angular (#12584) * Fix of #9749: Migrate non-negative-int, numeric-expression, position-of-terms, positive-int, ratio-expression, real, sanitized-url, set-of-algebraic-identifier, set-of-translatable-html-content-ids, subtitled-html editors (#12554) * Fix part of #9749: Migrate base-content (#12371) * Fix part of #9749: Migrate all oppia-non-interactive-* (#12294) Translations * Routine update of translations (#13089) * Routine update of translations. (#13012) Miscellaneous * Remove classroom page accessible flag config property (#12988) * Adds correct structure for topic landing page (#12972) Release team * Increase memory for webpack (#13000) * Adds new release coordinator role and a separate page for release coordinator's work (#12884) Developer UX * Fix Part of #10474: Cover some files with TS strict checks - 5 (#13057) * Fix Part of #10474: Cover some files with TS strict checks - 2 (#13050) * Fix Part of #10474: Cover some files with TS strict checks - 4 (#13047) * Routine upgrade of frontend libraries (#13030) * Fix part of #10816: Migrate all comment related JS/TS lint checks to custom eslint checks (#13022) * Fix part of #10816: Migrate check constants declaration (#13011) * Fixes part of #10816: Migrate lint check for match line breaks in controller dependencies (#12994) * Fix part of #10816: migrate sorted dependencies lint check to eslint (#12983) * Fix part of #10816: migrate check directive scope lint check to eslint (#12979) * Fix part of #10816: Disallow multiple component in a file (#12974) * Fix Part Of #10474: Make TypeScript checks strict for some files (#12965) * Remove and disallow usage of `import _ from lodash` (#12963) * Fix Part of #10474: Cover more files with TS strict checks (#12962) * Fix part of #8668: Document exploration-category & exploration-title service files with jsdoc (#12948) * Export JSON from Karma coverage reports (#12923) * Fix part of #10474: Cover GraphUtilsService with strict checks (#12716) Data handling * Fix part of #12792, #11475 implement the _get_change_domain_class for other models: platform-parameter (#12958) * Refactoring of filter_skills_by_mastery (#12924) * Fix part of #11572: Using exception instead of error in controllers (#12611) Bug fixes * Fix #13142: Fix author profiles dropdown (#13238) * Fix for 'Failed to load resource: net::ERR_UNKNOWN_URL_SCHEME' console error flake. (#13032) * Fix for console errors on admin roles tab (#13018) * Fix the wrong usage of pluralization syntax in `learner-dashboard-page.component.html` file (#12856) Python Migration * Fix part of #11475: Migrates _validate_composite_entity_id (#13085) * Fix part of #11475: Prepare API of JobRunResults for writing to storage (#13027) * Fix part of #11475: Migrates _validate_archived_models_marked_deleted (#13019) * Fix part of #11475: Add Apache Beam domain and services (#12954) * Fix part of #11475: Move datastoreio stub into JobBase (#12947) * Fix part of #11475: Add JobRunResult type for Beam Jobs (#12940) * Fix part of #11475: Add gae_models for Apache Beam jobs (#12939) * Fix part of #11475: Add RelationshipsOf unit tests and stabalize ModelProperty implementation (#12890) * Fix part of #11475: Add query support to the datastoreio stub (#12880) * Fix part of #11475: Use SimpleXMLRPCServer to implement the datastoreio stub (#12851) Learner/Creator Pages * UI changes to library and story viewer page (#13216) * Preloads skill images; Adds a job to copy question images to the correct storage path; Make 'coming soon' topic tiles not clickable (#13184) * Fix #13067, #13068, #12951 and #12857 - Moved language selector to navbar, fixed URLs and translations (#13074) * Fix Browser Library button on the teach page (#13033) * Fix #8983: Use base64 instead of blob for caching images and use the SVG sanitizer for base64 SVG urls (#13013) * Redesigning and Updating the Learner Dashboard page Milestone-1.1 (#13006) * Milestone 1.1: Add Storage Models for Blog Posts (#12933) * Fix #12630: Force pasting plain text in RTE editor (#12861) * Editor frontend changes for card is checkpoint field (#12817) * Fix math expression RTE copy (#12806) * Adding limit to text message in feedback thread (#12746) * Fix part of #6271: Update subparts of interaction answer group. (#12636) * New About page (#11420) Automated QA Team * Added unit tests for exploration player state service (#13062) * Added unit tests for story editor navbar component (#13039) * Temporarily Transfer Code Ownership from @U8NWXD to @krishnarao22 (#12986) * Stop Printing Frontend Test Success Messages (#12955) * Add emaildashboard E2E Test Rerun policy and Ensure Tests Fail on Missing Policies (#12953) * Graph layout service test (#12946) * Create activity button component frontend unit tests (#12936) * Resolving E2E Flake: StateContentEditor Taking Too Long to Appear to Set Content (#12919) * Add @krishnarao22 to Automated QA CODEOWNER files (#12915) * Introduces a check for whether a PR is low risk in `e2e Admin Page Test` and `e2e Publication Test` (#12906) * Add waitFor in forms.js to Fix Extensions Suite E2E Flake (#12904) * Resolving e2e flake "no element found using locator: by(css selector, option:checked)" (#12842) * Implement Suite-Specific E2E Test Rerun Policy (#12839) * Merge from Base Branch Before E2E Runs on GitHub Actions (#12829) * Fix part of #10798: Fix explorationEditorMainTab with action.js and waitfor.js (#12700) Miscellaneos fixes * Add Marathi (मराठी) and Ganda (Luganda) to supported languages (#13315) * Fixes regression in copy tool: Fix filepath editor validity (#13115) * Reducing flakiness in the Topic and Story Editor E2E Suite (#13092) * Call dispatchEvent on windowRef provided to the tested component instead of 'window' (#13072) * Update naming for lighthouse checks, add logging for exported URLs, fix some flakiness with lighthouse accessibility test and extensions e2e test. (#13066) * Mock runOutsideAngular so that callback can be tested (#13058) * Optimize exploration tile change detection and fix filepath uploader form validity (#13038) * Update codeowners file (#13037) * Fix #12911: Updates not allowed suggestion exception message and fixes possible flake causes (#13020) * Controlling the Video Recorder (#12984) * Fix #12694: Revert #12696 (#12967) * Fixes: #12943 Added unit tests for question player engine service (#12944) * Resolving the 'Expected 0 to equal 2' flake in AdminPage (#12927) * Fixes issues #11758, #11683 and #11472: validates the translation, disables paragraph copy to translation and adds how-to-use copy tool doc link (#12909) * Fix rule input voiceover status (#12905) * Added frontend tests for topic questions tab component (#12893) * Fix #12846: Adds a modal to prompt the user to save the exploration changes. (#12879) * Fix #12824: Make allowKeywords property set to True in .eslintrc file (#12860) * Fix #12451 The review modal title does not update when reviewing multiple suggestions (#12845) * Moving final e2e tests to GitHub Actions (#12835) * Fix part of #9749: Migrate interactive map, logic proof, multiple choice input, set input and text input interactions. (#12788) * Fix part of #9749: Migrate svg-file-name-editor-component (#12764) * Fetch_page to fetch (#12763) * Fix #12698 Migrates files to use preventpageunload service (#12742) * Fix #12547: Granularise translation commit commands (#12719) v3.1.1 (10 Jun 2021) ------------------------ Miscellaneous * Add support for Fanti, Tamil and Swahili languages (#13014) * Transfer codeownership of filepath-editor to kevintab95. (#12578) Contributor Pages * Fix #12657: Enable translation of interactions in contributor dashboard (#12810) * Fix #12691: Revert codeowners for contributor dashboard files (#12782) * Fix part of #12691: Swap codeowners for contributor dashboard files until 2021-05-10 (#12693) * Fix #12382 : Contribution Dashboard users with the SUBMIT_QUESTION or REVIEW_QUESTION permission should now be shown (#12562) * Fix #11706 : Cursor should revert to normal when translation modal is closed (#12521) * Fix part of #11735: enables reviewers to edit translations(re-submission) (#12540) * Fix part of #11735: feature edited by reviewer flag for suggestions (#12785) Answer Classification * Milestone 3 of migrating Oppia ML pipeline (#12091) Server Errors * Fix #12830: Add ContentLanguageSelectorComponent to entryComponents and declarations in review-test module (#12834) * Fix HTML caching (#12607) Translations * Routine update of translations. (#13012) * Add MachineTranslatedStateTextsHandler and translation domain services (#12524) * Add MachineTranslatedText storage model and domain object (#12515) * Add Cloud Translate Services (#12065) Developer UX * Routine update of translations. (#12895) * Handle all server management with managed_process() (#12800) * Fixes #12776 : Fixes Type Errors in Promise rejections in admin page. (#12777) * Handle all server management with managed_process() (#12761) * Update backend libraries (#12744) * Update backend libraries (#12734) * Fix part of #10474: Cover MisconceptionObjectFactory with strict typescript checks (#12720) * Routine upgrade of libraries (#12709) * Fix #12512: Fixes import error after cleanup (#12701) * Distribute nithusha21's codeowner files (#12696) * Fix Part of #11496: Add lint check for `.then()` method (#12677) * Fix Running E2E Tests Locally (#12668) * Fix Part of #10474: Cover and Refactor six more files with TS strict checks (#12643) * Fix #11811: remove remaining TODOs. (#12605) * Fix part of #11462: Give Firebase accounts --save_datastore support (#12600) * Removes unused codecov config file (#12583) * Fix Part Of #10474: Make typescript checks strict for some services (#12569) * Fix Part Of #10474: Make typescript checks strict for some services (#12561) * Fix #12550: Allow metadata with py2.7 suffix (#12559) * Fix #10306: Adds "Async" keyword to all the remaining files. (#12558) * Fix part of #7450: Modify private method in ContinuousComputationTests (#12553) * Fix part of #7450: Modify private method in SuggestionServicesUnitTests (#12511) * Fix part of #10474: Adds strict typing to `GuestCollectionProgressObjectFactory` (#12497) * Fix part of #10474: Strict type checks for NeedsGuidingResponsesTaskModal and its spec file (#12491) * Fix part of #10474: Make TS checks strict for CollectionPlaythrough CollectionRights CollectionSummary (#12487) * Shard error fix for issue #12422 (#12485) * Fix part of #8423: Add lint check to ensure that functions with "testOnly" in their names are only called from "spec" files. (#12455) * Fix part of #10474: Cover exploration-feature service with strict typescript checks (#12388) * Remove self code owners until 2021-05-24 (#12737) * Improve swap_with_checks() (#12721) * Fix Part of #11572: Stack Traces for exceptions are correctly thrown (#12618) * Update eslint version to 7.23.0 (#12501) * Revert ownership to darksun27 (#12493) * Fix part of #12656: Temporarily transfer codeowners for @brianrodri (#12658) Data handling * Split fetch review suggestions query into separate queries for translations and questions (#12950) * Fix part of #11475: implement the _get_change_domain_class for other models: collection, config, question (#12826) * Replace fetch_page of 'get_translation_suggestion_ids_with_exp_ids' with fetch (#12784) * Fix #9320: Remove jinja (#12757) * Refactor try-except in exp_services.py (#12685) * Adds new fields in userSettings model with corresponding one-off job to populate those fields (#12683) * Replace fetch_page of 'query_new_and_pending_training_jobs' with fetch (#12678) * Fix part of #11475: migrate _validate_commit_cmds_schema to Beam job (#12568) * Fix part of #10415: Refactor activity validators (#12477) * Add additional predicates to email dashboard (#12356) * Fix part of #11475: Migrate _validate_post_commit_status to Apache Beam (#12347) * Fix part of #11475: Migrate validate_commit_type to Apache Beam (#12240) Angular Migration * Fix Part Of #9749: Migrates Collection-Linearizer-Service to Angular (#12837) * Fix Part of #9749: Migrates Contact Page (#12774) * Fix Part Of #9749: Migrates Delete-Account-Page to Angular (#12750) * Fix part of #9749, #8472: Refresher exploration confirmation service and modal migrated. (#12748) * Fix part of N/A: Migrate ng-audio. Fix part of #8742: Audio Player Service (#12715) * Fix part of #9749: Migrate Privacy page (#12705) * Fix part of #9749: Migrate Learner local nav directive along with dependencies. (#12704) * Fixes part of #9749: Migrate Correctness footer (#12682) * Fix part of #9749: Migrate Learner answer info card (#12681) * Fixes part of #9749: Migrate continue button directive (#12680) * Fix part of #8472: Migrate Exploration player state service (#12679) * Fix part of #8472: Learner view rating Service Migrated (#12676) * Fix part of #8472: Migrate exploration engine service. (#12675) * Fix part of #9749: Migrate moderator page (#12602) * Fix part of N/A: Remove most of the service from serviceToProvide in App.ts to remove multiple instances of a services. (#12596) * Fix #12571: Update filepath editor to set correct width, height and offset on initialisation. (#12572) * Fix part of #9749: Migrate pending account deletion page. (#12545) * Fix part of #9749: Migrate Notifications dashboard page (#12544) * Fix part of #9749: Migrate side navigation bar (#12543) * Fix part of #9749: Migrate warnings-and-alerts and alert-message directives (#12542) * Fix part of #9749: Loading message directive migrated (#12541) * Create NgInit and mathjax Directive and Fix part of #9749: Migrate int, list-of-sets-of-translatable, list-of-tabs, list-of-unicode-string, set-of-unicode-string, logic-error, logic-question, math equation, math expression, muisc-phrase, nonnegative and number-units editors (#12532) * Fix Part of #9749: Migrated Story-Preview-Tab with Spec (#12513) * Fix part of #9749: Migrate Custom OSK, drag-drop-positive, filepath, fraction, graph-editor, html-editor and image-with-regions editors (#12502) * Fix part of #9749: Migrate rubrics editor directive along with dependencies (#12488) * Fix part of #9749 Migrating outcome-feedback-editor.directive.ts to Angular (#12479) * Fix Part Of #9749: Migrates Story-Viewer-Page to Angular (#12472) * Fix Part of #10700: Refractor Object Factories (#12458) * Fix part of #9749: skills list directive and dependencies migrated (#12432) * Fix part of #9749: Topics list directive migrated (#12410) * Fix Part of #9749:Migrates skill-description-editor directive to Angular (#12395) * Fix Part of #9749:Migrates response-header directive to Angular (#12376) * Fix part of #9749: Migrates create-activity-button to angular (#12290) * Fix #12292 and part of #9749: Migrate image click interaction (#12113) * Fix #12206, #12385, #12523, #12525, #12526, #12527 Migrated Learner's Dashboard Completely (Angular Migration) (#12056) * Temporarily provide $translate in Angular (#12794) * Fix Remaining comments from #12569 and #12561 (#12778) * Fix remaining comments from #12639. (#12713) * Emit object form validity event in list-of-sets-of-translatable-html-content-ids-editor.component.ts (#12546) * Migrate ui-codemirror and Fix part of #9749: Migrate CodeRepl interaction (#12639) * Revert "Fix Part of #9749:Migrates response-header directive to Angular.(This PR is currently made for some testing purposes) (#12708) * Fix part of N/A: Introduce Event bus for events (#12459) Bug fixes * Add google-cloud-translate fix for deployed server (#12825) * Fix #12804: Social buttons are now showing correctly. (#12805) * Fix #12642: topicName is interpolated properly now. (#12803) * Fix #12738: Copy does not work for images in the translation modal and image upload during question creation (#12789) * Redirect away from login page when already signed in (#12710) * Fix part of #11462: Revoke session cookies after granting/revoking super admin privileges (#12570) * Fixes: #12907 Drop down for "play later" in mobile view (#12932) * Fix #12903: Optimize exploration-summary-tile.component change detection cycles. (#12931) * Fix rule input voiceover status (#12905) * Fix translation flow issue (#12902) * Fix #12841: Exploration player i18n bug fixes (#12843) * Fix #12818: RTE Helper modal controller flake (#12820) * Fix #12106 : Creates seperate variables to store different results in admin roles tab (#12230) Python Migration * Fix part of #11475: Migrates _validate_entity_type (#12854) * Fix #12656: Reclaim @brianrodri's ownership (#12838) * Fix #11462: Cleanup Firebase TODOs and leftover code (#12827) * Fix #12671: Generate signature migration (#12816) * Fixes Enum bug (#12809) * Fix part of #11474: Move contextlib2 API into python_utils (#12773) * Adding python3 compatibility for zip largest (#12758) * Fix #12697: Refactoring audit errors (#12725) * Python Migration raw string (#12714) * Fix part of #11462: Permit auth-related pages and handlers in maintenance mode (#12684) * Fix #12503: Renaming proto folder for further migration to Python 3 (#12672) * Fix part of #11475: migrate validate_canonical_name_matches_name_in_lowercase to beam job (#12669) * Python 3 compatibility for base64 encoding (#12651) * Fix part of #11475: migrate validate_activity_mapping_contains_only_allowed_keys to beam job (#12579) * Fix part of #11462: Add one-off job to detect accounts with duplicate emails (#12534) * Remove incoming emails (#12516) * Migrates creation of enum to the inbuilt Enum method (#12470) * Fix part of #11475: Migrate validate_model_domain_object_instances to beam jobs (#12317) * Migrates _validate_post_commit_status_is_public (#12787) * Return PTransform class object from ModelStub.get_models_ptransform (#12739) * Changes the existing hierarchical roles system to independent roles to actions system (#12686) * Fix part of #11475: Migrates validate_draft_change_list_last_updated (#12673) * Fix part of #10728: Migrate metaclass python regex to custom Astroid checker (#12394) Learner/Creator Pages * Link exploration state to skill (#12348) * Fix thumbnail background colour not updating (#13023) * Fix #12630: Force pasting plain text in RTE editor (#12861) * Display learner-facing pages in RTL when the site language is an RTL language. (#12762) * Fix #12580: Makes exploration content Tabbable. (#12752) * Added exp ID logging for StoryExplorationsAuditOneOffJob (#12749) * Fix #12426: Show "Loading..." text when RTE toolbar is loading (#12740) * Resolving katex parser error in Numeric Expression Input interaction (#12730) * Fixes #12575 : Fixes audio bar position on small screens. (#12702) * Fixes #12641: Browse our lessons button fixed. (#12646) * Merging SVG-Diagram and Image plugins in RTE : Adds function for converting tags (#12620) * Fix console errors for duplicate skill description (#12595) * Update the custom entity context when reviewing translations (#12573) * Fix Part of #9271: Remains in skills tab after merging two or more skills. (#12567) * Fix #12528: Fixes server error in the DragAndDropSortInput interaction. (#12548) * Adds Autofocus on exploration interactions (#12538) * Add card_is_checkpoint field in state model (#12529) * Fix #6069 : Added top margin to "Start New Thread" button (#12489) * Fix #11692: Adds a customization arg for math interactions that allow selecting division symbol. (#12483) * Fix #12265: Search input and review div for topic selector (#12384) * Link exploration state to skill (#12807) * Revert "Link exploration state to skill (#12348)" (#12801) * Fix #10892: Fixes long skill names bug in the subtopic editor (#12236) * Fixes an error when uploading GIFs with transparent bg and add removes GIF from COMPRESSIBLE_IMAGE_FORMATS (#12504) * Fix #12223: Errors in Skill Editor is displayed. (#12629) * Fix #12587 : Back arrow works fine on skill and topic editor page (#12674) * Fix Part of #10914: Adds progress indicator in save button. (#12603) Automated QA Team * Fixing e2e flake in Settings tab(No element found using locator: By(css selector, option:checked)) and (No element found using locator: By(css selector, .select2-dropdown))) (#12796) * Adding a Video Recorder for E2E Tests (#12759) * Wait for Moderator or 401 Error Page to load in e2e test (#12745) * Fix part of #10798: Add action to learnerFlow.js file (#12690) * Fix part of #10798: Fix end to end tests for ClassroomPage.js (#12670) * Fix Part of #10798: Fixed e2e test file to resolve non-deterministic behavior (#12614) * Resolving the 'Page Takes > 15 seconds to load' Flake (#12597) * Update ProfilePage.js (#12593) * Fixes #12142 Flake Fixed in Edit thumbnail Controller (#12574) * Moving Tests To Github Actions (#12495) * Fix librarypage test #10798 (#12486) * Skip Selected CI Checks for Low-Risk PRs (#12440) * Resolving “no element found using locator: by(css selector, .protractor-test-exp-summary-tile-title)” (#12812) * Revert "Handle all server management with managed_process()" (#12797) * Fix afterAll failure error (E2E Test passing despite failure in afterAll block) (#12576) * Fixes e2e Flake in story Editor (#12530) * Fix #12173 Fix Failing Accessibility Tests (#12457) v3.1.0 (20 May 2021) ------------------------ Contributor Pages * Fix #12396: Fixes issues with translation "go back" and "skip" flow (#12727) * Fix #12610 : Changes the logic for copying a concept card (#12648) * Fix part of #11464: Applies code-owner suggestion on PR #12308 (#12403) * Fix #11903: Removes unnecessary height property from left navbar buttons of Contributor Dashboard (#12364) * Fix #12322 : Makes subheading aligned with heading in translation modal (#12328) * Fix part of #11464: Fixes task 8 by allowing user to edit skill difficulty . (#12308) * Adds metrics for curated lessons; Fix text direction in the suggestion review modal; (#12769) * Fix #11904: Reset "local storage" image destination before closing the translation suggestion modal (#12439) * Fixes #11438: Made contributor dashboard header sticky with reducing the size of user details container (#11738) Learner/Creator Pages * Display learner-facing pages in RTL when the site language is an RTL language. (#12762) * Fixes #12575 : Fixes audio bar position on small screens. (#12702) * Fix #12590: Do not allow empty commits in question editor (#12666) * Update the custom entity context when reviewing translations (#12573) * Fix #12378: Images in exploration tabs and collapsibles correctly preload (#12442) * Fixes New Nav Structure and Focus on exploration editor. (#12431) * Removed pretest question, fixed attribution text and added more comments to preferences page (#12415) * Fix #12380: Exploration statistics pie charts now show on page load (#12414) * Allow skillreview RTE component globally (#12397) * Fix #12224: Edit question flow fixes (#12321) * Fix part of #12253 : Added z-index styles to ensure dropdown does not overlap "Coming Soon" label (#12288) * New navigational structure: Foundation site and Oppia.org Integration (#12257) * Restrict exploration editor for explorations in story (#12233) * Fix #12171 : Removed redundant position property from classroom banner (#12207) * Number of elements in ratio expression input should not be more than 10 (#12204) * Fix the pause voice-over issue in audio bar. (#12192) * Fix #12174 : Added extra margin to the bottom of the search bar component in the library page (#12175) * Audit Job to check for explorations with number of ratio terms greater than 10 (#12157) * Fix #12070: Adding creator-guidelines page (#12144) * Autofocus: Adds autofocus to learner dashboard, contributor dashboard and story editor. (#12114) * Autofocus editors:Adds autofocus to topic,skill and exploration editor. (#12089) * Fixes part of #11464: Populate interactions with the saved solution. (#12057) * Fix part of #9749: `audio-file-uploader.directive.ts` migrated to angular. (#11971) * Fix Part of #12586: Prevents merging of questions when merging skills are failed. (#12723) * Fix #12598 Added padding above skill description in Question Editor (#12706) * Fix #12336: Adds a check for processed image size when uploading an image (#12344) * Allow exploration owner to remove users role from their exploration (#12143) * Fix #11333: Correctly enable publish and transfer to community buttons in settings tab of exploration editor (#11690) Translations * Add Dari to SUPPORTED_CONTENT_LANGUAGES (#12551) * Routine update of translations. (#12473) * Fix #11581: Enable rule inputs to be translated in the translation tab and these translations to be used in the learner view. (#12406) * Standardize handling of translatable objects. (#12342) * Add Urdu to list of supported languages (#12535) * Fix #12180 Add inline translation tips to translation cards. (#12339) Miscellaneous * Fix #12306: Changes the order of headings on the Splash Page (#12330) * Adds a polyfill for globalThis (#12268) * Remove old conversion functions and upgrade all exploration demo yaml files to the latest schema versions. (#12256) * Fix #11909: make footer responsive in smaller view (#12234) * Update the year to 2021 (#12167) * Fix part of #10306: Added async keyword to a function that return promise (#12050) * Revert "Fixes part of #11462: Update install_backend_python_libs to respect direct urls from GitHub" (#12363) * Revert "Fix part of #9749: Migrates image-uploader.directive.ts to angular" (#12335) * Log 404 from base handler without raising exceptions (#12345) * Remove @darksun27 from CODEOWNERS (#12329) * Revert "Fixes part of #8472: Migrate Exploration Rights Service" (#12305) * Reassign @Hudda as codeowner (#12154) Release team * Updated gcloud version in release_constants (#12510) * Add release constant for CUJ doc (#12484) Developer UX * Fix Part of #4057: Fully cover NumericInputValidationService with unit tests (#12462) * Changes gae version to 335.0.0 (#12456) * Fix Part of #10474: Make TS checks strict for StateEditorRefreshService, StateNameService, StoryNodeModel (#12429) * Fix Part of #10474 : Make checks strict for SchemaFormSubmittedService and SetInputRulesService (#12423) * Fix part of #11472: Note the idempotency of super-admin privilege handlers (#12419) * Fix #12389: Disallow usage of xdescribe and xit in frontend unit test (#12418) * Fix Part of #10474 : Make typescript checks strict for MathEquationInputRulesService (#12411) * Fix #12379: Changes regex to support case insensitive process names (#12409) * Fix part of #10474: Make typescript checks strict in NumericInputRulesService (#12320) * Fixes part of #11462: Update install_backend_python_libs to respect direct urls from GitHub (#12315) * Clarify Port Open/Closed Language in scripts/common.py (#12307) * Fix part of #10306: Add "async" keyword to asynchronous functions that return a promise (#12302) * Fix part of #10306: Added async keyword to synchronous function that return a promise (#12291) * Fix part of #11776. Adding/Updating 'Args' and 'Return' in docstrings (#12287) * Fixes part of #8423: Added lint test to enforce use of 3 character hexadecimal notation (#12282) * Fix part of #11496: Adds lint check to disallow browser.sleep() calls (#12248) * Fix part of #10306: added async to createTopic in topic-creation-backend-api.service.ts (#12239) * Refactor of the user services and android constants (#12229) * Fix part of #8423: Implement new linter checks (Check for space before and after = in HTML) (#12225) * Fix part of #8423 Add eslint check to ensure space between type and : [e.g: const variableName:TYPE] (#12222) * Fix part of #10306: Adds 'async' keyword to asynchronous function in pretest-question-backend-api.service (#12176) * Fix part of #10306: Add "async" keyword to asynchronous functions that return a promise (#12151) * Fix part of #7450 : Modified private methods in "jobs_test.ContinuousComputationTests" (#12133) * Fix part of #10306 : Add "async" keyword to asynchronous functions in "playthrough-issues-backend-api.service.ts" (#12127) * Fix part of #10306: Adds 'async' keyword to asynchronous function in topic-creation-backend-api.service.ts (#12100) * Shard Lint Tests (#12073) * Fixes part of #10306 : Added async keyword to asynchronous functions that return a promise (#12021) * Fix an incorrect comment in context.service.ts (#12453) * Fix Part of #4057: Frontend test to fully cover collection-node.model.ts (#12420) * Frontend test for oppia interactive end exploration (#12354) * Fix Part of #4057: Fully cover context.service.ts (#12262) * Update to the Proof that changes are correct section. (#12077) Data handling * Fix prod validation errors (#12398) * Remove lowest supported role (#12391) * Create android feedback reporting storage models (#12298) * Add permission decorator for primary admin (#12283) * Fix part of #11475: Migrate _validate_post_commit_is_private to Apache Beam (#12272) * Email dashboard - Send emails by custom predicates (#12041) * Fix left over stats server errors (#12416) Bug fixes * Fix #12738: Copy does not work for images in the translation modal and image upload during question creation (#12789) * Fix #12632 & #12589: Adds custom class to fix modal issue and changes animation name (#12772) * Fix part of #8423: Restrict use of px with 0 (#12285) * Fix #6219: Fixes checkbox CSS (#12244) Python Migration * Fix part of #11462: Permit auth-related pages and handlers in maintenance mode (#12684) * Fix part of #11462: Include users marked for deletion when managing deleted users (#12555) * Fix part of #11462: Add one-off job to detect accounts with duplicate emails (#12534) * Add {Model.property: Model.ID} relationship checks to AuditAllStorageModelsJob (#12471) * Fix part of #11475: Migrates _validate_old_models_marked_deleted (#12465) * Changes try except to not fail for python3 (#12461) * Fix part of #11462: Hide user menu on login and logout pages (#12438) * Fix part of #11462: Add missing await (#12430) * Fix part of #11475: Implement AuditAllStorageModelsJob with Apache Beam (#12428) * Fix part of #11462: Add SyncFirebaseAccountsOneOffJob (#12417) * Fix part of #11475: Rearchitect the code in /jobs/ (#12413) * Fix #11462: Migrate to Firebase authentication (#12392) * Fixes part of #11462: Update install_backend_python_libs to respect direct urls from GitHub (#12366) * Part of #11475: Update beam conventions (#12338) * Revert "Fix #11462: Migrate to Firebase authentication" (#12313) * Fix #11462: Migrate to Firebase authentication (#12172)\ * Fix part of #11462: Remove logging from SyncFirebaseAccountsOneOffJob (#12441) * Fix part of #11476: Introduce process manager for Cloud Datastore Emulator (#12408) Angular Migration * Fix #12400 and #12505: Add imports for modules that requires 'interactionsQuestionsRequires.ts' (#12608) * Fix part of #9749: Migrate topic-selector directive to angular (#12387) * Fix part of #9749: Migrate Algebraic Expression Editor, boolean-editor, code-string-editor, coord-two-dim (#12360) * Fix part of #9749 :On screen keyboard Migrated (#12351) * Fix part of #9749: Image uploader is migrated and fixed (#12337) * Fix part of #9749: Migrate translation opportunity modal (#12191) * Fix part of #9749: Migrate admin-navbar and admin-dev-mode-activities-tab & added api service for admin-navbar (#12189) * Migrate ConfirmOrCancelModal to Angular and use it in a modal. (#12153) * Fix part of #9749: Topics and skills dashboard navbar breadcrumb (#12131) * Fix part of #9749: Migrates image-uploader.directive.ts to angular (#12128) * Fix part of #9749: Migrated promo-bar-directive (#12110) * Fix part of #9749: Admin jobs tab component migrated (#12076) * Fix part of #8472: question-validation.service.ts along with spec migrated to angular (#12023) * Fixes part of #8472: Migrate Exploration Rights Service (#11974) * Fix part of #9749: Migrate skill selector to angular (#11791) * Fixes part of #10700: Refactor AnswerStatsObjectFactory to model.ts (#11691) * Fix part of #8016: Added a separate backend api service for learner-view-info-backend-api.service.ts (#12132) Automated QA Team * Fix #12372: Pin and Assert Lighthouse Chrome Versions (#12368) * Add a check for whether a server is running on the elasticsearch port when running e2e tests. (#12359) * Fix Admin Page Flake: expected 0 to equal 2 (#12358) * Name CI Tests for Custom ESLint Checks (#12325) * Increase logging on the publications suite (#12271) * Fix #10798: Fixing End-to-End Tests with action.js and waitFor.js for ExplorationEditorHistoryTab.js (#12245) * Fix e2e flake:No element found using locator: by.cssContainingText("option" , "moderator") (#12226) * Added unit tests for skill-mastery.component.ts and collection-local-nav.component.ts (#12216) * Move Users E2E Tests to GitHub Actions (#12209) * Fix #10798: Fixes failure of e2e tests with action.js (#12148) * Fix editStateButton click intercepted by welcome modal (#12097) * Fix part of #10798 : End-to-End tests for profileMenuFlow.js (#12082) * Fix part of N/A: Fix flaky frontend test. (#12476) * Hot-fix of failing lint check (#12421) v3.0.9 (29 Mar 2021) ------------------------ Contributor Pages * Fix part of #11464: Fix task 8 by allowing user to edit skill difficulty . (#12308) * Fix #12260: Add media queries to prevent overflow of tabs in question editor (#12281) Angular Migration * Upgrade component wrapper for Angular html Bind (#12138) * Fix part of #9749: Migrate graph interaction (#12090) * Fix part Of #10700: Refactor ThreadMessageSummaryObjectFactory and ThreadMessageObjectFactory to Model (#12060) * Fix part of #8472: Migrate collection-editor-state.service.ts along with spec (#12027) * Fix part of #9749: Migrate summary list header directive to Angular (#12019) * Fix part of #11920: Add `RatioExpressionInputRulesService` to `UpgradedServices.ts` (#12009) * Migrate skill editor navbar breadcrumb to Angular (#12001) * Migrate thread table component (#12000) * Fix part of #9749: Migrate all fraction interactions (#11990) * Fix part of #9749: Migrate all the Algebraic Interactions to angular components. (#11958) * Delete learner-answer-details-data service as it was dead code (#11954) * Migrate user email preferences service from AngularJS to Angular (#11949) * Fix part of #10700: Refactor Suggestions object factory (#11942) * Fix part of #9749: Migrate all the continue interaction related directives to angular components (#11935) * Fix part of #8472: Migrate story-update.service (#11889) * Fix part of #9749: Migrate Splash page to angular (#11826) * Fix part of #8472: Migrate Collection Update Service (#11663) * Fix part of #8472: Migrate state-tutorial-first-time.service.ts to Angular 8 (#11368) * Fix part of #9749: Migrate Collection Local Nav to Angular (#11352) * Fix part of #8472: Migrate image-upload-helper.service (#11306) * Fix part of #9749: Migrate subtopic-viewer-navbar-pre-logo-action.component.ts to Angular (#11983) * Fix part of #9749: Migrate admin-prod-mode-activities-tab directive to angular component (#11787) Translations * Fix part of #11721: Add i18n for delete button text on preferences page (#11762) Developer UX * Relax Lighthouse Accessibility Assertions (#12183) * Use pip 20 and explain `deparallelize_terser` param more (#12145) * Fix part of #12117: Remove loop from html linter file (#12129) * Fix #11070: Fix empty docstring linter error (#12119) * Fix css linter script issue (#12105) * Fix part of #5097: Add length-zero-no-unit rule for CSS lint check (#12095) * Fix part of #11462: Only start firebase emulator in EMULATOR_MODE (#12093) * Fix part of #4057: Add tests in image-upload-helper.service.spec.ts (#11991) * Add emulator mode (#11906) * Move _check_extra_js_files to the general linter (#11864) * Fix #9008: Fix FetchIssuesHandler responds with a JSON object instead of an array (#11852) * Fix part of #11431: Replace run_in_transaction call with decorator (#11821) * Fix part of #8423: Add Args to docstrings in some files (#11770) * Fix part of #11496: Lint Check for E2E Action Functions (#11734) Data handling * Introduce wipeout related utils to admin page (#12101) * Clear old drafts and fix format of content suggestions (#12068) * Fix part of #10049: Remove deprecated fields from ExplorationRightsModel (#12052) * Fix part of #3446: Add frontend validators to PencilCodeEditor (#12033) * Fix part of #10049: Remove deprecated fields from ExplorationModel (#11998) * Fix part of #10415: Refactor activity validators (#11926) * Fix #9427: Remove email access in admin-page (#11869) Miscellaneous * Add a polyfill for globalThis (#12268) Release team * Rename release constant key (#12284) Bug fixes * Fix missing login required modal (#11858) Python Migration * Lift minimal App Engine setup to new base classes (#12124) * Fix part of #11462: Add one-off job to populate Firebase servers (#12086) * Fix part of #11462: Transition backend to manage Firebase authentication using HTTP cookies (#12054) * Fix part of #11462: Transition frontend to manage Firebase authentication using HTTP cookies (#11973) * Fix part of #11475: Migrate Base Model Validator to Apache Beam (#11955) Learner/Creator Pages * Show skillreview RTE component when submitting a question via the community dashboard (#12340) * Fix #12178: Make questions appear on practice session (#12295) * Update classroom card to show # of chapters instead of # of stories (#12218) * Use EditabilityService to determine when solution can be edited (#12162) * Fix #12070: Adding creator-guidelines page (#12144) * Ensure `n`-th term of ratio equals `x` (#12103) * Preload functionality for images in state writtenTranslations (#12063) * Fix part of #11919: Add styles to prevent errors from looking clickable (#12039) * Fix Teach Page: Make teach page responsive and removes broken link (#12038) * Add e2e test for student user journey (#12010) * Add 'Classroom' option in the sidebar menu (mobile specific) with 'Basic Mathematics' option in submenu (#11985) * Fix part of #11950: Add jobs for migrating all snapshots of explorations and questions to the latest schema version (#11952) * Fix #11887: Fix audio player position in tablet,mobile view (#11948) * Fix part of #11433: Add new TranslatableHtml and TranslatableUnicode objects (#11937) * Fix classroom page tasks adding topic in lesson player (#11923) * Fix part of #10306: Add async keyword to asynchronous functions that return a promise (#11915) * Fix part of #10700: Convert Object factory to Model Class (#11902) * Fix #11886: Add padding at the bottom of the search bar container to make it visible (#11893) * Fix part of #10667: Unblock profile icon and commit message for topics (#11875) * Fix Classroom page navbar in mobile view. (#11873) * Hide previously assigned topics for a skill in the 'Assign Skill to Topic' modal (#11865) * Fix #3984: Change tooltip from "Add to playlist" to "Watch later" in exploration library (#11780) * Fix #11639: Improve style of navbar-menu:focus (#11731) * Fix part of #11485: Revisit old completed lessons in story (#11563) * Remove suggestion submission functionality from the learner view (#12096) * Fix #10919, #8800 & #4932: Make "Play later" section tiles consistent with other sections (#12048) * Fix #11898: Fix misaligned social media icons (#11913) Automated QA Team * Fix part of #11462: Add logout at the end of end-to-end tests (#12118) * Fix part of #10798: Add End-to-End tests for libraryFlow.js (#12083) * Fix part of #4057: Add a unit test for Graph Utils Service (#12072) * Fix #12026: Skip E2E Tests for Changelog Update PRs (#12035) * Fix #12029: Escape Protractor Screenshot File Names (#12034) * Fix part of #4057: Add a test file for state-tutorial-first-time.service.ts (#12007) * Fix part of #10798: Fix E2E tests for accessibility.js (#11999) * Fix #11947 and #11993: Fix URLs Reported to E2E Logging Server and Report Branch Name (#11995) * Fix part of #10798: Add end-to-end test general.js file (#11965) * Fix frontend test failing flakily due to coverage (#11907) * Shard backend tests (#11792) v3.0.8 (25 Feb 2021) ------------------------ Contributor Pages * Contributor dashboard bug fixes (#12008) * Fix part of #11900: Disable opportunities list next button if there are no more results to display (#11982) * Fix #11901: aligns bullets points properly. (#11976) * Fix #11840 and #11899: Allow admin to view, add, and remove users to use submit question tab on contributor dashboard + misc admin roles fixes (#11862) Bug fixes * Fix part of #11462: Avoid initializing AngularFire by default (#11845) Angular Migration * Fix part of #11920: Add `RatioExpressionInputRulesService` to `UpgradedServices.ts` (#12009) * Fix part of #8472: Migrate translation-tab-active-content-id.service (#11760) * Fixes Part of #8472: Migrate Exploration data service (#11564) Translations * Add hi-en to SUPPORTED_CONTENT_LANGUAGES and fixes revision card not showing content (#11917) Developer UX * Fix #9887: Adds inline comment checker for codeowner (#11835) * Fix part of #10474: Enable strict check on audio language model (#11813) * Fix #11477: Update codeowners in preparation for vacation. (#11810) * Upgrade libraries (#11754) * Fix #11727: Update the CODEOWNERS file and lint check to ensure new files don’t fall under blanket code owners (#11745) * Fix part of #11431: Replace run_in_transaction call with decorator (#11741) * Fix #9726 Relocated sidebar-status.service.ts file from domain to services directory. (#11729) * Fix part of #11572: Tighten some try/excepts and use `exception` instead of `error` in some places (#11728) * Fix part of #10306: Added async keyword to functions that return a promise (#11710) * Fix css linter chekcs never stops because of re.sub() call (#11672) * Clean up ElasticSearch server after e2e run. (#11662) * Fix part of #10728: Move python regex lint check to pylint (#11579) * Fix part of #10474: Cover more files with strict checks (#11574) * Fix part of #7450: Modify private methods in SuggestionIntegrationTests (#11797) * Fix of #10306 added async keyword before functions that return a promise (#11755) * Fix part of #10306 adding async in ansynchronous functions of Translations-backend-api.service (#11740) * Fix part of #10306: Added async keyword to asynchronous functions that return a promise (#11739) Data handling * Fix signup process for user marked as deleted (#11946) * Add notification email when Wipeout fails (#11775) * Refactor controllers to not user storage models directly (#11673) * Fix #11469, #11623: Fix audit jobs, adding ID validation and reducing shards for audit jobs (#11646) * Fix part of #5914: Truncate commit_message lengths to enable projection queries for Takeout (#11465) * Fix part of #10049: Remove deprecated fields from `CollectionModel` and `CollectionRightsModel` (#11350) * Fix part of #10049: Remove deprecated field from `UserSubscriptionsModel` (#11597) Miscellaneous * Fix installation issues with gtag (#11908) * Pin webdriver-manager package to ^12.1.8 (#11794) * Add code snippet for Google Optimize (#11773) * Fix #8174: Remove duplicate DIRS_TO_ADD_TO_SYS_PATH from the code base (#11860) * Upgrade GA version to use gtag. (#11882) * Change Version to Browser-version in the bug report issue template (#11689) * Replace logging mocks with TestBase.capture_logging (#11688) Release team * Add correct release constants for migration job names list (#11648) QA Team * fix preferencePages as part of #10798 (#11669) * Use waitFor.invisibilityOf immediately after waitFor.visibilityOf for toast messages in ExplorationEditorPage.saveChanges (#11846) * fix "confirm delete skill button is not clickable" flake in topicsAndSkillsDashboard (#11801) * Fix part of #10798: Fix end to end tests for ExplorationEditorImprovementsTab.js (#11619) Python Migration * Fix part of #11462: Initialize AngularFire with Firebase constants (#11796) * Fix part of #11314: Switch over to elasticsearch in dev and prod. (#11774) * Fix part of #11462: Lift GAE-specific auth services to the platform layer (#11588) Learner/Creator Pages * Fix images not loading when offline (#11964) * Fix #11912: Implements delay before cards can be rearranged. (#11931) * Fix #11898: The social media icons are missaligned and different sizes (#11913) * Fix Skill editor console error (#11989) * Fix #11887: fixes audio player position in tablet,mobile view (#11948) * Fix #11918: Added text to that conveys the interaction used (#11941) * Fix #11919 : Refactor CSS styles to prevent errors from looking clickable (#11940) * Fix #11892:Added a specific height to the cards. (#11911) * Fix #11885: added media query to change to mobile view (#11894) * Fix #11886 : Added padding at the bottom of the search bar container to make it visible (#11893) * Fix #10201 and #11682: Editor and translation tutorials fully working (#11857) * Remove deleted skills from skillIdToRubricsObject in the topic editor (#11855) * Fix #11679: Success alert on merging two skills (#11766) * Fix minor syntax issues in the correctness footer (#11719) * Add End-to-end test for topic and story viewer page (#11701) * Fix part of #11464 task 12 highlighting interaction selection modal (#11674) * Hide create topic/skill buttons for users with insufficient access rights; Update page title guidelines; (#11670) * Fix #11181: Changed button CSS (#11667) * Fix #11519: Removes "Uncategorized Skills" from topic editor if all skills have been categorized (#11656) * Fix #11536: Fix overflowing map container in exploration editor (#11651) * Fix part of #11464:Changes question editor flow in skill editor tab and Fixes task 7 (#11625) * Fix question editor issues (#11573) * Fix part of #10306: Adds async keyword in read-only-collection-backend-api.service (#11568) * Deprecate parameters in exploration editor settings (#11513) * Fix part of #10667: Prevent duplicate skill creation (#11375) * Increase duration that success toast stays on the screen (save exp) (#11842) * Make categories visible (#11832) * Fix #11105: Adds correct styling in the audio player to maintain its height (#11819) * Add metrics for 'curated lesson completed' (#11799) * Introduce an Audit job to list all interaction ids in a topic (#11712) * Add few methods for site analytics (#11668) * Fix #11247: Duplicated Number Input interaction into General tab (#11664) * Fix #10261: Displays "Reload Site?" modal/alert (#11654) * Fix part of #8038: Changes translation-file-hash-loader.service.ts name to translation-file-hash-loader-backend-api.service.ts (#11650) * Fix part of #11464 task 20 and 21 fixing border-bottom (#11567) v3.0.7 (04 Feb 2021) ------------------------ Contributor Pages * Fix #9642: Changes the title Things to do to Available Tasks (#11571) Angular Migration * Fix part of #8472: Migrate Editable Exploration Backend Api Service (#11558) * Upgrade Angular packages to 10.2.2 and TypeScript Compiler to ES6 (#11410) * Fix Part of #8472: Migrate Search Service to Angular 8 (#11409) * Fix #11043: Fix const/readonly usages in the codebase (#11391) * Fix part of #11043: Fix const/readonly usages in the codebase (#11386) * Fix part of #8472 : Migrate SkillEditorStateService to Angular8 (#11355) * Fix part of #8472 Migrate skill-update-service.ts to Angular 8 (#11214) * Migration (topic-editor-routing.service.ts) AngularJS to Angular 8 (#11188) * Revert "Migration (topic-editor-routing.service.ts) AngularJS to Angular 8" (#11423) * Fix part of #8472 Migrate Fatigue Detection Service to Angular 8 (#11408) Translations * Add the Pashto language for exploration translation and voiceover (#11658) * Fix #11632: Resolve nits from #11499 and fix one bug from #11499 (#11640) * Translation surfacing (#11569) * Implement an audit job (RuleInputToCustomizationArgsMappingOneOffJob) that validates rule inputs that match choices. (#11511) * Fix part of #11367: Switch translation opportunity editor to RTL when translating into an RTL language (#11499) * Routine update from translatewiki (#11488) * Migrate ItemSelectionInput and DragAndDropSort input rule inputs to support translations (#11466) * Add rule inputs translations backend support and new BaseTranslatableObject interface (#11376) Developer UX * Fix links in CONTRIBUTORS file. (#11604) * Fix part of #10474: Enable strict checks for graph input (#11575) * Fix #10306: Added Async to function that return Promises (#11551) * Use context manager to handle set-up/tear-down of GAE Server (#11510) * Fix pylint taking infinite time to complete lint testing (#11490) * Fix part of #10474: Cover Few Services with strict checks (#11460) * Add a check for checking if files are sorted in tsconfig-strict.json (#11445) * Fix part of #10474: Added strict checks for LogicProofRulesService (#11440) * Update oppiabot github actions to latest version (#11424) * Refactor try/excepts in domain (#11421) * Remove usage of platform from controllers (#11404) * ClassifierObjectFactory added to strict check (#11400) * Modifications added for async keyword returning a promise (#11364) * Adds helpful pointers for new contributors in the PR template (#11291) * Fix part of #10474: Cover more files with strict checks (#11561) * Removes duplicate importAllAngularServices imports (#11556) * Fix part of #10474: Add typescript strict checks in ParamChangeObjectFactory (#11494) * Fiz part of #10306: Added async keyword to Promise Returning functions in `core/templates/services/translate.service.ts` (#11468) * Fix part of #10474: Add files to strict check. (#11457) * Fix #8668: Document graph data service file with jsdoc - resubmission (#11455) Data handling * Fix external fetcher error reporting (#11641) * Fix part of #5914: Remove Takeout variable redeclaration (#11589) * Fix #11140: Remove retrieval of `UserAuthDetailsModel` (#11448) * Revert "Fix #11140: Remove retrieval of `UserAuthDetailsModel`" (#11443) * Fix #10386: Fix `created_on` in `UserSettingsModel` (#11437) * Fix #11394: Failed base64 image decoding (Takeout) (#11422) * Fix part of #5914: Add Controller Level Gating Against User ID Export (#11382) * Fix #11140: Remove retrieval of `UserAuthDetailsModel` (#11363) * Fixes issue #10727: Rename field `activity_ids` to `exploration_ids` in the `UserSubscriptionsModel` (#11316) * Refactor some try/excepts and remove unneeded one off jobs (#11293) * Fix #11527: Add base human maintained model (#11270) * Fix part of #10049: Remove `feedback_thread_ids`. (#11508) * Allow system users as committers and add jobs to fix issues in SkillSnapshotMetadataModelAuditOneOffJob (#11245) * Fix part of #10415: Refactor prod validators to be split into individual validators (#11493) Miscellaneous * Added code snippet for Google Optimize (#11773) * Fix part of #11329: exploration-save-modal (remove: addclass and removeclass) (#11407) * Fix part of #11329: admin-navbar-directive (remove: addclass and removeclass) (#11406) * Fix #9717: Changes navbar and logo color on maintenance page (#11624) * Fix part of #11329: top-navigation-bar.directive.ts (removing:addclass and removeclass) (#11378) * Fix part of #10415: Refactor feedback validators (#11340) * Fix part of #10306: Added async keyword to functions that return a promise (#11339) * Fix part of #10306: Added async keyword to functions that return a promise (#11299) * Fix part of #10474: Cover more files with strict checks (#11521) * Fix #9708: Fixed Tweet Text (#11516) * Fix part of #8668: Document service files with jsdoc (#11514) * Fix issue #11454: Footer in preview changes tab looks odd in mobile. (#11506) * Add the Telugu langauge for translation and voiceover (#11497) * Fix #11566: Added flexbox for fixing overflow of text (#11580) Release team * Add correct release constants for migration job names list (#11648) * Modify release scripts (#11365) QA Team * Wait for language selector to be present before clicking on it (#11613) * Fix part of #10798 : Fixed End-to-End Tests with action.js and waitFor.js inSubscriptionDashboardPage.js (#11598) * Revert "Fix part of #8472: Migrate Editable Exploration Backend Api Service" (#11596) * Wait for Oppia Server To Shut Down Before Running E2E Tests (#11565) * Fix E2E Reporting (#11449) * Fix and improvements based on e2e failures in Circle CI (#11392) * Fix #11601: Take more care when trying to kill processes (#11602) * Fix part of #4057: improved skill-update.service.ts test coverage to 100% (#11451) * Add flaky e2e report and restart functionality (#11263) * Fix End-to-End tests for CreatorDashboardPage.js (#11145) * Fix part of #4057: Adds unit test for collection-playthrough.model.ts (#11489) Python Migration * Fix part of #11462: Introduce Firebase emulator to dev workflow (#11555) * Fix part of #11462: Use AuthClaims domain object as return value of authenticate_request (#11554) * Fix part of #11462: Define Firebase-specific constants with empty values (#11540) * Fix part of #11462: Add wipeout hooks for auth-related data (#11537) * Fix part of #11314: Add search stub for tests (#11500) * Fix part of #11462: Add AuthService and AuthInterceptor for managing user authorization (#11492) * Fix part of #11462: Add platform layer for Firebase authentication services (#11452) * Fix part of #11202: Add retry to queue.yaml and remove retry from Cloud Tasks (#11429) * Remove unused auth-related jobs (#11586) * Fix part of #11314: add local ElasticSearch server for dev mode and testing (#11546) Learner/Creator Pages * Remove deleted skills from skillIdToRubricsObject in the topic editor (#11855) * Fix #11677: Allow reordering of chapters as they are created (#11809) * Fix #11696: Replace skill id with the new one for all topics that the skill was assigned to; fixes a feedback editor bug (#11808) * Fix #11015 & #11603: show warning sign in the default answer group; fix date issues in the history tab; (#11803) * Optimizes the exploration save process and defers the summary generation call (#11793) * Fix #11694: Resolving console errors in Skill preview tab (#11790) * Fix #11679: Success alert on merging two skills (#11766) * Fix #11630: Changed 'Goal' to 'Chapter description' in story editor (#11746) * Fix of #11676 placing button inside the banner (#11733) * Fix #11389: Updates margin of the supplemental card in exploration player page (#11638) * Fix #6292: This PR fixes #6292 as per #11635 (#11637) * Handles Concept card backdrop click and fixes an e2e flake (#11628) * Update skill only after fetchSkill and fetchSkillRightsAsync have returned (#11612) * Unblur and enable by default all chapters in the story viewer page (#11600) * Fix success toast showing before a topic is saved (#11599) * Fix #11559: Fixed Promo looking wonky on the library page (#11570) * Fix blocking bugs #11399 and #11416 (#11517) * Added validation for an edge case in math interactions. (#11491) * Fix #11430: Merge skill modal has styling issues (#11487) * New Teach page (#11467) * Transfer codeownership of interaction files from @aks681 to @iamprayush. (#11459) * Fix #11379: Fixed UI bug - code output hidden behind footer. (#11458) * Fix #6292: Makes the card too long warning prominent. (#11444) * Fix #11418 & #11415 and minor SEO improvements (#11436) * Fix #11181: Modified button css throughout codebase (#11351) * Fix part of #10667 to fix ”Save Draft” modal disappears when you click outside the modal. (#11280) * Fix #11179: Changed Font CSS (#11269) * Modify the splash page (#11260) * New Teach page (#11467) * Fix #11675: Adding limit to story description (#11732) * Fix issue #9044: No Side Scroll when making interaction (#11241) * Fix #10263: Search Bar turns to white when moves to page middle (#11515) * Fix issue #11402: Fixing 'AUTHOR PROFILES' display in mobile view. (#11447) * Fix issue which caused Skill Editor to not load completely unless a digest loop was triggered (#11553) * Fix #8801: Fixed number overlapping in creator dashboard's navbar (#11524) * Add $rootScope.$applyAsync in skill-editor-navbar.directive.ts (#11470) v3.0.6 (04 Jan 2021) ------------------------ Contributor Pages * Add config to disallow contributors to suggest questions (#11442) * Fix ck-editor lagging issue on contributor dashboard (#11349) * Removes run_in_transactions for suggestion and stats models and fixes translation issue in contributor dashboard page (#11320) * Fix #11300: Revert "Add job to delete invalid suggestion models on server" (#11319) * Adds Dari language for contents and translations. (#11307) * Fix translation count issue for the exploration opportunity models (#11290) * Fix #10715: Admin page UI issues (#11172) * Fix part of #9004: Record event measurements for Contributor Dashboard analytics (#11238) * Add one-off job for question suggestion migration (#11169) * Fix part of #10415: Refactor suggestion validators (#11345) * Fix part of #10720: Hide in review translation texts in contributor dashboard translation modal (#11356) * Fix part of #10720: Add check for loading data in translation modal. (#11401) Answer Classification * Milestone 2 of ML pipeline migration (#11052) QA Team * Drop ClassroomPage e2e test from Circle CI because it is present in Actions (#11358) * Fix part of #4057: Adds frontend test cases for ExplorationRecommendationsService (#11348) * Rewrite additional editor features (#11324) * Fix #11309: Minor changes to the failing test (#11310) * Fix common e2e flakes (#11279) * Store protractor screenshots as artifacts (#11266) * Rewrite Play Voiceovers E2E Test (#11265) * Fixes common e2e errors in e2e_learner_flow_skill_editor_and_embedding (#11259) * Fix issue #10798 : Fixed End-to-End Tests with action.js and waitFor.js in ExplorationEditorFeedbackTab.js (#11166) * Fix part of #10798:Fixing End-to-End Tests for CollectionEditor.js (#11126) * Update e2e workflow names (#11223) Server Errors * Adds more info to the logs for #7951 server error (#11357) Developer UX * Fix part of #10474: Make typescript checks strict for service CreatorDashboardStatsObjectFactory (#11332) * Fix #11163: Fix installation output to output correct error message. (#11282) * Remove travis from the codebase (#11275) * Removed Hudda as codeowner (#11240) * Increase taskqueue http request timeout (#11195) * Upgrade libraries (#11147) * Fix part of #10306: Added async keyword to asynchronous functions that return a promise. (#11068) * Fix part of #10474: Add strict checks to files (#11028) * Ubuntu docker (#11278) * Add auto retry functionality to e2e script (#11277) * Fix part of #8668: Document the service file with jsdoc (#11239) * Add Travis CI tests to Github actions (#11205) * Fix part of #10415: Refactor user validators (#11117) * Fix part of #8423: Forbid use of "if x != None" (#11108) * Fix part of #10306: Added async keyword to asynchronous functions that return a promise. (#10886) Data handling * Fix part of #5914: Takeout E2E testing (#11311) * Wipeout 8.17: Fix remaining stuff from the audit (#11281) * Fix #11142 and #11150: Update Takeout Docstrings and Clean Up (#11261) * Wipeout 8.16: Save the username of deleted user so it cannot be reused (#11168) * Fix part of #10415: Extract collection model validators from prod_validators to a new file (#11152) * Fix part of #10415: Extract config validators from prod_validator (#11148) * Add missing commit logs (#11146) * Fix part of #10415: Refactor classifier validators (#11116) * Fix interaction customization args validation issues in LogicProof, AlgebraicExpressionInput, MathEquation (#11019) * Fix part of #10415: Topic validator refractor (#10967) Translations * Localisation updates from https://translatewiki.net. (#11110) Learner/Creator Pages * Fix #11536: pencil code editor inside interaction box (#11538) * Show all topics that a skill has been assigned to in the dashboard page (#11525) * Fix blocking bugs #11399 and #11416 (#11517) * Fix #11418 & #11415 and minor SEO improvements (#11436) * Fix #11334: Changes index -> version number in the history tab (#11346) * Fix part of #10667: make alt text in image editor into paragraph text (#11298) * Add page title field for Topics and minor changes to page titles (#11294) * Fix #11155, #11156: Removed redundant rule for simplified value (#11251) * Fixing Lesson info modal card (#11224) * Fix part of #10415: Refactor question validators (#11222) * Fix #11157 and #10758: Adress comments from PRs (#11210) * Fix #11096 and rest of classroom page issues (#11196) * Adds licence metadata to HTML (#11167) * Fix #3341: Added confirmation modal in the customization args editing. (#11164) * Fix of #10905 for not showing negative numbers in feedback notification (#11132) Bug fixes * Fix promo bar breakage in production. (#11326) * Fix #11200: fix browser detection mismatch between frontend and backend (#11211) * Fix issue #9992: Fixing the fin shaped portion of the blockquote element in the topic and skills dashboard and about page. (#11271) * Fix param editor: c.isCurrentlyInSettingsTab is not a function (#11335) * Move margin-bottom to conversation-skin-tutor-card-container (#11336) * Fix #11073: Fixes evaluation context in feature gating (#11218) * Add one-off job to wipe all ExplorationIssuesModel instances (#11323) * Fix to #10798 Refactor ExplorationPlayerPage.js (#11301) * Fix #11133: display '+1' icon and "Nowhere yet..." text (#11252) * Fix part of #9749 Remove circular image directive (#11201) * Fix part of #8472 Migrate response-service.ts to Angular 8 (#11194) * Fix issue #9041: Maxlength in the input box when renaming a state (#11175) Python Migration * Change Cloud Tasks from HTTP tasks to AppEngine tasks (#11246) * Fix part of #9827: Implement search platfrom API (#11295) Angular Migration * Fix Part of #8472: Migrate Question Player Enginer Service to Angular 8 (#11285) * Fix part of #8472 : Migrate TopicUpdateService to Angular8 (#11276) * Fix part of #8472: Migrate story-editor-state.service.ts (#11268) * Fix Part of #8472: Remove unused expression-type-parser service file and connected functions (#11262) * Fix Part of #8472: Migrate User Service to Angular 8 (#11191) * Fix part of #8472: Migrate translation language service to Angular (#11178) * Fix Part of #8472: Migrate Topic Rights Backend API Service (#11177) * Migrate ReadOnlyExplorationBackendApiService to angular (#11060) * Fix part of #8472: Migrate thread-data.service.ts to Angular 8 (#10941) * Fix Part of #8472: Migrate HintsAndSolutionManagerService to Angular 8 (#10900) * Fix part of #10474:Make typescript checks strict for service "CreatorExplorationSummaryObjectFactory" (#11327) * Fix part of #10474: Set strict checks for LearnerParamsService (#11302) v3.0.5 (02 Dec 2020) ------------------------ Contributor Pages * Fix part of #10687: Make it possible to get the top 5 suggestions that have been waiting longest for review per reviewer. (#10860) * Fix #10955: Make the updates to the CommunityContributionStatsModel transactional in the PopulateContributionStatsOneOffJob (#10956) * Fix #10687: Make it possible to notify Contributor Dashboard reviewers that there are suggestions waiting for review. (#10943) * Fix translation count issue for the exploration opportunity models (#11290) * Add job to delete invalid suggestion models on server (#11274) * Add job to rename the ExplorationOpportunitySummaryModel properties (#11093) * Fix #10707, #10969: Notify admins about bottlenecks on the Contributor Dashboard causing a longer review turnaround time (#10963) Cloud NDB Migration * Improve code health of test_utils (#11080) Bug fixes * Fix #11200: Fix browser detection mismatch between frontend and backend (#11211) * Fix part of #11202: Enable logging and add retry for create task (#11209) * Bug fixes: enable signup button after usernamehandler/data call has completed; login redirection must include search params (#11115) * Fix #11023: Improve robustness of platform parameter evaluation (#11074) Translations * Add new site languages Kabyle & Turkish (#11109) * Fix #11032: Adds customization args content-id for state color status for voiceover (#11094) * Migrate text input rules from NormalizedString to SetOfNormalizedString (#10882) Developer UX * Implement admin control panel for dynamic feature gating (#10334) * Use merge-base when determining diffs in pre_push_hook (#10978) * Fix #10617: Refactor the js_ts_linter to run eslint checks on all files at once (#10632) * Fix #10552: Add test coverage for eslint checks (#11024) * Fix #10633: Refactored linter to fail if one of the sub-linter fails and exit (#10895) * Fix #10802: Moved _check_http_request to general_purpose_linter (#10877) * Refactor the linter to log more helpful messages (#10705) * Fix part of #8423: Add pylint check for a single space after keyword (`if`, `elif`, `while`, `yield`) (#10486) * Fix part of #10863: Replace overrides of put with _pre_put_hook (#10890) Data handling * Fix hard-deletion cron job for versioned models (#11204) * Wipeout 8.16: Save the username of deleted user so it cannot be reused (#11168) * Wipeout 8.15: Fix removal of user from contributors (#11151) * Fix #10951: Create a new model that is used to retrieve the user ID from the GAE ID (#11134) * Fix issues with ExplorationSnapshotMetadataModelAuditOneOffJob due to large output (#11127) * Wipeout 4.5: Add username confirmation field into the delete account modal (#11082) * Wipeout 8.14: Hard deletion for models marked as deleted and other small stuff (#11071) * Wipeout 8.13: Fix deletion policies in various models (#11069) * Fix part of #10951: Only allow creating users on the signup page (#11050) * Fix 10178: Remove gae_id attribute from UserSettingsModel (#10994) * Fix part of #10463: Add profile picture verification job (#10961) * Fix part of #5914: Add testing for Takeout export policies (#10944) * Remove creation of contribution model for migration bot (#10927) * Wipeout 8.11: Various fixes (#10864) * Wipeout 9.1: Add tests for wipeout and modify the release for wipeout (#10830) * Fix part of #5914: Enable Takeout (#10825) * Add one off job to fix issues with exploration model (#10821) * Fix #10811: Add one off jobs to fix issues with user models (#10794) * Validate whether all the metadataSnapshot has a commitLog pair (#10770) * Add one-off job for question suggestion migration (#11169) * Wipeout 8.12: Edit deletion page texts and modify the wipeout process (#10993) * Fix #10863: Explicitly update the timestamps of models (#10981) * Add one-off job for question suggestion migration (#11169) * Enforce index config for StringProperty and TextProperty (#10869) Learner/Creator Pages * Fix #10788 and add a 'Coming Soon' topic card to classroom page. (#10939) * Fix #11242: Show appropriate error message when skill deletion fails (#11284) * Fix #11055: Modify validation for prereq skills (#11258) * Redirect /learn -> /learn/math and "browse our lessons" button to redirect to classroom instead of library (#11213) * Story viewer signup flow (#11139) * Add customization arg for Numeric Expression Input Interaction (#10815) Release team * Fix #9415: Adds feature to update version in package.json with each release (#11008) * Fix terms page path in update configs script (#11001) * Fix workflows for changelog update PRs (#10998) QA Team * Improve rating and feedback (#10965) * Fix help card hiding the submit button in e2e tests (#10819) * Topics and skills dashboard e2e refactor (#10782) * Custom e2e logging 2 (#11056) * Implement e2e flow test for dynamic feature gating (#10372) * Install Chrome 77 in e2e tests on Github Actions (#11009) * Fix part of #10798: Fixing End-to-End Tests with action.js and waitFor.js (#10954) * Fix end to end tests for ContributorDashboard Page.js with action.js and waitFor.js (#10928) * Rewriting the Extensions Suite (#10776) Angular Migration * Fix part of #8472: Migrate solution verification service (#11135) * Fix part of #9749: Migrates collection-navbar.component.ts (#11053) * Fix part of #8472: Migrate EditableQuestionBackendApiService to Angular8 (#11040) * Fix part of #8472: Migrate Expression Interpolation Service (#10991) * Fix part of #9749: Migrates state-param-changes-editor.component to Angular (#10962) * Fix part of #8472: Migrate exploration-summary-backend-api.service.ts and exploration-id-validation.service.ts (#10908) * Fix part of #10700: Refactor Object Factories with Dependencies (#10868) * Migrate QuestionsListService to Angular (#10867) * Fix part of #10700: Refactor Object Factories (#10838) * Fix part of #8472 : Migrate TranslationTabActiveModeService to Angular8 (#10813) * Fix part of #10700: Refactor Object Factories (#10701) * Fix part of #8472: Migrate editable-story-backend-api.service.ts file to angular 8 (#10378) * Fix part of #8472: Migrate admin-config-tab-backend-api.service.ts file to angular 8 (#11058) * Fix part of #8472: Migrate learner answer info service to angular 8 (#11021) * Fix part of #8472: Migrate EditableTopicBackendApiService to Angular 8 (#10997) * Fix #8038: Http calls moved from promo-bar.service.ts to *backend.api.service (#11067) * Fix #10398: Remove services from app and add require (#10725) v3.0.4 (17 Oct 2020) ------------------------ Contributor Pages * Fix guest user UI for opportunities on community dashboard (#9434) * Fixes #10625, #10696 & #10910: Add checks to present old suggestions for the deleted opportunities (#10932) * Fix part of #10707: Create a one off job to populate/regenerate the count values in the CommunityContributionStatsModel (#10774) * Fix #10757: Add a check to validate the values of the counts of the CommunityContributionStatsModel (#10764) * Fixes #10625 and Fixes #10696 Adds check to make sure opportunities are not undefined (#10745) * Fix part of #10707: Create a model to keep track of the number suggestions that are currently in review and the number of reviewers. (#10708) * Fix part of #10687: Make it possible to retrieve the question and translation suggestions that have been waiting too long for review. (#10688) * Fix 10590: Update the naming of UserContributionScoringModel to UserContributionProficiencyModel in index.yaml. (#10592) * Enables contributor dashboard page (#10573) * Fix #10546: Make it possible to query suggestions by language. (#10547) * Allow uploading and copying images in translation suggestion (#10529) * Allow images in question suggestions. (#10475) * Fix #10456: Improve naming by changing Scoring to Proficiency in UserContributionScoringModel and UserContributionScoring. (#10458) * Fix #10031: Translation opportunity progress fixes (#10159) Learner/Creator Pages * FIx #10915: Remove newlines from profile picture data URLs before rendering (#10984) * New structures UI bug fixes (#10948) * Add AlgebraicExpressionInput and MathEquationInput interactions to android constants (#10903) * Add NumericExpressionInput to android validation constants (#10806) * Fix #10604: Add validation indication for topic/story/subtopic creation modals (#10804) * Make customization args modal have a static backdrop. (#10789) * Fixes #10528: Fixes audio bar placement (#10784) * Adds links for chapters in the topic viewer page (#10755) * Fix #10638: Adds a job to add xmlns attribute to math SVG images. (#10752) * Fix #10597: Preferences UX fixes; enables remove icon and fixes dnd issue in mobile view for playlist items; fixes bullet points issue in subtopic editor (#10739) * Fix #10685 and #10636: CSS changes (#10734) * Fix #10608 Fixing skills dashboard pagination . (#10731) * Fix part of #10491: Frontend changes to mark optional misconceptions as inapplicable (#10729) * Fixes for learning facing bugs (#10695) * Fix 10649: The history tab in the exploration editor shows incorrect revisions. (#10690) * Fixes part of #10548: UI/UX fixes in the classroom page (#10683) * Fix #10587: Follow on PR #10567 (#10676) * Fix #10612: Fixing question editor UI issues. (#10673) * Fix #10594, 10605 Exploration navbar bug, and modal closing on clicking outside. (#10669) * Fix part of #10548: Classroom issues and miscellaneous fixes (#10664) * Fix #10460: Adds the learner view for the ratio input interaction (#10662) * Improving topics and skill dashboard mobile view (#10615) * Adding confirmation dialog before leaving browser. (#10584) * Redirect to topic editor page if subtopic id is invalid (#10581) * Page title and meta tag fixes (#10579) * Fix part of #10491: Untag deleted misconceptions from questions (#10567) * Change landing page links (#10557) * Adding loading screen to topic editor and story editor (#10545) * Fix #10535: Use a variable for custom schema (#10536) * Fix #10499: Fixing no error is displayed for exploration in story. (#10524) * Fixed error message in math interactions. (#10521) * Changing text for uncategorized skills on the topic editor and removing skill button from subtopic editor. (#10515) * Fix #10440: Improving the UI for exploration editor, question editor and fixing navbar bug (#10507) * Fix #10196: Added frontend validation for math rich text SVG image size (#10504) * Math interaction fixes (#10492) * Introduce fields 'not_applicable_misconception_ids' for questions and 'misconception_ids' for question summaries (#10481) * Svg editor UI improvements and bug fixes (#10478) * Minor UI fix in the math editor. (#10468) * Adding interaction field to the Question Summary Model. (#10459) * Fabric js version update (#10453) * Improving UI of modals for exploration editor. (#10447) * Adds Meta tag fields for topics and stories and practice_tab_is_displayed field for topic. (#10445) * Upgrading UI for the exploration customize interaction modal. (#10431) * Fix #861: Add text input rule validation. (#10424) * Improving exploration editor main tab UI. (#10417) * Fix #10264 and Adding support for adding prerequistie skills for chapter editor. (#10413) * Adding destination ids to story nodes (#10412) * Fix #10362, #10283, #10301 and #10303: Learner view changes (#10409) * Fix #10267: Fixes exploration editor autosave bug (#10405) * Upgrading the UI for exp history tab. (#10400) * Introduce classroom_page_is_accessible and classroom_promos_are_enabled config props (#10391) * Fix #10352 Adding subtopic validation and disabling practice tab for topic editor. (#10374) * Upgrading the question editor UI. (#10370) * Milestone 3.2: Removed the old math interaction. (#10361) * Question Editor: Adding select difficulty modal to the question tab page itself. (#10357) * Add URL preview for topics, subtopic, and story editor (#10351) * Fixes #10311: Adds storyId property to StoryPlaythrough object (#10348) * Use the math SVGs in the datastore instead of MathJax to render the math rich-text components (#10331) * Upgrading UI for the exploration settings tab (#10328) * Milestone 3.1: Adds 3 rules to AlgebraicExpressionInput and MathEquationInput (#10321) * Add redirection with lowercase url_fragment (#10304) * Adding loading dots to the topic and skill editor tab untill the data is fetched from the backend. (#10289) * Fix #10140: Make url_fragment a required field (#10277) * Fix #10229: Fixes bugs related to the new math interactions. (#10269) * Fix #10207, 10206, 10205: Fixing UI bugs and making improvements. (#10225) * Upgrading the UI for the exploration editor. (#10221) * Upgrading the UI for the exploration editor navbar. (#10184) * Add import svg tool to svg editor (#10182) * Create a preview tab for the topic editor in the editor itself. (#10150) Answer Classification * Revert "Milestone 2 of ML pipeline migration" (#10765) * Milestone 2 of ML pipeline migration (#10672) * Milestone 2 of ML pipeline migration (#10060) Lesson analytics * Fix transaction error in stats recording. (#10835) * Fix part of #9632: Improve debugability of stats_domain.ExplorationStats (#10694) * Introduce NeedsGuidingResponses Task Component to Improvements Tab (#10390) * Extend ExplorationImprovementsService to manage HBR/NGR tasks (#10231) Developer UX * Fix formatting of linter messages (#9925) * Update codeowners (#10777) * Fix part of #8668: JSOC added for admin-router.services (#10775) * Fix #10748: Add relative path for the custom eslint module (#10750) * Fix part of #10306: Added async keyword to asynchronous functions that return a promise. (#10703) * Fix part of #9827: Migrate Google App Engine Taskqueue to Cloud Tasks (#10699) * Fix #10697: Replace moment with dayjs and use proper lodash imports (#10698) * Slight changes to the lighthouse configs (#10677) * Upgrade libs (#10644) * Update names for GitHub Actions workflows to be globally consistent. (#10626) * Use preexisting pip functions with requirements (#10623) * Fix #10250: Revert codeowners for contributor dashboard project (#10586) * Fix #10538: Revert CODEOWNER files back to @vojtechjelinek (#10585) * Removed inline styling (#10580) * Disable inline styling. (#10577) * Adding requireindex as a dependency (#10565) * Drop --skip-build and --skip-install from the first e2e test on Github actions (#10562) * Fix part of #8423: Added lint to prohibit inline styling (#10550) * Transfer files away from vojtechjelinek (#10534) * Fix #10219: Type checks for .d.ts files (#10526) * Fix backend test issues on develop branch (#10525) * Fix part of #8423: Added lint check to disable multiline eslint-disable comments (#10497) * Fix part of #8423: Added new lint check to ensure correct frontend-tests message styling (#10494) * Fix part of #8423: Added lint check to remove any unused dependency (#10493) * Fix WebP images and switch lighthouse config from JSON to JS (#10467) * Lint Check for $broadcast use in the codebase (#10457) * Introduce new eslint rules (#10455) * Force user agent for urllib.urlretrieve (#10454) * fix additionalEditorFeatures test flake (#10446) * Split non-prod e2e test into two builds (#10444) * Fixed part of #8423: Added lint check to check for unused variables (#10441) * Add a new config for strict typescript checks (#10433) * Removed inline styling (#10430) * Add some more eslint checks (#10414) * Upgrade libs (#10406) * Fix #10383: Migrated comment checker to ITokenChecker (#10383) * Introduce more eslint checks (#10377) * Migrated BlankLineBelowFileoverview from IRawChecker to IAstroidChecker (#10376) * Fix part of #8423: Added custom eslint check to ensure line break after parenthesis (#10363) * Update skip_files to remove invalid dirs and to exclude test files (#10355) * Fix lint checks failing on develop (#10344) * Fix part of #8423: Added lint check to check for any extra space in parenthesis (#10295) * Fix part of #8423: Added a lint check to ensure a space after semicolon (#10294) * Add { waitUntil: 'networkidle0' } to the puppeteer script (#10293) * Used pycodestyle instead of custom pylint check (#10292) * Upgrade libs (#10288) * Fix part of #8668: Documenting editability.serivce.ts with JSDoc (#10285) * Fix part of #10250: Temporarily transfer codeowners for contributor dashboard project (#10252) * Introduce new eslint checks (#10187) * Fix part of #9827: Migrate Google App Engine memcache services to use Memorystore for Redis (#10114) * Implement part of #9827: Update webapp2 to support python3 (#10621) * Milestone 3.5: Add Dynamic URLS to lighthouse and Reinstate admin pages (#10537) * Changes implicit typecast to explicit typecast for returning status code in Error page component (#10462) * Fix part of #9827: Enforce redis server to start with clean slate. (#10429) * Update Google App Engine Cloud SDK to Latest Version (#10254) * Fix part of #8668: Documenting state-name.service.ts with JsDocs (#10172) * Upgrades the UI for the question editor tab. (#10243) * Follow up for addressing #10186 comments: Generalizes exploration migration audit jobs for testing exploration/state migrations (#10204) * Implement frontend domain objects for dynamic feature gating (#10190) * Implement frontend services for dynamic feature gating (#10185) * Milestone 3.1 : Add Ratio Expression Input Interaction (#10175) * Milestone 3.1: Score 100% in both Chrome and manual accessibility audits on Preferences, Profile, Splash, Signup pages. (#10174) * Milestone 2: Deferred Changes and miscellaneous fixes (#10152) * Community dashboard e2e tests for suggestions and reviewer assignment (#10090) * Fix part #4057: Adding tests for SkillDifficultyObjectFactorySpec.ts. (#10085) * Implement controllers for dynamic feature gating (#10021) Data handling * Fix part of #5914: Projection query for improved Takeout performance (#9963) * Fix #10891: Fixes moderator page issues (#10894) * Fix 10861: Removal of version attribute from ModifiableUserData domain class (#10862) * Add comments for migration jobs to clarify job deletion (#10827) * Add one off jobs to fix issues with feedback model (#10799) * Add one off jobs to fix issues with recommendation model (#10797) * Add one off jobs to fix issues with question models (#10793) * Add one off jobs to fix skill model related issues (#10791) * Wipeout 8.9: Add support for wipeout to remaining models (#10762) * Wipeout 8.8: Introduce wipeout utilities in the admin page (#10759) * Fix issues in audit jobs (#10730) * Remove duplicate job name in jobs_regsitry (#10722) * Fix part of #10049: Remove deprecated fields: translator_ids & gae_user_id (#10704) * Convert error output in interaction validation job to unicode (#10680) * Wipeout 8.7: Add more models to wipeout (#10674) * Delete feedbacks when exploration or topic is deleted (#10613) * Fix part of #5914: Change export policy to per-field rather than per-model (#10558) * Fix #10394: Shift PIN attribute to UserSettingsModel (#10517) * Wipeout 8.6: Add pseudonymous usernames (#10511) * Fix #9952: Removed the temporary model ExplorationMathRichTextInfo and corresponding one-off jobs (#10509) * Fix #10380: Remove golden zip file in Takeout controller level tests. (#10500) * Wipeout 8.5: Delete exploration related models and remove old `JobModel`s (#10466) * Fixes part of #10415: Refactor activity validators (#10416) * Add snapshot metadata audit job (#10367) * Refactor prod validation jobs (#10360) * Wipeout 8.4: Add `mentioned_user_ids` to RightsSnapshotMetadataModels (#10332) * Wipeout 8.3: Pseudonymize feedback and suggestion models (#10318) * Fix part of #5914: Resolve issue with timezones in controller level tests (#10284) * Introduce proper reconstitute for `CollectionRightsModel` and `ExplorationRightsModel` (#10245) * Fix #10240: Implement domain requirements for android profiles (#10241) * Refactor interaction validation jobs and add a new one for customization args validation (#10092) * Wipeout 8.2: Implement wipeout for other categories of models (#10047) * Implement backend services for dynamic feature gating (#9995) * Gather all remaining ndb usages into gae_datastore_services and enforce it (#10858) * Gather usages of ndb modules into gae_datastore_services (#10792) * Gather usages of datastore_* modules into gae_datastore_services (#10790) * Gather usages of app_identity into gae_app_identity_services (#10786) * Gather usages of datastore_query.Cursor into gae_datastore_services (#10785) * Create keyboard shortcut discovery modal (#10487) * Added a validation job for validating the Math content object in Math rich-text components with the recently added validation (#10418) Speed improvement * Move libraries used for interactions to webpack (#10388) * Fix source maps bug (#10384) * Use faster devtools in webpack (#10228) * Loads libraries in manifest.json using webpack, Add a seperate light module for karma (#10223) Release team * Update release constants to specify a single value for app yaml (#10916) * Complete release refactor by removing extra scripts (#10883) * Update to release scripts to deploy cron.yaml (#10834) * Delete the cloud_datastore_export app (#10833) * Fix appengine_config to monkeypatch versions for get_distribution (#10824) * Add flag to provide custom release data dir for deployment (#10817) * Add all release constants to wrap up release refactor (#10763) * Adds new script and constants for release refactoring (#10723) * Fix minor issues with release scripts (#10679) * Remove manual check for feconf verification (#10589) * Fix issues with release scripts (#10523) * Fixes issues in release scripts (#10471) * Milestone 3.3: Achieve Lighthouse scores of 100 on Story editor, Story player, Teach, and Terms pages (#10403) * Fix issues with release scripts and update scripts for redis (#10354) * Milestone 3.2: Score 100% in Chrome accessibility audits on Skill_Editor, Stewards, Story_Editor, Review_tests pages (#10276) * Fix instructions in release scripts (#10234) QA Team * Changes default log level to 'error' for e2e tests (#10823) * Fix e2e issue in the topic and skill dashbaord page (#10643) * Adding test for story editor directive. (#10566) * Remove Accessibility & Learner Suites from Actions (#10542) * Replace Exploration Statistics Tab with Additional Player Features in GitHub Actions E2E (#10489) * Fix User Creation Flake in e2e tests (#10488) * Add E2E Tests to GitHub Actions (#10448) * Increasing coverage for the topic selector directive. (#10435) * Add custom jasmine report in frontend unit tests (#10407) * Milestone 2 Fix - Improve spec from frontend unit tests (#10387) * Milestone 3 - Change directives to components and test hard components (Part 2) (#10364) * Milestone 3 - Change directives to components and test hard components (Part 1) (#10353) * Milestone 3 - Change directives to components and test easy components (Part 2) (#10335) * Revert "Milestone 3 - Change directives to components and test easy components (Part 2)" (#10329) * Milestone 3 - Change directives to components and test medium components (Part 3) (#10305) * Milestone 3 - Change directives to components and test medium components (Part 2) (#10273) * Milestone 3 - Change directives to components and test medium components (Part 1) (#10193) * Milestone 3 - Change directives to components and test easy components (Part 3) (#10168) * Milestone 3 - Change directives to components and test easy components (Part 2) (#10144) * Milestone 3 - Change directives to components and test easy components (Part 1) (#10143) * Milestone 1 Fix - Improve spec from frontend unit tests (#10111) Angular Migration * Fixes Part of #10700: Refactor state stats object factory (#10844) * Add workaround for stateful Angular 8 Services (#10714) * Fix Part of #10700: Refactor Object Factories (#10713) * Migrate Skill Backend Api Service to Angular (#10693) * Fix part of #8742: Upgrade AssetsBackendApiService, AudioPreloaderService, and ImagePreloaderService (#10671) * Fix part of #8472: Migrate FocusManagerService to Angular 8 (#10661) * Fix part of #8472: Migrate ExpressionEvaluatorService to Angular 8 (#10660) * Add helper function to provide all angular dependencies. (#10659) * Convert base-undo-redo service to a typescript class. (#10583) * Introduce a unit test utils file to contain commonly used patterns in unit testing. (#10427) * Fix #10083: Fixes rogue events, migrates recent events and completely eradicates $broadcast/$on pairs from the codebase (#10395) * Migrate topic-viewer-page.component.ts (#10392) * Fix part of #10083: Migrates events 'externalSave' and 'focusOn' to Angular and adds event for Math RTE editor (#10365) * Fix part of #10083: Removes events 'EVENT_NEW_CARD_AVAILABLE', 'refreshVersionHistory', 'playerStateChange' (#10343) * Fix part of #10083: Removes events 'topicsAndSkillsDashboardReinitialized' and 'undoRedoChangeApplied' (#10342) * Create an index file for all angular services to help with testing angularjs code without using ugs. (#10341) * Fix part of #10083 - Migrate onQuestionChange event (#10340) * Fix part of #10083: Removes events 'hintConsumed', 'initExplorationPage', 'helpCardAvailable' (#10299) * Fix part of #10083: Removes events 'activeLanguageChanged', 'activeContentIdChanged', 'showTranslationTabBusyModal' (#10298) * Fix part of #10083: Removes InitialSearchResultsLoaded and SchemaBasedFormShown (#10272) * Fix part of #10083 - Migrate CollectionLoad event (#10271) * Fix part of #10083: Removes refreshStateTranslation, solutionViewed and updateAnswerChoices (#10258) * Fix part of #10083: Removes OppiaFeedback, QuestionSessionCompleted and RatingUpdated (#10255) * Fix part of #10083: Removes events 'EVENT_SUBTOPIC_PAGE_LOADED', 'EVENT_NEW_CARD_OPENED', 'EVENT_QUESTION_SUMMARIES_INITIALIZED', 'EVENT_STORY_SUMMARIES_INITIALIZED' (#10253) * Fix part of #10083: Removes EnterEditorForTheFirstTime, EnterTranslationForTheFirstTime and CenterGraph (#10251) * Fix part of #10083: Removes unused events from the codebase (#10238) * Fix part of #10083: Removes events 'EVENT_EXPLORATION_PROPERTY_CHANGED', 'preferredLanguageCodesLoaded', 'saveOutcomeFeedbackDetails', 'saveOutcomeDestDetails', 'explorationPropertyChanged' (#10233) * Fix part of #10083: Removes events 'EVENT_VIEW_STORY_NODE_EDITOR', 'recalculateAvailableNodes', 'storyGraphUpdated' (#10224) * Fix part of #10083: Removes events EVENT_TOPIC_INITIALIZED & EVENT_TOPIC_REINITIALIZED from the codebase (#10222) * Fix part of #10083: Removes events 'EVENT_AUTOPLAY_AUDIO' and 'EVENT_ACTIVE_CARD_CHANGED [With coverage fix] (#10216) * Fix part of #10083: Removes events 'updateActiveStateIfInEditor', 'openEditorTutorial', 'openTranslationTutorial', 'openPostTutorialHelpPopover' (#10208) * Fix part of #10083: Removes events 'submittedSchemaBasedIntForm', 'submittedSchemaBasedFloatForm', submittedSchemaBasedUnicodeForm' (#10195) * Fix part of #10083: Eliminates events refreshGraph, refreshStatisticsTab, refreshSettingsTab, refreshTranslationTab [FIXES Frontend test issue] (#10151) * Fix #10055: Remove unneeded optional properties (#10093) Bug fixes * Fix #10935: Fix import of $scope (#10938) * Fix blocking bugs: Fixes to topic viewer page and exploration player page (#10783) * Fix part of #10772: Change 'expect model' to 'expected model' in ERROR_CATEGORY_FIELD_CHECK error messages. (#10773) * Fix #10596: Fix error in showing links to explorations in moderator page (#10692) * Fix #10375: Fixes typo in translation key and adds scope to showLicenseExplanationModal() in "I18N_SIGNUP_LICENSE_NOTE" (#10422) * Fix #10097: Change methods in suggestion_services.py to pass the suggestion id instead of passing the suggestion object. (#10300) * Fix #10256 (#10257) * Fix #10934: Fix admin page UI (#10940) * Revert "Fixes #10625 and Fixes #10696 Adds check to make sure opportunities are not undefined" (#10876) * Fix part of #10474: Enable Strict type check for following services - CsrfTokenService, DateTimeFormatService (#10851) * fix part of #10306 added async to createSkill (#10846) * Add a dummy strptime call before a deferred task is called (#10832) * Refactor core.domain.user_services to use the requests library (#10818) * Fix part of #10250: Temporarily transfer codeowners for contributor dashboard project. (#10787) * Fix part of #10306: added the async keyword in Email Dashboard data service (#10781) * Fix part of #10306: Added "async" keyword to files in profile_page directory (#10778) * Update terms to CC BY SA (#10761) * fix backend test failure in suggestion_services_test (#10760) * Fix #10629, #10532: Fixes all contributor dashboard page UI issues (#10751) * Localisation updates from https://translatewiki.net. (#10740) * Fixes part of #10415: Refactor opportunity validators (#10735) * Fix part of #10474: Cover BrowserCheckerService and BackgroundMaskService with strict checks (#10724) * Fix part of #10709: Temporarily remove Hudda from codeowners (#10710) * Fix part of #10474: increased the coverage of strict checks (#10706) * Fix #9245: Keep cursor type to default when hovering over hint-label (#10681) * Fix #10477: Access AppConstants using dot-notation (#10651) * Fix #10642, #10641 Question appearing twice and error if no difficulty is present. (#10648) * Fix part of #9827: Fix bug where python libraries with added support for other packages are handled incorrectly. (#10622) * Fixes part of #10619: Temporaily remove Nitish from codeowners (#10620) * Localisation updates from https://translatewiki.net. (#10618) * Fix #10593: Start redis server in scripts.start in prod environment. (#10614) * Fix #9578: Change Blog icon from Blogger to Medium (#10595) * Revert "Milestone 2 of ML pipeline migration" (#10578) * Fix #10472: Add myself back as codeowners (#10576) * Separate lighthouse accessibility checks into a new suite (#10571) * Remove unnecessary ids and update names for ids used for accessibility. (#10570) * Fixes Lint error in lighthouse_setup script (#10568) * Fix #10556: Added Math SVGs for demo explorations. (#10564) * Add link to code change guidelines in PR template (#10559) * Fixing position of the question help box on mobile. (#10554) * Fix part of #8668: document logger and messenger services (#10544) * Fix part of #9632: Introduce/fix jobs for regenerating the missing stats of an Exploration (#10541) * Fix #10522: Add initialization at page startup for PlatformFeatureService (#10505) * Fix part of #9827: Update the way backend python libraries are installed. (#10502) * Fix part of #10474: Cover more files with strict checks (#10485) * Adds a lint check to restrict the usage of bypassing angular's security mechanism, decode the URI encoded profile pictures and remove safe-pipe.ts (#10484) * Fix part of #10474, Fix #7434: Cover more files with strict checks and Makes all constants accessible in AppConstants using dot notation (#10476) * Milestone 3.4: Achieve Lighthouse scores of 100 in topic and skill dashboard, topic editor, topic_viewer, and thanks page (#10461) * Rewrite the coreEditorAndPlayerFeatures Suite (#10443) * Fix backend test error introduced in #10021 (#10401) * Fix #10045 : Remove the temporary math SVG generation functions (#10393) * Fix #10359: Removes waitForNavigation() from lighthouse puppeteer scripts (#10382) * Add test cases for PlatformParameter registry (#10368) * Fix #9379: Added validation for svg_filename field in math rich-text components. (#10366) * Fixes backend test flake in SuggestionSvgFilenameValidationOneOffJobTests (#10330) * Fix #10072: Adds dtslint tests to test that customization argument backend interfaces match the customization argument interfaces (#10326) * Fix #10324: Fixing space in navbar (#10325) * Removed inline styling (#10287) * Replace self for Android codeowners while on vacation (#10275) * Fixes flaky frontend tests (#10270) * Fix #10247: Set CodeMirror viewportMargin to 100 and fix e2e flake (#10248) * Fixes docstr in customization_args_util_test.py (#10244) * Fix #10235: Fixing Broken Frontend Tests Wiki Link (#10237) * Fix #10094: Only create exploration opportunity on topic/story publish. (#10212) Translations * Fix #10098: Translation tab fixes (#10870) * Reverses the AnswerGroup domain object migration to allow translations of rule inputs from PR10246 (#10516) * Adds frontend components to contribute interaction customization args translations in the translation tab of exploration editor (#10308) * Migrates AnswerGroup domain object to allow translations of rule inputs (#10246) Server Errors * Suppress AppEnginePlatformWarning warning (#10871) * Removes unwanted suggestion cron jobs (#10423) v3.0.3 (CANCELLED) ----------------------------- This release was cancelled due to the release preparation process running significantly past the deadline. v3.0.2 (01 Sep 2020) ------------------------ Learner/Creator Pages * The topic description breaks word randomly, fixing word break css. (#9789) * Revert "Milestone 1.2 and 1.3: SVG generation for new entities." (#9795) * Adds bezier curve tool to svg editor (#9927) * Revert #9744: Fixes #7690, #9632: When updating an exploration, commit all new models transactionally (#9948) * Added functions for generating math SVGs in exploration (#9985) * Milestone 2.3: Adds an on-screen keyboard for math interactions. (#9978) * Seperating the main story editor and the chapters list into different cards in the story editor. (#9965) * Adding reorder/drag-drop feature for subtopics in the topic editor. (#9955) * Making UI improvements to the topic and subtopic editor. (#9954) * Fix #9904: Add check and validation to fix concept card issues. (#9910) * Fix #9838, #9877, #9801 and #9819: Topic, subtopic and story viewer changes, trailing whitespace in RTE content and skill editor changes (#9907) * Improving the subtopic editor UI, preview tab and adding mobile view for subtopic editor and preview tab of subtopic editor. (#9901) * Fix #9837, #9834, #9833 Fixing merged skills persist, topic warning is cut-off, topic description typo. (#9896) * Adding reassign modal to add skills to subtopics globally, and made UI upgrades to topic editor. (#9895) * Added one-off job and temporary model for helping in image generation of Math explorations (#9889) * Milestone 2.2: Upgrade explorations that use the old math interaction. (#9863) * Adding the functionality to reorder skills in the subtopic editor, by dragging and dropping. (#9852) * Upgrading the preview tab UI for subtopic editor (#9829) * Milestone 2.1: Added Numeric Expression Input Interaction. (#9822) * Adding Functionality to get number of question assigned to skill with given ids. (#9816) * Increase ExplorationMigrationJobManager sharding to 64 and adds check to prevent processing of private explorations for DragAndDropSortInputInteractionOneOffJob (#9815) * Generate SVGs for math-expressions created for all the new entities (#9805) * Complete the classroom page and add a topic summary regeneration job (#9778) * Fix 9756, 9755 Fixing error in deleting skill (#9769) * Svg diagram editor rte bug fixes (#9763) * Add e2e tests to svg editor rte (#9745) * Fix part of #8015: skill-mastery-backend-api (#9430) * Fix #10264 and Adding support for adding prerequistie skills for chapter editor. (#10413) * Adding destination ids to story nodes (#10412) * Fix #10266, #10259 Fixing overflow bug and thumbnail preview improvements. (#10371) * Fix #10324: Fixing exploration breaks on new card when name gets too big. (#10346) * Add redirection with lowercase url_fragment (#10304) * Fix the failing of SuggestionSvgFilenameValidationOneOffJob job on the test-server (#10302) * Fix #10229: Fixes bugs related to the new math interactions. (#10269) * Add math RTE to VALID_RTE_COMPONENTS whitelist (#10226) * Added generation functions for math latex svgs suggestions (#10203) * Add link to Oppia avatar images (#10179) * Fix #10128 and Automate generation of SVGs in explorations (#10158) * Fix #10126: Making UI improvements to the editor pages. (#10137) * Fix #10037: Adds a customization arg for math interactions. (#10136) * Added audit jobs to find math latex strings without svgs in topics, skills, questions and stories (#10135) * Introduce url_fragment for stories and subtopics (#10134) * Add pie chart tool to svg editor (#10099) * Adding the mobile view for story editor and the chapter editor. (#10046) * New URL changes (#10041) * Upgrading the create chapter modal UI to include explorationID and thumbnail image. (#10040) * Changing the Create story modal to include description and thumbnail. (#10034) * Fix #10020: Making UI fixes for the topic editor page, skill editor page, subtopic editor page. (#10027) * Creating a seperate chapter editor, and adding the top blue navigation bar. (#10026) * Adding functionality to reorder chapters inside a story. (#10010) * Fixes #9970 - Implement new role "Learner" for profiles (#10007) * Improving the UI of the subtopic page, reassign modal, and the top blue navbar. (#10006) * Fix feedback reply issues on editor page (#10130) Contributor Pages * Fix #9638: Update "community dashboard" usages to "contributor dashboard" (#9983) * Fix #9637: Do not display empty translation texts for translation opportunities (#9981) * Fix #9640: Fixed the language dropdown not disappearing for the 'View Community Reviewers' section of admin page (#9949) * Fix #9902: Fixed the viewing community reviewers by role dropdown not populating, e2e tests added (#9941) * Fix #9639: prevents trying to access fields of a null pointer when rendering exploration opportunities (#9849) * Fix #9500: Load dummy new structures data from admin page now populates translation opportunities. (#9848) * Fix #9634: Reject question suggestions upon corresponding skill deletion. (#9839) * Fix #9676: update exception output to print useful stack traces in suggestion.py (#9750) * Fix #9509: Set empty user IDs for question suggestions to None instead of empty strings (#9511) * Fix #9635: Marks translation suggestions as rejected when an exploration is removed from a story. (#10024) * Fix #9636: Marks translation suggestions corresponding to a topic rejected whenever the topic is deleted. (#10022) Lesson analytics * Fix part of #7100: updated audit job for PlaythroughModel (#9546) * Gather improvements-related config into a controller/service API (#9998) * Introduce ExplorationImprovementsTaskRegistryService (#9881) * Add stronger typings to Exploration tasks (#9800) * Delete deprecated improvements tab logic (#9787) * Deprecate BarChart visualization (#10095) QA Team * Fix #9052: Disable E2E Test Sharding by Default (#9793) * Fix e2e test issue for preference suite (#9897) * Revert "Milestone 2 - Fully cover 10 controllers (Part 2) FIX (#9873)" (#9931) * Changing directives to components and test all to get 100% coverage (Part 3) (#9979) * Milestone 2 - Changing medium directives to components and test all to get 100% coverage (Part 2) (#9961) * Milestone 2 - Fully cover 10 controllers and fix timezone problem in unit tests (#9935) * Milestone 2 - Changing medium directives to components and test all to get 100% coverage (Part 1) (#9934) * FIx #9052: Add Portserver to E2E Tests (#9921) * Milestone 2 - Changing directives to components and test all to get 100% coverage (Part 3) (#9913) * Milestone 2 - Changing directives to components and test all to get 100% coverage (Part 4) (#9909) * Move Flaky CircleCI E2E Tests to TravisCI (#9892) * Milestone 2 - Fully cover 10 controllers (Part 2) FIX (#9873) * Revert "Milestone 2 - Fully cover 10 controllers (Part 2)" (#9866) * Milestone 2 - Changing directives to components and test all to get 100% coverage (Part 2) (#9861) * Milestone 2 - Changing directives to components and test all to get 100% coverage (Part 1) (#9850) * Milestone 2 - Fully cover 1 controller (Part 4) (#9832) * Fix #9686: Fixing coverage of question creation service. (#9788) * Milestone 2 - Fully cover 5 controllers (Part 3) (#9783) * Milestone 2 - Fully cover 10 controllers (Part 2) (#9752) * Milestone 2 - Fully cover 8 controllers (Part 1) (#9741) * Fix #10106: Fully cover editor-navigation component (#10169) * Change $scope for ctrl in test-interaction-panel (#10117) * Milestone 2 - Test hard directives to get 100% coverage (Part 4) (#10103) * Milestone 2 - Changing hard directives to components and test it to get 100% coverage (Part 3) (#10080) * Fixing general e2e flakes for topics and skills dashboard. (#10075) * Milestone 2 - Changing medium directives to components and test all to get 100% coverage (Part 2) - FIX (#10073) * Milestone 2 - Changing hard directive to component and test it to get 100% coverage (Part 2) (#10057) * Fix assign skill e2e flake (#10029) * Milestone 2 - Changing hard directive to component and test it to get 100% coverage (Part 1) (#10023) * Revert "Removes caching from Circle CI config" (#10198) * Revert "Milestone 2 - Changing medium directives to components and test all to get 100% coverage (Part 2)" (#10058) Server Errors * Adds empty callback to prevent 'unhandled rejection' errors for canceled audio file requests (#10336) Translations * Localisation updates from https://translatewiki.net. (#9976) * Migrates exploration state to enable i18n translations of interactions (#9919) * Localisation updates from https://translatewiki.net. (#9869) * Disallow bundling of audio assets when downloading an exploration (#9814) * Localisation updates from https://translatewiki.net. (#9721) * Implement translation editor copy feature (#9582) * Fix #10309: Adds audio-needs-update modal template (#10425) * Migrates CaseSensitiveEquals RuleSpecs to Equals (#10189) * Fixes Issue 10170: Follow-up PR on standing review comments for PR9919 (#10183) * Localisation updates from https://translatewiki.net. (#10199) Miscellaneous * Temporary transfer of CODEOWNER files from brianrodri@ to seanlip@ until 2020-07-27 (#9885) * Revert "Temporary transfer of CODEOWNER files from brianrodri@ to seanlip@ until 2020-07-27" (#9886) * Milestone 2.2: Achieve scores of 100% in lighthouse audits on the Learner_Dashboard, Library, Maintenance, Moderator pages. (#9899) * Milestone 2.1: Achieve scores of 100% in lighthouse audits on the Error, Exploration_Editor, Exploration_Player, Get_Started, Landing pages (#9898) * Milestone 2.3: Achieve scores of 100% in lighthouse audits on the Notification_dashboard, Privacy-policy, and Practice_session pages (#9950) * Added blanket codeowners for broad directories (#9977) * Fix part of #8015: Return a domain object in backend api services (#9883) * Fix Lighthouse best practices (#9858) * Implement part of #9827: Migrate Google App Engine Images Functionality to use Python Pillow (#9828) * Fix part of #8015: Refactor backend api services to return domain objects (#9798) * Create Login Puppeteer Script and connect to lighthouserc.json (#9692) * Fix #9596: Thanks Page Overlap (#9599) * Make the svg-filename consistent with the frontend (#10404) * Generalizes exploration migration audit jobs for testing exploration/state migrations (#10186) * Rename all .scripts.ts files to .import.ts (#10132) * Fix 9996 and Fix part of #9982: Refactor backend api services and remove remaining any types (#10054) * Milestone 2.5: All navigation keyboard shortcuts and their e2e test are added. (#10036) * Fix part of #9827: Migrate third party installation out of appengine_config into main.py (#10035) * Fix #9348: Remove I from interfaces and types (#10017) * Revert part of #10035: fix third party migration bug on production server (#10146) * Add @kevintab95 as e2e codeowner (#10096) * Reclaim brianrodri@'s CODEOWNERS (#10078) * Adding Showtim3 to codeowners for some of the editor pages. (#10077) * Fix Part of #8668: Documenting Three Files with JsDocs (#10009) * Milestone 2.4: All action keyboard shortcuts for the Library Page and Exploration Player and their e2e test are added. (#10002) Data handling * Implement storage model for dynamic feature gating (#9876) * Implement part of #9827: Migrate Google App Engine Mail Functionality to use Mailgun (#9867) * Implement domain objects for dynamic feature gating (#9946) * Fix last_updated for commit log models (#9811) * Remove user ID migration code (#9810) * Wipeout 8.1: Implement wipeout for the story models (#9760) * Fix part of #5914: Takeout Render Zip File (#9714) * Fixes issues in prod validation jobs (#9495) * Fix commit log models on test server (#10291) * Fix #9974 and part of #10069: Migration jobs and domain methods to populate UserAuthModel. (#10123) * Fix #9973: Change user settings model to support profiles (#10105) * Fix #10051: Rename domain functions for full user (#10059) * Fix #9972 by implementing the UserAuthModel (#10004) Developer UX * Fix part of #8668: Document the service file autoplayed-videos.service.ts using jsdoc (#9888) * Used IAstroidChecker for DivisionOperatorChecker and SingleSpaceAfterYieldChecker (#9991) * Fix #7165: Remove remaining any types and move any check to eslint (#9990) * Fix part of #9766: Inherited from a new class named LinterTestBase (#9959) * Change action name for ACTION_MANAGE_PROFILE (#9958) * Upgrade libs (#9953) * Fix #9945: Fixed automatic chrome driver version retrieval for Mac OS. (#9947) * Fix part of #8423: Added check to ensure that pylint pragmas are used to disable any rule for a single line (#9922) * Fix part of #8423: Added lint check for args-name for a non-keyword argument (#9915) * Setup Lighthouse CI (#9906) * Temporary transfer of CODEOWNERS files from brianrodri@ to seanlip@ (#9893) * Revert "Fix #9052: Disable E2E Test Sharding by Default" (#9891) * Added '--disable_host_checking' flag to startup script (#9884) * Fix #9874: Fixed pycodestyle error (#9882) * Fixes issues with e2e script (#9880) * Fix part of #8423: Added lint check to forbid usage of assertRaises and to use assertRaisesRegexp instead (#9860) * Upgrade version of wavesurfer and use type defs from DefinitelyTyped (#9831) * Fix part of #8423: Add lint check for unused imports (#9826) * Routine upgrade of libs (#9823) * Adds server_log_level arg for run_e2e_tests script (#9817) * Fix #9688: Set constants to default values at exit (#9761) * Fix part of #8423: New linter check to enforce snake_case (#9659) * Transfer more code owner files (#9656) * Removes caching from Circle CI config (#10181) * Perform routine upgrades (#10160) * Fix part of #8423: Added lint check to check for correctly formated typeinfo. (#10107) * Revert "Temporary codeowner replacement" (#10091) * Add a lint check for ts-ignore (#10088) * Fix embedding flake (#10086) * Converted docstring checks to IAstroidChecker and merged all docstring checks. (#10084) * Fix part of #10064: Revert import github changes (#10074) * Fixed pylint pragma check (#10050) * Fix part of #8423: Added a lint check to ensure a newline after bracket (#10048) * Fix lint errors on develop (#10043) * Temporary codeowner replacement (#10032) * Fix undefined time issue in run_e2e_tests script (#10011) * Adds a lint check to restrict the usage of bypassing angular's security mechanism, decode the URI encoded profile pictures and remove safe-pipe.ts (#10484) Speed improvement * Lighthouse: Removing tests requiring admin authentication (#10164) * Use cache-loader in webpack (#10155) * Move scripts imports in header to webpack (#10141) Release team * Make release process more efficient (#9703) * Remove release mail message template (#10101) * Fix pygithub version in release scripts (#10079) Bug fixes * Fixes profile page rendering issue (#9916) * Fix backend tests (#9843) * Fix #4662: Use SortedTiles visualization for MultipleChoiceInput (#9780) * Fixes #7690, #9632: When updating an exploration, commit all new models transactionally (#9744) * Fix #9586: commit dates are now displayed in the exploration history tab. (#9665) * Simplify topic viewer controller to fix failure with 42 skills in prod (#10239) * Adds separate route entries for story, revision, practice (#10220) * Fix #8124: Broken symlink OS errors in `pre_commit_hook` and `pre_push_hook` (#10025) Angular Migration * Revert "Fix part of #9749: Migrates some Topic Viewer Page Directives (PracticeTab, TopicViewerNavbarBreadcrumb, StoriesList, SubtopicsList) to Angular" (#9890) * Revert #9841: Migrates Topic Summary Tile to Angular (#9956) * Fix part of #8472: Upgrade StateTopAnswersStatsService to Angular 8 (#9984) * Fix part of #9749: Migrates Maintenance Page and Topic Landing Page to Angular (#9980) * Migrates topic-viewer-navbar-breadcrumb, subtopics-list, topic-viewer-page, practice-tab, topic-viewer-stories-list to angular components and introduces angular2+ material css. (#9957) * Fix part of #9749: Migrates Error Page to Angular (#9933) * Fix part of #8015 and Fix #9914: Refactor backend-api services to return domain objects. (#9917) * Fix part of #9749: Migrates Teach Page to Angular (#9908) * Fix part of #9749: Upgrades thank-page component to Angular component (#9905) * Adds the i18n language service code to notify angular for translation language code change wherever $translate.use is used (#9870) * Fix part of #7165: Remove some more any types (#9854) * Move translate service "initialization" to oppia root so that it is a done once globally instead of doing it in all modules. (#9842) * Fix part of #9749: Migrates Topic Summary Tile to Angular (#9841) * Fix part of #9749: Migrates some directives in collection-player-page to Angular components (collection-node-list, collection-footer) (#9804) * Fix part of #9749: Migrates some Topic Viewer Page Directives (PracticeTab, TopicViewerNavbarBreadcrumb, StoriesList, SubtopicsList) to Angular (#9790) * Introduces UIB modal migration, Flex Layout Classes, and migrates sharing links directive - attempt 2 (#9784) * Fix part of #9749: Migrates LazyLoading, LoadingDots, AttributionGuide directives to Angular (#9773) * Fix part of #9749: Migrates Skill Mastery Viewer Directive to Angular (#9759) * Fix part of #9749: Migrates Social Buttons Directive to Angular (#9757) * Add angular material (2+) (#9730) * Fix part of #10083: Removes events 'initializeTranslation' and 'onInteractionIdChanged' (#10165) * Fix part of #10083: Removes events 'EVENT_AUTOPLAY_AUDIO' and 'EVENT_ACTIVE_CARD_CHANGED' (#10163) * Fix part of #10083: Removes events 'EVENTS_COLLECTION_INITIALIZED' and 'EVENTS_COLLECTION_REINITIALIZED' (#10127) * Fix part of #10083: Removes events 'answerGroupsChanged' and 'initializeAnswerGroups' (#10100) * Fix part of #10083 - Remove unmigratable broadcast events EVENT_STORY_INITIALIZED & EVENT_STORY_REINITIALIZED (#10070) * Fix part of #9749: Migrates profile-page-navbar-breadcrumb and subtopic-viewer-navbar-breadcrumb (With Testing Videos) (#10019) * Fix part of #9749: Migrates Collection History, Statistics, Settings Tab to Angular (#10003) * Revert "Fix part of #10083: Removes events 'EVENT_AUTOPLAY_AUDIO' and 'EVENT_ACTIVE_CARD_CHANGED'" (#10215) * Revert "Fix part of #10083: Eliminates events refreshGraph, refreshStatisticsTab, refreshSettingsTab, refreshTranslationTab" (#10148) * Fix part of #10083: Removes events 'searchBarLoaded', 'totalQuestionsReceived', 'stateEditorInitialized' & 'stateEditorDirectiveInitialized' (#10116) * Fix part of #10083: Eliminates events refreshGraph, refreshStatisticsTab, refreshSettingsTab, refreshTranslationTab (#10112) * Fix part of #9749: Migrates profile-link-image, profile-link-text directives to Angular and implements Safe Pipe (#10030) v3.0.1 (21 Jul 2020) ------------------------ Contributor Pages * Fix #6672: Translation prioritization (#9443) QA Team * Fix part of #9740: Remove "any" from spec files and replace it by @ts-ignore (#9748) * Remove flaky test block from voicever player suite (#9739) * Fix frontend errors related to spying window inner width (#9701) * Revert flaky frontend test (#9700) * Fix the frontend flake (#9693) * Milestone 1 - Change maintenance-page controller to component (#9662) * Milestone 1 - Separate remaining inline AngularJS modal controllers into new files and fully covered them (#9651) * Changing topic-and-skills-dashboard-page controller to component and test it until 100% coverage (#9650) * Milestone 1 - Testing exploration-editor-page to get 100% coverage (part 6) (#9646) * Milestone 1 - Testing components to get 100% coverage (part 5) (#9623) * Milestone 1 - Testing components to get 100% coverage (part 4) (#9620) * Milestone 1 - Fully cover 10 inline controllers (part 4) (#9601) * Milestone 1 - Fully cover 10 inline controllers (part 3) (#9583) * Milestone 1 - Fully cover 10 inline controllers (part 2) (#9563) * Milestone 1 - Fully cover 10 inline controllers (#9554) * Milestone 1 - Testing components/controllers to get 100% coverage (part 3) (#9529) * Fix part of #6240: Adding e2e tests for playing audio translations (2nd PR) (#9518) * Milestone 1 - Testing components to get 100% coverage (part 2) (#9508) * Fix #9409: Fix e2e flakes (#9437) * Milestone 1 - Testing components to get 100% coverage (#9422) * Fix part of #4057: Test Coverage for StatesObjectFactory.ts (#9655) * Fix #9492 Flaky frontend test (#9506) Lesson analytics * Introduce controller layer for improvements tasks (#9645) * Introduce ExplorationTask, IneffectiveFeedbackLoopTask, SuccessiveIncorrectAnswersTask domain objects (#9618) * Standardize structure of visualization directives (#9605) * Introduce NeedsGuidingResponsesTask domain object (#9595) * Introduce services layer for exploration improvement tasks (#9575) * Introduce HighBounceRateTask domain object (#9515) * Refactor PlaythroughService and increase coverage to 100% (#9497) * Fix #3947: Clean-up Statistics tab with ClickHexbin visualization as sample introduction (#9622) Translations * Add french as supported site language (#9484) Miscellaneous * Milestone 1.5: Score 100% in Chrome audits on Donate, Email Dashboard, And Email Dashboard results Webpages (#9705) * Milestone 1.3 and Milestone 1.4: Score 100% in Chrome audits on Collection-Player, Contact, Community-Dashboard, Creator-Dashboard, and Delete-Account Pages (#9613) * Fix part of #7450: private access in jobs test file (#9543) * Fix #6271: update_interaction_solution is accepting object instead of dict (#9503) * Fix #7450: fixed private method calls for the tests in draft_upgrade_services_test.py (#9491) * Milestone 1.2: Score 100% in Chrome audits Admin, Classroom, About, Collection_Editor pages (#9490) * URL Changes for SEO (Static URL changes) (#9460) * Fix part of #8038: Remove http requests from the files that are not backend api services (#9433) * Fix #9711: Fixed the admin page job buttons issue (#9712) * Localisation updates from https://translatewiki.net. (#9615) Release team * Remove extra spaces in changelog (#9724) * Update authors and changelog for v3.0.0 (#9723) Angular Migration * Fix part of #7165: Remove some more any types (#9754) * Fix part of #7165: Refactor interaction type defs and some more remove any types (#9742) * Fix part of #7165: Remove some more any types (#9677) * Intoduce UIB modal migration, Flex Layout Classes, and migrates sharing links directive (#9673) * Fix part of #7165: Remove some more any types (#9663) * Fix #7176: Remove rest of any types under the issue 7176 (#9596) * Add oppia-root and oppia-angular-root to all modules (#9576) * Fix part of #7176: Remove some more any types (#9544) * Fix part of #8472: Migrate concept-card-backend-api-service to Angular 8 (#9505) * Hybrid config (#9479) * Fix part of #7176: Add types for Customization Args (#9463) * Change subjects to event emitters (#9423) * Change controllers to components (Part 2) (#9335) Speed improvement * Fix part of #8016: Added a separate backend api service for profile-page.controller.ts (#9387) * Fix #8499: Serve Images in WebP (#9206) Data handling * Remove username from commit log models (#9329) Bug fixes * Fix #9808: Add component.html to build to fix topic editor in prod_env (#9857) * Fix #9791: Fixed math editor preview in old math interaction. (#9806) * Fix undefined values in topic manager dropdown (#9792) * Fix #6893: Make the suggestion validation less stringent to match validation of exploration categories and modify the suggestion migration job. (#9732) * Fix images not showing in subtopic viewer in prod and local storage handling in thumbnail editor (#9690) * Fix #9557, #9559, #9540, #9558, #9567 - Fixed on window resize function, added migration to get_multi_skills and other UI changes (#9591) * Fix #9565: Pass .timetuple() to time.mktime() in utils.get_time_in_millisecs (#9560) Learner/Creator Pages * Fix bugs in the create new subtopic modal of missing validations. (#9943) * Fix #9904: Add check and validation to fix concept card issues. (#9910) * Fix #9838, #9877, #9801 and #9819: Topic, subtopic and story viewer changes, trailing whitespace in RTE content and skill editor changes (#9907) * Fix #9864: Convert schema-based-float-editor input from string to number type (#9903) * Fix #9837, #9834, #9833 Fixing merged skills persist, topic warning is cut-off, topic description typo. (#9896) * Fix #9818, #9772, #9786 (#9830) * Fix #9777: Overriding guppy osk styles to fix tooltip position. (#9785) * Fix no skills text bug (#9776) * Minor improvements to topics and skills dashboard. (#9774) * Fix 9756, 9755 Fixing error in deleting skill (#9769) * Fix #9709: Show question images in question player (#9768) * Improve pagination and making right box scrollable (#9758) * Remove commas from input for NumericInput interactions (#9747) * Improving the Skills dashboard UI and improving the topic preview button in topic editor. (#9743) * Fix #9722: Fix skill modal opening twice bug, Adding reordering functionality and Unassigned topic filter (#9733) * Add mobile view for Skill editor. (#9719) * Fix #9587, Added mobile view for topics dashboard, skills dashboard and topic editor. (#9706) * Milestone 1.2 and 1.3: SVG generation for new entities. (#9678) * Upgrade the Skill Editor UI (#9672) * Extend math expression parser. (#9658) * Fix #9602 Add touch support to fabric js editor (#9657) * Milestone 1.6 and 1.7: Add Math Equation Input Interaction. (#9649) * Fix drag drop interaction bug (#9644) * Allow images while creating questions. (#9617) * New UI for the topic editor. (#9603) * Add svg editor using fabric js and replace literallyCanvas (#9598) * Add a one-off job for math expression input validation. (#9597) * Milestone 1.3 and 1.4: Add Algebraic Expression Input Interaction (#9553) * Upgrading the Skills dashboard UI (#9525) * Fix #9354 and other critical bugs (#9520) * Add validation jobs for math expressions in Explorations and draft change lists. (#9517) * Show rubrics info in the question editor and bug fixes (#9510) * Fix #9466: Adding thumbnail and fixing bugs (#9474) * Redesign story viewer followup (#9473) * Milestone 1.2.2: Add position-of-terms and math editor directives. (#9400) * Milestone 1.1: Add the new Math schema and migrations. (#9390) * Fix #9322: Redesign landing page (#9366) * Milestone 1.2.1: Add math objects with validators. (#9336) * Add functionality to filter skills in the skill selector, based on subtopics and topics. (#9280) * Fix part of #3446: add SetInput validations (#9439) Developer experience * Revert "Intoduces UIB modal migration, Flex Layout Classes, and migrates sharing links directive" (#9779) * Chromedriver Upgrade (#9775) * Update github actions python and checkout library (#9767) * Fix Action tasks stdout encoding (#9737) * Update audio project codeowners (#9735) * Remove issue assigned check from github actions (#9734) * Fix #9697: Separate frontend and backend tests (#9699) * Revert "Add live output for frontend tests" (#9698) * Fix #9691: Increase build time for nav-and-misc e2e test (#9696) * Fix Travis email notifications to always notify on failures. (#9694) * Suppress 40k lines of ENOSPC output in frontend tests. Build GitHub Actions only on pushes/PRs to develop or release branches. (#9689) * Fix part of #8423: Added lint check to ensure that there is one blank newline below each class docstring. (#9687) * Container reorganization (#9684) * Remove lint checks and backend tests from circle CI (#9671) * Setup oppiabot workflow (#9669) * Introduce GitHub actions to backend and linter (#9668) * Fix #8165: implement 4 space indentation and 8 space indentation for docstrings (#9654) * Add 'merge to target' step for all circle ci tests (#9614) * Fix part of #8423: Added check to ensure if the instances of HtmlWebpackPlugin in webpack.common.config.ts contains all needed keys (#9590) * Fix for #9458: Typescript linter fails on relative import (#9580) * Assign @srijanreddy98 ownership of angular-migration files to co-own those files with @basnalnitish (#9577) * Fix part of #8423: Added check for proper comment style for JS files (#9574) * Fix part of #8423: Added check to ensure that all TODO messages start with a capital letter (#9573) * Skip setup in frontend tests and e2e tests (#9572) * Fix CircleCI setup git config (#9535) * CI Test Organization (#9523) * Fix part of #8423: Add lint check for alphabetized list in CSS (#9522) * Update travis and circleci to disable tests for release changelog PRs (#9516) * Fix part of #8423: Added lint check to ensure that there are valid spaces and newlines (#9507) * Fix #8423: Check that functions with test_only in their names are only used in _test.py files. (#9504) * Transfer codeowners (#9501) * Disallow using eslint disable statement for camelcase (#9482) * Added newline check at end of file (#9459) * Fix part of #8423: Added check to ensure that all lines in skip_files in app.yaml reference valid files in the repository (#9451) * Lint output is cleaner and less verbose. (#9438) * Fix #8668: added jsdoc to improve documentation and Fix #7165: adds type clarity (#9421) * Fix #7590: Python, HTML, CSS, Js/Ts lint tests (#8947) * Improve run frontend tests (fixed encoding issue) (#9725) * Fix #9683: Add Constants File for Protractor (#9720) * Add live output for frontend tests (#9621) v3.0.0 (29 Jun 2020) ------------------------ Contributor Pages * Fix #9417: No difficulty level to select for questions while creating question suggestion (#9436) * Fix #9375: Adds custom entity context for the translations in community dashboard (#9386) Lesson analytics * Introduce SortedTiles visualization for statistics (#9481) * Introduce core.storage.improvements models (#9475) * Cache the results from StateInteractionStatsService.computeStats (#9414) * Update ExplorationMissingStatsAudit to read directly from raw models (#9384) * Remove playthroughs from the statistics tab (#9383) * Empty-out and simplify logic of the improvements tab (#9215) Learner/Creator Pages * Fix drag drop interaction bug (#9644) * Fix #9526 and #9527: Add protip about using dedicated mic for best results and fixes timer issue (#9604) * Fix #9354 and other critical bugs (#9520) * Added validation jobs for math expressions in Explorations and draft change lists. (#9517) * Show rubrics info in the question editor and bug fixes (#9510) * Fix #9466: Adding thumbnail and fixing bugs (#9474) * Hide practice tab when questions are fewer than 5 (#9470) * Fix issues in the story viewer and chapter player (#9469) * Milestone-1.3 and 1.4 add saving and editing functionality to svg editor (#9445) * Redesign subtopic viewer (#9397) * Redesign story viewer (#9392) * Redesign topic viewer (#9362) * Allow saving of stories with explorations containing skillreview RTE and DragAndDropSortInput interaction (#9360) * Milestone 1 part 1 Initializing literallyCanvas and adding the required backend changes (#9352) * Fix #9340: Issue while linking another skill to a question (#9341) * Fixes some question editor bugs (#9337) * Topic dashboard ui (#9333) * Fix #9309: Added conditional while rendering the classroom page. (#9312) * Allow adding images in the create skill modal (#9262) * Fix # 9235 : Moves the "Prerequisite Skills" section to above Review Material (#9241) * Fix #9212 and #9227: Replaces HtmlParams with FormData API; Adds check for prepublish validate to enable/disable the story publish button; Explicitly sets the mimetype while committing files to GCS (#9233) * Fix #9209: Add css to fix overflow issues and adds logic to duplicate SVG instead of compressing it (#9216) * Add an icon for merge skill (#9213) * Topic Summary description migration (#9192) * Fixes #5436 Randomize pretest questions (#9061) Speed improvement * Milestone 1.1: Creation of .lighthouserc.js file and scripts/lighthouse_checks.py file (#9295) * Fix #7493: Remove jinja from base.py (#9294) * Milestone 1.3.2: Import WaveSurfer using yarn and add typedefs for it (#9279) * Fix part of #8833: Makes all event listeners passive by default (#9178) Data handling * Fix part of #5914: Complete Takeout Frontend (#9424) * Fix part of #5914: Add JSON rendering testing to Takeout (#9301) * Fixed user updates. (#9252) * Added update username functionality in the admin tab. (#9191) * Wipeout 3.10: Add new field to rights models (#8505) QA Team * Fix #9442: Delete Un-Migrated E2E Test Code (#9444) * Fix #9372: Mocked datetime to fix admin test flakyness. (#9394) * Fix part of #4057: Tests for editable-exploration-backend-api.service.ts, RecordedVoiceoversObjectFactory.ts, and topic-update.service.ts (#9380) * Fix #8924: Separate inline AngularJS modal controllers into new files (2nd) (#9376) * Extend ExplorationMissingStatsAudit to check for state stats (#9361) * Fix #8924 Separate inline AngularJS modal controllers into new files (1st) (#9344) * Introduce ExplorationMissingStatsAudit One Off Job (#9306) * Fix #9132: Transition E2E Tests to Async-Await (#9267) * Fix #8758: add waitFor statement in getResponseEditor method (#9229) * Increase coverage for autosave-info-modals.service.ts (#9174) * Fix part of #8924: Create a generic modal and replace it and inherit it in common and similar inline modals from $uibModal.open controller property (#9167) * Fix part of #4057: Added a test file for exploration-param-specs.service.ts (#9115) Angular Migration * Adds all Angular services to UpgradedServices (#9416) * Add i18n translation service for angular code! (#9398) * Fix part of #8015: return CollectionRights rather than dict (#9389) * Fix part of #7165: Add WARNING_TYPE to interaction validation spec files (#9371) * Fix part of #7176: Remove any from some object factories - III (#9370) * Fix part of #7176: Remove any from RuleObjectFactory and introduce TypeChangeService (#9365) * Fix part of #7176: Remove any types from some object factories - II (#9349) * Fix part of #8472: Upgrades CurrentInteractionService to Angular (#9347) * Fix part of #7176: Add type definitions in some object factories (#9345) * Fix part of #8472: Upgrades ExplorationRecommendationsService to Angular (#9339) * Fix part of #8472: Upgrades UserExplorationPermissionsService to Angular (#9338) * Migrates Background Banner directive to Angular Component (#9330) * Fix part of #8472: Upgrade StateInteractionStatsService to Angular 8 (#9321) * Change controllers to components (Part 1) (#9317) * Fix part of #8742: Upgrade AnswerClassificationService to Angular 8 (#9313) * Milestone 1.4.3: Add type definitions for __fixtures__ (#9307) * Fix #8472: Collection creation service upgrade (#9303) * Fix part of #8472: Upgrades StatsReportingService and MessengerService to Angular (#9299) * Milestone 1.4.2: Split ICustomScope to respective directives (#9298) * Fix part of #8472: Upgrades PlaythroughService to Angular (#9290) * Fix part of #8472: Upgrades PredictionAlgorithmRegistryService to Angular 8 (#9289) * Migrates donate-page directive to angular component (#9202) * Refactor warning-loader in two files and create a loader service (#9156) * Removing all nonmigratable instances of $scope and $rootScope from skill-editor module (#9136) * Fix part of #8472: Migration (topics-and-skills-dashboard-backend-api.service.ts) AngularJs to Angular 8 (#8856) Developer experience * Routine upgrade of libs (#9489) * Change codeownership from Mariana to Nithesh (#9477) * Fix voicever upload e2e flake errors (#9403) * Update to LaCE CODEOWNERS (#9399) * Add QA Team Codeowner for all E2E Files (#9396) * Fix #9325: Broaden the types of classes run by scripts.run_backend_tests and addition of tests for pylint_extensions (#9393) * Removes codeowner for community dashboard project (#9369) * Routine upgrade of libs (#9359) * Transfer codeowners (#9355) * Fix #9331: Added typescript checks to pre push hook (#9334) * Adding @marianazangrossi as codeowner from all frontend spec files. (#9323) * Group library and collection e2e suites on circleCI (#9315) * Milestone 1.5: Add a check for checking the version of third party type defs (#9310) * Refactoring whitelist to blacklist in frontend coverage script (#9304) * Install third-party libs before running backend tests. (#9296) * Milestone 1.4.1: Remove some any types from typings directory (#9293) * Users suites circleci migration (#9284) * Remove tests from Github Actions (#9283) * Milestone 1.3.1: Type definitions for guppy, removed blobbuilder (#9278) * Minor changes to "throw" regex so it doesn't show false positives when a throw is used inside a string (#9277) * Exception handling is used to handle unexpected errors (#9273) * Fix #9264: Fix node reference in typescript checks (#9270) * Milestone 1.2: Type definitions for midi, skulpt, math expressions (#9266) * Milestone 1.1: Add a check restricting defining type as any (#9257) * Fixes part of #8668: All the Frontend services should be documented with jsdoc (#9250) * Upgrade frontend and backend libraries (#9242) * Use unminified version of angular in devMode (#9207) * Replace {{ }} with <[ ]> (#9201) * Fix part of #8668: Add documentation to utils.service.ts (#9197) * Implemented locking mechanism for summary_messages (#9195) * Fix part of #4057: Added a test file for exploration-init-state-name.service.spec.ts, exploration-language-code.service.spec.ts, exploration-objective.service.spec.ts, exploration-title.service.spec.ts (#9185) * Fix part of #7427: Added missing docstring to core/domain/story_domai… (#9184) * Moved codeowners for scripts and linter files. (#9182) * Upgrade third party libraries (#9175) Bug fixes * Fix images not showing in subtopic viewer in prod and local storage handling in thumbnail editor (#9690) * Fix #9557, #9559, #9540, #9558, #9567 - Fixed on window resize function, added migration to get_multi_skills and other UI changes (#9591) * Mock the `modify_constants` in build tests (#9488) * Fix incorrect escaping in backend. (#9467) * Fix #9372: Fix flaky backend test in admin_test.py (#9441) * Fix #9382: fix for bug default language on Oppia is not accurate on reload (#9420) * Fix #9228 : Fixing subtopic card overflow (#9232) * Fix #9208, #9211, #9217, #9234 and #9236: Open new tab in firefox without errors, restrict misconception name to 100 chars and disable solicit answer details in question editor (#9218) * Fix #8545: Adding realtime errors for NumericInput (#9152) * Fix #9492 Flaky frontend test (#9506) * Revert "Increase coverage for autosave-info-modals.service.ts" (#9274) Server Errors * Fix #8464: Wraps exceptions as an Error object if it does not have a message property (#9343) Release team * Fix issues in release scripts (#9472) * Fix maintenance mode (#9462) * Update release credits structure and changelog PR creation (#9219) Translations * Fix issue of showing new tips section and allowing audio recording to the guest users in translation tab (#9626) * Routine update of translations. (#9269) * Fix #9138: Adds Albanian language in the site content and audio language list (#9260) Miscellaneous * Migrate to mailchimp (#9412) * Fix part of #6271: Modify add_misconception to accept object instead of dict (#9351) * Milestone 1.1: Added nerdamer library with typedefs. (#9305) * Disable community dashboard (#9534) * Bump react-dom from 16.1.1 to 16.1.2 (#9406) v2.9.3 (20 May 2020) ------------------------ Contributor Pages * Fix #9018: Capitalizes the tab name in community dashboard page (#9089) Bug fixes * Fix question versioning (#9318) * Fix #9249: Add error message instead of warning modal in skill editor (#9259) * Fix #9224: fix overflow of RTE in question editor (#9243) * Fix #9221: Fixed the position of pencil-icon used to open review-material editor. (#9240) * Fix #9208, #9211, #9217, #9234 and #9236: Open new tab in firefox without errors, restrict misconception name to 100 chars and disable solicit answer details in question editor (#9218) * Fix #9040: Preferences page width in mobile devices (#9055) Server Errors * Fix #8456: Fix throwing of errors (#9193) Miscellaneous * Update meta-tags to align with better SEO standards (#9187) * Introduce ProdValidationAuditOneOffJobMetaClass (#9183) * Fix #9007: Add a second function argument to avoid the warning message (#9160) * Fix part of #9146: Combine methods in LearnerAnswerDetailsBackendApiService (#9151) * URL changes for SEO (#9109) * Remove JQuery css manipulation from controller and use ng-class in template instead (#9104) * Fix part of #8015: search-explorations-backend-api now returns an ExplorationMetadata object instead of a dictionary (#9090) * Fix part of #7450 use update exploration instead of save_exploration (#9030) * Fix part of #8015: editable.question.backend.api.service.ts now returns a domain object … (#8986) Release team * Update release scripts to address concerns around clarity of instructions (#9177) * Add check for version length (#9147) * Add check for invalid emails (#9130) * Fix memcache url (#9080) * Fix memcache flush issue (#9039) * Move all wrap up steps to script (#8974) Learner/Creator Pages * Fix #9309: Added conditional while rendering the classroom page. (#9312) * Fix #9288: Prevent deletion of skills assigned to topics; Add a job to clean-up deleted skills that are attached to topics; (#9291) * Fixes bugs in the topic editor (#9265) * Fix #9212 and #9227: Replaces HtmlParams with FormData API; Adds check for prepublish validate to enable/disable the story publish button; Explicitly sets the mimetype while committing files to GCS (#9233) * Fix #9209: Add css to fix overflow issues and adds logic to duplicate SVG instead of compressing it (#9216) * Fix # 7809 : Swapped buttons to ensure uniformity (#9196) * Fix whitespace in the rte in chapter outline (#9190) * Add chapter description (#9157) * Add multiple explanations for each difficulty in a skill rubric (#9148) * Fix #9134: Fixed bugs with the Drag-and-drop interaction (#9141) * Fix #9121: Address review comments in #9087 (#9126) * Fix #3369: Resize editor to avoid overflowing when creator uses longer responses (#9122) * Fix UI and UX issues in new structures editors and dashboard (#9110) * Thumbnail functionality for topic, subtopic, story and chapter (#9095) * Username length audit job (#9093) * Changed character limits for the new editors and allowed saving of invalid exps in draft stories (#9087) * Fixes #7448: Adds a filter option to filter skills. (#9082) * Replace ChangesInHumanReadableForm service to directive. (#9078) * Fix #8951: Fixed solution preview uniqueness indicator. (#9067) * Add an audit job to find all explorations using multichoice input interaction having invalid rules. (#9062) * Fix #9005: Cursor changes to a pointer for the delete icon (#9054) * The EndExploration card should not have any IDs added. (#9032) * Fix part of #8015 : Domain object for topic-viewer-backend-api.service.ts (#8975) * Split worked example into questions and answers in skill editor (#8946) * Fixes #5254 Shuffle multiple choice (#8738) * Fix #8339: Improving end exploration UI (#8725) * Fix #8730: Throw PageNotFoundException instead when trying to access an invalid topic (#8722) * Fix #8402: Adding replay button for lesson #8402 (#8519) Speed improvement * Remove ngResource from manifest as it is not used anywhere (#9072) * Fix part of #7004: Use webpack to import ckeditor instead of script imports (#8866) Data handling * Fix part of #5914: Complete Controller Layer of Takeout (#9133) * Fix part of #5914: Complete Full Takeout on Backend (#8976) * Rework the contributors audit job to fix the models (#8961) QA Team * Fix #9086 and #9100: Fix classroom e2e flakes (#9118) * Fix part of #4057: Added a test file for exploration-tags-service.ts (#9117) * Fix part of #4057: Added a test file for exploration-param-changes.service.ts (#9114) * Fix part of #4057: Added a test file for exploration-category-service.ts (#9108) * Increase 100% coverage files that were fakely fully covered. (#9096) * Fix #8758: add waitFor statement before accessing response tab element (#9081) * Fix part of #4057. Unit test for exploration-feature-service.ts (#9076) * Fix #8884: Select Admin Page Status Message by HTML Class (#9068) * Fix issue #4057: Increase frontend test coverage for RatingComputationService (#8991) * Fix part of #6240: add e2e test for item selection interaction (#8985) * Fix Router Service unit test issues (#8919) * Fix part of #4057: Added a test file for StateHintsService.ts . (#8811) * Fix part of #4057: Added a test file for StateNameService.ts . (#8793) Angular Migration * Fix part of #8472: Upgrades CollectionCreationBackendApiService to Angular (#9125) * Fix part of #8472: Migrate learner answer details (#9046) * Fix part of 8472: Upgrades QuestionCreation and QuestionBackendApi service to Angular (#9029) * Improve typing of playthrough-issues-backend-api-service (#8997) * Fix #8966: Update expression-syntax-tree.service to use more typescript features (#8978) * Removes unnecessary services from App.ts (#8940) * Fix part of #8472: migrated playthrough-issues-backend-service files from angularjs to angular 8 (#8907) Developer experience * Fix lint issue related to bad throw pattern (#9205) * Fix part of #7450: JobManagerUnitTests no longer abuse private methods. (#9189) * Remove performance tests (#9188) * Fix issues with merging of target branch on circleci (#9181) * Fix part of #4057: increasing line-by-line coverage for classroom-backend-api.service.ts (#9168) * Fix #9137: Changed google app engine path to be absolute path (#9161) * Introduce contextmanager for creating temporary directories (#9142) * Add a lint check for all jobs register in jobs_registry.py file (#9129) * Fix #9106: Upgrade batch of libraries, fix frontend tests, and other small changes (#9107) * Add instructions for N/A (#9105) * Fix #8993: Linter now catchs custom js/ts lint errors (#9101) * Fix #9079: Merge the target branch before running the tests on CircleCI (#9084) * Remove mathjs from manifest.json (#9083) * Fix #8954: Add separate compilation config for circleci e2e tests (#9060) * Fix part of issue #7450: Changed email_manager_test.EmailRightsTest to use public method (#9059) * Fix setup on Arch (#9031) * Fix part of #7427: Added missing docstrings to core/domain/state_domain.py (#9028) * Remove fork-ts-checker-webpack-plugin (#9019) * Replace ui-utils with ui-validate since only this part of utils is used (#9002) * Fix part of #7450: modified email_manager.BulkEmailsTests to use public methods instead of private methods (#8996) * Perform yarn routine upgrade (#8984) v2.9.2 (21 Apr 2020) ------------------------ Learner/Creator Pages * Change character limits for the new editors and allowed saving of invalid exps in draft stories (#9087) * Fix #9045: Add customization arg warnings (#9073) * Fix #8951: Fix solution preview uniqueness indicator (#9067) * Add a pre-publish validation for topics (#9056) * Fix #9005: Cursor changes to a pointer for the delete icon (#9054) * Fix #8926: Drag and drop response order (#8960) * Add frontend validation for explorations in the story editor (#8899) * Fix #8743: Add Classroom option to top navbar and hide it under SHOW_CLASSROOM_CALLOUT flag (#8832) * Fix #8808: Disable collapsible block and tabs RTEs for questions (#8810) * Fix part of #8746: Centralize the story view icons (#8795) * Fix part of #6351: Add custom typing for PencilCodeEmbed (#8712) * Fix part of #6271: Improvise update_explanation method (#8699) * Fix part of #8038: HTTPS calls in frontend should only happen through topic-creation-backend-api.services (#8685) * Fix part of #5296: Add an audit job to find explorations with MathExpressionInput (#8669) * Add backend validation checks for explorations in a story (#8651) * Add the skillreview RTE element to explorations in stories (#8617) Contributor Pages * Fix #9018: Capitalize the tab name in community dashboard page (#9089) * Fix #9003, #9013: Display fully un-truncated text for skill description in Submit Question tab and show placeholder for empty rubric explanation (#9058) * Fix #7402, #8166: Enable community dashboard page (#8957) * Reviewer assignment functionality for community contribution (#8862) * Fix #8249: Surface skill difficulty/rubrics in question suggestion flow (#8353) * Fix not loading opportunities in the community dashboard. (#8948) Lesson analytics * Fix #7335: Use cached thread message summary to render improvement tasks (#8658) Speed improvement * Remove angular-drag-and-drop-lists.min.js from header js imports (#8929) * Import wave-surfer using webpack instead of including it in third_party.js file (#8922) * Fix #7643: Replace templateUrl with template in /extensions (#8860) Bug fixes * Fix #9006 and #9009: Disallow same chapter titles in stories and fixed empty names for downloaded yaml files (#9077) * Fix #9040: Preferences page width in mobile devices (#9055) * Fix InteractionAnswerSummariesMRJobManager handling of UTF-8 strings (#8963) * Fix #8955: Only fetch the summaries of threads referring to explorations (#8956) * Fix #8802: Google Chrome on Chromebook not displaying the Speech Synthesised Voiceover (#8892) * Fix #8817: Fix progress bar issue in Firefox (#8881) * Fix #8826: Correct Continue Button Display Style to Fix Highlight Outline (#8878) * Fix #8815: Initialise Guppy symbols during exploration init (#8850) * Fix #8789: Inconsistent Capitalization in Preferred Languages Dropdown (#8796) * Fix #8132: Fix the category and language bar selection divs (#8723) * Fix #8385: Add a error message if the exploration id entered is invalid (#8431) Server Errors * Fix #6757: Reload page when login_url is None (#8834) Miscellaneous * Fix #8877: Remove DebugInfoTrackerService from the codebase (#8879) * Fix #8709: Load dummy skill with questions (#8724) * Fix part of #8038: HTTPS calls in frontend should only happen through skill-creation-backend-api.services (#8674) * Fix #8614: Move the site-feedback icon to the footer (#8640) Release team * Fix issues with release wrap up (#8952) * Fix path in restore backup script (#8913) * Updates for sending reminder to submit jobs (#8809) Angular Migration * Add HTTP interceptor in all the modules (#8965) * Migration of ExpressionSyntaxTreeService to Angular 8 (#8886) * Remove any from url-interpolation.service.ts, url.service.ts and some other files (#8823) * Update to provide only required services in App.ts (#8807) * Remove any from angular in all modules (#8785) * Remove any from numeric-input-validation.service.spec.ts (#8770) * Migrate CollectionRightsBackendApiService to Angular 8 (#8748) * Fix part of #8472: Migrate AngularJS files to Angular 8 for SkillRightBackendApiService file (#8721) * Fix part of #8472: Migrate EditableCollectionBackendApiService and ReadOnlyCollectionBackendApiService to Angular (#8657) * Fix part of #8472: Migrate AngularJS files to Angular 8 for SkillObjectFactory file (#8587) Data handling * Add contributors audit job (#8925) * Fix part of #5914: Export data for BaseSnapshotMetadataModel (#8749) QA Team * Fix part of #4057: Add frontend test cases to QuestionObjectFactory (#8934) * Fix part of #4057: Add test cases for question-backend-api.service.ts (#8916) * Fix #4057: Add front-end tests for UnitsObjectFactory.ts (#8915) * Topic viewer backend api (#8905) * Fix #8888: Await Visible Confirmation Message on Role Update (#8889) * Fix part of #4057: Add a test file for StateParamChangesService.ts (#8825) * Fix test file for debouncer.service.ts (#8806) * Increase coverage for training-data-editor-panel.service.ts (#8805) * Increase coverage for improvement-modal.service.ts (#8799) * Increase coverage for suggestion-modal-for-creator-view.service.ts (#8791) * Increase coverage for autosave-info-modals.service.ts (#8776) * Increase coverage for rte-helper.service.ts (#8775) * Increase coverage for training-modal.service.ts (#8771) * Fix part of #4057, #8472: Migrate contribution opportunities backend api to Angular 8 and creates a spec file for it (#8763) * Increase frontend test controllers from Milestone 4 (2nd PR) (#8736) * Fix part of #4057: Increase frontend test services from Milestone 3.3 (3st PR) (#8696) * Fix part of #4057: Increase frontend test services from Milestone 3.3 (4th PR) (#8729) * Fix #6240: E2e Tests for Code Editor Interaction (#8639) * Milestone 3.3 (1st PR) - Increase coverage for speech-synthesis-chunker.service.ts (#8636) * Fix part of #4057: Frontend test for ExplorationFeatureService (#8588) * Fix part of #4057: RuleObjectFactory test (#8558) Developer experience * Upgrade major versions of libraries (#8953) * Fix #8920: Add check frontend coverage feature on pre push hook (#8923) * Fix #8882: Fix collections suite flakiness (#8900) * Fix #8869: Add innerHTML lint check (#8870) * Speed up frontend tests (#8864) * Reorganize CircleCI tests run order (#8851) * Add wording to not trigger issue closure (#8837) * Fix #8668: Document the service file with jsdoc and fix the unused-import bug (#8773) * Fix #8625: Split linters to run for a specific file extension (#8656) v2.9.1 (29 Mar 2020) ------------------------ QA Team * Increase coverage for rte-helper.service.ts (#8775) * Fix topic_id null in e2e test issue (#8756) * Increase coverage for learner-playlist.service.ts (#8753) * Increase frontend test controllers from Milestone 4 (1st PR) (#8732) * Fix part of #4057: Increase frontend test services from Milestone 3.3 (2nd PR) (#8675) * Fix part of #6240: Fix Flaky Exploration Card Finding (#8659) * Fix part of #4057: Increase frontend test services from Milestone 3.2 (5th PR) (#8616) * Fix part of #4057: Increase frontend test services from Milestone 3.2 (4th PR) (#8615) * Get id-generation.service.ts up to 100% coverage in order to fix CircleCI frontend job fails (#8605) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (5th PR) - fix (#8575) * Milestone 3.2 (3th PR) - Increase coverage for three services (#8569) * Fix part of #4057: Increase frontend test services from Milestone 3.2 (2nd PR) (#8560) * Fix part of #4057: Increase frontend test services from Milestone 3.2 (1st PR) (#8530) * Increase coverage for notifications-dashboard-page.component.ts and mark-all-audio-and-translations-as-needing-update.controller.ts (#8528) * Milestone 3.1 (3rd PR) - Increase coverage for hints-and-solution-manager.service.ts (#8525) * Milestone 3.1 (2nd PR) - Increase coverage for three services (#8524) * Fix part of #4057: Adds test for UserEmailPreferencesService (#8513) * Milestone 3.1 (1st PR) - Increase coverage for three services (#8477) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (6th PR) (#8469) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (4th PR) (#8443) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (3rd PR) (#8440) * Fix part of #6240: Add audio translations for the state content (#8571) Lesson analytics * Turn improvements tab off by default (#8797) * Fix #8660: Add tests for task count notif icon (#8737) * Only expose thread data through fetchThreads (#8496) * Fix #6242, #7334: Change style of Playthrough buttons and made clickable area intuitive (#8480) Server Errors * Fix #7637: Set hoveredRegion inside onMouseMoveRegion if null (#8733) * Fix #8702: Adds a cancel callback that removes the cancelled RTE element (#8703) Translations * Milestone 1 (1st PR) - Adding Audio Duration (#8203) Miscellaneous * Fix #8761: Prevents logging of unhandled rejection errors with status code -1 (#8762) * Fix part of #8296: fixed rtl text on splash and about pages (#8726) * Fix #7847: Send dummy mail button in the admin page. (#8686) * Fix #8368: Migrate to ndb.TextProperty (#8664) * Routine update of translations. (#8655) * Fix #8645: Fixes reloading issue with roles tab (#8647) * Fix #8550: Contact link added (#8551) * Fix part of #8016: add backend service for http requests in admin-config-tab directive (#8447) * Fix part of #7176: Refactor dicts in frontend to have only camelCase keys for AutogeneratedAudioLanguageObjectFactory (#8441) Release team * Fix typo in app_dev.yaml. (#8735) * Fix issues in release automation (#8690) * Fix issues with release automation (#8577) * Fix comment in build script (#8568) Learner/Creator Pages * Fix part of #8746: Story editor, viewer, practice session bug fixes (#8774) * Fix part of #8746: Move done/success buttons to the right (#8747) * Fix part of #1189 Added validation for numeric-input rule type IsInclusivelyBetween. (#8742) * Fix #8601: Added label to the topbox. (#8708) * Fix #8157: Added a validator for long fractions. (#8671) * Fix #8578: Story chapters don't play without prerequisite skills (#8654) * Fix part of #5296: Changed the default math input exploration. (#8648) * Fix #8450: Customizing "Add Item" button text. (#8638) * Fix #8604: Topic Name Outlined in Red Until Abbreviated Name Entered (#8621) * Add the skillreview RTE element to explorations in stories (#8617) * Fix #2967: Allow pasting of the complete Youtube video URL in RTE components (#8611) * Fix part of #6271: Refactor update_interaction_hints method to accept a list of Hint objects, instead of a list of dictionaries. (#8591) * Fix part of #6271: Refactor Outcome update method to accept domain object instead of dict. (#8582) * Modify the story viewer UI (#8581) * Fix #7870: Corrrected the margin cutoff in translated content. (#8572) * Fix #8450: Customizing "Add Item" button text. (#8556) * Fix #8541: Fixing shape of footer elements (#8542) * Fix #5690. Added modal to allow user to add commit message when saving an edit to a question. (#8538) * Fix #8193: Added callout to classroom page. (#8511) * Fix part of #4057: Add tests for ParamChangesObjectFactory.ts (#8495) * Fix #8487: Fixing wrong placement of checkbox (#8491) * Revert "Fix #8450: Customizing "Add Item" button text." (#8583) Speed improvement * Reduce bundle size and tidy up manifest (#8663) * Fix part of #7643: Replace templateUrl with template (#8632) * Fix #7643: Replace Template url to template in the objects directory (#8590) Data handling * Fix part of #5914: Export data for GeneralVoiceoverApplicationModel and UserContributionsScoringModel (#8626) * Fix part of #5914: Takeout Enforcement (#8210) Bug fixes * Fix #8911: Fix issues with exploration state graph (#8936) * Fix #8827, #8904 and #8903: Fixed highlight reset of feedback icon, visibility of dest state name in outcome editor and behavior of dropdown in 'Add Answer Group' modal (#8918) * Fix #8820: Fix margin for the exploration feedback so that it can be reached. (#8898) * Fix #8819: Remove highlight on hovering on disabled button (#8894) * Fix #8817: Fixes progress bar issue in firefox (#8881) * Fix #8694: Places CSS for the loading message in the correct place. (#8695) * Add try/catch for debugging production job (#8661) * Fix #8600: Adds new placeholder message for feedback. (#8634) * Fix #8610: Makes backdrop static for profile image upload/edit modal. (#8620) * Fix #8534: wrong date string format from date-time-format.service.ts (#8576) * Fix stats regeneration job (#8490) Angular Migration * Fix part of #8472: Migrate SubtopicBackendService to Angular (#8643) * Upgrade SearchExplorationBackendApiService to Angular (#8563) * Upgrade ExpressionParserService to Angular (#8557) * Angular8 Migration: Migrating SkillMasteryApiService (#8501) * Migrate ClassroomBackendApiService to angular (#8462) * Migrate PretestQuestionBackendApiService to angular (#8452) * Migrate TopicViewerBackendApiService to Angular (#8427) * Migrate email-dashboard-data-service to Angular (#8426) * Migrate AdminDataService to angular (#8295) Developer experience * Fixes #8754: Yarn execution changes (#8757) * Fix signup issues in e2e tests (#8727) * Update yarn lock file (#8716) * Fix #8714: fixing stylelint (#8715) * Fix #6369: Simplify directory structure (#8693) * Fix #5676: Remove gulp from project (#8691) * Remove frontend tests for debouncer service (#8649) * Update actions/checkout version in Actions workflows (#8629) * Upgrade test script from bash to python (#8613) * Attempt to fix flaky e2e tests (#8607) * Increase efficiency of SingleLineCommentChecker (#8378) * Fix #8269: adding check for travis.yml and protractor.conf.js (#8334) v2.9.0 (22 Feb 2020) ------------------------ Bug fixes * Fix #8694: Places CSS for the loading message in the correct place. (#8695) * Fix #8603: fixing the invalid date in suggestion thread (#8673) * Fix #8600: Adds new placeholder message for feedback. (#8634) * Fix #8596: Removes unexpected div focus from interaction preview bar. (#8633) * Fix #8610: Makes backdrop static for profile image upload/edit modal. (#8620) * Fix #8608: Adds controllerAs for the map interaction (#8619) * Fix #8439. Buggy interaction with the author profiles element (#8460) * Fix #8209. Fixed fraction input errors. (#8454) * Fixes #8434: fixing one off jobs in prod_env (#8435) * Fix #8375: Add check for _submitAnswerFn (#8413) * Fixes #8371 Removing End interaction text. (#8376) * Fix #8330: Add min selection message for interactions with radio buttons (#8365) * Learner Dahsboard fix UI detail (#8358) * Fix #8049 Changed display of oppia-icon-accessibility-label (#8328) * Fix #8215: Grammatical correctness while displaying date & time (#8357) Server Errors * Fix #6757: Add response headers to prevent caching of /userinfohandler (#8526) * Fix #8181: Change $apply to $applyAsync in Base.ts and library-page.directive.ts (#8466) * Fix #8464: Add a check for Error object in $exceptionHandler (#8465) Translations * Fix #8598: Console Error when Recording Voiceover (#8641) * Adds Malay language to the supported audio languages (#8585) Miscellaneous * Add swap to Google Fonts link (#8554) * Fix #8518: Add Security.txt (#8533) * Adds codeowner for community dashboard and translation project (#8494) * Update installation section of README (#8486) * Removed obsolete todo from PromoBar (#8457) * Tidy up feedback services (#8282) * Fix part of #7450: Make private global function public (#8255) * Fix part of #8038: Creates a backend service for collection-creation.service.ts (#8407) * Fix #7372: Added a cassifierTrainingJob.to_player_dict() function (#7931) Release team * Fix app.yaml generation (#8562) * Updates for maintenance mode (#8516) * Updates for renaming Changelog label (#8515) * Fixes issue with the update_changelog release script (#8478) * Modify release info generation for release summary to be generated independently (#8474) * Fix instructions in changelog updation (#8473) * Updates to automation scripts to resolve issues faced in previous releases (#8425) Learner/Creator Pages * Fix #8602: Fetch the messages after updating the suggestion (#8624) * Fix part of #7643: Use webpack for more directives (#8540) * Fix #8449: Learn again button was surfaced incorrectly (#8536) * Fix delete card icon shown even when not editable (#8535) * Fix #8398: Use webpack to load HTML in interactions (#8503) * Fix #8403. Added shadow for nodes in collection view. (#8428) * Fix #8400. Changed 'audio' text and added an icon. (#8420) * Fix #8331: Add submit button for multiple choice interaction (mobile only) (#8374) * Fix #6433: Refactor open playthrough modal (#8117) * Fix #7336: add getLastUpdateTime() methods to Improvement Tasks (#8101) * Fix #7661: Improvement icon notification in the navigation bar (#7865) Speed improvement * Fix #7605: Remove GLOBALS.TRANSLATOR_PROVIDER_FOR_TEST from karma-globals.ts (#8344) Data handling * Replace 'Admin' user_id with 'admin' (#8483) * Fix #8202: Delete GeneralFeedbackThreadUserModel that have user_id equal to None (#8481) * Wipeout 3.6: User ID migration changes (#8361) * Wipeout 4.4: Add account to be deleted page and send email (#8341) * Fix #8301: Implement delete_multi for exploration and collection right models (#8319) QA Team * Fix part of #6240: Admin one off jobs (#8455) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (2nd PR) (#8433) * Fix part of #4057: Increase frontend test services from Milestone 2.2 (1st PR) (#8432) * Milestone 2.1 (5th PR) - Increase coverage for three services (#8387) * Milestone 2.1 (4th PR) - Increase coverage for three services (#8379) * Milestone 2.1 (3rd PR) - Increase coverage for three services (#8373) * Milestone 2.1 (2nd PR) - Increase coverage for three services (#8345) * Milestone 2.1 (1st PR) - Increase coverage for collection-rights-backend-api.service.ts and validators.service.ts (#8281) Angular Migration * Adds interceptor for Angular (#8507) * Fix #7403. Changed mathjs imports to partial imports. (#8467) * Migrate StoryViewerBackendApiService to angular (#8438) * Migrate ReviewTestBackendApiService to angular (#8302) * Upgrades StateImprovement Service to Angular (#8116) Developer experience * Fix #7957: Convert e2e bash script to a Python script (#8543) * Fix #8534: Revert commit related to failing test (#8537) * Increase angular timeout (#8509) * Increase the frontend tests timeout to 1 minute (#8502) * Remove unused file from FE coverage (#8459) * Fix frontend test timeout (#8453) * Updates Angular version in package.json & yarn.lock (#8430) * Fix pylint linter decoding error. (#8418) * Fix #7601: Remove separate typescript compilation (#8412) * Fix part of #7450: Tests private method through public interface (#8411) * Fix #7830, Added a custom lint check to ensure that there is an empty line between imports and fileoverview. (#8409) * Fix #8125. Changed setup.py to rename yarn folder (#8405) * Revert commits from frontend test configuration changes. (#8388) * Fix #7427: Added args in the docstring of core/jobs_registry.py (#8386) * Fix #8380: Move non-file-upload tests back to Travis (#8381) * Fix #7427: Adds args in docstring of core/domain/story_domain.py (#8377) * Adds readme to various folders (#8329) * Fix #8077: Upgrades Angular JS to version 1.7.9 (#8254) * Add new CircleCI job in order to check if any fully covered frontend file has decreased after PR changes (#8130) * Changes popper.js name to popper-core in manifest.json (#8442) * Fixes part of #5939: Custom pylint extension to ensure that docstring follow correct format. (#8410) v2.8.9 (01 Feb 2020) ------------------------ Speed improvements * Moved no-script tag to be injected using webpack (#8325) * Fix #6732: Remove files from tsconfig.json (#8148) Lesson analytics * Stop indexing the cached last_nonempty_message_text (#8367) Translations * Fixes: 8350 Translation tab button text overflow (#8364) Release Team * Minor automation changes for branch cut (#8222) * Fix initial release prep script (#8204) * Update release info script for new changelog labels (#8291) QA Team * Milestone 1 (3rd PR) - Increase coverage for learner-answer-details-data.service.ts (#8180) * Add sourceMap on tsconfig in order to fix test coverage issues (#8213) * Milestone 1 (2nd PR) - Increase coverage for easy tests (#8164) * Add simple e2e test for community dashboard page. (#8162) * Milestone 1 (1st PR) - Increase coverage for easy tests (#8136) Miscellaneous * Remove extra file pattern from karma conf (#8323) * Fix part of #7427 Add args, raises in exp_domain.py (#8288) * Fix part of #7450: Modify private method in collection_services_test (#8287) * Report Topic names in addition to Entity id for the abbreviated_name audit job (#8253) * Fix part of #7450: Modify test method in InteractionUnitTests (#8201) * Fix #7429, #7659: Set model fields as required (#8185) * Wipeout 4.2: Implement pre deletion on the backend (#8182) * Fix part of #7427: Add args, raises in base.py (#8176) * Make SkillEditorTest's private method to be public (#8163) * Fix part of #7450: Changed ConfigPropertyRegistryTests from private to public interface (#8158) * Fix part of #7450: modify private methods in html_validation_service files (#8156) * Fix part of #7427: Adds args, returns and raises in docstrings of utils.py (#8134) * Wipeout 3.5: User ID migration (#8097) Learner/Creator experience * Fix #8384: Adds frontend skill validation (#8436) * Fix new structures issues (#8363) * Removed QuestionRights and SkillRights models (#8337) * Fix #8199: Adds 16:9 aspect ratio cropping for topic thumbnail (#8303) * Fix #8192: Added search bar to classroom page (#8270) * Fixes #6601 modified checks for enabling and disabling the submit button in the suggestion modal (#8251) * Renames the 'concept' RTE element to 'skillreview' (#8227) * Fix #8126: Removed the error message for intermediate fraction expressions (#8149) * Fix #8127: Multiple response audio highlight issue fix (#8140) * Added a 'link concept card' RTE button (#8122) * Introduce message cache to threads (#8091) * Fix #8019: Adds abbreviated topic name and thumbnail fields in… (#8067) Angular Migration * Migrate StorySummaryObjectFactory to angular (#8326) * Migrate StateTopAnswersStatsBackendApiService to angular (#8280) * Migrate ExplorationFeaturesBackendApiService to angular and add tests (#8246) * Angular Migration ConceptCardObjectFactory (#8229) * Migrate ReadOnlyStoryNodeObjectFactory and StoryPlaythroughObjectFact… (#8220) * Angular Migrating PlayerPosition and TopicObjectFactory (#8200) * Upgrades CodeReplRulesService to Angular (#8195) * Angular Migration: SuggestionThreadObjectFactory and ExtractImageFilenamesFromStateService (#8188) * Migrating AudioTranslationService, StateObject, Playertranscript (#8183) * Upgrades ExplorationObjectFactory to Angular (#8177) * Upgrade PythonProgramTokenizer and CodeReplPredictionService (#8137) * Angular 8 Service Migration DebugInfo, TopicSummaryObjectFactory (#8135) * Upgrades BrowserCheck and LanguageUtil Service to Angular (#8115) Community contribution and dashboar * Fix #8007: Add one off job to regenerate skill opportunity models (#8243) * Fix part of #7471: Frontend changes for question suggestion integration (#8057) Data handling * Wipeout 4.3: Full deletion process (#8335) * Store trained classifier data on file system (#8268) Bug fixes * Fix #7041: Fixes race condition issue on editor page relead (#8321) * Adds correct path for the dir in skip_files of app_dev.yaml (#8309) * Fixes #8184: Force refresh and prevent submitting new message while one message is being submitted (#8290) * Fixes return type of Classroom backed api service to be TopicSummaryO… (#8147) * Fix part of #8015: Return ReadOnlySubtopicPageData instead of ReadOnlySubtopicPageDict (#8121) Developer experience * Decrease parallelization (#8333) * Remove code climate coverage (#8317) * Update yarn lock file (#8316) * Fix part of #7450 Added new function to avoid calling a private method from user_query_jobs_one_off_test.py (#8310) * Introduce Github Action for lint checks (#8306) * Update node packages (#8305) * Revert "Halt a protractor suite once the first test fails." (#8304) * Reconfigure circleci cache (#8299) * Fix #7852: Update skulpt to v1.1.0 and get rid of the requirement to build it locally. (#8298) * Update Codeowner file to reflect change in username (#8322) * Move fileUploadFeatures and topicAndStoryEditor E2E tests to CircleCI (#8312) * Fixes #8289: Adding profile features to travis and fixing the tests (#8294) * Removes feconf.py.bak file after updating the feconf.py file while running e2e tests (#8292) * Try switching back to ChromeHeadless. (#8286) * Use a mock for speechSynthesis to prevent flakiness in Karma tests. (#8283) * Halt a protractor suite once the first test fails. (#8279) * Remove master branch from Travis. Update CONTRIBUTING.md to match wiki home page. (#8278) * Fixes #8265: Resolve comments from 8233 (#8276) * Increase browser timeout (#8275) * Upgrade node from v10.15.3 to v10.18.0. (#8266) * Increase concurrent runs for CircleCI (#8264) * Fixes #8260: Adding adminPage e2e test to travis.yml (#8261) * fixes #8258: fix .eslintrc file trailing commas and ordering. (#8259) * Change chrome headless flags and modify voice test (#8233) * Fix #8123 (#8198) * Update yarn version (#8187) * Lesson analytics temporary ownership handoff to seanlip (#8170) * Fixes frontend text issues on develop (#8167) * Fix #8118: Ensuring use of 'pip2' or 'pip2.7' during installati… (#8153) * Update serialize-javascript and other js dependencies (#8151) * Reinstate test whose removal caused backend coverage to drop. (#8186) * Fix #8023: Introduce direct coverage integration (#8145) * Optimize the backend test runner (#8141) * Fix build.py is not working correctly on Windows (#8139) v2.8.8 (30 Dec 2019) ------------------------ Bug fixes * Adds correct path for the dir in skip_files of app_dev.yaml (#8309) * Fixes #8184: Force refresh and prevent submitting new message while one message is being submitted (#8290) * Fix ckeditor tableselection issue (#8256) * Fix new structure editor issues (#8245) * Fix #8178: Remove fit-content from codebase (#8240) * Fix #8214: non-null exploration version is passed in the stats calls (#8235) * Fix #8114: Fixing admin page navbar (#8224) * Fix admin navbar icons (#8113) * Fix date formatting (#8084) * Adds log for #6921 to track sequence of steps (#8069) * Fix ordering in UpgradedServices file (#8050) * Fix #7973: Fixes tutorial, navbar for small screens (#8044) * Fix #7975: 'this' was out of scope in SidebarStatusService (#8011) * Fix #7124: add css to preferences-bio textarea (#8010) * Fix #7967: ensure chapter editor validation failures are not cut off on right (#8001) * Fix #7963: Adds margin for logic proof help lines (#7997) * Fix #7960, #7995: Fix date, publish button (#7996) * Fix #6158: Log for interpolate url issue (#7952) * Fixes 7939: Admin navbar misplaced fix (#7940) * Fix #7926: Add polyfill for navigator.mediaDevices.getUserMedia (#7933) * Fix #7906: Adds a check for errorCallback (#7927) * Resolves ckeditor.js 404 issue on the community dashboard page (#7924) * Fix #7342: Replace ctrl.stateName with updated state name value (#7907) * Fix #7691: Card Basic Setting Alignment Fixed (#7904) * Fix #7784: Add type as a second parameter when contructing a blob (#7785) * Fix #6546: Preserve GIF Animation on resize and crop (#7760) Code health * Fix continue button not working in presence of correctness feedback (#8293) * Fixed a typo in fileoverview in unit tests of ClassroomBackendApiService (#8120) * Fix #6847: Use absolute path to require html files (#8078) * Change ALL_LANGUAGE_CODES to SUPPORTED_CONTENT_LANGUAGES (#8062) * Fix part of #8016: Added a seperate backend api service for review-test-page directive (#8061) * Fix UpgradedServices to use true dependency management (#8013) * Fix #5145: unifies from_backend_dict and from_dict methods in Playthrough and ExplorationIssue domain models (#7992) * Fixes part of #6240: e2e tests for chapter create, edit, and delete (#7922) Development workflow * Upgrade eslint (#8109) * Fixes: start.py can not run on Windows system (#8106) * Disable audit tests (#8104) * Upgrade Text Input Prediction Service and Text Input Tokenizer (#8103) * Introduce Github Actions actions frontend tests (#8102) * Upgrades TextInputRules, TextInputValidation and PencilCodeEditorRule Service to Angular (#8095) * Migrating Context, LocalStorage Service to Angular (#8094) * Upgrades StateObjectFactory and StatesObjectFactory to Angular (#8093) * Revert "Fixes (partially): oppia can not not run on Windows (#7971)" (#8087) * Fix #8068: Fix no-message in lint error for bad patterns issue. (#8075) * Fixes part of #5939: Custom pylint extension to ensure that comments follow correct format. (#8066) * Fix small error in pre-commit hook to prevent .pyc file from being copied. (#8065) * Upgrades UrlInterpolationService to Angular (#8064) * Fix #8046: create command line flag for no automatic restart (#8058) * Resolves audit issues (#8056) * Fixes part of #5939: Custom pylint extension for checking division operator (#8034) * Add more explanation to the top of the run_backend_tests script. (#8012) * Upgrades Validator, ImprovementDisplay, ExplorationHTMLFormatter, SolutionObjectFactory and InteractionObjectFactory to Angular (#7989) * Resolve comments from PR 7953 (#7979) * Fix #6988: Remove fonts directory (#7978) * Fixes (partially): oppia can not not run on Windows (#7971) * Fix skulpt install (#7953) * Resolve audit errors (#7949) * Fix part of #7427: Addresses docstring issues in one of the files (prod_validation_jobs_one_off.py) (#7948) * Fix #7918: Run install_third_party_libs.py script before running e2e tests (#7947) * Migration angular services: changes in human readable (#7945) * Upgrades NumberWithUnits related services to Angular (#7944) * Update tests according to the changes in #7930 (#7941) * Angular Services Migration combined (#7934) * Fixes #7647: Subprocess check call conversion (#7930) * Fix #7868: Added lint check for a newline above args in python doc string (#7929) * Migrating CsrfTokenService (#7818) Translations * Fix #8179: The voiceover error message doesn't get displayed in every tab. (#8234) * Adds Ga and Akan languages in supported audio langauge list (#8086) Community contribution and dashboard * Fix #7994: Add frontend SkillOpportunity and ExplorationOpportunity object class (#8063) * Services required for voiceover application (#7857) * Fix part of #7471: Backend changes for question suggestion integration (#7819) * Fix part of #6776: Frontend changes for listing skill opportunities on the Community Dashboard page. (#7602) New structures * Allowed empty misconception notes in skill editor (#8131) * Fixed question image upload and added visibility of private pages to admins and TMs (#8090) * Allow question linkage to skills outside topic during creation (#8045) * Empty rubric explanation allowed with placeholder (#8042) * Add editable linked skills list to question editor (#8004) * Fix part of #5914: Add testing for nonexistent users in export_data (#7942) * Fix part of #5914: Takeout Service (#7644) Updates to static pages * Wipeout 4.1: Implement part of frontend wipeout (#8022) * Fix #7867: do client-side redirect for app pages. (#7921) * Fix part of #7643: Replace templateUrl with template in splash page (#7702) Infrastructural changes * Upgrades state editor properties services (#8110) * Fix #7880: Fix node installation for 32 bit systems (#8108) * Remove extra one-off jobs (#8107) * Fix karma.conf.ts issues that is falsely increasing the frontend test coverage (#8085) * Wipeout 2.9: Check snapshot content models when looking for user_id (#8036) * Fix part of #6271: Update update_worked_examples to accept object as a parameter instead of dict (#8021) * Wipeout 3.4: Start using GAE user ID (#8008) * Release Automation [Milestone 7]: Automation for initial release preparation (#8005) * Migrating filters (#7935) Testing coverage * Fixes part of #7450: removes all calls to user_services._save_user_settings from user_services_test.py (#7972) * Fix Part of #6240: Subtopic Editor Drag and Drop Skills E2E Test (#7901) * Fix part of #6240: Add e2e tests for testing navigation buttons in an exploration (#7888) * Fix #6687: Write e2e tests for file upload process (#7839) Improvements to editors and players * Fixes #7430: Added a directive to prevent title overflow from the exploration info box (#7985) * Fix part of #6482: button is disable until all requirements are fulfilled - fixed \o/ (#7908) * Voiceover application storage model and domain class (#7843) v2.8.7 (24 Nov 2019) ------------------------ Code health * Remove DubeySandeep from codeowner for various miscellaneous projects. (#7914) * Fix #6738: changed direct usage of window.location (#7879) * Fix part of #7427: Add valid args docstring for story_domain_test.py (#7832) * Migrating deviceinfo service (#7821) * Fixes #6240: adding e2e test for assigning and viewing roles (#7767) * Fix part of #6240 Add test for exploration stats on user profile (#7766) * Fixes part of #6240: Mark correct answers after enabling correctness feedback (#7764) Development workflow * Resolves audit issues (#8056) * Resolve yarn audit (#8006) * Resolve audit errors (#7949) * Switch download source for CKEditor libs to GitHub for better stability. (#7920) * Fix part of #6975: Rename services directory files according to new naming conventions (#7896) * Fix #7890: Add more explicit codeowners fix (#7895) * Fix #7831: Added lint check for excessive new lines between function definitions (#7881) * Fix part of #7450: Modify private methods calls in GenerateHashTests to public calls (#7860) * Fix part of #6975 Apply the new naming convention to remaining directories (#7844) * Migrated DocumentAttributeCustomization & MetatagCustomization (#7835) * Migration url service (#7834) * Migrating dateTimeFormatService and format-timer.pipe (#7827) * Migration extension tag assembler serivce (#7805) * Upgrades AlertsService and NormalizeWhiteSpaceFilter to Angular (#7777) Translations * Adds Ewe language for translation and voiceover. (#7871) * Routine update of translations. (#7887) Community contribution and dashboard * Fix #7968: Adds missing language code in the exploration opportunity domain object (#7999) Bug fixes * Fix #8048: Fix refresher modal on small screens (#8054) * Fix #8024: Decrease 'min-width' of feedback editor (#8051) * Fix #7973: Fixes tutorial, navbar for small screens (#8044) * Fix #7974: Fix Lateral Scroll Bug on Learner Dashboard Mobile (#8026) * Fix #7976: Changes to display the avatar of a different user (#8017) * Fix #7975: 'this' was out of scope in SidebarStatusService (#8011) * Fix #8002: Unused skills table text overflow fix (#8003) * Fix #7967: ensure chapter editor validation failures are not cut off on right (#8001) * Fix #7963: Adds margin for logic proof help lines (#7997) * Fix #7960, #7995: Fix date, publish button (#7996) * Fix #7983: Minor CSS fixes (#7986) * Revert "Wipeout 3.4: Start using GAE user ID" (#7954) * Fixes 7939: Admin navbar misplaced fix (#7940) * Fix #7849: Add background color when hovering over sign-button (#7917) * Fix #7691: Card Basic Setting Alignment Fixed (#7904) * Fix #6909: Add a polyfill for SVGElement.prototype.outerHTML (#7886) * Fix #7381: Replace apply with applyAsync in top-navigation-bar.directive (#7885) * Fixes #6062: aligns the share buttons of any exploration page (#7883) * Fix #7869: Fixes collection page UI issues (#7878) * Fix #7873: Removes arrow function with function to resolve undefined `this` issue. (#7877) * Fix #7855: Change e.message() to e.message (#7866) * Fix #7529: Adds a strict check for Outcome object before executing hasNonemptyFeedback (#7856) * Fix #7794: Add warning when MIDI is unsupported in the browser (#7840) Infrastructural changes * Rename gae_user_id to gae_id (#7998) * Release Automation [Milestone 6]: Automate backup restoration for migrations on backup server (#7916) * Release Automation [Milestone 5]: Add checks to ensure that travis and circleci are run before prod deployment, changelog generation for hotfixes (#7912) * Wipeout 2.8: Add has_reference_to_user_id to remainig models (#7893) * Wipeout 2.7: Reindex all children of BaseSnapshotMetadataModel (#7874) * Wipeout 3.4: Start using GAE user ID (#7823) * Wipeout 2.5: Add has_reference_to_user_id to another models (#7813) * Release Automation [Milestone 4]: Add pre commit tests in deploy, automate hotfix branch creation (#7790) Testing coverage * Covered missing lines in skill_editor.py (#7905) New structures * Fix #8032: Truncate skill name to 35 characters for display (#8033) * Question editor fixes (#7910) * Added fields to skill editor (#7909) * Split flag for new structure viewers (#7898) * Add more interaction types to the question editor and fix question mode detection in outcome editor (#7894) * Removed the concept of "private skills" (#7891) * Flipped the ENABLE_NEW_STRUCTURES_VIEWER flag (#7889) * Changes to questions tab and rubrics editor (#7846) v2.8.6 (28 Oct 2019) ------------------------ Bug fixes * Fix #7802: Fix indexing of explorations after update (#7853) * Fix #7663: Fixes collapsible block (#7850) * Reverts tests for Improvement tab added in #7719 (#7758) * Fix issues with capitalize filter (#7757) * Fix #6158: Initialise $interval inside initSession method (#7738) * Fix #7441: Replace 'one' with explicit key '=1' for certain languages (#7727) * Fix #7689: fixes the author dropdown menu in the footer (#7726) * Fix 7687: fixed library page tablet view (#7724) * Fix #6921: Add logger for _submitAnswer issue (#7723) * Fix #7681: HTML Select Option Styling (#7721) * Update thread status when suggestion is resolved (#7719) * Fix #7693: Navbar Menu highlight fix (#7717) * Fix #7662: Cursor fix (#7713) * Fix #7660: Set maximum width for link field and set ellipsis on it (#7701) * Fix #7653: broadcast 'stateEditorInitialized' after state-editor has been initialized (#7697) * Fix #7688: Uses font-awesome font instead of glyphicon for the… (#7692) * Fix #7684: Replace single quotes with double quotes (#7685) * Fix mailgun issue arising due to Python encoding error (#7652) * Fix #7252: Add undefined check for NgAudio audio object (#7640) * Fix error in creator dashboard due to duplicate prefixes. (#7636) * Fix #7444: Make sessionStorage existence check more robust (#7628) * Fix #5793: Suppress tpload errors that occur with -1 status code (#7611) * Fix navigation e2e test suite breakage (#7603) * Fix e2e tests and few small fixes (#7600) * Fix part of #7589: Fix unicode errors on develop (#7596) * Fix #7553: General classroom page fixes (#7580) * Replace call of bash scripts with python (#7573) * Fix #7253: Handle malformed language_code param gracefully (#7563) * Fixed a bug that raises after submitting an answer in the question player (#7551) * Fix #7460: Adds explicit annotation for $scope in copier.directive (#7547) * Fix unicode errors on develop (#7545) * Fix build process on Mac OS (#7541) * Fix #3677: Changes refreshSettingTab function to fix the loading issue with the e2e test. (#7526) * Fix #7481 (#7523) * Fix #6161: fix 'name' undefined server error (#7520) * Fix 7509: Drag & Drop Interaction not working in local develop (#7512) * Fix lint issues in develop branch (#7468) * Fixed a bug that opening review test raises an error (#7413) * Fixed a bug that opening the question player raises an error (#7392) * Fixes typescript errors and adds a new test for typescript compilation (#7373) * Fixes #7262 Dashboard spacing (#7369) * Fix the stats regeneration job by saving all the stats models at the end (#7284) * Fix source map issue (#7498) Code health * Fix part of #6240: Write e2e tests for view explorations (#7742) * Use "Improvement Task" as new nomenclature (#7679) * Change webpack optimalization (#7639) * Fix css files are not linted (#7516) * Moved more script imports to webpack (#7447) * Remove CKEditor-5 Initialisation (#7432) * Remove unneeded imports. (#7422) * Fix #6961: extensions/interactions/LogicProof/static/js into webpack (#7409) * Fix 7362: Remove jinja from preferences page directive (#7396) * Fix part of #5002: Remove GCS_RESOURCE_BUCKET_NAME from GLOBALS (#7374) * Fix part of 7176: Refactor dicts in frontend to have only camelCase keys for AudioLanguageObjectFactory (#7365) * Fixes part of #6240:: e2e test for suggesting changes for an exploration (#7361) * Migrating to CK5: PR3-building Data flow model for CKEditor-5 (#7333) * Migrating to Bootstrap-4 (#7319) * Fixes part of #5002: Remove GLOBALS from exploration player and collection editor. (#7203) * Fixes part of #5002: Remove GLOBALS from exploration editor page (#7194) Development workflow * Node updates (#7744) * Fix: Mandatory pattern check message is missing from pre_commit_linter output (#7743) * Node updates (#7720) * Update node packages (#7711) * Fix #7704: Presubmit checks command not working with pre_commit_linter (#7706) * Upgrade workflow packages (#7700) * Upgrade node packages (#7698) * Fix #7648: Run third party dependencies lib script in pre commit linter (#7678) * Fix #7673 and #7616: Add yarn path (#7675) * Fix #7646: Remove build calls from install third party (#7658) * Ensure ConsoleErrorPage handler does not count towards backend… (#7655) * Reduce codeowner dependency on Sean. (#7651) * Remove dependency on ConverterMapping name in pylint-quotes (#7638) * Remove configparser line from CircleCI config. (#7635) * Compares sorted keys to fix backend tests (#7633) * Remove dependency on ConverterMapping name in pylint (#7631) * Add TODOs for explicit browser sleep (#7623) * Fix #7423: Update node packages (#7615) * Fix #6866: Remove webpack compilation from backend tests (#7604) * Run install_third_party_libs on start.py (#7597) * Fix part of #7589: Fixes js and ts message addition (#7595) * Fix part of #6975: Refactor ExpressionParserService.js (expressions directory file) in create_expression_parser.py (#7592) * Fixes #7496: consolidate threads and process (#7591) * Fix lint errors (#7588) * Move workflows in circleci config (#7587) * Add James as a second CODEOWNER for Speed team (#7584) * Fixes #6276: Custom lint requirement for single space after yield keyword (#7581) * Fix part of #6975: Apply the new naming convention to expressions/ directory (#7556) * Fix #7554: Make linter exit quietly when there are no files to lint (#7555) * Fix part of #6975: Apply the new naming convention to base_components/ directory (#7548) * Fix #7494: Split additionalEditorAndPlayerFeatures e2e test to avoid timeout on travis (#7544) * Fix unicode errors in pre_commit_linter (#7535) * Omit backend_prod_files during linting (#7533) * Migrate to yarn (#7532) * Fix part of #6866: Remove extra compilation from backend tests (#7528) * Remove Vagrant support from codebase (#7521) * Stops the e2e tests to run if port 9001 is blocked (#7514) * Fix backend test that caused failures for some developers due to a time-calculation discrepancy. (#7508) * Fix hashes file names (#7501) * Fix backend and lint tests (#7480) * Convert bash scripts to Python (#7465) * Fixes #7452: Upgrade eslint plugin (#7459) * Update outdated eslint-utils (#7451) * Add current directory to python path in pre_push_hook (#7437) * Fix part of #6866: Remove extra compilation from backend tests (#7436) * Fix failed message in pre commit linter (#7428) * Change htmllint-cli source (#7425) * Fix #7400: Fixes issues with running typescript checks (#7401) * Enable colon lint rule (#7399) * Convert clean.sh to python (#7395) * Fix part of #7305: Updates to linter to make it faster (#7394) * Fix part of #7305 separate LintChecksManager (#7368) * Fix #7338: fix dashboard e2e flakiness (#7367) * Rename /dist to /webpack and move it to the root (#7315) Translations * Fix #6338: Hide Voiceover buttons instead of disable. (#7754) * Add functionality to add and review translation suggestion. (#7513) Community contribution and dashboard * Fix #7383: Add functionality to regenerate exploration opportunity summary models. (#7426) * Basic community dashboard with translation and voiceover opportunity. (#7109) New structures * Fix new structures editor UI issues (#7666) * Added new structures dummy data generator (#7621) * Create the classroom page (#7524) * Fix #7084: Converts strings to i18n strings in the question player (#7458) * Create the controllers for classroom page (#7455) * Fix part of #5914: FeedbackMessagesCreated Takeout (#7411) * Add rubric frontend to skill editor (#7389) * Fix #7022: Improve question selection by deduplication and selecting based on skill difficulty and skill mastery (#7366) * Add learning tips feature to the skill mastery modal in the question player result page (#7356) * Fix #7021: Add a skill tab in the topic viewer (#7287) Updates to static pages * Fix #7542: Remove status code global (#7594) * Remove jinja from tests directory (#7478) * Serve error pages using transclusion components (#7449) * Fix #2485: Serve story-viewer using transclusion components (#7390) * Fix #7004: Move jinja dependencies_html to webpack (#7350) Infrastructural changes * Upgrades adminRouter and reviewTestEngine Service to Angular (#7674) * Upgrades some services to angular (#7672) * Update CKEditor to version 4.12.1. (#7654) * Fix part of #5914: GeneralFeedbackThreadUserModel Takeout (#7642) * Add statistics regeneration job to job_registry (#7641) * Fix call to build in deploy script (#7634) * Fix constants file name in deploy script (#7632) * Fixes dependencies check (#7626) * Wipeout 3.3: Add gae_user_id and migration job for filling it (#7625) * Adds script to generate topological list of all the services on the basis of dependencies (#7624) * Remove state ID mapping model from the codebase (#7617) * Upgrades ItemSelectionRuleInputService and RemoveDuplicatesInArrayFilter to Angular 8 (#7610) * Upgrades LogicProofRule Service to Angular 8 (#7606) * Upgrades MusicNotesInputRulesService to Angular 8 (#7599) * Upgrades NumericInputRulesService to Angular 8 (#7579) * Upgrades InteractiveMapRulesService to Angular 8 (#7578) * Upgrades MultipleChoiceInputRuleService to Angular 8 (#7575) * Upgrades DrapAndDropSortInputRulesService to Angular 8 (#7570) * Upgrade SetInputRulesService to Angular 8 (#7562) * Wipeout 2.3: Add deletion policy to remaining storage models (#7552) * Milestone 2 [Release Automation]: Updates to release_info for automatic changelog creation (#7510) * Wipeout 2.2: Add deletion policy to some storage models (#7500) * Fix part of #5914: GeneralFeedbackEmailReplyToIdModel - Takeout (#7490) * Wipeout 3.2: Feedback email migration (#7464) * Convert all Python strings to unicode (#7446) * Fix part of #5914: Lesson Progress - Takeout (#7435) * Wipeout 3.1: Feedback migration (#7415) * Milestone 1: Release automation for deploying to test server (#7410) * Upgrade more services to Angular 8 - VIII (#7408) * Upgrade more services to Angular 8 - VII (#7398) * Upgrade more services to Angular - VI (#7386) * Wipeout 2.1: Add deletion policy method to some storage models (#7351) * Migrate to Python 3 (#7177) * Fix part of #5002: Remove interaction specs from GLOBALS (#7385) * Fix part of #6975: Rename extensions directory according to new naming conventions (#7360) Testing coverage * Fix part of #6240: Profile Photo Upload E2E Test (#7527) * Adds creator dashboard tests to travis (#7511) * Fix part of #6240: Adds e2e test to check grid and list view on creator dashboard page (#7506) * Fix part of #6240: Add E2E Tests for Profile Page Personal Deta… (#7505) * Remove unused methods from jinja utils and exp_domain (#7497) * Fix part of #6240: Adds e2e test to check message on feedback thread (#7495) * Fix part of #6240: Adds e2e tests to check stats on creator dashboard page (#7491) * Fix part of #6240: Adds e2e test to check status change of feedback thread (#7484) * Fix part of #6240: Adds e2e tests for prefered audio and site language in user's profile (#7456) * Improve coverage of some files (#7370) * Fix part of #6240: e2e test to save exploration to play later list and viewing it on the learner dashboard. (#7285) * Fix part of #6240 : Adds e2e test to check loading of appropriate dashboard (#7503) Improvements to editors and players * Creator View in Improvements Tab: AnswerDetailsImprovementCard (#7412) * Launch Improvements Tab (#7337) * Finalize Style Changes to Improvements Tab (#7330) * Enabling Learner for fill out answer details (#7159) v2.8.5 (11 Sep 2019) ------------------------ Statistics * Fix #5975: Fixed fraction display for Playthroughs (#7062) Bug fixes * Fix #7540: Changes max-width value of .oppia-library-group (#7582) * Fix #7536: fa-times not loading correctly in the learner dashboard (#7567) * Fix #7318: Fix blue outline in chrome (#7561) * Fix #6931: Fix functionality of Download exploration button (#7522) * Fix #7489: Fixes issue with exploration player navbar (#7492) * Fixes #7417: Fix Image upload bug in preferences page (#7482) * Fix regex for TODO comments check (#7384) * Fix #7377: Fixed the link issue (#7382) * Fix #7363: Repair getTypeFromBackendName in ParamTypeObjectFactory.ts (#7364) * Fix typescript errors (#7341) * Fix #7246: Disallow saving of duplicate values in set input interaction (#7331) * Add bot's username in the reserved usernames list (#7317) * Import Visualization Directives in Statistics Tab (#7312) * Fix #6727: Corrected the misalignment of images in the /about page (#7310) * Fix lint (#7306) * Fix circleci lint (#7303) * Fix typescript errors and add a new config file for compilation checks (#7293) * Fix #7234: Add functionality to clean migration bot contributions data (#7288) * Fix #6982: linting violations in assets/constants.js (#7279) * Revert "Fix part of #5002 remove GCS_RESOURCE_BUCKET_NAME from GLOBAL… (#7278) * #Fixes 7125 Fixing unresponsive sidebar toggle in mobile view (#7265) * Fix #7239: $sce.trustAsResourceUrl is called after the url is constructed (#7243) * Fix failing FE test on develop. (#7213) * Fix #6621: Return default values when sessionStorage is not available (#7205) * Fix failing test in develop (#7199) * Fixed an import error when running backend tests (#7154) * Fix backend test issues on develop branch (#7142) * Fix #7116: Mis-aligned fa-icons & Upgrades Font-awesome to 5.9.0 (#7117) * Add log for issue #6921 (#7028) * Fix #6159: Regenerate missing stats models (#6916) Improvements to editors and players * Fix Improvements Tab Navigation (#7326) * Address remaining review comments for #7052 (#7258) * Fix #6618: Allow creator to copy exploration's "Link to share" (#7185) * Fix part of #5799: Add Action Buttons to Feedback and Suggestion Improvement Cards (#7147) * Fix Part of #5799: Improve Styling of Feedback/Suggestion Improvement Cards (#7118) * Adding controllers, object factory and backend api service for learner answer details (#7052) * Fix #4438: Implement draft upgrade functions (#7036) New structures * Added rubric field to skill model (#7371) * Create a subtopic page viewer (#7354) * Fix two issues in the topic viewer page (#7353) * Create new topic fetchers file (#7280) * Fix part of #5914: UserSkillMasteryModel Takeout (#7264) * Fix #7020: Update skill mastery degree after tests and show a skill mastery modal (#7237) * Small fix for previous PR #7141 (#7217) * Fix #7071: Implement Boost Score functionality (#7209) * Added image upload to the RTE in new structures (#7207) * Fix #7017: Backend changes for UserSkillMastery and add a handler for updating user skill mastery degree (#7193) * Added story publish to story editor (#7174) * Fix #6481: Misconception Name length increase from 30 chars to 50 chars (#7148) * Fix #7019: Add skill_id to Misconception and replace tagged_misconception_id with tagged_skill_misconception_id in AnswerGroup (#7141) * Fix #7018: Display concept cards for failing skills at the end of review tests (#7102) * Fix #6576 and #6957 Frontend to set skill difficulty per skill in question creation. Also move skill ids to the payload (#7074) Code health * Fix part of #6240: Separate out revert commit test in ExplorationHistoryTab e2e test. (#7332) * Enforce semicolon for typescript files (#7324) * Fixes #6688: content of style tags in html are indented by 2 spaces (#7308) * Move lint checks to CircleCI (#7300) * Add env/ to .gitignore (#7299) * Fix #6962: Remove jinja interaction templates and integrate css file into webpack (#7286) * Fixes #7250: Change protractor screenshot (#7275) * Fix #7197: Address review comments from #7068 (#7269) * Change notification email for travis (#7242) * Fix part of #6271: Refactor update_page_contents_html and update_page_contents_audio #7202 (#7231) * Fix #7212: Address follow up comments from #7178. (#7230) * Fix part of #6387: Remove GLOBALS from admin page (#7186) * Migrating to CK5: PR2-Initialise CKeditor 5 (#7184) * Add Kevin to travis notifications (#7179) * Migrating to CK5: PR1-Rename the CK4 directives (#7175) * Fixes #7167: Move npm audit to pre submit hook (#7172) * Change source of htmllint-cli package (#7164) * Remove Bare Promises from the Frontend (#7155) * Output lcov for frontend coverage (#7152) * Fixes part of #6387: Remove default_twitter_share_message_editor and default_object_values from GLOBALS (#7149) * Fixes part of #6387: Remove tag_regex, invalid_parameter_names, show_trainable_unresolved_answers (#7140) * Fixes #6821: Fix frontend coverage (#7138) * Fix part of #6387: Remove GLOBALS from profile and collection_player (#7131) * Fix part of #5002 remove GCS_RESOURCE_BUCKET_NAME from GLOBALS (#7130) * Fixes #7010: Adds a linting check that ensures all TODO comments have a username with them (#7114) * Upgrade AngularJS Material (#7097) Development workflow * Revert PRs #7341 and #7293 to unbreak the build. (#7349) * Fix part of #6024 Consolidate searching for patterns in general (#7339) * Fix part of #6024 Consolidate searching for bad patterns (#7329) * Fix #6497: Pre-commit linter should fail hard when there are no files to be checked (#7328) * DOCKERFILE + karma changes for installation on Windows (#7313) * Fix #6766: Fix webpack hanging (#7311) * Fix #7249: Bound max memory used by YUI compressor. (#7282) * Add path to chrome under wsl (#7274) * Transfer codeownership from apb7 to kevinlee12 (#7236) * Add project label bullet to the PR checklist (#7235) * Adds temporary folder for checking ts files to gitignore (#7227) * Use driver explicitly in wait to fix flaky e2e failure (#7196) * Change commit hook permissions (#7181) * Generate separate coverage reports for frontend and backend (#7151) Updates to static pages * Serve more static pages using app.yaml (#7268) * Serve some dynamic pages using transclusion components (#7195) * Revert "Serve some dynamic pages using transclusion components" (#7190) * Serve Review_tests page using transclusion components (#7187) * Remove dependence on base.html from exploration editor page (#7134) * Serve some dynamic pages using transclusion components (#7068) Review system * Fix part of #6271: Refactor update_content and update_param_changes (#7202) Infrastructural changes * Upgrade more services to Angular 8 - V (#7352) * Fix part of #5914: Drafts & created lessons - Takeout (#7298) * Remove base controller from HTML tag to after Angular bootstrap and convert I18NFooter and Thanks to component directives. (#7283) * Modularize more pages. (#7261) * Fix part of #5914: User Roles & Rights - Takeout (#7260) * Remove oppia module export. (#7259) * Fix #7168 Remove requests package (#7238) * Update html validation jobs to produce exp_id in output (#7226) * Upgrade more services to Angular 8 - IV (#7223) * Fix part of #6975: Apply the new naming convention to directives/ directory (#7215) * Upgrade more services to Angular 8 - III (#7214) * Upgrade more services to Angular 8 - II (#7178) * Add vinitamurthi@ as owners for the questions project (#7163) * Fix #7087: Add log for "contains no units" SyntaxError (#7157) * Upgrade more services to Angular 8 (#7145) * Separates exploration model getters from exp_services (#7093) * Upgrade constants to Angular 8 (#7066) * Upgrade ExplorationFeaturesService to Angular 8 (#7065) Testing coverage * Remove files from coverage report and add final tests (#7314) * Fixes part of #6240: e2e test for reporting an exploration(additionalEditorAndPlayerFeatures.js). (#7297) * Fix part of #4057: Added unit tests for FatigueDetectionService. (#7232) * Fix part of #6550: Improve coverage of some files (#7173) * Fix part of #6550: Write tests for docstrings_checker and pylint_extensions (#7153) * Fix part of #6550: Write tests for stats_jobs_one_off (#7150) * Fix part of #6550: Write tests for build.py (#7133) * Fix part of #6550: Write tests for extensions/ and utils (#7113) * Fix #6853: Break each validation into its separate test function (#7073) * Fix part of #6550: Write tests for domain/exp_services and domain/exp_domain (#6844) v2.8.4 (26 Jul 2019) ------------------------ Bug fixes * Fix #7143: Removes imageFonts from MathJax (#7200) * Fix #7188: Resolve issues with learner dashboard and profile page (#7191) * Fix #7161: Removes expression evaluation braces from i18n translation-values (#7183) * Fix #7125: Fixed sidebar toggle in the splash page (#7162) * Fix #7126: Removes html validation and associated tests (#7144) * Fix #7127: Fix invalid html conversion process to avoid extra lines (#7128) * Fix #7120: Use app_dev.yaml for e2e test and performance test (#7123) * Add log for error during blob construction (#7108) * Add log for undefined interaction specs (#7107) * Fix backend tests on develop (#6977) * Fix #6777: Pressing R prompts microphone only in translation tab. (#6898) * Retrain classifier models if they are not available for previous version of exploration states (#6868) * Fix #1105: Fires 'redrawGraph' event on navigating to the editor (#7098) * Fix #7042: Change d3.event.translate to d3.event.transform (#7082) * Fix backend tests on develop (#7078) * Fixes #7047: Hides submit button if interactionId is null (#7070) * Fixes #5795: Adds null check and changes z-index value for "Restart From Beginning" button (#7060) * Feedback text overflow (#7054) Statistics * Adding a LearnerAnswerDetailsModel (#6815) Improvements to editors and players * Fix part of #5799: Feedback card object factory (#7076) * Frontend changes such that creator can enable/disable solicit answer details feature for a state (#6926) * Fix #6792: Adding Exploration Titles to Collection Landing Page (#6881) New structures * Fix #6348: Add functionality to start a practice session in the topic viewer (#7075) * Fix #7016: Separate review test to pass/fail mode and add score bar for each skill (#7050) * Remove frontend for question suggestions (#7029) * Fix #6779 and part of #6347: First draft of the results page (#6993) * Display review tests when viewing stories (#6987) * Record completion after completing a story node in the story viewer (#6973) * Fix part of #6346: Add a state service to record the users progress in the question player (for score calculation) (#6971) * Link multiple skills to one question and unify question list service (#6927) * [Milestone 1.1] Implement review test using question player (#6850) * Replace content_ids_to_audio_translations dict with RecordedVoiceovers object in topics and skills. (#6814) Infrastructural changes * Fix #6952: Adds a backend test to ensure that all storage models have audit jobs (#7101) * Introduction to Angular 8 (#7048) * Introduction to Angular 8. (#7027) * Fix #6887: Audit jobs and tests for user models and a new panel for prod jobs on admin tab (#7023) * Separate remaining constants into individual files. (#6996) * Audit jobs and tests for classifier, jobs, feedback and suggestion models (#6995) * Audit jobs and tests for question models (#6992) * Audit jobs and tests for skill models (#6991) * Audit jobs and tests for topic models (#6990) * Domain object changes for topic, skill, question models (#6989) * Separate constants in domain/ into individual files. (#6968) * Migrate remaining pages to component directives. (#6953) * Milestone 1.1, 1.2, 1.3: Add audit jobs and tests (#6857) * Fix part of #5914: UserStatsModel Takeout (#6825) * Fix part of #5914: UserSettingsModel and UserSubscriptionsModel Takeout (#6981) * Fixes part of #6271: Refactor question domain update to accept objects (#7024) Translations * Routine update of translations (#7069) Updates to static pages * Serve other dynamic pages using transclusion components (#7104) * Serve static pages from app.yaml (#6974) * Milestone 1.3, 1.4 Serve remaining static pages statically (#6934) Code health * Fix #5069: Remove $parent from codebase. (#7110) * Fixes #6950: Fix ck editor fileoverview (#7106) * Fix #7037: Add check for npm packages (#7051) * Upgrades node_modules @types definition of d3, google.visualization & selenium-webdriver (#6969) * Upgrades Angular static libraries (#6966) * Upgrades Requests (#6965) * Fixes part of #5002: Remove CSRF token from GLOBALS (#6951) * Upgrades hammer.js and waveSurferJs (#6941) * Upgrades code-mirror, browsermob-proxy and mouse-trap (#6940) * Upgrades isort webtest and pylint quotes (#6938) * Upgrades GAE Libraries (#6922) * Upgrades Angular-audio, Mutagen and MidiJs (#6912) * Migrating to Font-Awesome 5 (#6789) * Upgrades jasmine, karma-webpack, webdriver-manager, covergae, pygithub & webpack to their latest version (#6770) Development workflow * Fixes: Build error in develop (#7137) * Add clean to webpack config (#7112) * Make pre push hook executable (#7111) * Make pre-commit hook file executable (#7105) * Fixes #7079: Update lexical analysis to path analysis (#7096) * Fix #7033: introduce a wait into the e2e test, and change how refreshing is done in the editor tab. (#7094) * Introduce Code-Climate to maintain coverage (#7067) * Fixes #6736: Add pre-commit hook check for package-lock.json (#7059) * Fix browermobproxy version in pre-commit script (#7055) * Fix #6888: Run tests split by classes (#7040) * Fix part of #6732: Migrate interactions and classifiers to webpack (#6939) * Update CODEOWNERS file. (#7103) * Analytics Team Owner Handoff (#7077) * Add Sean as backup for vojtechjelinek (#7063) Testing coverage * Fix part of #6550: Write tests for cron.py (#7095) * Fix part of #6550: Write tests for controllers/reader.py (#7081) * Fix part of #6550: Write tests for admin.py (#7057) * Fix part of #6550: Write tests for core/jobs (#7006) * Fix part of #6550: Write tests for test_utils (#7003) * Fix part of #6550: Write tests for state_domain (#6999) * Fix part of #6550: Write tests for story_domain and story_services (#6983) * Fix part of #6550: Write tests for user_services (#6980) * Fix part of #6550: Write tests for feedback_services (#6978) * Fix part of #6550: Write tests for topic_services and gae_suite (#6976) * Fix part of #6550: Write tests for suggestion_services (#6970) * Fix part of #6550: Write tests for summary_services and topic_jobs_one_off (#6963) * Fix part of #6550: Write tests for domain/exp_jobs_one_off (#6946) * Fix part of #6550: Write tests for domain/suggestion_registry (#6937) * Fix part of #6550: Write tests for rights_manager, subtopic_page_domain and subtopic_page_services (#6936) * Fix part of #6550: Write tests for stats_domain and stats_services (#6925) * Fix part of #6550: Write tests for skill_domain and skill_services (#6896) * Fix part of #6550: Write tests for domain/html_validation_service.py (#6861) * Fix part of #6550: Write tests for controllers/topic_editor (#6761) * Fix part of #6550: Write tests for controllers/skill_editor and controllers/story_editor (#6750) * Fix part of #6550: Write tests for controllers/feedback.py (#6740) * Raise backend test coverage of review_test.py to 100% (#7014) v2.8.3 (3 Jun 2019) ------------------------ Bug fixes * Fix #7007: Allows adding proper tags for the exploration by replacing parent with ctrl (#7058) * Fix #6864: Fix console error in learner dashboard and empty suggestion modal (#7056) * Fix #7031: Add missing $ctrl (#7032) * Fix issues in collection pages (#6958) * Added log for #6158 (#6955) * Minor nit fixes (#6954) * Fix #6943: Fix code editor interaction issue in exploration player. (#6948) * Fix #6895: Fix feedback status selector not showing issue. (#6947) * Fix #6933: Fix modal and status issue in translation tab. (#6944) * Fix #6917: Adds dependency to topic editor (#6918) * Add log for null summaries (for #6157) (#6910) * Fix #6903: added required share link directive to exploration save service to force wrapping (#6908) * Fix #6897: fix issues with tile backgrounds and images (#6872) * Fix #6851: Revert "Remove {{BEFORE_END_HEAD_TAG_HOOK}} from Base.html (#6835)" (#6852) * Fix topic viewer 404 error (#6838) * Fix #6832: Fix issues with ctrl and $scope (#6836) * Add logging for #6702, #6604 (#6833) * Fix #6737: Remove state id mapping from the codebase (#6830) * Fix 500 error when downloading old exploration versions. (#6826) * Fix #6806: Regressions in the Oppia navbars (#6820) * Fix #6298: Adds a condition to check length of input response pairs (#6809) * Added log for issue #6478 (#6808) * Extended hover on about menu when any li child is hovered (#6801) * Fix #6785: Fix image upload issue (#6787) * Fix #6500: Removes console message if the querySegment length is longer (#6768) * Fix Array.fill() not a function stackdriver error using polyfill for IE (#6756) * Fix explorationHistoryTab e2e test issue in the develop branch (#6739) * Fix #6686: Added a validation check for the patterns/file mentioned in the suites of e2e tests. (#6716) * Fix #6582: Set Title to inherit the width of the parent (#6715) * Fix #6523: Invalidate Stats Cache for States when Interaction Type Changes (#6679) * Update pre_push_hook to run frontend test if .ts or .js file changes (#6677) * Fixes #6331: Do not allow user to add roles if title is not given. (#6625) Code health * Upgrades Requests (#6965) * Remove Before End Hook from base.html (#6880) * One off job to delete state ID mapping models from the datastore. (#6871) * Fix part of #5002: Remove isTopicManager and userIsLoggedIn (#6845) * Remove {{BEFORE_END_HEAD_TAG_HOOK}} from Base.html (#6835) * Upgrades uiSortable and jQuery (#6803) * Upgrades bleach and simplejson (#6797) * Fix Part of #6565: Make Exploration pages and Collection pages use pageTitleService (#6786) * Webpack introduction (#6324) Development workflow * Fix #6914: Remove unused setup code that is causing breakages on some systems. (#6942) * Fix #6678: Add test for ensuring usage of angular.mock.inject (#6924) * Fix #6799: Add restricted globals rule to eslint (#6923) * Fix part of #6732: Extensions objects webpack integration (#6889) * Fix #6884: Update license link in README. (#6886) * Fix part of #6732: Migrate visualizations to webpack (#6885) * Fix part of #6732: Migrate RTCs to webpack (#6882) * Reduce the time for a PR to be classified as stale (#6837) * Add bullet point about adding assignees (#6807) * Remove all browserstack-related statements from .travis.yml (#6800) * Resolve npm errors (and fix some pre-push hook issues as well). (#6769) * Speed webpack compilation (#6751) * Routine update of translations. (#6747) * Use pip_install command instead of vanilla pip install for PyGithub. (#6746) * Add webpack to codeowners (#6745) * Fixes creation of tmp folders while running lint (#6722) * Upgrade types/node dependency to 10.14.6. (#6721) * Revert package-lock.json in PR #6585 (#6711) * Changing License to Apache-2.0 (#6697) * Adds a check to track extra js files and removes local compiled js before each compilation (#6694) * Update pre push to halt if upstream is not set (#6675) * Fix release_info.py to stop picking cherrypicks from past releases in the changelog (#6669) * Full coverage for CODEOWNERS in the codebase. (#6616) * Fix #6449: Added check for CODEOWNERS to ensure that the most important rules are at the end. (#6560) * Fix #6364: Added file overview check. (#6451) Translations * Translation tab text and speed improvements. (#6709) * Fix #5627 : Stop recording should stop microphone and angular-recorder should be replaced. (#6708) New structures * Fix part of #6346: Pass skill descriptions to the question player (#6967) * Create a preliminary story viewer page (#6945) * Add linked_skill_ids to the Question model (#6929) * Add backward linkage of story to the topic it belongs. (#6855) * Fix a bug in the Question Player Directive (#6848) * Score Ring component for the results page in practice sessions (#6813) * Removed the ENABLE_NEW_STRUCTURE_EDITORS flag (#6780) * Fix part of #6346: Integrate Exploration player in Question player body (#6692) * Fix part of #6346: Initial check in for the Question Player Directive (#6620) Updates to static pages * Milestone 1.2 Serve more pages statically (#6874) * Fix #6794: Add landing page for negative numbers and refactor landing page. (#6846) * Serve get_started page statically (#6818) * Fix part of #6565: Make story_editor, topic_editor and topic_viewer use pageTitleService (#6742) Infrastructural changes * Move SuggestionModalService to services/ (#6935) * Clean up work on constants. (#6919) * Rename PretestEngineService to QuestionPlayerEngineService (#6913) * Migrate standalone controllers in pages to component directives. (#6907) * Separate constants into separate file per page (#6906) * Apply folders by feature to Learner Dashboard. (#6905) * Fix part of #6732: Migrate value_generators to webpack (#6900) * Apply folders by feature to Exploration Editor. (#6899) * Apply folders by feature to Exploration Player and Admin page (#6892) * Apply folders by feature to collection editor and topic editor. (#6890) * Apply folders by feature to moderate sized pages. (#6879) * Modify update_configs.py script to include constants.js as well. (#6877) * Apply folders by feature to lightweight pages. (#6876) * Apply folders by feature to components/forms/validators/ and split tests. (#6870) * Apply folders by features to remaining part of components/ folder. (#6869) * Apply folders by features to part of components/ folder (#6863) * Introduce Folders by Feature to filters/ folder. (#6860) * Eliminate controller files for suggestion modals (#6859) * Eliminate editor_tab.html to merge into exploration_editor_tab.html (#6858) * Convert Learner Local Nav and Leaner Local Info in ExplorationPlayer to component directives. (#6856) * Convert standalone controllers in Exploration Editor page to component directives (#6843) * Convert standalone controllers in LibraryFooter and ExplorationGraph to component directives (#6840) * Adding solicit_answer_details in the State class (#6810) * Add skip_files in third_party_size_check.py (#6796) * Fix a bug where the email header was incorrect. (#6795) * Generalized image storage (#6783) * Upgrades MathJax & MathJs (#6778) * Add comment for npm dedupe command. (#6775) * Add CollectionEditorStateService import in CollectionEditor.ts (#6753) * Convert directives in extensions to component directives (#6752) * Migrate controllers/directives in the pages directory to component directives (#6749) * Convert directives in components folder to component directives (#6728) * Add a oneoff job to clean up invalid UserSubscriptionsModel (#6720) * Remove exploration from subscribers when it's deleted (#6719) * Add validation for state id mappings. (#6680) * Fix #6043: Change state's content_ids_to_audio_translations to recorded_voiceovers (#6587) * Fix #6548: Convert the current per-exploration translator role to a voice-artist role. (#6566) Testing coverage * Fix backend tests on develop (#6878) * Fix backend tests on develop (#6875) * Fix part of #6550: Write tests for domain/topic_domain (#6873) * Fix part of #6550: Write tests for domain/question_services (#6854) * Fix part of #6550: Write tests for controllers/editor (#6849) * Fix part of #6550: Write tests for domain/user_jobs_one_off (#6842) * Fix part of #6550: Write tests for domain/collection_services (#6839) * Fix part of #6550: Write tests for domain/classifier_domain and domain/event_services (#6831) * Fix part of #4057: Add unit tests for lookupEnvs method of ExpressionSyntaxTreeService.ts (#6828) * Fix part of #6550: Write tests for controllers/suggestion (#6822) * Fix part of #6550: Write tests for collection_domain (#6819) * Fix part of #6550: Make coverage 100% for controllers/library (#6812) * Fix part of #6550: Write tests for storage base_model, statistics and pages.py (#6811) * Fix part of #6550: Write tests for classifier, collection, email, feedback and user storage gae_models (#6802) * Fix part of #6550: Write tests for gae_image_services and replaced PIL with Pillow (#6788) * Fix part of #6550: Write tests for controllers/acl_decorators (#6782) * Fix part of #6550: Write tests for controllers/collection_editor (#6764) * Fix part of #6550: Improve test coverage of core/controller/libary.py" to 92% (#6760) * Fix part of #6550: Write tests for controllers/email_dashboard (#6744) * Fix part of #6550: Write tests for collection_viewer and translator (#6741) * Fix part of #6550: Improve coverage for learner dashboard (#6729) * Fix #6572: Adds e2e test for written translation project (#6718) * Fix part of #6550: Write tests for core/controllers/profile.py (#6713) * Fix part of #6550: Improved coverage for controllers/base.py (#6712) * Fix part of #6550: Write backend tests for skill_jobs_one_off, story_jobs_one_off, user_query_jobs_one_off , value_generators_domain, and visualization_registry (#6710) * Fix part of #6550: Write backend tests for core/domain/param_domain.py and core/domain/search_services.py (#6664) * Fix part of #6550: Increased coverage for learner progress services (#6643) * Fix part of #6550: Write backend tests for core.controllers.moderator and core.controllers.question_editor_test (#6585) * Fix part of #5134: Improve coverage for creator_dashboard and gae_search_services (#6480) * Fix part of #6550: Adds 100% backend tests coverage for resources.py, topics_and_skills_dashboard.py, activity_jobs_one_off.py and classifier_services.py (#6602) Improvements to editors and players * Fix #6262: Constrain the width of the tooltip so that it fits the screen (instead of overflowing) (#6865) v2.8.2 (23 May 2019) ------------------------ Improvements to editors and players * Fix #6468: Fix the improper alignment of tick mark in the library page (#6552) * Fix #6200: Fix inconsistent spacing with the lists (#6554) * Fix #6542: Add card name to the title of the exploration feedback (#6580) * Fix #6623: Add title to sharing link icons (#6624) New structures * Modify topic viewer page and few UI changes on topic editor page (#6455) Bug fixes * Fix #6418: Add validation checks to avoid infinite loops explained in issue and comments (#6520) * Fix #3819: Fix strange dragging behaviour of play later list in learner dashboard (#6544) * Fix #6229: Reordering Hints and Worked Examples in Safari (#6547) * Fix #6561: Corrected the "About-->Get Involved" link on the top navigation bar (#6567) * Fix part of #6159: Fix revert exploration method (#6575) * Fix broken interaction previews in the exploration editor (#6627) * Fix lint issue by adding a space after colon (#6631) * Fix #6667: Renamed e2e test file to fix the issue. (#6668) Updates to static pages * Add NOTICE file, per Section 4(d) of the Apache license. (#6568) * Fix #6562: Removed G+ from the footer and Readme.md (#6569) * Fix #6581: Remove alternative versions of splash page (#6594) * Add a checkpoint to check for codeowners to the PR checklist (#6603) * Add a note regarding changelog labels to PR checklist (#6608) Translations * Add proper validation for written translations to allow translation in hinglish (#6588) Infrastructural changes * Migrate codebase to typescript (#6530) * Add a new one off job for validating production models. (#6541) * Fix part of #5914: Adds unimplemented extract_data method in the BaseModel (#6573) Code health * Fix part of #6387: Remove globals ALLOWED_INTERACTIONS_CATEGORIES (#6472) * Rename states_schema_version to state_schema_version. (#6589) * Fix part of #6565: Made error page and library page to use PageTitleService (#6595) * Update pylint to version 1.9.4 (#6626) * Update pycodestyle to version 2.5.0 (#6637) * Use package.json to install node modules; upgrade node module versions. (#6659) Development workflow * Adds codeowner to core.domain files (#6545) * Removing the timeout multiplier, to get in sync with linting files (#6559) * Fix part of #6555: Fix existing lint issues in develop branch (#6563) * Add removal of app.yaml version field to deploy script (#6564) * Fix release info script: fix imports, and sort PRs in descending order (#6607) * Moves lint test from CircleCI to Travis CI. (#6647) * Introduce `linter_utils` module (#6650) * Add a comment to explain setting of node path (#6681) Testing coverage * Fix part of #5134: Increase coverage from 82% to 100% for core.platform.email.gae_email_services.py (#6335) * Fix part of #6240: Add e2e test for adding user bio in preferences page (#6512) * Fix Part of #6240: Add e2e tests for editing exploration properties in coreEditorAndPlayerFeatures.js (#6557) * Fix part of #6550: Raise code coverage of core.storage.question.gae_models to 100% (#6558) * Fix part of #6550: Increase backend test coverage to 100% in multiple files. (#6648) v2.8.1 (26 April 2019) ------------------------ Improvements to editors and players * Fix #6285: Fixes issues while selecting an answer in the editor feedback tab. (#6532) * Fixed minor issue in story editor (#6529) * UI related to the written translation project. (#6503) * Add send mail functionality for reviewing topics (#6501) * Fix #2125: Fix alignment of Exploration Graph legend in history tab. (#6402) * Fix #5802, #5590: Introduce Playthrough Improvements Cards (#6400) * Fix #6370: Fix Title and Goal label alignment (#6372) * Fix #5530: Update collection title after save and refresh (#6362) * Fix #6322: Add IsProperSubsetOf to item-selection interaction (#6350) New structures * Support question difficulty per skill (#6502) * Fix #6377: Create Practice Sessions Page Skeleton (#6381) * Question Player Backend API Service (#6373) Translations * Fix #5921: Adds e2e test for uploading audio in translation tab (#6340) * Fix #6248 : Prevent guest and unauthorized users from drag-and-drop audio in translation tab. (#6304) * Fix part of #5898: Aria model with test case (#6290) * Add written translation property in skillContents and subtopic. (#6241) * Fix part of #5898: Added Google Analytics for translation tab (#6166) * Add proper validation for written translations to allow translation in hinglish. (#6588) Infrastructural changes * Fix release info script: fix imports, and sort PRs in descending order (#6607) * Add removal of app.yaml version field to deploy script. (#6564) * Fix the backend issues with some new structure models (#6514) * Change the name of the schema_version field in story models. (#6420) * Make new model IDs only contain alphanumeric characters. (#6408) * Update release script to use SSH Git URL instead of HTTPS (#6382) * Fix #6294: Upgrade BeautifulSoup version from 4.6.0 to 4.7.1 (#6355) * Fix part of #6343: Update js files to remove typescript compile errors (#6344) Bug fixes * Fix broken interaction previews in the exploration editor (#6627) * Fix part of #6159: Fix revert exploration method (#6575) * Fix few translation tab related issues. (#6571) * Fix #6538: Adds a proper title for landing pages. (#6539) * Fix #6181:Removed the exception which occured during clearing search index (#6518) * Fix issues with New Structures (#6506) * Fix #6383: Added regex to validate return_url in signup page (#6498) * Fix #6426: Added regex check for exploration id & nodes now can be saved with null exploration ids. (#6470) * Fix #6461: Changing error status for missing csrf_token from 500 to 401. (#6463) * Fix #6452: Fix server errors (#6454) * Fix #4931: Fixes frozen editor tour (#6450) * Fix #4632: Fixes learn again-continue button (#6448) * Fix #6206: Fix enlargement of text in RTE (#6447) * Fix #6436: Adds removeDuplicatesInArray filter in exploration_player. (#6437) * Fix #6414: REQUIRE_PAYLOAD_CSRF_CHECK Flag Flipped in Error404Handler class. (#6435) * Remove unwanted validation check and related tests from exploration. (#6407) * Fix #6205 : Disabled the reject button, enabled only when some review is entered. (#6384) * Fix #6325 : modify style of active and inactive submenus on learner dashboard (#6358) * Fix #6199: Hint tabs failed to open when active hint deleted (#6243) * Fix #2306: Fixes signup issue when a new tab is opened (#6235) Code health * Fix #6494: Added check for style properties to have a space between the colon and the property value. (#6516) * Fix part of #6387: Email constant fix (#6467) * Fix part of issue #6316: Remove some scripts from base.html which were not needed in it. (#6466) * Fix part of #6343: Adds custom type definitions (#6430) * Fix part of #6387: Remove globals from library.html and preferences.html (#6415) * Fix part of #5002: Removed iframed from GLOBALS (#6410) * Fix part of #5002: Remove logoutUrl from HTML (#6401) * Fix #6316: Refactor base.html (#6399) * Fix part of #5002: Moved SITE_FEEDBACK_FORM_URL from GLOBALS to constants.js. (#6365) * Fix part of #6254: Refactor for directives.js and filters.js (#6275) Development workflow * Fix #6534: make MR jobs runnable on localhost. (#6543) * Update pip and Skulpt installations for newer versions of Ubuntu (#6464) * Move lint tests to CircleCI from Travis (#6453) * Reorder CODEOWNERS to ensure that the most important rules are at the end. (#6438) * Add webhook links for Travis, CircleCI & Codecov (#6398) * Automate changelog generation in the release_info script (#6395) * Fix #6321: Added checks to validate patterns in CODEOWNERS file. (#6386) * Add option not to start browser window to start.sh (#6363) * Add issue template for server errors (#6308) * Add a script for updating indexes. Move gcloud functions into a separate module. (#6305) * Port back-end tests from Travis to CircleCI (#6234) * Fix #5426: Lint check to ensure that each Angular file contains exactly one service/directive/etc. inside it. (#6202) * Fix #6100 : Added verbose and non verbose mode in the pre submit check (#6146) Testing coverage * Fix part of #5134: Make test coverage of core.storage.exploration.gae_models 100% (#6540) * Fix part of #5134, more robust testing to schema_utils.py (#6432) * Fix part of #4057: Increase test coverage to 100% for HintObjectFactory.js and InteractionObjectFactory.js. (#6428) * Fix part of #5134: Make test coverage of core.controllers.collection_viewer 100% (#6427) * Add pending New Structures e2e tests (#6385) * Fix part of #5134 : Increasing the test coverage of subtopic_page_services.py from 64% to 100%. (#6360) * Fix part of #5134: Increased Coverage from 89% to 100% for core.domain.email_manager.py (#6306) * Add unit test for translation_tab/TranslationStatusService.js (#6261) v2.8.0 (30 March 2019) ------------------------ New structures * Fixed the backend issues with some new structure models (#6514) * Fixed issues with New Structures (#6506) * Support question difficulty per skill (#6502) * Added subtopic_viewer (SubtopicPageDataHandler), which returns page contents for a subtopic. (#6327) * Fixed issues from intuitiveness testing on New Structures (#6314) * Added story viewer backend handler (#6237) * Updated the topic backend handler (#6185) Improvements to editors and players * Replace google-map with openStreetMap in map interaction. (#6309) * Fix #2584: Replace default text while inserting links with placeholder (#6286) Translations * Adds written translations domain object in frontend for state and question. (#6320) * Fixes #5784: unhandled promise in the ng-audio library. (#6280) * Adds written translation property in skillContents and subtopic. (#6241) * Added active content id service to fix translation tab issues. (#6211) * Fix #4278: Re-introduce 3-letter language codes for explorations and collections. (#6182) * Adds functionality to internally manage to add and delete content ids into assets dict. (#6171) * Translation Script: Adds TranslationScript and ContentTranslation object in state domain. (#6121) * Fix #5572: added translation help explaining translation features (#5796) Bug fixes * Fix #6426: Added regex check for exploration id & nodes now can be saved with null exploration ids. (#6470) * Fix #6436: Adds removeDuplicatesInArray filter in exploration_player. (#6437) * Fix #6205: Disabled the reject button, enabled only when some review is entered. (#6384) * Fix #6301: fixes Dev-mode label showing up for a brief amount of time on page load. (#6356) * Fix #6174: Address 'Promise is undefined' server error. (#6281) * Fix #6214: Audio bar hides for auto-generated audio (#6265) * Fix #6244: Fixing the cancel button in hint editor (#6250) * Fix #2306: Fixes signup issue when a new tab is opened (#6235) * Fix #5508: Feedback threads in feedback tab reorder now in real time. (#6183) * Fix #5487: Fix load issue with multiple same images (#6170) * Fix #6140: Learner answer overflow (#6154) * Fix #6111: Aligned checkmarks on learner's dashboard (#6147) * Fix part of #4231: Make the add response modal scroll visible at all times, via css (#6116) * Refactor for suggestion modal display (#6093) Code health * Moved state related components in a separate dir. (#6334) * Fixes #6316: Refactor base.html (#6319) * Fixes #6226: Moves generating CKEditor widgets from app.js to separate file. (#6288) * Delete old one-off jobs. (#6283) * Fix part of #6254: Refactor for directives.js and filters.js (#6275) * Removing scripts and include statements for popovers (#6270) * Fix #6194: Remove extraneous file. (#6196) Development workflow * Update pip and Skulpt installations for newer versions of Ubuntu (#6464) * Fix frontend tests failing occasionally. (#6371) * Adds QA team as a codeowner for test files. (#6352) * Adds codeowners related to frontend pages. (#6332) * Run lint tests on Travis until fixed on CircleCI (#6328) * Add issue template for server errors (#6308) * Add a script for updating indexes. Move gcloud functions into a separate module. (#6305) * Update deployment script to check for indexes in advance. (#6300) * Fix #6282: Run front-end tests in pre-push hook, only if changes are made in JS files. (#6289) * Add some additional pre-release checks. (#6284) * Fix CODEOWNER wrong dir issue. (#6277) * Adds code-owners for teams/projects. (#6266) * Fixes #6233 : Improved the error message for match line breaks controller (#6246) * Port back-end tests from Travis to CircleCI (#6234) * Fix part of #5476: Add checks to detect spaces in docstring (#6231) * Fix #5465: Added check for prohibited imports (#6180) * Fix part of #5939: Custom pylint extension for checking single character files and newline characters. (#6172) * Fix #6103: Add summary of errors for lint checks on Travis (#6165) * Fix #6004: Added a presubmit check to ensure imports of JS files are sorted (#6125) Infrastructural changes * Change the name of the schema_version field in story models. (#6420) * Make new model IDs only contain alphanumeric characters. (#6408) * Generalized landing page based on subject and topic. (#6357) * Remove google forum link. (#6333) * Correct comment string in UserSubscriptionsModel (#6310) * Adds codeowners for other projects. (#6287) * Fix part of #6254: Refactor to implement rule of 1 (#6267) * Fix #6251: Add basic typescript configuration (#6256) * Fix #6210: Added an exploration whitelist (#6255) * One off job to validate exploration migration can be carried out successfully. (#6249) * Fix #6213: Add application_readable to directive htmls handler (#6216) * Remove Open Sans and Rubik fonts (#6208) * Update app.yaml to improve caching (#6184) * Translation Script: Exploration migration including services for handling translation script. (#6175) * Fix part of #5002: Remove promo bar from globals (#6169) Testing coverage * Added pending New Structures e2e tests (#6385) * New Structures e2e tests (#6315) * Fix part of #5134: learner_playlist_services - fix grammar and whitespace (#6291) * Fix part of #5134: 100% coverage for core.platform.models (#6263) * Fix part of #4057 Make PlayerPositionService.js 100% test coverage (#6258) * Fix part of #5134: Increased coverage to 100% for question_editor (#6217) * Added topics and skills dashboard e2e tests (#6204) * Fix part of #5134: Increased coverage to 100% for mailgun_email_services.py (#6133) * Fix #5134: Improve coverage to 89% by implementing anonymous feedback (#6086) * Fix part of #5134: Added test for exp one off jobs (#5972) * Fix part of #5134: Added test for core.storage.file.gae_models (#5960) v2.7.3 (16 February 2019) ------------------------ Infrastructural changes * Improvements to PlaythroughAudit (#6239) * Add None/deleted checks to DeleteIllegalPlaythroughsOneOffJob (#6195) * Fix Content-Disposition headers being unicode instead of str (#6192) * Fix check for clean working tree in common.py (#6191) * Fix #4666: Fixes correctness test for Text Input Prediction Service (#6120) * Fix #5975: Create One-off Job to Remove Invalid Playthroughs (#6131) * Fix #5371: One Off Job to populate message_count in GeneralFeedbackThreadModel (#5999) * Fix #6104: Use sub-process in pre_push_hook (#6114) * Fix part of #5591: Migrate Playthrough Feature Data into ExplorationFeaturesService (#6044) * Fix part of #5002: Move ALLOW_YAML_FILE_UPLOAD from feconf to constants (#5989) * Fix part of #5002: Remove GLOBALS from HTML (#6050) * Add audio translation schema for subtopic pages (#5823) * Remove automatic backups script. (#5956) * Fix classifier models when exploration is reverted and add test case for auto migrations (#5888) Improvements to the editors and players * Fix #6188: Fix word-break in explorations (#6187) * Changed word-break to word-wrap (#6189) * Fix #5745: Redesign audio bar of the translation tab. (#6167) * Fix #5822: Add customization option to allow multiple sort items in the same position in Drag and drop interaction (#6177) * UI changes to topic and skill editor (#6091) * Fix #5019: The continue button is now visible with long feedback (#6136) * Fix #6122: Add $log service to prevent the error arising on rejecting suggestions (#6124) * Fix #4407: KaTeX text no longer goes outside text container in MathExpressionInput (#6130) * Fix #4833: Prevents text overflow in answer statistics page (#6137) * Fix #6078: Updating publish button after modal is dismissed (#6096) * Fix #5729: Adds a numerical progress status in the translation tab (#6097) * Fix #6055: Prevents content overflow in save draft modal (#6079) * Fix #5771: Ensure that the active tab of translation tab is maintained every time save draft/publish changes is clicked (#6076) * Fix #3074: Added height limit warning for card content (#5997) * Fix bugs in new structure editors (#6084) * Fix #6064: Changes backdrop controls to static for exploration publish modal (#6071) Improvements to testing suites * Reorder e2e test suites into more logical categorization (#6036) * Fix part of #5134: Adding tests for core.domain.collection_jobs_one_off (#6061) * Fix part of #4057: Adding tests to increase coverage of OutcomeObjectFactory.js (#6098) * Fix part of #5134: Making the coverage of email_jobs_one_off to 100% (#6026) * Fix #5839: Filter slow network logs for mobile tests on Browserstack (#6090) * Fix #5923: Refactoring and clean up backend tests (#6074) * Fix part of #5134: Added test for fs_domain.py (#5988) * Fix #4829: Reduce code redundancy in backend testing (#5838) * Fixes error in backend tests redirection when trying to test a specific module within a test file (#6054) Documentation and development workflow * Fixes part of #4374: Update docstrings in the python backend code (#6028) * Enable missing docstrings check (#6073) Miscellaneous bug fixes and updates * Fix #6128: Successfully load mobile view in '/parents' page (#6259) * Fix #6118: Improved spacing between reload buttons on admin page (#6123) * Fix #6089: Moved common css to oppia.css and removed extra comments for sync (#6107) * Fix #6117: The Role tab tooltip on the admin page is now placed correctly (#6119) * Fix #5678: Add swipeable carousel to Library page in mobile view (#6087) * Fix #5751: Remove G+ from the sharing icons. (#6058) * Fix #6056: Makes the resize of text box vertical (#6057) * Routine update to translations. (#6164) v2.7.2 (14 January 2019) ------------------------ Updates to landing pages * Small landing page changes based on feedback from Kefeh (#5951) * Fix #5978: Stewards page content alignment (#6042) Analytics for creators * Hide playthrough issues on exploration editor stats tab if exploration isn't whitelisted (#5947) * Fixes #5860: Fix fraction display in statistics tab (#5976) * Rename playthrough-related issues services/directives/factories (#5990) * Fix #5798: Introduce Improvements tab to exploration editor (#5991) * Introduce FetchPlaythroughWhitelistHandler (#5966) Generalized review system * Fix #4995: Remove complex logic from the storage layer, and add domain/service layer for emails (#5940) * Fix error while displaying suggestion threads on learner dashboard page (#5965) Development workflow * Fix #5761: --test_target flag redirects to the corresponding test file if needed (#6014) * Fix #5885: Only run front end tests when front end files are changed (#5936) * Fix #5782: Added custom check to remove backslash continuation (#5964) * Fix #5529: Print python lint errors at the end of the check (#6005) * Add try/except block in pre-commit linter (#6019) * Enforce variables to be in snake case (#5943) * Fix #5876: Check that cls arguments come first in function args (#5919) * Fix part of #6024: Consolidate file access in the pre-commit linter (#6023) * Fix #5938: Lint checks should run only for files changed by the user (#6033) * Introduce eslint: space-before-blocks rule (#6048) * Fix max-len error (#5994) * Fix false positive Travis build in pre-commit linter (#6002) * Fix #6040: Fix issues in develop which led to lint test failures (#6038) New structures * Implement editing of questions (#5614) * Allow admins to assign topic managers to topics (#5971) * Split ENABLE_NEW_STRUCTURES flag to 2 flags for editors and players (#5987) Test coverage * Fix part of #5134: Add more tests to increase coverage of core.controllers.classifier (#5926) * Fix part of #5134: Add tests for core.controllers.custom_landing_pages. (#5925) * Fix part of #5134: Add core.platform.models tests (#5944) Code health and documentation * Upgrade pylint to 1.9.3 and fix some docstring issues (#5935) * Fix code duplication in ExplorationPlayerStateService (#6000) * Fix #4968: Move customization args method from state_domain to customization_args_util (#6015) * Fix parts of #4374: Add docstrings to Python files. (#5928, #5969, #5977, #6006, #6013, #6027, #6035, #6041) Improvements to editor features * Fix #5933: Changed code editor prompt in test exploration to be more explicit (#5941) * Fix #5853: Remove weird image artifact in rich-text editor (#5954) * Fix #5039: Add continue button in preview mode (#5962) * Fix #5949: Make RTE spacing uniform (#5953) * Fix #5701: Alert user to save changes before publishing (#5948) * Fix #5980: Make line-spacing consistent within a paragraph (#5981) * Add questions list tab and create question functionality to skill editor (#5920) * Fix #5973: Fix the changed space when the text is added just below the image (#5996) * Fix #5982: Fix modal overflow issue by using word-break property (#5983) * Fix #3972: Fix the faulty vertical offset (#6030) * Fix #6016: Limited the selection area of multiple choice option (#6029) * Fix #6056: Prevent the text box in the Save Draft modal from flowing out of the modal boundaries (#6057) * Fix #6064: Change backdrop controls to static for exploratoin publication modal (#6071) Updates to the library and splash pages * Fix #4936: The drop down menus work similar to the keyboard behavior for the About and Profile dropdowns (#5974) * Fix #3972: Fix the faulty vertical offset (#6030) * Fix #5755: Add padding to cards to fix alignment issue on mobile view (#5968) Infrastructure changes * Fix part of #3950: Remove Jinja ifs from exploration_player.html (#5958) * Fix part of #3950: Remove Jinja ifs from collection player (#5869) * Add more debugging info to help identify cause of undefined states (#5827) * Fix part of #5002: Remove NAV_MODE from side navigation bar (#6008) v2.7.1 (20 December 2018) ------------------------- Updates to landing pages: * Updates to the text on the stewards page. (#5912) * Add landing page for parents and teachers. (#5905) Development workflow: * Fix #5466: Added check to enforce that all name of controllers end with "Handler" or "Page" (#5878) * Fix part of #5476: Enforce docstring arg order (#5844) * Fix #5843: Changes _check_comment to check for spaces and capitals (#5852) * Fix #5809: Add check to match line breaks in controller dependencies (#5833) * Fix docstrings tests, Swapped if blocks for _check_docstrings (#5752) * Remove mobile tests env var for PR builds and add a job for it (#5835) * Update bug_report.md (#5866) * Fix #5896: Set threads' daemon property to False (#5897) New Structures: * Add paging for questions in topic editor and story editor modifications (#5892) * UI modifications to story editor. (#5724) * Add functionality to Publish stories (#5709) * Revert some changes in #5810. (#5841) Improving test coverage: * Fix #5861: Updated Test for Email Truncation (#5915) * Fix part of #5134: Added missing tests for question domain. (#5887) * Fix part of #5134: Added backend tests for `core.domain.learner_progress_domain` (#5859) * Fix part of #5134: Backend test for core.controllers.tasks (#5840) * Fix #5787: Add a unit test to check blob type for uploaded audio. (#5858) Code health and documentation: * Added comment to Image Uploader fix (#5895) * Fix part of #4374: Add docstrings to python files (#5871) * Some follow-up fixes to style issues in #5730. (#5842) * Added missing docstrings in scripts/common.py and scripts/docstrings_checker.py (#5870) * Added missing docstrings in scripts/build.py (#5808) * Fix part of #4374: Add docstrings to the python files. (#5849) * Added docstring for clamp method and simplified usage. (#5834) Improvements to editor features * Fix #3691: Implements email functionality for failed ML training job (#5902) * Fix #5606: Logic Proof Truncation and Display (#5864) * Change 'compliment' feedback to use a green background colour. (#5865) * Fix #5746: Added saving log and disabled buttons while saving (#5764) * Fix #5777: Add statename in translation tab (#5830) * Fix #5821: Adjust placement of accessibility tooltips in the exploration editor. (#5824) Updates to the library and splash pages * Fix #5907: Increase width of search input box such that whole text is visible (#5910) * Swap the order of the browse/create buttons on the splash page. (#5828) Infrastructure changes * Consolidate image and audio handlers to use one AssetDevHandler that handles all assets (#5857) * Fix part of #3950: Remove Jinja ifs from collection player (#5869) * Add more debugging info to help identify cause of undefined states (#5827) v2.7.0 (29 November 2018) ------------------------- Bug fixes: * Fix video on fractions landing (#5906) * Fix profile picture modal not showing picture when we add it again after discard it (#5891) * Fix #5862: fixes preferred audio language doesn't display options in preferences page. (#5882) * Added automaticTextToSpeech check for audio bar. (#5880) * Added a "_directive" suffix to "view_suggestion_edit_exploration_state_content_modal.html" file. (#5848) * Fix #5814: Double edit button in exploration player navbar (#5815) * Remove code duplication for calculating answer choices (#5779) New structures: * Remove skills from a topic (#5804) * URL decode topic name using urllib.unquote_plus (#5810) * Add field canonical_name for Topic and TopicSummary (#5775) * Add audio translation schema for concept card (#5677) * Fix #5052: Create one-off schema migration jobs for topics, skills, questions and stories (#5660) * Fix #5671: Create success message toasts for topics and skills (#5705) * Fix #5712: Display an appropriate message when creating questions in topic editor with no skills (#5736) Infrastructure: * Fix #5310: Added a size check to third party folder to prevent breaching the 10k files limit on AppEngine (#5743) * Fix #4973: Add minify_only option to build.py (#5758) * Fix #5713: Change asset handler url to make it clearer that it's used in dev mode (#5721) Developer workflow and code health: * Fix part of #4374: Add docstrings to the Python files. (#5734) * Fix part of #5002: Move user related variables form GLOBALS (#5659) * Fix part of #5529: print CSS and JS lint check error messages at the end of the check (#5748) * Fix part of #4374: Add acl decorator docstrings (#5803) * Fix #5243: Set ignore_whitespace to true in .isort.cfg (#5789) * Fix part of #4057: Remove TriggerObjectFactory code (#5770) * Fix part of #5134: Added AnswerSubmittedEventHandlerTest (#5778) * Fix part of #4374: Added missing docstrings to scripts (#5723) * Fix part of #5134: Improve test coverage of core.controllers.topics_and_skills_dashboard (#5741) * Fix part of #5134: Improve test coverage of core.controllers.concept_card_viewer (#5762) * Fix part of #5134: Improve test coverage of core.controllers.topic_viewer (#5742) * Fix typo in constants.py (#5754) * Fix part of #4374: Add docstrings for docstring_checker (#5744) * Fix part of #4374: Add docstrings for main.py (#5704) Investigation work: * Add more debugging info to help identify cause of undefined states (#5827) Miscellaneous: * Fixes #5687: Allow resubmission of rejected suggestions. (#5730) * Fix #5553: Enable audio translations for Safari (#5780) * Fix broken SkillMigrationOneOffJobTest (#5781) v2.6.9 (30 Oct 2018) -------------------- Bug fixes: * Fixes prod bug by preventing populating old_content value of suggestion when state doesn't exist (#5772) * Fix #5691: Fix bug in translation tab resulting from answer choices not being calculated for the short answer summaries (#5756) * Fix #5749: Incorrect get-involved link (#5750) * Fix #5688: Added users to user condition if only 1 user has reviewed an exploration (#5708) New structures: * Filter skills (#5635) * UI and controller to add functionality to merge untriaged skills (#5632) Infrastructure: * Add deployment of export service to deploy.py (#5773) * Fix Karma test to use older version of URL. * Fix erroneous image path in production. (#5788) * Fix broken image region #5765 (#5768) * Throttle error reporting to at most once every 5 seconds. (#5767) * Fix deployment script to update DEV_MODE value which is now read from constants.js instead of feconf.py. (#5763) Developer workflow and code clean-up: * (Dead code) Remove check 'topic is None', which is already covered by core.domain.acl_decorators.can_access_topic_viewer_page (#5737) * Fix part of #4374: Added docstrings to scripts.cut_release_branch and scripts.pylint_extensions (#5728) * Fix part of #4374: Update docstrings in the python backend code (#5680) * Fix part of #5134: Add tests to core_storage_story (#5644) * Add CSS lint rules: Space before curly braces for HTML files (#5732) * Added test to core.storage.topic.gae_models (#5727) * Extract extensionTagAssemblerService and siteAnalyticsService from app.js - Issue 3826 (#5711) * Space before and after CSS classes's curly braces (#5725) * Add additional instructions for prefixing PR title for partial fixes (#5718) v2.6.8 (2 Oct 2018) ------------------- Bug fixes: * Fix persistent answer even after submit bug (#5696) * Add sitemap and remove i18n from title. (#5647) * Added one off job and validation job to populate last_updated field. (#5681) * Cleanup for the feedback framework (#5631) * Fix #5600: correctly align the translation progress label in Firefox (#5622) * Update Teach with Oppia form link. (#5619) * Only Force Answer Resolution for Whitelisted Interaction IDs (#5626) * Remove unnecessary interpolation in logic proof answer display. (#5604) * URL fix for topic viewer page (#5602) * Fix #4893 The navigation bar in portfolio page is now clearly visible in 612 to 1050px screens. (#5588) * Fix unicode errors in VerifyAllUrlsMatchGcsIdRegexJob which make it (#5598) * Fix #4978 : change JSON response on user not logged in (#5589) * Fix demo exploration--- Modelling_graphs, Solar System, Test_interactions, All_interactions, Three balls, binary_Search (#5543) * Added the exceptions in the copytodirectoryJob (#5560) * Fix #5535: Share buttons on info card (#5540) Development workflow and build process improvements * Start selenium server using a specific chromedriver (#5648) * Run travis builds on release branches (#5645) * Fix #5620: Add check for git conflict markers (#5624) * Build process refactorization + increasing coverage for build.py (#5580) * Fix creator dashboard tests. (#5579) * Moved git related files in .github directory (#5519) Testing and documentation: * Remaining backend tests for jinja_utils (#5582) * Fix part of #4374 : Update docstrings in the python backend code (#5593) * Fix #5134: Write backend tests for core.storage.skill.gae_models (#5599) * Backend tests for core.platform.users.gae_current_user_services (#5563) * Fix part of #5134: Add test for core.storage.config.gae_models (#5565) * Fix #5134: Write backend tests for core.storage.exploration.gae_models (#5552) * Fix #4830: Create and use delete_json in tests (#5568) * Add test class for gae_app_identity_services (#5439) * Fix part of #5134 Backend test for audit models (#5512) * Fix #5134: Write backend tests for core.storage.controllers.recent_commits_test (#5551) * Forbidding browser.sleep by adding lint rule and fixing an e2e flake in editorFeatures (#5536) Infrastructure improvements * Removed unwanted file and added css in state translation (#5658) * Introduce IssuesService (#5630) * Add some additional headers to all pages for privacy/security. (#5596) * Deduplicate skill migrate questions (#5376) * Fix #4386: Implement a CurrentInteractionService (#5440) * Add skill deletion. (#5375) * Added StoryProgressModel (#5396) * Fully remove state-id-mapping flag. (#5562) * Refactor exploration player: Cleaned up the engine services (#5533) * Create Topic Viewer Page. (#5323) * Fix #5256: Separate validation and parsing from directive scope check function (#5541) * Fixes #5402: State domain refactor (#5505) * Removed the ValidationOfImagesOnGCSJob (#5538) * Fix dependency ordering, and prevent questions from showing up on the common suggestions view (#5531) * Question suggestions UI (#5486) * Remove Dead Changes (#5528) * Generalised Review System: Common suggestion view (#5419) * Add functionality for pretests to explorations in a story. (#5479) * Fixed #5425: Redesign fractions landing page (#5527) Miscellaneous * "Update version number to 2.6.8" * Routine update to translations. (#5608) * Add apb7 and seanlip as codeowners for core/tests and scripts directory (#5578) v2.6.7 (3 Sep 2018) ------------------- Rich-text editor * Add one-off job to validate customization args for rich text components (#5362) * Removed extra blank lines in RTE (#5401) * Removed previews for rich text components (#5352) * Removed indentblock to allow indentation only for list elements (#5318) * Remove the text that comes when cursor is moved over editor (#5288) * Fixed issues that popped up due to migration to CKEditor (#5255) * Added CKEditor as current RTE and conversion function (#5229) * Fix issue #5423 (#5424) Statistics * Permamently flip ENABLE_STATE_ID_MAPPING to true (#5523). * Disable modify training data button until ML is enabled. (#5328) * Convert all floating point numbers back to float from strings in received classifier data (#5291) * Fix cast and improve output messages in stats job. (#5312) * Allow machine learning classification in editor preview mode of exploration (#5239) New structures * Suggestions for questions part 1: Backend domain class and controllers (#5361) * Create reusable question editor directive: Part 2 (#5406) * Create reusable question editor directive: Part 1 (#5367) * Replace jinja with directives in state_editor.html (#5353) * Create question editor (Part 2): Created backend controllers (#5321) * Dedup skill schema changes (#5283) * Added concept card viewer in the exploration player (#5265) * Add skill rights and unpublished skills (#5277) * Create question editor (Part 1): Added frontend domain objects (#5309) * Modified the questions backend (#5293) * Tag prerequisite skill to answer group (#5238) * Added untriaged skills section to the topics and skills dashboard (#5219) Image pipeline * Misc fixes to image GAE/GCS migration (#5609) * Fix unicode errors in VerifyAllUrlsMatchGcsIdRegexJob which make it (#5598) * Fix remaining issues in migration job. (#5595) * Fixes to CopyToNewDirectoryJob (#5594) * Encode the filename by utf-8 (#5584) * Added the exceptions (#5560) * Corrected an error in html_validation_service.py (#5534) * Fix issue in html_validation_service (#5522) * Corrected the FILE_ID_MODEL regex to support deletion of images from datastore. (#5521) * Implement exploration migration to update image references. (#5509) * Shifting images/audio to the new exploration folder, which involves compressing and renaming the images as well. (#5490) * Fix: #5407 changed to click to reload image (#5449) * Removed the ENABLE_GCS_STORAGE_FLAG, and add develop condition for PIL in appengine_config (#5492) * Added the PR for the Mac os troubleshoot and inside gae_suite.py in test (#5480) * Delete image from gae (#5393) * Create compressed versions of images. (#5450) * Fixes ImageDataMigration JOB (#5405) * Fixes the comments in ImageDataMigration PR (#5271) * Fixes #5209 Removing preloading completely from preview mode. (#5237) Development workflow * Fix part of #5399: Comparing MD5 hash to prevent unnecessary files rebuilding (#5468) * Change print check regexp (#5474) * Fix #5106: Changed startup script to open browser after starting server (#5431) * Improving the dev workflow: Setup browserstack, add necessary configuration files and tests for mobile (#5340) * Get rid of TEMPLATE_DIR_PREFIX and ASSET_DIR_PREFIX (#5397) * Fix #5337: Parallelize build minification (#5379) * Add comment to .travis.yml (#5383) * Attempt to fix Chrome on Travis (#5382) * Fix #5004: Modify keyword arguments checker (#5305) * Improving the dev workflow: Add check for double quotes for values of attributes of html tags (#5246) * Improving the dev workflow: Enable indent rule for CSS (#5242) * Fix part of #3905: Add check to match line breaks between stringfied dependencies and controller function parameters (#5225) * Add forceLocal argument to browserstack local instance (#5435) Interactions * Fixed code editor issue (#5615) * Fix #5494: Fix second item selection issue in CKEditor for Drag and drop interaction. (#5513) * Fix #5280: Fix auto-scrolling mechanism in Drag and drop sorting interaction. (#5499) * Fix hola exploration (#5498) * Add ui-tree to app.js (#5473) * Enable drag and drop sorting interaction. (#5429) * Fix #5172: TextInput learner response display should preserve line breaks (#5430) * Drag and drop interaction: Milestone 3.2 (#5338) * Fix #5301: Disabled required spacing in the currency units in Number with Units interaction (#5320) * Fix #5253: Fixed hiding of Continue button when correctness footer is present (#5276) * Drag and drop interaction: Milestone 2.3 (#5162) * Adding pip cache directory (#5281) Generalised review system * Bug fixes for the feedback framework (#5467) * Generalised Review System, complete email functionality (#5387) * Carry forward last updated and created on fields to the new models (#5495) * Generalised Review System - Email notification functionality (#5245) * Remove invalid status codes (#5460) * Fix ordering of suggestions on feedback tab. (#5404) * Generalised review system - Feedback thread generalisation (#5235) * Generalised review system: Milestone 2 - Changes to permissions of users who can review suggestions (#5170) * Fix suggestions subject not displayed (#5273) * Generalised Review System - A generalised function to query suggestions (#5164) * Fix build (#5269) * Generalised Review System Milestone 2: Cron job to automatically accept suggestions after a threshold (#5155) * Fix a backend test after switching the flag (#5206) Translation dashboard * Fix #5558: Fixed translator email functionality. (#5559) * Milestone 3.5: Lesson translation dashboard. (#5506) * Milestone 3.4: Lesson translation dashboard. (#5483) * Milestone 3.1 & 3.2: Lesson Translation Dashboard. (#5378) * Milestone 2.5: Lesson Translation Dashboard (#5279) * Removes audio translation editor from editor tab and enables translation tab. (#5413) * Milestone 2.4: Lesson translation dashboard (#5210) * Fixed publish button (#5227) Playthroughs and issues * Added recorder config (#5496) * Playthrough Visualisation: Milestone 3.2 (Part 6) (#5428) * Playthrough Visualisation: Milestone 3.2 (Part 4) (#5421) * Playthrough Visualisation: Milestone 3.2 (Part 5) (#5422) * Playthrough Visualisation: Milestone 3.2 (Part 3) (#5373) * Playthrough Visualisation: Milestone 3.1 (#5167) * Playthrough Visualisation: Milestone 3.2 (Part 2) (#5364) * Unique session IDs for starts and quits (#5392) * Fix errors in the RegenerateMissingStatsModelsOneOffJob. (#5388) * Handle incoming None version events (#5372) * More fixes to stats jobs from running on test server. (#5366) * Handle exploration reverts for ExplorationStatsModel (#5356) * Fix exploration ID field bug (#5360) * Add CSS for Hexagon (#5168) * Fix variable declaration error (#5351) * Fix #5274: Open modal window only once (#5346) * Fix playthroughs bug (#5339) Bug fixes * Remove unnecessary dependency. (#5610) * Added volume to the speechUtterance (#5561) * Fix #5535: Share buttons on info card (#5540) * Fixed borders around feedback headers (#5532) * No object assign (#5444) * Fix #5386: start.sh produces an error when using VirtualBox "no method available for opening 'http://localhost8181/'" (#5391) * Fixes #5299: Reduce font-weight to render consistently across browsers (#5331) * Fix #5287: Deletes feedback content id while deleting interaction. (#5294) * Remove some files that were skipped and caused math expression input to break. (#5284) * Fixing PieChartDirective console error (#5282) * Fixating position of preview tab's reset button to bottom right corner. (#5272) * Fixing Fraction Input weird padding. (#5267) * Fix #5071: Replace closeSubmenu with closeSubmenuIfNotMobile to make dropdown menu work (#5261) * Stop submit button for MultipleChoiceInput from firing ng-click twice (#5266) * Replacing Youtube video link (#5264) * Updated last update coloumn (#5564) Miscellaneous * Add Code of Conduct (#5475) * Replaced Static images with Font awesome (#5443) * Address some learner view errors found in production. (#5459) * Display Cards with many Unresolved Answers (#5442) * Fix #5398: remove UrlInterpolationService's whitelist check. (#5410) * Only log when versions are actually regenerated. (#5394) * Caching Chrome to prevent test timing out by Travis failing to download Chrome. (#5385) * Readme updated. (#5384) * Production fixes for the stats job. (#5377) * Routine update of translations (#5359) * Remove unused test_util_jobs.py file. (#5358) * Remove unused feconf constants (#5350) * Fix #5336: Added brackets to valid url characters (#5354) * Refactor the delete-state-callback test. (#5349) * Manually Construct URL (#5345) * Fixes #5298: Add Oppia Foundation to sidebar (#5332) * Fix part of #5002: Get rid of profilePictureDataUrl global (#5290) * Downloading file(s) dependency instead of entire Github folder. (#5313) * Add codeownership control for html_cleaner.py (#5327) * Add Vojta and Viet as code owners for manifest.json. (#5306) * Fixes #5260: Unable to type anything in the Math expression input box in mobile (#5289) * Fix #4838: Ternary operator scope creation (#5262) * Extensions: Removing unconsumed console error entries (#5250) * Remove app.js from excluded_files (#5248) * Adding pip cache to Travis config. (#5244) * Only append to the general error log for non-404 errors. (#5241) * Downgrade 404 logs to warnings. (#5233) * Update deploy script. (#5231) Testing, documentation, and code health * Fix part of #5134 Backend test for collection models (#5357) * core.platform.taskqueue.gae_taskqueue_services: Add tests (#5451) * Refactor exploration player (#5437) * Fixed backend test fail issue (#5448) * Fix part of #5134: Add test for core.domain.calculation_registry (#5381) * Create backend services and controllers for exploration pretests (#5418) * Fix #5134: Write backend tests for core.storage.job.gae_models (#5433) * Fixed part of #5134: core.domain.user_domain_test file! (#5380) * Fix part of #5134.: Added tests for memcache services (#5355) * Fix #5314: Reinstate failing Karma test. (#5347) * Fixed part of #4057: FormBuilder tests (#5322) * Fix docstrings for acl_decorators (#5311) * Math Expression Input e2e (#5292) * Refactored ExplorationContextService (#5278) * Migrate the remaining waits to use the waitFor library. (#5270) * Fix part of #5002: Moved some constants from GLOBALS to other places. (#5191) * Some initial changes to use the new waitFor utility. (#5258) * Add check for browser.waitForAngular calls (#5249) * E2e refactor follow-up for PR#5139 (#5224) * E2e testing: Introducing waitFor utility file. (#5240) * Graph Interaction e2e Test (#5230) v2.6.6 (1 Aug 2018) ------------------- Rich-text editor * Added CKEditor as current RTE and conversion function (#5229) * Added try catch in MigrationValidation for CKEditor (#5198) * CKEditor Integration - Milestone 2 (#5150) * Updated ol-ul migration - Milestone 2 (#5192) * Updated Migration process on the basis of cases obtained from test server (#5185) * Added MigrationValidation one-off job for CKEditor - Milestone 2 (#5169) * Added validation one-off job for CKEditor - Milestone 2 (#5161) * Added migration function for Textangular - Milestone 1 (part 2) (#4985) * Fixed errors based on cases in dump from server (#5213) * Updated the Migration function for CKEditor (#5228) * Fixed issues that popped up due to migration to CKEditor (#5255) * Remove the text that comes when cursor is moved over editor (#5288) * Removed indentblock to allow indentation only for list elements (#5318) Statistics * Fix part of #3836: Milestone 1, introduce new calculation to aggregate top unresolved answers. (#5006) * Introduce StateTopAnswerStatisticsFactory (Part 1) (#5026) * Split Backend Call API from the StateTopAnswerStatisticsService (#5079) * Hide unresolved student answers when the exploration is private, since there is no data to show. (#5080) * Add hooks to StateTopAnswerStatsService to keep it fresh and make IssuesOverview card use it (#5089) * Fix #3836: Upgrade training interface to show unresolved answers. (#5098) * Add comment to describe conflict with libsvm's prediction function. (#5215) * Remove protractor-add-test-answer css class from modify training data (#5216) * Disable modify training data button until ML is enabled. (#5328) New structures * Added validations to topic editor (#5178) * Added validations to story editor (#5195) * Create Topic Editor (Part 1): Added frontend domain objects for topics. (#5090) * Create Topic Editor (Part 2): Created Topics and Skills dashboard (#5094) * Create Topic Editor (Part 3): Create the editor UI (#5112) * Create Topic Editor (Part 4): Added more functions to edit topics (#5119) * Create Topic Editor (Part 5): Added subtopic page editor (#5142) * Create Topic Editor (Part 6): Added skill id management for subtopics (#5166) * Create Story Editor (Part 1): Added frontend domain objects (#5131) * Create Story Editor (Part 2): Add create and delete story functionalities (#5148) * Create Story Editor (Part 3): Create Story Editor UI (#5152) * Create Story Editor (Part 4): Create story node editor (#5159) * Added SubtopicPage model (#5053) * Modified topic and story models (#5049) * Modified add_node function in stories (#5035) * Added skills mastery model (#4997) * Implementing QuestionSkillLink Model and Domain (#5025) * Added deepcopy to Change objects (#5038) * Added controllers for topics, skills and stories: Part 1 (#5013) * Added update and delete for stories. (#4988) * Exploration Migration to add skill_id and tagged_misconception_id fields (#5031) * Add core skill editor (#5154) * Fixed lint error in #5154 (#5217) * Fix #5202: Moved topic and story validations to their respective objects (#5211) Image pipeline * Remove the code that uploaded the filepath as an object (#5173) * Fix #5177: Added migration function to ensure caption in images (#5179) * Extract relevant commits from change list in ExplorationStateIdMapping (#5189) * Fixed preview error in ImageRegions interaction (#5149) * Added try again button. (#5087) * Added a loading indicator gif. (#5029) * PR2: Images get uploaded to GCS in production mode and GAE in dev mode (#5160) * One-off Job for shifting images from GAE to GCS (#5153) * Fixes #5209 Removing preloading completely from preview mode. (#5237) * Fixes ImageDataMigration job (#5405) Development workflow * Fix part of #5134: Add tests for activity domain (#5194) * Reduce daysUntilStale to 7 (#5187) * Add arg name to arg with default values. (#5180) * Modify html indent function (#5171) * Upgraded coverage version (#5127) * Fix package installation on Travis (#5146) * Removed exception from templateUrl linter (#5135) * Improving the dev workflow: Add restrict check for directives (#5068) * Added notes to run single e2e and unit tests. (#5116) * Add node path to stylelint cmd args (#5117) * Fix #5009: Add wait for suggestions e2e test (#5109) * Improving the dev workflow: Milestone 1.2.3 Enable checks for directive scope (#4980) * Improving the dev workflow: Custom import check for modules (#5078) * Move .oppia-creator-dashboard-main-content to creator_dashboard.html and remove padding property (#5022) * Improving the dev workflow: Separate CSS selectors from oppia.css (#5018) * Improving the dev workflow: Setup lint check for CSS and fix corresponding errors (#4643) * Fix part of #4347 Included docstrings in various functions in scrips/custom_lint_checks.py (#5034) * Add bad_patterns_python_regexp (#5042) * Fix #5157: Add check for copyright notice (#5197) * Modify stale config (#5214) Interactions * Add currency units to the Number with Units interaction (#5175) * Drag and Drop Interaction: Milestone 2.2 (#5137) * Drag and drop interaction: Milestone 2.1 (#5118) * Added help table for Number with Units Interaction (#5124) * Number with Units Interaction: Milestone 1.3 (#5028) * Add angular-ui-tree dependency. (#5110) * Stop submit button for MultipleChoiceInput from firing ng-click twice (#5266) * Fixing Fraction Input weird padding. (#5267) * Remove some files that were skipped and caused math expression input to break. (#5284) * Fixes #5260: Unable to type anything in the Math expression input box in mobile (#5289) * Fix #5301: Disabled required spacing in the currency units in Number with Units interaction (#5320) Generalised review system * Generalised review system: Validation job for the suggestion migration (#5174) * Generalized Review System - Milestone 1.1 (Part 3): Suggestion services (#4982) * Generalized Review System - Milestone 1.2 : Suggestion controllers and wiring up to frontend (#5093) * Generalized Review System Milestone 1.3 - Migration job for suggestion framework (#5043) * Generalised Review System Milestone 2: Add user contribution scoring models (#5128) * Added test for unique model names and renamed SuggestionModel to GeneralSuggestionModel (#5016) * Removed assigned reviewer field (#5203) * Fix a backend test after switching the flag (#5206) * Generalised Review System Milestone 2: Cron job to automatically accept suggestions after a threshold (#5155) * Fix suggestions subject not displayed (#5273) * Fix ordering of suggestions on feedback tab. (#5404) Translation dashboard * Milestone 2.3: Lesson translation dashboard. (#5163) * Milestone 2.1 & 2.2: Lesson translation dashboard. (#5122) * Minor fix in getNeedsUpdateTooltipMessag. (#5136) * Milestone 1.2: Lesson translation dashboard. (#5099) * New state structure. (#5007) * Fix #5287: Deletes feedback content id while deleting interaction. (#5294) Playthroughs and issues * Rename flag for enabling playthroughs (#5165) * Playthrough Visualisation: Milestone 2.2 (Part 3) (#5156) * Playthrough Visualisation: Milestone 2.2 (Part 2) (#5058) * Playthrough Visualisation: Milestone 2.2 (Part 1) (#5133) * Added unit test for exploration reverts effect on exploration issues model (#5147) * Set ENABLE_PLAYTHROUGHS to True (#5132) * Playthrough Visualisation: Milestone 1.2 (Part 3) (#4952) * Playthrough Visualisation: Milestone 2.1 (#5015) * Only enable Playthrough recording for Fractions collection (#5190) * Fix exploration ID field bug (#5360) Bug fixes * Fix #5063: Hint button should not appear for terminal or linear interactions (#5125) * Fix #5111: remove notification preferences card from non-editors. * Fixed publish button (#5227) * Fix #5071: Replace closeSubmenu with closeSubmenuIfNotMobile to make dropdown menu work (#5261) * Fixating position of preview tab's reset button to bottom right corner. (#5272) * Fix #5398: remove UrlInterpolationService's whitelist check. (#5410) * Fix #5336: Added brackets to valid url characters (#5354) * Manually Construct URL (#5345) * Fix #5274: Open modal window only once (#5346) * Fix playthroughs bug (#5339) * Fix #5253: Fixed hiding of Continue button when correctness footer is present (#5276) Miscellaneous * Create CODEOWNERS (#5032) * Update CODEOWNERS to include all storage models & add Sean as an owner (#5186) * Fix #5000 add check for response status in get_json (#5001) * Routine translations update. (#5101) * Fix part of #3950: Replace DEV_MODE and feedback URL Jinja Template in base.html (#5048) * Added a few new skipped folders (#5196) * Reduce the number of files that are uploaded to production. (#5181) * Only append to the general error log for non-404 errors. (#5241) * Update deploy script. (#5231) * Downgrade 404 logs to warnings. (#5233) * Fix build (#5269) * Only log when versions are actually regenerated. (#5394) * Unique session IDs for starts and quits (#5392) * Fix errors in the RegenerateMissingStatsModelsOneOffJob. (#5388) * Production fixes for the stats job. (#5377) * More fixes to stats jobs from running on test server. (#5366) * Handle exploration reverts for ExplorationStatsModel (#5356) * Fix variable declaration error (#5351) * Fix cast and improve output messages in stats job. (#5312) Testing, documentation and code health * Readability Improvements to save_new_linear_exp_with_state_names_and_interactions (#5023) * Adds YouTube error logs as expected error for e2e test. (#5046) * Fix part of #4057: Adding tests for audio language objects (#5061) * Break up factories (#5073) * Fixed docstring (#5096) * Fix #5044: Added a named constant for revert commit command (#5102) * Fix part of #3968: ParamMetadataObjectFactory domain object (#5082) * Fix backend load test (#5120) * Reference directive templates directly in /extensions/objects (#5121) * Rename AudioLanguage's "text" attribute to "description" and update e2e documentation for running individual suite (#5126) * Remove jquery themes (#5207) * Removed the fileInfoObject (#5205) * Add e2e functions patterns to BAD_PATTERNS_JS_REGEXP (#5208) * Fix #5105: GraphInput Viewbox console errors (#5212) * Fix part of #3954: Exploration Editor Page Object (#5139) * Refactor the delete-state-callback test. (#5349) v2.6.5 (18 June 2018) -------------------- Miscellaneous user-facing: * Fix #4882: Moved subscribe button to profile card (#4892) * Fix #4781: Fixed Code editor zoom in problem (#4921) * Minor improvements to html_cleaner.convert_to_text_angular for readability. (#5070) * Fix #5041 and #5033: Hide unresolved student answers when the exploration is private, since there is no data to show. (#5080) * Fix #5083: Audio needs update span disable for guest users. (#5091) * Fix #5088: Removed refresh option from the create view (#5100) Infrastructure and testing * Fix #2255: Remove commons folder and transform toast icons to material (#4898) * Added the enable_console flag (#4949) * Add build before frontend tests (#4972) * Fix e2e tests on accepting a suggestion on a published exploration (#4917) * Change visibility of two protected methods in exp_domain (#4933) * Fixes backend tests (#5014) * Fixes part of #4057: Added spec for InteractionDetailsCacheService (#4889) * Fix travis build (#5003) * Fix change dict list in ExplorationStateIdMapping job (#5027) * Added MigrationValidation one-off-job (#5050) * Fix for error in migration validation testing (#5054) * Update chromedriver version from 2.39 to 2.40 (#5059) * Final Checking for the migration (#5065) Statistics: * Introduce get_state_answer_stats for StateAnswersStatisticsService (#4963) * Handler hook (#4964) * Fix #2249: E2e tests for exploration statistics (#4357) * Fix part of #4666: Fix code classifier prediction service and correct frontend tests. (#4922) * Modify the interval calls for storing stats (#4994) * Fix #4190: Fix ExplorationStateIdMapping MR job. (#4914) Translation Dashboard: * Add translator role for the exploration (M1.1 Lesson translation dashboard) (#4959) RTE Upgrade: * Content validation script to validate TextAngular content : Milestone 1 (part 1) (#4947) * Follow-up PR for the content validation one-off job (#4969) * Include html strings in the output of Content Validation job (#5020) New interactions: * Number with Units Interaction: Milestone 1.1 (#4941) * Add math.js dependency (#4950) * Number with Units Interaction: Milestone 1.2 (#4979) Improve image loading pipeline: * Ml1.1 Improve the image loading pipeline (#4954) * PR 2.1 : Added ExtractImageFilenamesFromStateService (#4965) * Added the ImagePreloaderService and edited the ImageDirective (#4990) * Moved the ExplorationDict back to the ExtractImageFilenamesFromStateSpec.js and added documentattion to ExtractImageFilenamesService.js (#4993) * Ammendments to image preloading. (#5030) * Amendments to the image Preloading( error case) (#5062) Generalized review system: * Generalized Review System: Milestone 1 (part 1) (#4943) * Generalized Review System - Milestone 1.1 (Part 2): Add Suggestion domain class (#4966) * Remove ambiguous definitions of thread_id in various places in the feedback and suggestion framework (#4971) Skills, topics and stories: * Fix #4847: Add a new role for topic manager and create TopicRightsModel (#4871) * Add Functionality for Skills: Milestone 1.1 (#4953) * Added domain objects and services for Topics: Milestone 1.2 (Part 1) (#4981) * Added domain objects and services for Skills: Milestone 1.2 (Part 2) (#4983) * Fix #4904: Update questions backend to align with Skills construct (#4920) * Added update and delete for Skills (#4992) * Added update and delete for topics (#4991) Development Workflow: * Improving the dev workflow: Milestone 1.1.1 Enable Pycodestyle rules and fix errors (#4937) * Modify _lint_html_files function and enable rules (#4910) * Add Email to Travis recipients (#4938) * Create stale config for oppiabot (#4940) * Improving the dev workflow: Milestone 1.1.2 Update Pylint (#4939) * Fix part of #3905: Add checks for directive scope (Part 1) (#4848) * Fixes #4956: Change Pylint version (#4957) * Improving the dev workflow: Milestone 1.2.2 Enable in-built JS rules (#4948) * Improving the dev workflow: Milestone 1.2.1 Enable in-built angular rules (#4945) * Improving the dev workflow: Milestone 1.1.3 Custom pylint checks (#4967) * Improving the dev workflow: Separate CSS selectors from oppia.css (#5012) * Improving the dev workflow: Setup custom HTML indent function (#4987) * Improving the dev workflow: Separate About selectors from oppia.css (#5011) Playthrough Visualisation: * Playthrough Visualisation: Milestone 1.3 (#4984) * Validity for issues instead of playthroughs (#4977) * Playthrough Visualisation: Milestone 1.2 (Part 2) (#4946) * Playthrough Visualisation: Milestone 1.2 (Part 1) (#4944) * Playthrough Visualisation: Milestone 1.1 (Part 6) (#4935) * Playthrough Visualisation: Milestone 1.1 (Part 5) (#4934) * Playthrough Visualisation: Milestone 1.1 (Part 4) (#4928) * Playthrough Visualisation: Milestone 1.1 (Part 3) (#4927) * Playthrough Visualisation: Milestone 1.1 (Part 1) (#4918) * Playthrough Visualisation: Milestone 1.1 (Part 2) (#4919) Docstrings: * Replaced Content in docstrings (#4929) v2.6.4 (24 May 2018) -------------------- Creator View: * Fix part of #3446: Add frontend validators to End Exploration. (#4828) Library & Learner Dashboard: * Fix #3977: Added tooltip for Collections in Learner Dashboard (#4850) * Fixes #4323: Fixed creator's option to add to playlist (#4863) * Fix #4924: Fixed exploration count error. (#4960) UI (General): * Partial Fix #3025: A keyboard user should be able to expand dropdown menus. (#4844) * Fix #4756: Duplicate cookies issue fix. (#4903) Linting: * Add check for parens (#4849) * Setup htmllint (#4900) * Enable lint checks for pre-commit script (#4869) Docstrings: * Fix part of #4374: Add docstrings to python files. (#4856) * Fix part of #4374: update docstrings for jobs (#4851) Skills project: * Fix #4846: Remove "Collection Skills" (#4862) Infrastructure and Refactoring: * Fix part of #4057: Add spec file of AutoplayedVideosService (#4805) * Fix nit comments in ExplorationStateIdMappingJob (#4860) ML: * Fix #3287: Enable training data classification in answer classification service (#4824) * Exploration states dict migration: Migrate training data to answer group and remove it from rule specs. (#4890) * Print stack trace of exceptions in ExplorationStateIdMappingJob (#4861) v2.6.3 (23 Apr 2018) -------------------- Creator View: * Fix #4693: Changed timeout for "solution error" popup to 4 seconds. (#4706) * Fix #4530: Removes extra lines and spaces at the end of string in RTE (#4799) * Show "issues overview" card on state editor (#4744) * Fix part of #3446: Add frontend validators to CodeRepl Interaction (#4832) * Fix #4663: Added CSS to fix overflowing content out of stats modal. (#4664) * Fix #4714: Fix alignment of button and text in exploration settings tab. (#4811) * Fix #3982: Added 'open' in the open feedback thread summary. (#4767) * Fix #4872: Fix overflowing feedback thread count for large numbers. (#4873) * Fix #4857: Fixed feedback message status displaying incorrectly (#4865) Learner and Creator Dashboards: * Fix #2620: Remove the dead zone and hardcoded height in card view on dashboard (#4791) * Fix #3971: Add activity indicator to feedback updates (#4785) * Fix #3983: Reorder tabs in Learner Dashboard to make them more intuitive. (#4809) * Fix #4875: Removed dead zone in card view of creator dashboard (#4878) Library: * Fix #4056: There is no way to add an exploration/collection into play-later list for mobile users. (#4709) * Fix #4813: Fix icon positioning in search category dropdown (#4817) * Fix #4422: Add search option in library for mobile users (#4807) * Fix #4864: On mobile, two icons are visible on the exploration/collection cards at the same time. (#4879) Learner View: * Fix #4367: Prevent null-submission for MathExpressionInput interaction (#4753) * Fix #4055: Removes redundant CSS selector from conversation_skin_directive.html (#4790) * Fix part of #4364: Add sprinkles to the correctness footer (#4770) * Fix #4884: Remove correctness footer when navigating (#4899) Fractions Landing Page: * Update content and change font-size for tablet view for the Fractions landing page. (#4897, #4908) Questions project * Fix #3009: Final milestone of questions project (#4574) Dependencies and build process * Fix #4519: Move third-party build process into python. (#4831) * Remove reference to master branch from CHANGELOG (#4852) * Remove unused angular dependencies injected into controllers (#4792) * Fix git push error when branch has same name as directory. (#4834) * Upgrade ESLint to 4.19.0 (#4825) * Upgrade guppy version to b5055b (#4709) * Upgrade GAE version to 1.9.67. (#4786) * Remove numpy as a dependency. (#4808) Infrastructure: * Removed create_classifier_training_job and updated the unit tests. (#4827) * Add more detailed logging for StateIdMapping one off job. Add realtime logging to build script when deploying. (#4853) * Allow ExplorationStateIdMappingJob to overwrite StateIdMapping models (#4854) * Handle schema migration from exp schema v1 to exp schema v2 in ExplorationStateIdMappingJob (#4858) * Address issues with e2e tests by having each suite contain only one test file. (#4896) * Linting checks added: * Fix part of #3905: Add check for keyword arguments (#4752) * Fix part of #3905: Add check for period at ends of comments and docstrings (#4759) * Fix part of #3905: Add check to ensure all HTML directives end with _directive.html (#4839) * Merge _check_spacing function with _lint_py_files function and remove redundant code (#4840) Karma tests: * Fix part of #4057: Add test for EditabilityService (#4806) * Fix part of #4057: Add test for AnswerGroupsCacheService (#4843) Docstrings * Fix part of #4374: Add docstrings to core.domain.feedback_jobs_continuous (#4855) * Fix part of #4374: Add docstrings to core.storage files. (#4841) * Fix part of #4374: Add docstrings to value_generators_domain.py (#4826) * Fix part of #4374: Add docstrings to user_query_services.py and user_services.py (#4796) * Fix part of #4374: Add docstrings to core/domain/stats_jobs_one_off.py (#4757) * Fix part of #4374: Add docstrings to core.domain.stats_domain. (#4731) * Fix part of #4374: Add docstring to core.platform.email.gae_email_services (#4795) * Fix part of #4374: Add docstrings to test_utils.py (#4845) v2.6.2 (20 Mar 2018) -------------------- Learner View: * Fix #4639: Changed the ending for refresher explorations (#4644) * Fix #4627: hides tooltip after new card available. (#4637) * Interactions: * Fix #4641: Added new fractions rule to check if fractional part exactly equals (#4648) * Fix #4640: Added customization args to write custom placeholders for fractions interaction (#4645) * Fix #4409: Interactions not working on mobile. (#4672) * Block console error message in pencil code editor (#4741) * Fixes issue #4562 : Overlapping line numbers and text in Code Editor (#4745) * Fix part of #4367: Added null submit checks for set input interaction (#4710) * Fix #4430: fixed weird graph edge weight input (#4707) * Fix:#4634: Deleting imageInteraction should delete the responses. (#4711) * Fix #4549: Fixed the position of code editor (#4674) * Fix #4530: Fixed extra new lines and whitespaces in Multiple choice Options (#4739) * Fix #2827: GraphInput not visible in mobile view. (#4698) Exploration Editor: * Fix #4566: Dollar formatting issue (#4633) * Fix #4676: Updated exploration search validator. (#4687) * Fix #4481: Adds a link to the exploration in the publication modal (#4647) * Fix #4701: fixes rule descriptor for ListOfCodeEvaluation and SetOfNormalizedStrings (#4703) * Fix #4656: Fix spacing around links in rte (#4694) * Fixed issue #4692: Fixed styling for input text field. (#4715) * Fix #4635 Make the Advanced feature settings(in creator mode) more intuitive (#4695) * Fix #3906: Add link which takes you to State Editor from Statistics Tab Modals (#4655) * Fix #3478: Added functionality to sort nodes list. (#4708) * Fixes #4530: Removes spaces and new lines from end of string in RTE. (#4748) * Fix #4072 : Uses Initial few words as a feedback's subject (#4257) * Fix #4712:Unaligned radio-button with corresponding text. (#4718) Audio: * Fix #4621: Add modal for flagging audio translations on feedback, hints, and solutions. (#4623) * Fix #4295: Added slider for audio bar (#4659) * Fix #4528:Sets default language to the last selected language for audio translations in creator view. (#4673) * Only attach onended property of audio if current track is not null. (#4685) * Allow audio translations to be stripped away when creating new explorations using the upload YAML button (#4378) * Fix #4293: Add slide animation to audio bar directive (#4636) * Fix #4497 Fix console errors for audio on card with no text (#4726) * Fix #4680: Pauses the audio being played when preview button is clicked (#4725) * Fix #4292: Upgraded font-awesome and play/pause icons (#4750) Miscellaneous fixes: * Fixes #4410: Fixed info modal for private explorations (#4754) * Fix #4590: Fixes dropdown overlap with feedback editor (#4629) * Fixes #4660 - Fixed dropdown menu (#4671) * Fix #4587: Item Selection input boxes are top-aligned (#4607) * Fix #4683: Altered positioning of help card to make it appropriate (#4696) * Fix #3606: For public explorations, default to the feedback page in the exploration editor if feedback exists. (#4716) * Fix #1494: Can't see videos in Tabs. (#4736) * Fix part of #3550: Move translation check from footer to header (#4738) * Fix #2915: fixes sidebar breaking on mobile (#4749) * Fix:#4721:The text in the tooltip is not completely visible in case of the leftmost collection. (#4733) * Added a new Fractions landing page (#4758) * Fixes bug #4746 (#4747) Statistics: * Fix #3797: Deprecate old classification framework (#4653) * Deprecate the old stats framework and StatsAggregator job. (#4762) * TextInput classifer bug fixes (#4700) * Consolidated Change list mapping method (#4729) * Add try and except blocks at probable error generating lines. (#4755) Infrastructure and Refactoring: * Fixed part of #4057: ThreadStatusDisplayService (#4606) * Fix Travis build fail (#4679) * Fix #4295: addresses review comments in #4659 (#4670) * Updated PULL_REQUEST_TEMPLATE to include #bugnum in explanation. (#4681) * Add comment to explain null value in AudioPlayerService. (#4735) * Linting checks added: * Fix part of #3905: Added eqeqeq rule (#4573) * Add check for keyword spacing (#4697) * Add check for consistent comma spacing (#4720) * Enable isort diff to debug import-order errors (#4684) * Add check for consistent brace style (#4727) * Space check for Python files (#4728) * Add check for trailing whitespaces (#4699) * Fix part of #3905: Add lint checks for common coding issues arising in code reviews (#4724) Docstrings: * Fix part of #4374: Add docstring to file core.storage.job.gae_models.py (#4705) * Fixed part of issue #4374 :Added docstring for cron.py (#4722) * Fixed Part of #3954: Added CollectionEditorPage (#4678) * Fix part of #4374: Documented core.platform.models (#4596) v2.6.1 (18 Feb 2018) -------------------- Exploration Player: * Hints and Solutions: * Fix state schema migration for hints (#4638) * Prevent hints from being released after correct answer is submitted. (#4580) * Change fraction placeholder when no integer part is allowed. (#4581) * Fix #4512: Changes in hint's tooltip waiting and closing time. (#4513) * Fix #4465: Clear the tooltip timeout on-reset, or once a hint or solution is viewed. (#4471) * Fix #4412: Improved presentation of solutions (#4434) * UI: * Fix help card cut off bug. (#4630) * Ensure 'Return to Library' button always shows for explorations (#4561) * hides the back button if a help window with a continue button is shown (#4552) * Fix #4472: Auto scroll in ItemSelection input interaction (#4523) * Fix #4509: Line spacing in bulleted lists seems to be different from line spacing in standard text (#4535) * Fix cut-off ratings at end of exploration. (#4540) * Fix #4433: made radio buttons align to top of div (#4446) * Fix #4461: Learn Again button appearing when not intended (#4479) * Fix #4427: Show previous answer for map interaction (#4478) * Fix #1251: Set cursor color to black in MathExpressionInput. (#4424) * Fix #1251: Set cursor color to black for MathExpressionInput. (#4408) * Correctness Footer: * Fix Correct footer showing even when no response is input (#4550) * Fix #4468: Animate 'Correct Answer' feedback (#4526) * Disable correctness feedback for linear interactions (#4456) * Fix #4460: Correctness Footer should hide when learner moves backward from the last card (#4464) * Updated the correctness banner (#4463) * Refresher Explorations: * Fix error due to refresher exps possibly being outside a collection. (#4624) * Fixed url error when redirecting to refresher exploration (#4611) * Update text of refresher exp modal. (#4584) * Audio: * Add check for initialization of speechSynthesis. (#4601) * Chance cancel property in SpeechSynthesisChunkerService into its own variable. (#4591) * Add check to prevent 'SpeechSynthesisUtterance is undefined' error. (#4571) * Fix #4488: Make audio bar expand button bigger on mobile, and hide on scroll down. (#4541) * Fix #4486: Changed width of audio selection dropdown to not cut out text on phones (#4527) * Optimize audiobar behavior on mobile (#4515) * Include mobile speech synthesis code. (#4462) * Replace _isPlaying in AutogeneratedAudioPlayerService with speaking property of speech synthesis; Fix bug with duplicate utterances being generated by autogenerated audio; Fix bug where submitting a feedback before a previous feedback response has finished speaking results in the highlighting of the card content. (#4436) * Fraction Input: * Fix #4567: Changed condition to check range enclosed criteria, edited existing test (#4575) * Add placeholder in fractions input (#4514) * Change rule description for HasNoFractionalPart (#4505) * Fix #4474: Updated solution getSummary to support fractions (#4475) * Minor style fix in fractionInputValidationService.js (#4469) * Fix #4444, #4452: Added appropriate filter for Fractions. (#4454) * Fix #4443: Changed some check conditions for answer groups in fractions. (#4449) * Added validity checks for the newly added customization args for Fractions Interaction (#4400) Exploration Editor: * Fix #4617: Fixed the weird behaviour of red dot in editor mode (#4619) * Add a dot to mark previous answer in ImageRegion when no highlighting (#4614) * Fix of #2533: Modified the stripFormatting filter to preserve newlines in RTE cut-and-paste (#4568) * Fix #1542: RTE Components correctly displayed in answer group header (#4565) * Fix #4555: Address review comments for #4536. (#4556) * Fix #4503: Fixed RTE element view in hint editor (#4536) * Fix #4542: Moves the position of NodeErrorMessage tooltip. (#4544) * Fix part of #3826: Change and rename graphDataService in pages/exploration_editor/EditorServices.js (#4490) * Fix #4480: Hide Page selector from history tab if only one page (#4495) * Fix #4470: Fixed The ticks/crosses in the editor are misaligned (#4473) * Fix part of #3826: Extract and rename 'changeListService' from EditorServices.js (#4379) Collections: * Fix missing collection ID in exploration redirection ID. (#4626) * Adds proper message for validation error in skill ID. (#4577) * Fix #4494: Return to collection when finished by guests when explorations have recommendations (#4554) * Update collection_player.html to properly pass along collection ID to (#4524) * Exploration search validator (for new node) modification. (#4510) Statistics: * Add visualization stats for fractions input interaction. (#4598) * Fix #4349: Record leave for refresher exp events (#4557) UI: * Fix #4533: Fix word wrap property (#4608) * Fix #4459: Removes attribution guide in mobile view (#4508) * Set error page footer to relative position (#4498) Tests: * Fix #4612: organised promises (#4631) * Fix #4559: Write an e2e test to prevent users from getting stuck in non inline interactions (#4622) * Fix part of #4057: Unit test for SidebarStatusService (#4520) * Fix part of #4057 - Test frontend services in domain/classifier (#4305) * Ignore youtube embedding error while e2e test on Travis. (#4603) * Shrink Protractor timeout. (#4597) * Fix #4275: Embedding e2e test creation (#4482) * Add test to HintAndSolutionManagerService to check that hints aren't released after a correct answer is submitted. (#4585) * fixed flaky protractor test (#4445) * fix for #4432 (#4435) Speed: * Extensions refactor (#4620) * Fix part of #3950: replace Jinja in state_editor_responses.html (#4548) Misc: * "Update version number to 2.6.1" * Fix #3753: Remove IS_MINIFIED variable (#4613) * Fix #3826 -Extracted services to ExplorationPropertyService.js (#4589) * Fix issue with URL loading (and 404-ing) before it is interpolated. (#4610) * Routine update of translations. (#4595) * Update content-type for JSON responses. (#4583) * Change Java prerequisite to v8 (#4570) * Update changelog, AUTHORS, CONTRIBUTORS and credits. (#4560) * Fix part of #3826: Extracted recursionHelper-> NestedDirectivesRecursionTimeoutPreventionService into separate file. (#4518) * Fix part of #3826: Extracted schemaUndefinedLastElementService into a separate file. (#4476) * Extracted SchemaDefaultValueService (#4457) * Fix part of #3826 and #4413: Included the service in the definition of the function and extracted AutosaveInfoModalsService into individual file (#4414) * Fix part of #3826: Extracts rteHelperService into separate file. (#4392) Docstrings: * Add docstrings. (#4616) * Fix part of #4374: Update docstrings to core.domain.email_manager (#4593) * Fix part of #4374: Add docstrings to core.domain.collection_domain. (#4569) * Fix part of #4374: Add docstrings to core.domain.param_domain (#4551) * Fixes #2394 : Added docstring to functions in utils.py (#4330) * Fix part of #4374: Add docstrings to core.domain.config_domain (#4506) * Fix part of #4374: Add docstrings to core.domain.classifier_domain (#4458) * Fix part of #4374: Added Doc string for core.domain.email_subscription_services (#4451) * Fix part of #4374: Added docstring for core.controller.pages * Fix #4374 partially: Adding missing docstrings. (#4419) * Fix part of #4374: Add docstrings to core.controllers.collection_editor (#4402) * Fix part of #4374: Added docstrings to core.controllers.base (#4404) Linter: * Enable indent for func-expr (#4588) * Fix part of #3905: Added semi-rule (#4576) * Fix part of #3905: Add checks for correct docstring style. (#4572) * Fix part of #3905: Add check for console.log statement (#4564) * Added check for Python files in _check_import_order function (#4547) * Fix part of #3905: Add space checks for definitions (#4522) * Fix import-order check (#4499) Splash page: * fixed #4415 - Fix display bug in splash page (#4416) v2.6.0 (18 Jan 2018) -------------------- Exploration player: * Hints and solutions * Fix #4285: New design for Hints and Solution (#4286, #4203, #4338, #4358, #4383, #4393, #4471, #4513) * Fix #4298: Introduce tooltip functionality for hints (#4375, #4396) * Fix #4412: Improve presentation of solutions (#4434) * Audio * Audio redesign (#4271, #4332, #4515, #4527) * Add audio playback for feedback, hints, and solutions to learner view (#4346) * Highlight components while audio is playing (#4382) * Fix #4290: temporary fix for audio bar when audio is not available (#4337) * Fix #4302, #4340: Removes audio option from unsupported browsers. * Auto-download audio at the outset of an exploration (#4149) * Replace _isPlaying in AutogeneratedAudioPlayerService with speaking property of speech synthesis (#4436) * Fix bug with duplicate utterances being generated by autogenerated audio (#4436) * Fix bug where submitting a feedback before a previous feedback response has finished speaking results in the highlighting of the card content (#4436) * Include mobile speech synthesis code (#4462) * Fix #4488: Make audio bar expand button bigger on mobile, and hide on scroll down. (#4541) * Correctness feedback * Fix part of #4356: Added Correctness Footer in exploration view. (#4363, #4389, #4385, #4463, #4464, #4526, #4550) * Fix #4354: Add learn again button (#4391, #4479) * Progress navigation * Remove progress dots and replace with arrows for lesson playback (#4265, #4288, #4365) * Fix #4350, #4217, #4361: Enable progress-nav on desktop (and some other interaction fixes) (#4365) * Fix #4342: Added null submit checks for various interactions (#4359) * Fix part of #3712: Created Continue Button Directive (#4273) * Fix #4317: Hide the back button if a help window with a continue button is shown (#4552) * FractionInput interaction * Fix #4180: Bug with the fractions interaction checking integer parts. (#4181) * Fix #4443: Update the validation criteria for FractionInput rules. (#4449, #4469) * Fix #4501: Change rule description for HasNoFractionalPart rule (#4505) * Fix #4511: Add placeholder text in fractions input (#4514) * Other * Fix #4355: Added refresher exploration redirection in player view (#4344, #4373, #4435, #4445, #4524) * Fix #1270: Earlier non-inline interactions are still interactive (#4232, #4281, #4427) * Do a migration for the correctness property and fractions customization args. (#4390, #4400) * Fix #4459: Remove attribution guide in mobile view (#4508) * Fix #4091: Set max-height for ItemSelectionInputResponse images (#4229) * Fix #4433: correct alignment of radio buttons in MultipleChoiceInput interaction (#4446) * Fix #4455: Fix cut-off ratings at end of exploration. (#4540) * Fix #4509: Line spacing in bulleted lists seems to be different from line spacing in standard text (#4535) * Fix #4494: Return to collection when finished by guests when explorations have recommendations (#4554) * Fix #4472: Fix auto scroll in ItemSelection input interaction (#4523) Exploration editor: * Hints and solutions * Fix #4047: Abbreviated Solution Explanation (#4269) * Fix #3773: hints ui-sortable not functioning as expected (#4316) * Fix #4287: solution updates are not handled correctly. (#4289) * Fix #4152: fix bug in solution verification service. (#4154) * Fix #4503: Fixed RTE element summaries in hint editor (#4536) * Audio * Add audio translations to feedback, hint, and solution in editor (#4312, #4233) * Added styling for audio-controls (#4310) * Fix #4311: major bug in editor due to using subtitled HTML for default outcome. (#4313) * Correctness feedback * Introduce a correctness_feedback_enabled field at the exploration level and make corresponding updates to the states dict. (#4235, #4270, #4456, #4473) * Other * Allow editing of refresher exploration ID. (#4320, #4336) * Always show something in the lost changes modal, even if the data cannot be parsed. (#4394) * Fix dropdown issue in multiple choice interaction (#4315) * Fix #310: Add Pagination to exploration history tab (#4212, #4495) * Fix of #4253: Stopped weird flickering in the editor content card (#4284) * Fix #4065: New editor logout handler (#4211) * Fix #4444, #4452, #4474: Add an appropriate filter for FractionInput rules. (#4454, #4475) * Fixes 3741: Remove action parameter when moderator unpublishes exploration. (#4213) Collection player * Fix #4249: Add local storage support for collections played by guests. (#4250) * Fix #3787 and #3788: Clicking outside the preview card in the collection learner view should close the preview card; when the preview card shows in the small-width collection learner view, the background should be darkened. (#4185) * Fix #4141: Removed console error and added tests for error with three nodes in collection player view (#4197) Collection editor * Modify the validator for the new node field when searching for explorations (#4510) Learner dashboard * Fix #4178: "add to playlist" tooltip appears after coming back only. (#4319) * Fix #3978: Added correct message for no incomplete explorations. (#4264) Library * Fix #4279: Deselecting languages in the search area of the library page does not work correctly. (#4283) * Prevent 3-letter language codes from being used as the language code for an exploration, otherwise this breaks App Engine's search service. (#4277) UI (general): * Upgrade ui bootstrap (#4230, #4248, #4262, #4324, #4372) * Fix #4174: nav and footer for user journey (#4242) * Fix #4291: Moderator badge is placed correct. (#4306) * Fix #4224: Set Admin Badge in place. (#4236) * Fix #4143: Align buttons on splash page properly (#4241) * Fix #4144: The data displayed on the creator dashboard is not aligned properly on mobile devices (#4205) * Fix #4415: The splash page buttons are not aligned correctly in production (#4416) Analytics * Fix #4153: Optional addressed column (#4186) * UI fixes to the stats tab (#4150) * Fix #3868: Create job to recompute statistics from event models in datastore (#3933) * Add a GenerateAllStats job to generate statistics models for all explorations (#4228, #4326) * Fix part of #4195: Modify the references to the continuous stats aggregator (#4201) * Modified recording of useful feedback count for both v1 and v2 stats (#4198) * Fix #4179: update calculation for 'addressed' status; make some UI fixes. (#4196) * Fix #4167: Update answer summarizers job to properly handle answers corresponding to deleted explorations (#4168) * Fix #4182 and #4188: Fixes for the GenerateV1StatisticsJob (#4172, #4183, #4184, #4189, #4193, #4208, #4210, #4215) * Fix #4164: error with running ExplorationStateIdMappingJob (#4165, #4157) * Fix #4349: Record leave-for-refresher-exp events (#4557) Questions * Fix #3008: implement Questions project p2 (#3907) ML * Add front-end prediction service for TextInput interaction. (#3861) Infrastructure * Extend Protractor timeout to cover hints. (#4395) * Run only the production e2e tests. (#4239) * Stabilize search page protractor tests by giving Protractor a bit more time to load the page. (#4192) * Fix the e2e error in the search page. (#4199) * Fix #4216 and #4218: link correctly to static assets in interactions. (#4219) * Fix #3891: pattern check for directly referenced directives implemented. (#4187) * Fix part of #3905: Add lint checks for alphabetical import order (#4343) * Update deploy script (#4156) * Fix #4327: Corrected `collection_domain.py` for syntax error. * Fix #4223: Corrected variable name collection summary_dicts (#4256) * Change http to https in various places. (#4268) * Migrate next_skill_id to next_skill_index. (#4237) * Fix a bunch of issues related to the maintenance.html page not loading Angular properly. (#4227) * Simplify patterns for using promises in the codebase. (#4204) * Fix import-order check (#4499, #4547) v2.5.7 (17 Dec 2017) -------------------- Learner View: * Fix #4076: Update end exploration (within collection) headers to better illustrate that the user should return to the collection (#4130) * Fix #4090: limit number of progress dots for narrow window (#4129) * Fix #4102: Auto Hide of Navbar (#4108) * Scroll down to latest Oppia response in learner card when in mobile view (#4110) * Remove feedback button from mobile learner view. (#4093) * Added underline to 'Back to collection' link (#4096) * Prevent hint tooltip from going offscreen on mobile (#4087) * Various learner view improvements for ItemSelectionInput. (#4083) * Stop cards from going offscreen in mobile learner view. (#4084) Exploration Editor: * Fix #3906: Show Addressed column in State Stats Modal (#4147) * Check for empty change_list before proceeding. (#4136) * Fixed part of #3826 - editorFirstTimeEventsService (#4124) * Log error when ExplorationCommitLogEntry model instance is not found for (#4126) * Fix exploration graph directive URL. (#4098) * Fix #4055: Replaced redundant CSS selectors. (#4059) * Fixed #3146 : Reset Button functionality in preview mode (#4078) Learner Dashboard: * Fix #4001: Learner Dashboard Unpublished exploration issue fixed (#4039) Library: * Remove globe from exploration summary cards. (#4132) * Fixed Adjust the tooltip displayed when a user hovers over the globe icon on the library page (#4043) Infrastructure and Refactoring: * Move isInteger polyfill to app.js. (#4134) * Fix part of #3826: Extract stateEditorTutorialFirstTimeService into individual file (#4137) * Fix part of #3826: Extract services from i18n.js (#4118) * Fix part of #3826: Extract ExplorationWarningsService into individual file. (#4106) * Fix part of #3826: extract from EditorServices.js (#3970) * Fix part of #3826: Extract services from app.js (#4079) * Fix part of #3825: Rename angular services in Group 5 (#4111) * Renamed RTC_specs to RTC_definitions and removed useless __init__.py file. (#4101) * Remove dead code. (#4064) * Fix part of #2394: Add docstrings to core.domain.subscription_services.py (#4054) Statistics: * Fix bugs in GenerateV1StatisticsJob (#4125) * Fix error in GenerateV1StatisticsJob (#4120) * Fix ExplorationStateIdMapping job: Yield errors rather than raising Exception in ExplorationStateIdMapping (#4128) * Fix ExplorationStateIdMapping MapReduce job. (#4113) * Refactor extensions.answer_summarizers.models logic (#4092) * Fix 3946: Add visualization for Item selection inputs (#4080) * Fix #3289: Introduce domain objects for answer calculation output (#4036) * Fix error in one off stats migration job. (#4068) * Add state id mapping mapreduce job to the job registry (#4099) * Implement one off MapRreduce job to generate state id mapping model for explorations. (#4088) * Implement state id mapping model. (#3963) * Fixed #3288: Add tests for stats_visualizations_info (#4035) * Fix errors in the one-off job for stats migration (#4061) * Fix one last error in the GenerateStatsV1Job (#4215) * Convert str versions to int (#4210) * Fix error in GenerateV1StatisticsJob (#4208) * Fix part of #4195: Modify the references to the continuous stats aggregator (#4201) * Modified recording of useful feedback count for both v1 and v2 stats (#4198) * Fix #4179: update calculation for 'addressed' status; make some UI fixes. (#4196) * Fix #4167: Update answer summarizers job to properly handle answers corresponding to deleted explorations (#4168) * Handle state migrations in GenerateV1StatisticsJobV1 (#4193) * Fix #4153: Optional addressed column (#4186) * Fix #4188: Fixes for the GenerateV1StatisticsJob (#4189) * Fix part of #4182: make yielded value in map a tuple. (#4183) * Fix part of #4182: Handle None version events (#4184) * Fix #4169: Fixes Key error due to plus sign replacements (#4172) * Catch Exception when failing to retrieve explorations. (#4157) * Fix #4152: fix bug in solution verification service. (#4154) * UI fixes to the stats tab (#4150) Speed: * Fixed part of #3950: Replace Jinja templates in feedback_tab.html with Angular (#4123) Interactions: * Fix remainder of #3794: Add a fraction input interaction (#4100) * Fix part of #2575: Interactions refactor first milestone (#4115) * Fix part of #3794: Complete milestone 2 of fraction interaction (#4067) * Fix #4216 and #4218: link correctly to static assets in interactions. (#4219) * Fixed error with Clickable image (#4207) * Fix #4180: bug with the fractions interaction checking integer parts. (#4181) * Fix #4180: bug with the fractions interaction checking integer parts. Misc: * Fix #4140: correctly generalize permissions for creating collections. (#4142) * Update PULL_REQUEST_TEMPLATE.md (#4117) * Minor updates to CHANGELOG v2.5.6 after proofreading (#4097) * Update Authors, Contributors, Changelog, Credits for Release 2.5.6. (#4095) * Routine update of translations. (#4082) * Fix part of #3954: Created a Page Object for Thanks Page (#4085) * Upgrade SSL library version; remove obsolete challenge-response handler. (#4081) * Simplify karma coverage specification. (#4066) * Update deploy script (#4156) v2.5.6 (20 Nov 2017) -------------------- Learner View: * Have the tutor card appear directly above the supplemental card on mobile (#3936) Exploration Editor: * Fix #3794: Complete milestone one of introducing the new fraction interaction. (#3967) * Replaced the correct CSS styling for md-checkbox * Fix #3997: Added proper css for CodeRepl preview (#4053) * Shorten answer group header summaries so that the existence of multiple rules can be seen. (#4030) * Fix #3975: Removed repeated warnings for non-alphanumeric strings. Creator Dashboard: * Fix #3257: Remember list/grid display preference in the creator dashboard.(#3803) Site Navigation: * Text tweak for Teach page. (#4032) * Fix typo in Donations paragraph (#4040) Embedding: * Fix #3976: Show supplemental interactions in embedded explorations (#4052) Infrastructure and Refactoring: * Fix part of #3950: Replace Jinja templates in frontend with Angular (#4050) * Fix part of #3950: Replace Jinja templates in frontend with Angular (#4019) * Fix part of #3950: Replace Jinja templates in frontend with Angular (#4037) * Fix #3954: Add AdminPage page object (#3974) * Fix #3891: Changes made for remaining directives. Statistics: * Fix #3987: Reworked Stats tab (#3992) * Fix #3958: One-off job to use existing stats data to create new ExplorationStatsModels (#3959) * Only record stats for solutions if not in preview mode. (#4049) * Fix #3422: Fix answer summarizer job interaction updating (#3955) * Introduce event model schema version and modify ExplorationStatsModel (#3960) * Fix #3912: Introduce incremental statistics update and event recording functionality (#3916) Audio: * Add fallback for browsers which do not support speech synthesis. (#4028) * Add fallback to blob-builder on low-end devices (#3937) * Allow creators to optionally disable automatic text-to-speech for an exploration. (#3918) * Fix #3993: Standardize check for whether autogenerated translations are shown. (#4002) Hints: * Show a tooltip over hint button to suggest that the learner use a hint after a few attempts. * Fix #4015: Added e2e tests for hints/solutions (#4033) * Fix #3805: On mobile, the tooltip for the hint button is cutoff on the right edge of the screen. Speed: * Fix #3254: Load MathJax only where needed (#4042) Misc: * Fix #3791: Paragraph spacing fix (#4048) * Reformat frontend error message so that StackDriver hopefully catches it. (#4045) * Fix #4046: SITE_NAME replacement error fixed in license explanation page (#4051) * Fix part of #2575: Remove load errors from the frontend tests (#4041) * Fix errors in production due to parameters not working correctly. (#4029) * Fix issue with lastComputedArrangement occasionally being undefined when calculating the destination state lists. v2.5.5 (20 Oct 2017) -------------------- Learner View: * Have the tutor card appear directly above the supplemental card on mobile (#3936) * Fix #3993: Standardize the check for whether autogenerated translations are shown. (#4002) * Fix #3790: Add automatic text-to-speech audio to explorations (#3818) * Add all supported audio languages (#3903) * Disable the save button while uploading audio to server; add Spanish support to audio languages; add audio loading message to learner view (#3856) * Fix #3807: Center the info icon in the footer vertically (#3859) * Fix #3812: Auto-adjust the size of buttons to fit within small screen widths (#3858) Learner Dashboard: * Add timestamps to individual messages (#3873) * Disable the "feedback updates" send button when there is no text entered. (#3860) * Fix #3404: Add default placeholder text for mobile devices (#3845) * Add I18N to “give up” button, and change the tooltip text. (#3844) Collections: * Fix issue with the exploration tile in a collection being unclickable on mobile devices. (#3900) Exploration Editor: * Replace "source" element with in-line "audio" element in the audio translations editor, to prevent the same audio source persisting incorrectly across multiple states. (#3908) * Fix #3295: Save a draft of the exploration editor’s change list to local storage, to guard against loss of Internet connectivity while editing. (#3584) * Fix part of #3400: make the Objective field directives in the exploration settings tab and the publish modal match each other (#3740) Site Navigation: * Update the Oppia blog link, and rewrite the Teach with Oppia page. (#3945) * Add external Foundation links (#3934) * Fix #3800: Fix hover issue for dropdown menu buttons in the About page (#3855) * Fix #3828: fix warning erroneously showing up in registration page on Safari (#3833) Embedding: * Add v0.0.3 version of embed script, which adds explorationTitle data to messengerServices (#3935) Infrastructure and Refactoring: * Fix #3691 Add a config property to add notification emails for failing ML tasks (#3871) * Fix #2553: Change the "index all explorations" job in the admin dashboard to index all activities (#3831) * Fix #3687: Batch calls for retrieving the exploration and exploration rights objects. (#3815) * Enforce the one-service-per-frontend-file rule and frontend naming conventions in more places. * Fix part of #3891: Refactor directives to use template URLs (#3942) * Fix part of #2575: Refactor rich-text component directives to use template URLs (#3921) * Fix part of #2863: Introduce ParamType domain object in the frontend (#3870) * Introduce Creator Dashboard page object for Protractor tests (#3949) Misc: * Fix #3721: Update the release_info script to use LCA and the most recent release tag in order to compile the list of changes, rather than relying on git describe. (#3838) * Update deploy scripts to match new release process (#3952) * Update the automatic backup script to automatically split up URLs if needed (#3956) * Update the backups script to ignore reconstitutable models (#3876) * Update the release info script to output both new and old authors to Oppia (#3878) * Add the release script to the codebase (#3839) * Add script for cutting a new release branch. (#3919) v2.5.4 (22 Sep 2017) -------------------- Learner Dashboard: * Learner dashboard 3.2 (#3759) * Handle anonymous feedback usernames. Learner Dashboard Hotfix. (#3762) * Address the bugs in learner dashboard. (#3720) * Fix #3695: Pull the load tests apart from the main test. (#3729) * Assign the default dashboard to all the users of the site. (#3760) * Add user default dashboards job to job registry (#3779) * Set default dashboard for users and fix a bug in preferences for default dashboard. (#3781) Site-Wide ACL refactor (new roles/permissions system): * Fixes #3742: function added for fetching list of exploration rights based on ids. (#3796) * SiteWide ACl: removing the old system for authorization. (#3696) Hints: * Fix #3645: Introduce new Solution Editor and Learner View (#3703) * Fix #3771: Remove fallbacks (#3772) * Fixes '0' issue for solutions (#3770) Machine Learning: * Fixes for end to end working between Oppia and Oppia-ml. (#3824) * Enable code classifier for code interaction. (#3767) * Make answer classification work synchronously. (#3765) * Code classifier frontend prediction API services. (#3719) * Fix #3469: Introduce PredictionAlgorithmRegistryService and a sample prediction service. (#3716) * Fix #3693: Deprecate ClassifierDataModel and update ClassifierTrainingJobModel (#3734) * Fix #3514: Next job controller (#3658) Learner View: * Fix #3612: In embedded explorations, the learner avatars are too large. (#3736) * Fix #3725: Message bubble triangle (#3749) * Fix #3258: Add share-to-classroom Button (#3743) Audio: * Add audio language preferences (#3766) * Test uploading audio file with an mpeg container. (#3752) * Handle audio files with MPEG container with mutagen (#3735) * Preloading of audio and bandwidth confirmation (#3727) * Fix issue with inter-paragraph spacing in content field being unintentionally reduced. (#3775) Editor: * Remove gadgets functionality and update the exploration schema version accordingly. (#3801) * Fix part of #3400: Update title field in Publish Modal (#3690) Collections: * Fix 'Empty path passed in method' error on the collection page. (#3827) * Fix #3707 Change the start text of collection learner view (#3816) Misc: * Deprecate splash page experiment (#3829) * Remove extraneous period (#3780) * Routine update of translations. (#3785) * Fix #3558: Browser specific alignment (#3768) * Removed I18N_PLAYER_CONTINUE_NEXT_CARD from the translation files (#3737) * Eliminates stray tick mark (#3731) * Fix #3726: prevent graph SVG from overlapping modal footer buttons. (#3728) * remove data-toggle Fixes #3750 (#3754) * Fix #3789: Space out the profile drop down icons (#3789). (#3817) Infrastructure: * Make the range used for generating IDs much larger. (#3799) * Derive GCS bucket name automatically. (#3798) * Simple fix to prevent the last updated field on running the count job. (#3761) * Fix #2036: Introduces and uses configuration point for assigning a job to a specific queue. (#3745) * Fix call to base class (#3751) * Add a one-off job to list which explorations use gadgets; remove old fallbacks job. (#3717) * Improvements and bug fixes to changes introduced by PR #3671 (#3684) Code health: * Fixes #3748 - Changed file names of EmailDashboardService according t… (#3758) * Code refactor: removed publicize status. (#3739) Speed: * Fix part of #3453: Removed jinja template in editor_navigation_directive (#3732) * Fix #3453: Removed jinja template in collection editor navigation bar directive (#3723) * Removed jinja template logics in search_results_directive (#3733) * Remove jinja template in create_activity_modal_directive (#3724) * Fix #3453: remove Jinja template in create activity button directive (#3722) Questions: * Fix #2998 implement collection skills update commands (#3710) v2.5.3 (15 Aug 2017) -------------------- Learner dashboard: * Learner dashboard project milestone 2.1 (#3591) * Introduce the learner dashboard partially. (#3654) * Milestone 2.3 of the learner dashboard project. (#3670) * The fourth milestone of the Learner Dashboard project. (#3659) * The sixth milestone of the learner dashboard. (#3680) Site-Wide ACL refactor (new roles/permissions system): * Site Wide ACL: Milestone 2.1 (#3582) * Removed super admin role from admin interface. (#3621) * SiteWide ACL Refactor: Milestone 2.2 (#3641) * SiteWide ACL: Milestone 2.3 (#3661) * SiteWide ACL Refactor: implemented test to check that all handlers have decorators. (#3679) * SiteWide ACL Refactor: Milestone 3.1 (#3682) * Fix #3698: Shift exception handling for NotLoggedInException so that it does not generate log errors. (#3714) * Fix #3688: refactoring ExplorationStatusHandler to remove unpublish and publicize functionality as it is not called from frontend. (#3715) Hints: * Fix #3595: Hint button should not show for card which do not have hints specified. (#3596) * Fix #3615: Hint Editor should not allow blank hints. (#3616) * Fix #3644: Handles empty hint in hint editor by showing a message and deleting it (#3648) * Move hint button to left corner for supplemental cards (#3702) Machine learning: * Storage, Domain classes and helper functions for ClassifierExplorationMapping (#3583) * Fix #3467: Introduce re-training and add_to_training_queue methods (#3650) Audio: * Add audio file upload handler (#3624) * Create shared audio frontend services (#3647) * Refactor AudioTranslations so that they are stored as a dict keyed by language code, rather than a list. (#3673) * Learner view audio translations (#3681) * Add editor for audio translations (#3692) * Audio fixes: make audio download URL safe; don't show flagging modal if all translations are flagged; use templateUrl for modals. (#3709) * Learner audio updates (#3705) Learner view: * Fix #3585: Corrected arrows in exploration progress nav (#3605) * Change 'style' to 'ng-attr-style' in an attempt to fix IE bug in collection viewer. (#3636) * Fix #3618: stop user icons in learner view from overlapping (#3642) * Standardize button colors and styles in the learner view (#3662) * Make the representation of the learner's 'Continue' answer more conversational. (#3675) Editor: * Adding warning about license terms of images (#3603) * Fix #3505: Implement crop on filepath editor (#3597) * Fix #3446: Text Input Validation (#3580) * Close customize interaction modal window if user clicks outside (#3623) * Minor changes to editor text (#3627) * Improve image uploader warning message. (#3674) * Refactor state content editor into a directive. Establish pattern for testing directives. (#3683) Collections: * Introduce Skills in collections (#3376) * Deprecate SkillListObjectFactory. Remove unneeded skill methods from the frontend. Use skill IDs throughout where possible. (#3676) Misc: * Fix translations on creator dashboard page (#3625) * Fix #3249: Bio in the profile page has to be limited to certain length (#3639) * Fix #3665: select2 placeholder width (#3667) * Fix #3551: Manually set cookie value during language change (#3622) * Fix #3686: fixed text overflow for contributors list (#3697) Fix #3701: Fixed inconsistent Continue button name in exploration learner view (#3711) Infrastructure: * Add config property to admin page for SSL config. (#3600) * Fix user bios job in the case that user_bio is None (#3632) * Fix #2639: Updated Google chart/visualization Library loader code and use async to load the library (#3614) * Add backend functionality to correctly handle needs_update part of subtitled HTML. (#3620) * Part of #2447: Upgrade select2 library (#3626) * Remove erroneous clause in app.yaml. (#3643) * Fix #3515: Implement StoreJobResult controller, a preliminary handler for storing job results. (#3559) * Introduce output list formatting method to core.jobs.BaseJobManager (#3671) * Fix #2394: Clean up core.jobs documentation (#3519) * Fix #2447: Caching should be done on a per-file basis (#3454) Code health: * Fix #2394: Add docstring to core.domain.user_jobs_continous.py (#3569) * Fix part of #2394: Added docstrings in exp_domain.py (#3578) * Pull exceptions classes out of base handler class in base.py. (#3651) * Fix #2394: update docstring for core.domain.stats_services (#3586) Dev tools: * Fix #2508: Automatically generate dummy explorations (#3568) * Fix #3655: Dummy explorations are published but not indexed in library page (#3656) v2.5.2 (9 Jul 2017) ------------------- Fallbacks/hints: * Fix #3537: Handles empty feedbacks for fallback outcomes (#3538) * Fix #3532: Implement back-end for Hints and Solution feature (#3533) * Fix #3554: Migration of Fallbacks to Hints (#3555) * Fix #3571: Introduce first version of Hints UI for learners (#3577) Learner Dashboard: * Fixed a part of the second milestone of the learner dashboard project. (#3482) * Fetch all entities for the learner dashboard in a single RPC call. (#3536) Permissions: * Milestone 1 of sitewide ACL refactor (PRs #3493, #3517, #3543) * Default role added to role field in user settings model. (#3587) Machine Learning: * Fix #3465: Updated and renamed to ClassifierDataModel (#3504) * Fix #3466: Add storage, domain classes and tests for TrainClassifierJobModel. (#3511) * Fix #3528: Add helper functions for ClassifierTrainingJobModel (#3529) Explorations and Interactions: * Fix a bug in the LogicProof interaction where operators were not being included in the student language, causing operators like 'A(x)' to be rejected even if they occur in the question. (#3545) * Remove warning sign in interaction save button; make some warnings more user-friendly. (#3525) * Fix #3446: Numeric input validator (#3470) * Fix #3295 Add backend support for draft change list id (#3560) * Fix #3295 Integrate draft change list id with front-end (#3565) Answers: * Add a function for getting some sample answers for a given state. (#3530) * Implement data extraction query controller and form. (#3581) Collections: * Fix #3438: Alternative to indicate next lesson in collection (#3523) * Fix a couple of UI issues in the collection editor. (#3524) * Add "back to collection" link to reduce potential confusion for users (#3544) UI tweaks: * Add two new splash page variants; update which splash pages users see (#3589) * Fix part of #3505: Improve image upload interface (#3552) * Allow user to resize images before uploading them in filepath editor (#3574) * Fix responsiveness of feedback button in navbar. (#3527) * Fix part of last tile showing in library (#3539) * Fix bugs related to feedback button visibility. (#3540) Utilities and infrastructure: * Fix #3249: Create MR Job to calculate length of User bio (#3510) * Allow list type schema value to be empty (#3542) * Fix #3502: Extract components from HTML string (#3549) * Fix #3521 Moved constants to improve rendering performance (#3570) * Add a test to prevent HTML errors in translations, and fix existing errors. (#3579) * Refactor content property to include audio translations. (#3590) * Fix issue with files being converted to wrong type; re-harden backend validation. (#3593) Dev tools: * Fix #3557: make http://localhost:8181 open in default browser (#3566) * Remove .jscsrc (#3561) Code health: * Fix #2394: docstring for rights_manager domain (#3500) * Remove hybrid get_or_create_user() function. (#3513) * Fix #2254: Move embedded scripts into controllers, use ng-click (#3534) * Fix #2394: added docstrings to core.domain.value_generators_domain (#3564) * Move embedding tests to a separate file to avoid contention. (#3594) v2.5.1 (11 Jun 2017) -------------------- Editor: * Fix #2994: fix bug with alert message showing up in collection editor when invalid exploration IDs are entered. (#3383) * Fix #3342: Add a "Cancel" button to the "Add Interaction / End Exploration" window. (#3384) * Prevent regions to be dragged outside the parent image's area (#3388) * Fix #3344: Have the UI automatically identify draw mode vs drag mode vs resize mode, etc. (#3389) * Fix #3417: Make region names editable in-place (#3449) * Fix #3495: Implement a one-off job to list all current fallbacks (#3496) * Minor changes to improve the display of visualizations in the stats tab. (#3489) * Fix #3406: Allow adding an image to the Continue button (#3425) Accessibility: * Fix #2978: Add a skip navigation link (#3183) * Update donate video URL to force English captions (#3463) Learner Dashboard: * First milestone of the Learner Dashboard Project. (#3423) Learner view: * Fix #3402: Detect learner fatigue (#3474) * Fix #3430: Fix Oppia avatar placement in help cards in learner view (#3475) * Fix part of #2869: Add mobile feedback button to exploration player. (#3398) * Fix #3456: Full exploration title on mobile visible as info icon (#3476) * Fix #3269: Use responsive min-width in exploration player, add viewport styles to CSS (#3494) Machine Learning: * Fix #3363: Implement training conditions for classification (#3450) * Added mapping for classifier_data_schema_version (#3501) Infrastructure: * Upgrade GAE version to 1.9.50. (#3386) * Upgrade pylint-1.7.1 and ensure __init__.py file is present. (#3385) * Fix PipelineSetupError when MR jobs are run on the dev server. (#3393) * Fix #3455: Fix bugs with installation process on Vagrant. (#3460) * Rebalance protractor tests so that the misc suite has less chance of timing out. (#3479) * Add config property for VMID and shared secret key mapping. (#3484) * Remove 'set -e' from .travis.yml (#3488) Collections: * Fix #3365: Landing page for fractions has been implemented. (#3378) * Fix bugs causing the collection editor not to load. (#3410) * Fix #3062: Open-in-new-tab for small screen widths in collection learner view (#3416) * Fix part of #2569: Add e2e tests for collection editor (#3428) * Fix #3411 fix button classes on collection editor (#3414) * Fix #3324: adjustments to collection learner view (#3443) * Fix part of #2030: Add exploration search in collection editor. (#3477) I18N: * Fix #3372: Hindi Language Translation for 'Sign In with Google' (#3380) * Fix part of #3132: Added i18n support for Contact, Get Started and Teach pages (#3374) * Update I18_PREFERENCES_EMAIL_EXPLAIN explanation text for clarity (#3436) * Updates to translations Code health and refactoring: * Fix #3198: Remove FormBuilder.js from base.html * Fix remainder of #2700: Update directives to directly reference templates (#3371) * Fix part of #2863: States object factory update (#3358) * Fix #2536: Adds tests for gadget cmds and ensures tests actually do something (#2721) * Add missing dependency to autosaveInfoModalService. (#3420) * Fix #2925: Refactor exploration data handlers into ReadOnlyExplorationBackendApiService and EditableExplorationBackendApiService (#2999) * Expose getCustomizationArgsWarnings in all validators (#3445) * Delete obsolete reader_view_load_test.py file. (#3451) * Fix #3286: Remove all temporary code and models introduced as part of the answer migration (#3452) * Fix part of #2394: Add docstrings to collection_domain.py (#3447) * Fix part of #2394: Add docstrings to core/storage/file/gae_models.py (#3457) * Fix part of #2394: Doc Strings for controllers/base.py (#3448) * Renamed validator.js files to {Interaction}ValidationService.js (#3483) * Move suggestions.js back to misc test suite to see whether that alleviates Protractor test failures. (#3486) * Rename dashboard to creator dashboard to make way for the learner dashboard. (#3497) * Part fix for #2394: Add docstrings to core.domain.feedback_domain (#3499) * Fix #2394: add docstrings to core/domain/stats_jobs_one_off.py (#3461) * Fix #3485: Added e2e test for exploration search in collection editor. (#3507) * Fix #2394: Update docstrings in feedback_jobs_continuous (#3498) UI tweaks: * Fix #3328: Change the triangle icon in learner view when a user clicks on it (#3379) * Better account for overflowing text on summary cards (#3381) * Fix #1782: tooltip placement issues (#3409) * Ensure that footer doesn't cover content with lower resolution on error message (#3458) * Fix #3427: Make social icons in creator dashboard aligned flush left with row above. (#3441) Other: * Fix #3296: MR job to get the distribution of username lengths. (#3375) * Fix #3259: the number of feedback items in the dashboard is incorrect. (#3391) * Fix responsiveness of donate page (#3492) * Fix #3471: Remove Recently published section from library page (#3481) v2.5.0 (14 May 2017) -------------------- Infrastructure: * Fix #1442: Provide a new framework for visualizing answer statistics (PR #3294) * Fix #3292: Migrate all answers to a new storage system (PR #1205) * Fix part of #2700: Update directives to directly reference templates (PR #3346) * Fix #3283: fix the interactionRulesService error in trainUnresolvedAnswerModal. (PR #3325) Learner view: * Fix #3332: Rescale Lesson Avatar Image (PR #3337) * Fix #2482: Make learner's answers contained within card in mobile view. (PR #3248) * Fix #3362: Improve responsiveness of navbar (PR #3364) Interactions: * Fix #3343: Add trash icon for deleting regions (PR #3373) Other UI: * Fix #3329: 'Error 404: Page not found' has broken footer (PR #3354) * Fix #3355: Change of Font Awesome Icons for relevancy (PR #3367) * Fixed #3327 Changed text from 'highlight' to 'hover over' (PR #3335) Misc: * Allow admins to edit private activities (PR #3359) * Fixes open in new tab bug for Firefox (PR #3348) I18N: * Fix part of #3132: add i18n keys to About and Profile pages; minor Hindi translations for the search bar (PR #3299) Code health: * Fix #3064: Pull directive-specific CSS into the corresponding directives (PR #3352) v2.4.2 (22 Apr 2017) -------------------- Collection player: * Fix #3327: Changed text in collection player card from 'highlight' to 'hover over' (#3335) * Fix open in new tab bug for Firefox (#3348) * Only show 'return to collection' when there are no other recommendations to show, so that the learner is not confused about what to do next. (#3312) * Fix #2985: Introduce collection learner view mobile version (#3197) * Convert GLOBALS to AJAX for collection editor permissions (#3126) * Fix #3131: collection footer and sharing directive added to collection player (#3216) Editor: * Fix #3028: Add confirmation modal dialog for clearing image and regions (#3339) * Fix #1774: Changed color combination required for visibility of reminder bubble in editor. (#3277) * Fix #3093: Popover of Userhelp button remains constant when the user creates the exploration for the first time. (#3267) * Add dependencies to collection editor (#3261) * Fix #3094: Fix license terms link in image interaction (#3236) * Fix #2813: Customization arg model is bypassed for interactions that have no arg to customize. (#3176) * Fix #3101: Discard-draft Tooltip (#3205) * Fix #3099: Clarify error message for Item Selection and Multiple Choice interaction (#3184) * Fixes #3051: Image regions can be resized by clicking and dragging (#3144) * Fix #3122: Number Fields Bring Up Numeric Mobile Keyboards (#3167) * Fix #2039: Allow editors to preview summary tiles (#3069) I18N: * Fix part of #3132: Add i18n keys to About and Profile pages; minor Hindi translations for the search bar (#3299) * Fix part of #3132: Add missing i18n keys and Hindi translations for creator dashboard (#3235) * Fix part of #3132: Add missing translation keys to preferences page (#3231) * Fix #2734: Add i18n keys to preferences (#3219) Creator Dashboard: * Fix #2160: Introduce first version of tests involving deleting explorations for creator dashboard (#3196) * Fix #3318: Style fixes for collection card in creator dashboard (#3330) * Fix overflowing of names in the subscription card. (#3270) Machine Learning system: * Fix #3283: Fix the interactionRulesService error in trainUnresolvedAnswerModal. (#3325) * Fix #3282: Fixes the validate() function for LDAStringClassifier (#3322) * Fix #3297: Renaming Classifier Registry method (#3298) * Fix #3045: Introduce end to end test for classifyHandler (#3255) * Fix #2986: Add helper functions to classifier_services.py (#3070) * Updated tests with assertRaisesRegexp and test to test type of elements in LDAStringClassifier * Added tests to LDAStringClassifier and added comments in classifier_domain_tests * Fix #3180: Fix the "interactionRulesService" not found error in teachOppiaModal. (#3181) * Fix #3169: Fix the alignment of the submit button in teachOppiaModal (#3171) Splash, About, Donation pages: * Fix #3319: Oppia video at the donation page no longer shows "Related videos" after the video finishes (#3321) * Update donation page statistics. (#3313) * Introduce a promo bar (#3262) * Fix #3097: Make splash page buttons non-constant width to accommodate different languages. (#3191) * Fix #2400: Oppia-donation card margin corrections (#3214) * Add a check that user contributions for logged in users exist on the home page redirect check (#3213) Code health: * Fix #3064: Refactor CSS into corresponding directives (#3352) * Refactoring: removed 'role' variable from GET request used in editor.py in delete method (#3275) * Fix part of #2863: Create ParamChange object factory (#3302) * Fix part of #2394: Added docstrings in summary_services.py (#3263) * Fix part of #2863: Create trigger object (#3273) * Fix part of #2863: Create outcome object factory (#3260) * Fix part of #2863: Create front-end domain object for Rules (#3229) * Fix part of #2394: add docstrings for core/platform/models.py (#3226) * Fix part of #2863: Create front-end content object factory (#3224) * Fix #2394: Add useful docstrings to core/storage/job/gae_models.py (#3195) * Fix #3192: shifted back css of oppia-sidebar-menu-open back to oppia.css (#3211) * Fix part of #2863: Create front-end fallback domain object (#3207) * Fix part of #2863: Create front-end domain object for Interactions (#3049) * Fix part of #2394: Added docstrings in cron.py (#3182) * Fixes part of #3064: pull the directive specific css in corresponding files from oppia.css (#3077) Infrastructure: * Fix #3199: Refactor constants loading to avoid synchronous XMLHttpRequest (#3323) * Fix #1852: Transition to ESLint (#3264) * Add installation of peer dependency: jasmine-core. (#3266) * Upgrade protractor, karma and karma-jasmine (#3251) * Fix #3047: Collection contents migration (#3209) * Fix #3232: Generate source maps into separate files (#3233) * Add e2e test to visit the links in the about dropdown (#3223) * Add e2e tests for suggestion acceptance on explorations (#3202) * Fix #3162: set expiration explicitly for files in the build directory. (#3203) * Remove remaining extraneous js files from base.html #3137 * Fix #2828: Add IE9 support for sidebar. (#3178) Other UI fixes: * Fix #2018: make toast z-index lower than navbar z-index (#3320) * Fix #2870: Limit exploration cards to screen width to maintain centering. (#3250) Misc: * Fix #2936: Limit the length of goal description in explorations. (#3274) * Fix #3293: Introduction of a static maintenance page (#3308) * Fix #3135: Switch from Static Image Resources By Using Existing Font Awesome Icons (#3193) * Fixes: footer padding on mobile, #3121 (#3186) * Localisation updates from https://translatewiki.net. v2.4.1 (12 Mar 2017) -------------------- Interactions: * Fix #3027: Update Add Vertex functionality in GraphInput, when vertex is added mode is changed to "MOVE". (#3115) * Fix #3102: Update Guppy to 260da66 to enable better compatibility with non-US keyboards (#3103) * Fix #2964: remove reset icon and add undo reset functionality in pencil code editor (#3055) Accessibility: * Add span text with special class for several icon buttons and links; fix focus styles issue for seach bar; no focus style fix required for language select element * Update icon button text width to address spacing issue in Chrome; Add ARIA role to About, Profile, and exploration Author profile to offer screenreaders some indication that these are menus; Update delete icon on select input to have icon button text; Remove aria-label from item selection to allow for clearer labels * Add aria-label to user menu so that it is properly read as user menu instead of as user avatar; add role to author profile dropup menu so that it is recognized as a menu; update icon accessibility span class name to be more descriptive and add more to the comment above the style in oppia.css * Fix #2955: add alt tag equal to value of getCategory() (#3023) UI tweaks: * Fix #2814: Add new items button visibility in the SetInput interaction on mobile (#2951) * Fix #3120: Buttons on About page have text overflow on mobile. (#3123) * Fix #3037: changed the height of the dropdown save button and width of the discard draft button. (#3100) * Fix #3063: change the default confirmation box in "discard draft" to modal (#3068) * Remove word-break so that lesson titles don't break unnecessarily across lines. Reverts part of #2971. (#3130) * Fix #3129: Make navbar text items visible again by changing to rem. (#3150) * Fix #3066: fixed summary tiles to show the full objective. (#3128) * Fixes #3136 alignment of oppia meaning text in about page after doing required changes (#3153) Code health: * Convert state dictionary data in FeedbackTab to State objects (#3125) * Add docstrings for core.domain.param_domain.py (#3078) * remove image uploader directive from base.html (#3090) * Remove more js files from base.html (#3087) * Fixes #1695: Way to automatically provide backend constants to the frontend. (#3033) * Fix #1858 Added source-maps for better debugging (#3086) Other: * Fix #3094: Change the license terms URL link to go to foundation tab of about page. (#3105) * Fix part of #3073: Add exploration link to feedback email. (#3108) * Change http to https in some places in setup.sh, particularly for downloading node. (#3133) * Add analytics tracking for card-transition and completion in the player. (#3088) * Fix #2987: add a "correct" field to each answer group (#3084) * Fix #2966: modified the the redirection rules when the user goes to root url (#3034) v2.4.0 (18 Feb 2017) -------------------- Collection Player * Fix #3031: track user progress and minor UI changes to match original mocks (#3054) * Fix bugs and improve UI Subscribers * Fix part of #2287: Display subscribers and subscriptions and send emails on publishing. (#3036) Creator Dashboard * Standardize truncation of objectives and display of titles on summary tiles. (#3067) Accessibility * Standardize focus styles across site Other * Fix #2990: Implement workaround to make MathExpressionInput usable on mobile devices. (#3039) * Fix #2989: Check if all files end with exactly one newline character. (#3005) * Added docstring to "core.domain.exp_services" (#2924) * Add Classifier model id (#2961) v2.3.9 (14 Feb 2017) -------------------- Collection Learner View * Fix #2526: Path version of the collection learner view (PR #2979) UI Tweaks * Fix #2874: Show the exploration name in the mobile view (PR #2888) * Fix #2894: Align the footer properly for exploration player in mobile view (PR #2897) * Fix #2893: Modify buttons on Teach page to make width uniform (PR #2898) * Fix #2817: Move Call to action buttion in Teach Page and fixes on about page bar on small screens * Fix #2816: Add call to action buttons to the Foundation page (PR #2903) * Fix #2817, Move Call to action buttion in Teach Page and fixes on about page bar on small screens (PR #2911) * Fix alphabetical ordering of authors (PR #2912) * Fix #2821: Fixed vertical alignment of headers (PR #2909) * Fix #2914: Improve spacing of buttons on Teach and About pages * Fix #2868: Fix social icons positioning in hamburger menu (PR #2932 and PR #2949) * Fix #2551: Add full objective in the library tiles as tooltip (PR #2934) * Remove links from collection page objectives in table and capitalize first letter of first word in objective * Fix #2944: Changed z-index on splash button container so browse button is clickable. (PR #2970) * Fix button text size on splash page (PR #2928) * Merge branch 'develop' into translatewiki * Fix #2620 : Fix exploration card height and deadzone (PR #2971) * Fix #2918: Fix collection tile in creator dashboard. (PR #2973) * Fix #2975 Adds full objective in the library tiles as popovers Site Reliability/Assessibility * Add -L for curl redirect (PR #3021) * Fix #3010: Replace nodelist.forEach use with for loop for better compatability. (PR #3019) * Fix #3003: Use Angular's debouncer for Library search. (PR #3006) * Fix #2830: update styles in footer sharing links to allow them to show in IE (PR #2917) * Add h1 on collection page and add ARIA role to footer tag (PR #2959) * Refactor capitalizing the exploration objectives on the collection page to remove javascript from the html. * Fix #2922: Hide hamburger menu >768px, add function to handle navbar overflow (PR #2927) * Fixes #2956: Images in explorations have descriptive alt attributes (PR #2972) * Fix part of #2862: Add alt attributes to images (PR #2957) * Fix #2954: add appropriate lang attribute to site pages (PR #3004) * Fix #2919: Fix the loading of the editor page. (PR #2958) Emails * Fix part of #2557: Refactoring of email preferences and add functionality to incorporate user's preferences of feedback / suggestions (PR #2892) * FIx #2768: Implement email receiving functionality for feedback messages. (PR #3029) * Rename userExplorationEmailsHandler service to UserEmailPreferencesService (PR #3040) Frontend Refactor * Fix #2722: Split exploration save and publish button to directive (PR #2896) * Fix part of #2863: Create AnswerGroup domain object (PR #2883) * Add dependencies to collection editor html (PR #2996) Subscriptions * Fix part of #2287: Email preferences for subscriptions * Fix part of #2287: Add handlers for subscription and unsubscription (PR #2886) * Fix part of #2287: Add subscribe and unsubscribe button to profile of authors Machine Learning * Fix #2726: Create domain & storage classes for classifier model & tests (PR #2846) * Fix #2728: Add AlgorithmRegistry and test class. (PR #2926) * Fix #2950: Moved classifier methods and test from reader to classifier_services (PR #2974) Dev tools/code health * Add travis retry all tests except for backend and linting (PR #2890) * Add Docstrings in exploration/gae_models.py (PR #2889) * Fix #2455: Add lockfile functionality to fix inconsistent directory permissions in Vagrant (PR #2749) * Update release info output to fit format of changelog (PR #2908) * Fix #2857: Added excluded_dirs in Lint pattern matching (PR #2905) * Fix #2064: Add a test for keys present in source code and not in en.json (PR #2933) * Fix #2394: Add docstring to core/storage/user/gae_models.py (PR #2962) * Docstrings added in the file core/storage/email/gae_models.py (PR #2900) * Fix part of #2394: Update docstrings in core.storage.collection.gae_models (PR #2982) Other * Update translations from translatewiki * Fix translatewiki attirbution in credits (PR #2916) * Fix #2662: Upgrade math-expressions to 370a77. (PR #2984) * Update guppy to the version f6e0bbf in order to prevent a startsWith() error in IE. (PR #3041) v2.3.8 (10 Jan 2017) -------------------- Learner view: * Fix tutor card icon not clickable in learner view (PR #2824) * Fix #2832: Add space between footer and summary explorations container (PR #2833) * Fix #2842: do not submit an answer or clear the help card if there is already a destination card defined. (PR #2843) * Fix #2800: Style the author profile pop-up like about dropdown (PR #2864) * Fix #2680: Ensure that the the help card can be seen (PR #2835) * Fix #2588: Make LATEX smaller in learner view (PR #2854) Splash and donations pages: * Add call to action links on English default splash page (PR #2818) * Fix #2855: Fix showing help text when javascript is not enabled (PR #2856) * Fix #2128: Add alt tags to about page (PR #2858) * Fix #2877: splash page banner should not be able to scroll horizontally. (PR #2879) * Add 'Get Started' link to the sidebar. (PR #2836) * Fix #2815:add third button for credit card payment (PR #2881) * Fix #2128: Add alt tags to donate, library, and splash pages (PR #2882) Dashboard: * Fix #2764: Enable right clickability for all explorations in the dashboard (PR #2823) * Remove the 'total number of feedback threads' statistic from the dashboard. (PR #2837) * Fix #2548: Make sorting in the dashboard more intuitive. (PR #2838) Other pages: * Fix #2716: Show only simple editor tools on medium screens (PR #2850) * Fix #2789: Remove white panel behind exploration cards in profile page. Remove 'Portfolio' text. (PR #2810) * Fix #2026: Add panel to show collection owner and permissions (PR #2865) * Fix #2801: Change collection style in library and remove shadows from carousel scrolling. (PR #2876) I18N: * Update various translations Emails: * Initial work on email muting (PR #2851) * Initial work on email subscription preferences (PR #2849, #2878, #2886) Code health: * Fix #2248: Add e2e tests for feedback on explorations (PR #2753) * Fix #2251: Add e2e tests for parameters (PR #2834) * Add tests to make sure that test email is not sent to query recipients. (#2848) * Update docstrings in user_services.py (PR #2622) * Remove unused images in assets/common (PR #2847) * Fix #2727: Refactor classifier so a BaseClassificationAlgorithm class can be used as a base for classification algorithms (PR #2743) * Fix #2722: Split exploration editor into several files (PR #2844) v2.3.7 (4 Dec 2016) ------------------- Learner view: * Fix #2686: make autofocus behave correctly in the player view (PR #2805) * Do not wrap mathematical formulae that are less than 500px wide (PR #2772) * Fix some janky animations in the learner view (PR #2809) * Fix #1924: rename the button at the end of an exploration from 'return to library' to 'go to library' (PR #2771) Editor: * Fix #2626: in the exploration editor, gray out the screen immediately after a draft is discarded (PR #2663) * Move exploration save/publish functionality to a new explorationSaveService (PR #2718) * Reword the 'share' invitation after a creator publishes an exploration. Library page: * Remove thumbnail images that show up in exploration summary tiles on the search page (PR #2756) * Increase the debounce time for executing a search query. Other pages: * Update the copy across the site (PR #2793) * Fix #2735: standardize the backgrounds for the collection player, exploration player and various static pages (PRs #2758, #2763, #2782) * Fix #2788: Make all the background colors consistent throughout the site (PR #2794) * Remove functionality for opening the sidebar on swipe (PR #2769) * Fix a bug where the navbar overflowed off the right side of the screen (PR #2795) * Fix an incorrect navbar breakpoint (PR #2795) * Fix #2787: eliminate blue outlines on focused buttons (PR #2797) * Fix the color of collection descriptions in the creator dashboard (PR #2765) * Fix part of #2665: split up directives in FormBuilder.js into separate files (PR #2666) Interactions: * Add a benchmark test for the string classifier (PR #2697) * Fix #2754: make the math expression input field clearer (PR #2785) * Fix #2755: allow the math expression input field to accept fractions. * Add a 'submit' button to the NumericInput interaction. I18N: * Add Turkish translations. Emails: * Fix #2269: complete the functionality for sending emails to all users returned via a query (PR #2717) * Fix #2790: add functionality for testing a bulk email prior to sending it out (PR #2799) Dev tools: * Update node.js to v6.9.1. * Update guppy to v1.1.0 (PR #2786) * Fix #2611: update protractor to v4.0.11 (PR #2777) * Add e2e tests for collections * Remove the flaky performance test from the regular Travis build (PR #2757) * Fix an issue where Travis was broken because it could not detect the location of the Java executable (PR #2796) * Fix #2773: remove some flakiness in the interactions e2e test. * Fix a YouTube console error in the e2e tests (PR #2742) Code health: * Add docstrings to email_manager.py (PR #2720) * Add docstrings to html_cleaner.py (PR #2779) v2.3.6 (14 Nov 2016) -------------------- Learner view: * Update learner view design by adjusting spacing at top of cards, augmenting card shadows, updating background images, and removing the share icons at the end. * Hide continue button when pagging back through the cards * Add Math component while suggesting changes * Fixed footer in learner view * Update the backgrounds of both players to use a solid blue background * Change font color from white to green at end of exploration * Fix color of progress dots in learner view * Fix tutor card position when viewport is narrow * Fix jittering help card at a certain size * Fix formatting error in item selection interaction display of learner answers * Add automatic line breaking for LaTeX expressions Editor: * Update the warning labels for changing the objective to be more clear * Upgrade math-expressions library and interpret the creator-defined string as LaTeX instead of text * Fix a bug where customization arg attributes are saved in the wrong order, leading to the item selection input interaction not recognizing HTML snippets with images * Add focusing functionality to the rich-text editor Collections: * Add option to go to collection view after finishing an exploration * Use collection-summary-tile for collections on small screens * Ensure explorations of a single state are properly recorded when completed * Remove 'Collection >' breadcrumb from collection player navbar Library page: * Make library carousel title links more obvious and remove "View All" button * Add protractor tests for visiting library pages * Change the mouse cursor to a pointer when the scroll button appears in the library Other pages: * Add a "Get Started" page. * Fix splash content alignment * Hide site feedback message text on smaller devices * Allow right clicking on dashboard tiles * Display a success toast when a new featured exploration is added I18N: * Fix Indonesian translation Emails: * Add functionality for sending emails to existing users in bulk. Dev tools: * Determine Vagrant env by checking existence of a file and env var * Fix flakiness when accepting alerts in Protractor tests Code health: * Refactor learner view * Minimize calls to is_admin, static site_name and feedback_url * Remove 'ALTERNATE' tag on translations * Refactor ID generation procedure into a separate service. * Separate the top navigation bar into its own directive * Split up the admin page controller * Update stripFormatting filter to preserve bold and italics * Improve docstrings for gae_models.py * Add docstrings for core.domain.stats_domain * Add docstrings for core.domain.stats_jobs_continuous * Add docstrings to gae_models.py v2.3.5 (17 Oct 2016) -------------------- Infrastructure and tests: * Upgrade protractor to v4.0.9 * Add protractor tests to visit static pages and for logged-in flow * Fix .load() method breakage due to jQuery upgrade * Use one-time bindings for admin page * Remove mail validation checks from mailgun email API * Add docstrings to collection_services.py I18N: * Add Portuguese (Brazil) translation UI fixes: * Make notifications right-clickable * Fix fallbacks triggering at the wrong time * Don't allow 'featured' label to break into 2 lines * Fix About page display on mobile v2.3.4 (10 Oct 2016) ------------------- Embedded explorations: * Have a dedicated URL for iframed explorations. * Make the embedding script minimal. Creator Dashboard: * Display top unresolved answers and new feedback for dashboard explorations in a dropdown. * Make collection tiles in dashboard similar as in library. Emails and notifications: * Add a MR job for executing queries. * Fix bugs relating to emails. Player and editor: * Add functionality to report explorations. * Add collection recommendation for logged out users. * Strip formatting when text is pasted into the RTE. * Add check for objective length before publishing an exploration. * Show multiple rules for an answer group. * Fix placeholder for math input. Code health: * Major refactor of frontend code. * Update docstrings. * Delete duplicate angular filters. * Add e2e test for visiting moderator page. * Make 'ddescribe' and 'iit' forbidden strings. * Add an argument to show verbose log for backend tests. Infrastructure: * Upgrade jQuery to v3.0.0. Update AngularJS to v1.5.8. * Install requests package in third_party so that it is available to the deployed application. Library, collections and other pages: * Sort explorations in Top Rated and Recently Published pages. * Remove View all button and link for featured explorations. * Modified UI for adding a new exploration in collection. * Improve collection node list UI. * Remove splash page A/B tests. * Embed the Oppia blog on the main site. v2.3.3 (9 Sep 2016) ------------------- Splash, About and Donation pages: * Update the Donation page. * Change splash pages used in experiments. * Fix #2400: Change margins and box-shadow on About and Donation page. * Fix broken url link to image on donation thanks page. * Use static URLs for the images on the Donate and Thanks pages. * Fix #2371: Prevent 404 errors when loading images in activity creation modal. Speed: * Cache images served via ImageHandler * Add pre-rendering to splash pages. * Externalize first party js modules. * Handle extension resources * Fix #2413: ignore copying python files when generating build directory * Fix #2380: remove js inlining from objects/templates Emails: * Fix #2259: Implement mailgun api for sending emails. * Fix #2349: Add service for sending feedback email to thread participants. Dashboard: * Add sorting to the creator dashboard. * Fix #2244: Fix activity tiles alignment. Mobile: * Fix #2044: User can now open and close the sidebar by swiping right and left. * Fix #1799: The explorations are now centered for a non-mobile device. Library: * Fix #2163: handle error due to invalid search cursor being used when searching in the library. * Align the tops of the exploration and collection cards on the library page. Editor, player and interactions: * Fix save diff modal not loading sometimes. * Modify code REPL rules to do less normalization for snippets. * Fix #2311: Add word-wrap for exploration card content. * Remove title, goal, and category alertService alerts. * Refactor interaction $scope.$parent.submitAnswer. * Extract non-inline interaction code from div['.conversation-skin-inline-interaction']. Misc: * Add tests to collection linearizer service * Fix #1800: remove unnecessary margins and update responsive breakpoint in Notifications page. * Fix #2354: put languages in alphabetical order in language dropdown. v2.3.2 (7 Aug 2016) ------------------- Splash, About and Donation pages: * Add donation page. * Add video to donation page. * Update About, Teach and Contact pages. * Add different splash pages for splash page experiments. * Change Forum link to Donate. * Fix #2277: Make credit columns equal length in credits. Creator Dashboard: * Show number of unresolved answers and open feedback in creator dashboard. * Display relative (weekly) change in average ratings statistics. * Add realtime layer for UserStats continuous job. * Make current UI of creator dashboard responsive. * Fix #2222: Make width of tiles add up to the width of the top bar. Performance: * Fix #2048: Add performance tests for various Oppia pages. * Add cache slugs to cache static assets. * Combine multiple font requests into one. * Add pre-rendering. * Fix #2293: tests for cache slugs. * Fix #2063: convert continuous jobs into one-off jobs. * Add a new main_taskqueue.py file for taskqueue handlers. i18n: * Fix #2179: Add Vietnamese translation. * Fix #2301: Added hindi translation. * Fix #2229: Add test to match en.json and qqq.json. * Fix #2274: Remove blank line in language selector on home page. Editor: * Fix #1863: Suppress warnings if all answers handled in item selection input. * Don't show the creation modal in the 'create activity' flow if it's not needed. * Fix #2017: Update publish button to show number of changes that are made. * Fix #1862: Creator no longer has to remove pre-existing text in content editor. * Fix #2094: Change 'Done' button to 'Save' and color it green in state title editor. * Fix #2176: Add minimum length to the objective of exploration. * Fix #1966: Remove the option for links to open in same window in RTE. * Fix #2337: Show feedback in the fallback editor. * Style the placeholder for multiple-choice input. Emails: * Fix #2211: send suggestion email to owner of exploration. * Fix #2258: Do not send feedback messages if user has already seen to them. * Add noreply email for notification emails. Admin page: * Fix #2197: Refresh admin page keeps it at same location. * Fix #2195: Add auto-scroll to show output in jobs tab. * Fix #2196: Add alternating colors to jobs list on admin page * Hide the 'Activities' tab in the production environment. Collections: * Fix #1990: Add ability to edit language code and tags in collection editor. * Fix #2116: Remove return to collection button. Development workflow: * Fix #2232: Do not show unnecessary feconf version change info in the release info generated by the release info script. * Update chromedriver to fix an e2e test bug. * Add more logging to the Python linter. * Fix #2271: Add documentation about minification flag and check for bad pattern before committed. * Fixes for the deploy script. Misc: * Remove PAGE_NAME_FOR_CSRF when generating CSRF token. * Alphabetize and limit GLOBALS to 80 chars in html. * Add diagnostic one-off job to highlight ItemSelectionInput interactions whose answer groups need to be fixed. * Normalize whitespace, and capitalization in strings in code interaction. * Add analytics events. * Fix #2247: Update README image. v2.3.1 (3 Jul 2016) ------------------- Creator dashboard and notifications: * Fix #1366: redesign the creator dashboard to highlight stats and display card/list view. * Fix #461: implement functionality for sending emails to creators when they receive feedback messages on their explorations. * Remove the "neither, thanks" option from the activity creation modal. * Implemented a version of stats_services.get_top_state_rule_answers to fetch answers for multiple explorations simultaneously. Library page: * Read featured activities from a list, in order to reduce loading time in the library. * Change "featured explorations" to "featured activities" in the library. * Add scripts to randomize the library banner image. * Fix #2013: correctly align the banner image. * Fix #2164: expand the width of an exploration summary tile to match the width for the collection summary tile. * Fix #1979: fix alignment of the carousel scroll buttons. * Fix #2144: position the language dropdown selector correctly in the navbar for screen widths less than 1230px. * Fully remove the 'contributors' field from the exploration summary data passed to the frontend. Learner page: * Fix #1795: add social sharing icons to the end of an exploration. * Fix #2113: prevent recommended explorations from disappearing behind the tutor card on small screens. * Fix missing text next to player feedback checkbox. * Remove the standard navbar tabs from the collection player. Editor page: * Use the graph visualization in the history tab to display the changes when an exploration is saved, and remove the corresponding logic from the backend. * Fix #1801: modify the “publish exploration” modal to be more visually appealing. * Add a button to the exploration preview tab that allows the user to restart from the initial card. * Show a list of all current parameter values in preview mode. * Hide the exploration graph if there is only one card in the exploration. * Fix #2078: prevent unsaved changes from being lost when editing a state name. * Change the wording for the "featuring" functionality in the exploration settings tab to indicate that this no longer places the exploration in the “Featured Activities” group in the library. Profile page: * Fix #1867: prevent the tooltips on the summary tiles from flickering. * Fix #2075: make the subject interests wrap properly. Preferences page: * Fix #2092: prevent the dropdown placeholders from showing i18n keys instead of the correct placeholders. * Fix #2089: update the display of the text field for Preferred Languages on mobile phones. I18n: * Add Indonesian and Portuguese translations. * Add a qqq.json file with explanations of translation keys. * Add tests to verify keys in i18n json files. * Fix #2117: add i18n for title of creator dashboard. * Fix #2120: add i18n for the buttons on the Teach page. * Fix #2121: remove unused keys from translation JSON files. Other pages: * Fix #2023: display the About page tabs correctly on small-width screens. * Add a Donate page. * Remove redundant /participate page, add redirect URLs, and add a new URL for the 'Contact us' page. UI (general): * Fix #2108: remove rounded corners from the select2 dropdown. * Fix #2035: replace glyphicons with material icons. * Fix #2091: adjust footer on smaller screens. * Fix #1901: move terms/privacy links to the footer. Rich-text components: * Fix #1931: add caption functionality for images Interactions: * Fix #2074: for ItemSelectionInput, display the rule selections correctly. * Fix #1740: for CodeRepl, start at the top of the code when initially displaying the Python coding window. * InteractiveMap: fix width of map on narrow viewports. Infrastructure and tests: * Move the rules to a rules.json file that is accessible by both the frontend and backend. * Fix #2047: add a performance testing framework. * Remove obsolete configuration properties. * Add a new task queue for backups. * Fix #1857: add a flag allowing developers to enable minification on the dev server. * Fix #1974: add pattern checks for ‘==’ and ‘!=’ in JavaScript files. * Divide the editor e2e test suite into mainEditor and editorFeatures. v2.3.0 (7 Jun 2016) ------------------- Site-wide features: * Add suppport for internationalization. * Add title and meta descriptions. * Fix #1845: add a warning if the user has disabled JavaScript. * Fix #1900: correctly close the sidebar menu on mobile. * Fix #1842: prevent the profile avatar dropping off the top of the page on small screens. Splash/About pages: * Add new About, Teach and Get Involved pages. * Reverse the text and update the images in the lower half of the splash page. * Redirect to the creator dashboard if the user logs in from the splash page. * Use absolute paths for images on the splash page. Library page: * Add a recently-published group to the library index page. * Add a top-rated group to the library index page. * Add a banner and text to the top of the library index page. * Add a footer to the library index page. * Filter null explorations from showing up in the library index page. * Fix #1456: create summary tiles for collections. * Fix #1860: elongate exploration summary tiles to allow two lines of the exploration title to show. * Fix #1840: fix the oval around the contributor icons in the exploration summary tiles. * Remove avatars from the exploration summary tiles due to latency issues. * Remove the on-hover indicator from the library carousel scroll button. * Fix #1864: fix carousel behaviour when the user clicks on the scroll button multiple times in rapid succession. * Fix #1911: fix incorrect carousel shadow height. * Fix #1918: Prevent the site feedback button from being hidden in the library index page. * Add new subject icons for Spanish and Gaulish. Exploration editor: * Add functionality for autosaving drafts. * Allow jumping to a particular state in preview mode. * Prompt for missing metadata fields just before publication. * Streamline the saving flow for the various state properties. * Refactor the parameter metadata computation into a separate service. * Fix #1877: prevent the 'add new response' modal from exiting when a creator clicks outside it. * Fix #1829: in the history tab, reduce the space between the committer's username and the exploration version. * Fix #1894: prevent the category dropdown list from unnecessarily scrolling to the bottom. * Remove the underline button from the rich-text editor toolbar. * Remove the "nominate exploration" button from the editor settings page. * Remove the 'missing objective' warning. Collection editor: * Introduce a new collection editor (currently in beta). Creator dashboard: * Rename 'My Explorations' to 'Creator Dashboard'. * Fix #1954: add collection tiles to the creator dashboard. * Fix #1696: introduce a modal for choosing which type of activity to create. * Fix #1705: remove the old exploration creation modal. Learner page: * Fix #1489: make the learner view responsive. * Fix #1881: remove unnecessary scroll bar. * Fix #1814: remove unnecessary button styling and arrows in the tutor card. * Fix #1815: place the tutor avatar above the supplemental card. * Fix #1818: show the help card at the bottom of the viewport if the interaction is too tall. * Fix jerky animation for showing previous answers. * Fix #1816: fix single-card to double-card animation. * Fix #1817: center the animation at the Oppia avatar position. Interactions: * ItemSelectionInput: - Fix #1766: correctly initialize the notEnoughSelections flag. Profile page: * Fix #1793: allow the user to click on their profile image in order to edit it in their Preferences page. * Fix #1826: show subject interests properly in Firefox. Infrastructure and tests: * Improve application performance by disabling debug data. * Fix #1540: add tests for detecting bad patterns. * Add a one-off test case to check the computation of exploration contributor summaries. * Support setting CHROME_BIN to the Chromium browser path in Unix-based systems. * Fix #1394: fix Python version check in setup.sh. * Fix #1848: set the appropriate http_proxy environment variable if the user is on Vagrant. * Increase the default memory in the Vagrantfile to 2048MB. * Fix #1836: add a .gitattributes file to set proper EOL terminators. * Tighten CSRF payload checks to correctly handle empty request data. * Fix #1757: divide e2e tests into separate suites. * Fix #1779: split e2e tests into separate suites on Travis-CI. * Protractor bugfix: scroll to the top of the page before clicking on the state graph. v2.2.0 (7 May 2016) ------------------- Overall site design and navigation: * Fix #1510: separate the library page from the splash page. * Clicking on the logo at the top left redirects to the appropriate home page. * Fix #1075: use material icons instead of glyphicons. * Fix #1615: add a footer to all informational pages on the site Splash page: * Redesign the splash page. Library page: * Rename 'gallery' to 'library' throughout the codebase. * Add an index page with explorations in different categories. * Fix #1360: add a separate category for featured explorations. * Fix #1681: redesign the number-of-contributors indicator on the exploration summary tiles. * Create new category icons. * Reduce the number of categories in the category dropdown menu. * Add stable URLs for search result pages. * Redesign the 'loading more results' indicator. Editor page: * Redesign the editor onboarding flow. * Fix #1537: send an email when a user is granted new rights to an exploration. * Fix (part of) #798: clarify the message shown when an interaction is missing. * Fix #1679: in the editor view, prevent the feedback tab overlapping the sign-in menu. * Reduce the widths of the editor tabs. * Tidy up the save/publish button styling in the navbar. * Fix #1676: remove the small gap between the "Save Draft" and "Discard Draft" buttons. * Remove the visibility toggle for private explorations from the Settings tab. * Fix a bug in getEditorTabContext() that resulted in incorrect detection of the editor preview mode. * Fix #1788: correctly align parameter input fields in Firefox. Learner page: * Fix #1497: ensure that the inter-paragraph spacing behaves correctly. * Fix #1678: prevent share links from being squashed in the information card. Interactions: * CodeRepl: - Fix #1682: add an OutputContains rule. - Fix #1671: make text highlighting visible. - Fix #1767: add a 'test run' button. - Fix a bug where the error message displayed in the user-facing console was not updated promptly. Rich-text editor: * Add indent/outdent functionality. * Add block-style previews for some RTE components. * Fix #914: remove the RTE icon resize handlebars in Firefox. Profile page: * Fix #1350: redesign the profile page to include a portfolio section and display responsively. * Fix #1544: Fetch Gravatar images or identicons when a new user signs up. Other pages: * Fix #1703 (preferences page): fix the preferred languages dropdown width. * Fix #1712 (admin page): add a navigation bar, and separate the page into different categories. * "My explorations" page: - Autofocus correctly when the 'create exploration' modal is opened. - Redesign the page to be more useful to new creators. - Show a more informative status ("Published" instead of "Good") for published explorations that have no unresolved feedback messages. Developer workflow: * Fix #995: add Protractor e2e tests to Travis-CI. * Improve Travis-CI build times by caching specific directories. * Fix #1717: enforce correct permissions on the node_modules/ dir in Vagrant. Infrastructure and tests: * Update protractor to 3.3.0. * Fix #1434: replace deprecated $http.success & $http.error with $http.then. * Fix #1369: add a domain layer for objects related to feedback threads. * Fix #1729: add tests for summary_services.py. * Add analytics events for buttons on the splash page, and for opening the 'publish exploration' modal. v2.1.5 (3 Apr 2016) ------------------- Overall site design and navigation: * Fix #1347: redesign the navbar, and include a "create" button on more pages. * Fix #1533: make "My Explorations" the homepage for logged-in users. * Fix #1531: introduce an alertsService to display warnings and transitory info messages. * Fix #1622: replace PNG images with icon fonts (where possible) to improve performance. Gallery page: * Fix #1617: add a "deselect all" option in the category and language selectors in the search bar. * Fix #1550: return profile pictures together with the other data in the exploration summary tiles, in order to avoid multiple unnecessary fetches to the server. * Fix #1543: for community-editable explorations, the first avatar in the exploration summary tile should be a globe. * Fix #1668: reinstate the search loading indicator. * Fix #1529: truncate long usernames in the gallery card tooltips so that they don't overflow. * Create new directives for the search bar and the grid of exploration summary tiles. Editor page: * Fix #473: changing the rule type should preserve existing rule input fields, whenever possible. * Fix #1613: after publishing, creators should be encouraged to share their explorations. * Fix #1575: correctly restore the "Save Draft" button after the user tries to save changes that have no net effect. * Fix #1656: fix alignment of status and state in feedback/suggestion threads. * Fix #1370: show the number of open feedback/suggestion threads in the exploration editor navbar. * Fix #1566: clicking the edit icons in the Oppia response editor should open up the response editor. * Generate default rule input values in the backend and send these to the frontend, thus reducing the need for the core code to special-case on particular interaction ids. * Fix #1536: within the multiple-choice option dropdown in the rule selector, images should not overlap. * Partially address #1287: implement a storage layer to support auto-saving of drafts. * Remove unnecessary two-way binding in the rule type dropdown selector. Learner page: * Fix #1637: prevent the feedback popup from overflowing off the screen. * Increase the size of the first avatar on each exploration card. * Adjust the progress-dot tooltips to point towards the left. Interactions: * CodeRepl: display underscores correctly in the code editor. * ItemSelectionInput: make the UI more similar to that of MultipleChoiceInput. * LogicProof: update the Angular reference in the JavaScript generating helper file. * PencilCodeEditor: hide the Pencil Code error console. * SetInput: remove the error that arises in the editor when trying to add an element to a rule input. * SetInput: explicitly instruct the learner to add one item per line. * TextInput: always show the "submit" button. Rich-text editor: * Fix #945: improve the rich-text editor performance by removing unnecessary internal $watch statements. * Fix #448: redesign the icons for all the RTE components. * Fix #1534: prevent long math LaTeX formulas from spilling out of the rule selector dropdown. * Fix #1496: ensure that videos stay within their container when they are inserted into a Collapsible RTE component. Collections: * Fix #1564: make it possible to unpublish collections. * Fix #1649: pass num_views to collection learner view * Fix #1216: fix the display of the collection viewer tiles on small screens. * Add collection editor frontend and backend controllers, so that the collection editor is fully functional. Other pages: * Fix #1288 (profile page): redesign the calculation of the impact score. * Fix #1368 (notifications page): make the page display correctly on small screens. * Fix #1628 ("my explorations" page): ensure that the "Unresolved Feedback" status message does not overflow the exploration card. * Fix #1633 (about page): reinstate the missing "Oppia Foundation" anchor. * Fix #1631 (privacy page): de-italicize the text in the sidebar. Developer workflow: * Install XVFB and adjust setup.sh to prepend xvfb-run to frontend test commands for developers who are using Vagrant. * Fix #1568: add an error message if the GAE download via curl fails. * Fix #1488: make the pre_push hook switch to the correct branch before linting. * Update run_frontend_tests.sh to not run the minified tests by default, and add an optional flag to skip the installation process. These two flags together significantly speed up running the frontend tests. * Fix #1643: report build status on gitter and IRC. * Update the README to point to the new IRC channel. Infrastructure and tests: * Fix #1504: update textAngular to v1.4.5, and add Rangy (v1.3.0) as a third-party dependency. * Fix #1416: guard against the backend sending duplicate emails. * Fix #1579: introduce a standard naming scheme for example users in the Protractor tests. * Add an analytics event for new signups. * Remove all author tags from the codebase. v2.1.4 (28 Feb 2016) -------------------- Learner page: * Fix #1471: show the exploration ID correctly in the embedding instructions. Gallery page: * Fix #1438: show contributors' icons on the gallery cards. * Fix #1437: fix a race condition when searching in the gallery. Rich-text components: * Fix #1380: autoplay videos only if the learner is seeing them for the first time, and the video is in view. * Fix #318: in the RTE, auto-prepend "https://" to links which don't specify a protocol. * Fix #1466: prevent an error from occurring when spaces are typed into the link editor. * Fix #1421: update MathJax to v2.6.0 to prevent the Math component from showing a black vertical bar on the right border. * Fix #1432: MP4 video components used to load inconsistently; to avoid this, we now clear the 'src' tag after a video leaves the user's view to release memory and browser resources. Editor page: * Add an html-select-directive, so that LaTeX and images are displayed correctly in multiple choice options. * Fix #1088: hide the feedback editor for the Continue Button interaction. * Fix #1089: do not show a default warning for multiple-choice interactions if all choices have been catered for. * Fix #1516: prevent a console error from arising when the first state's default answer group feedback is edited. Infrastructure: * Add full instructions for installing Oppia on Windows. * Remove ComputedProperty construct in order to speed up requests. * Add infrastructure for frontend event reporting. * Replace the deprecated gulp-minify-css library with gulp-clean-css. * Modify the pre-push hook to only trigger when a branch is pushed (and not when a tag is pushed or a branch is deleted). * Add a max-line-length check to .pylintrc. * Fix #1440: remove the activeInputData service from the frontend. Demo explorations: * Fix #1509: address warnings/errors in demo explorations. Other: * Add an ISSUE_TEMPLATE.md file to the root of the repository. * Add a link to the Google Drive folder in CONTRIBUTING.md. v2.1.3 (31 Jan 2016) -------------------- Learner page: * Allow learners to make suggestions for changes to exploration content. * Fix #1279: Fix a bug where long usernames in the info card overflow the tooltip. * Fix #1332: Show only 1 decimal place for ratings. * Show 'Unrated' in the exploration information card when an exploration has no ratings. Gallery page: * Fix #918: Redesign the 'no search results found' message. Interactions: * ImageClickInput: fix misalignment of clickable regions. * MusicNotesInput: move the logic from the controller to the link function. * CodeRepl: - Fix #1383: Allow imports in the learner’s code. - Fix #1327: Show prepended and appended code. - Gray out prepended and appended code sections. * Add rules for the Graph interaction to check if a graph is regular, acyclic, strongly connected or weakly connected. Editor page: * Fix #1090: Change the rule feedback editor to only require either feedback or a new destination, and add a warning sign to the answer group if neither is specified. * Fix #1255: Add a “Saving…” indicator after the 'Save Changes' button is clicked. * Remove the need to specify icon data URLs manually for RTE components. * Put a gray overlay over the state and interaction editors when they are hovered over. * Change popover placement for the intro tutorial. * Make history graph legend non-clickable. * Fix overlapping buttons in exploration settings. Infrastructure: * Add a push hook that runs the linter and frontend tests. * Add a script to simplify releases by summarizing authors, commit messages, and schema, setup script, and storage model changes. * Add a job to compute the number of commits done by each contributor in each exploration. * Skip the SDK update in the e2e tests script. * Add parallelization to the linter. * Split up the frontend player view into separate files. * Add ‘OpenJDK’ (for Skulpt) and ‘unzip’ to the prerequisite-installation script. * Remove frontend tests for displaying dates in users’ locales. * Add a frontend service for computing expression output types. Demo explorations: * Add a new demo exploration which contains every interaction Oppia currently supports (for testing purposes). * Remove the cities exploration. * Update the demo explorations list to be explicitly mapped by id. Other: * Update contribution instructions in CONTRIBUTING.md. v2.1.2 (6 Jan 2016) ------------------- Gallery page: * Reduce latency for fetching the data for the number of views of an exploration. * Add a 'loading more...' message at the bottom of the gallery. * Abbreviate the date shown in the gallery tiles. * Reduce the size of the 'updated' tag on the gallery tiles. Learner page: * Move the help card lower so that it does not block the display of the interaction. Interactions: * MusicNotesInput: - Fix #1168: make the music notes interaction work on mobile devices. - Fix #1165: make the music notes interaction work in editor preview mode. * CodeRepl: - Show the output and error messages in the supplemental interaction panel. - Fix a bug where the codemirror editor did not show correctly on small screens. - If an error occurs, give information about whether it happens in the learner's code, or in the creator's prepended/postpended code. - Change the indent unit to 4. * GraphInput: Fix #1265: limit the number of vertices in the graph used for isomorphism checks. Infrastructure: * Fix #1209: add installation instructions (and supporting scripts) for Windows. * Add functionality for linting python files. * Add a lint check to Travis-CI. * Fully lint all the files in the codebase. * Split up the Karma tests for interactions. v2.1.1 (29 Dec 2015) -------------------- Learner page: * Fix #1084: redo the display of recommendations at the end of an exploration. * When the learner submits feedback, automatically append the current state name to the feedback. * Fix #714: add an e2e test for exploration ratings. * Move the help card to the bottom right of the supplemental interaction. * Do not animate the initial display of an exploration, even if its first state includes a supplemental interaction. Gallery page: * In the gallery tiles, show the number of views an exploration has received. * Unify the backend methods that compute data for the summary tiles. * Show a badge that indicates if an exploration has recently been updated. * Fix a bug that caused a backend error to be raised when new-style YAML versions of explorations are uploaded. * Fix a bug that caused the exploration summary tile data in the gallery to not update correctly when the search query is changed. * Update the icon used to denote the Mathematics category. Profile page: * Fix #1248: correctly display multi-paragraph bios in the Profile page. * Change heading of statistics tab from 'Statistics' to 'Impact'. Interactions: * GraphInput: add a heuristic pre-check for graph isomorphism before performing the full calculation. * LogicProof: add inline feedback, and improve the handling of tab characters and blank lines. * For the following interactions, migrate the rule evaluation logic to the frontend: CodeRepl, GraphInput, InteractiveMap, MultipleChoiceInput, PencilCodeEditor and TextInput. Rich-text components: * VideoMp4: fix a Chrome bug that caused HTML5 video requests to sometimes forever remain in the 'pending' state. Editor page: * Fix #1259: autofocus on the commit message textarea when the Publish Exploration modal is opened. Other pages: * Remove the email feature from the moderator page. Infrastructure: * Incorporate the string classifier into the backend classification logic. * Lint all the JavaScript files in the codebase. * Refactor PlayerServices.js, breaking it down into separate services with distinct responsibilities. * Create frontend domain objects for Explorations and States. * Add tests for the third-party manifest file. * Remove the backend test count. * Fix #1272: generate minified files before launching the Protractor tests. * When running the karma tests, do so for both minified and unminified JS files. Other: * Add gitter badge to README.md. v2.1.0 (7 Dec 2015) ------------------- Learner page: * Fix #1164: on narrow viewports with supplemental interactions, add buttons to the bottom of both cards to make it easier to navigate to the card that isn't currently showing. * Fix #1083: prevent the rating form from showing up before the learner has reached the final card of the exploration. * Fix some errors in the display of the average rating, contributor list, and last-updated time in the exploration information card. * Make the 'blackboard' background file size much smaller, in order to reduce loading times. * Fix a bug that caused the window to judder when the feedback link in the navbar was hovered over. Gallery page: * Redesign the gallery using smaller tiles and new images. Increase the number of tiles loaded at a time from 10 to 24. * Remove the video from the front page, and the "Dive into an exploration" heading. Replace both of these with a blurb directing users to the About page. * Show rating information in the exploration summary tiles if at least one rating is received (rather than waiting for there to be at least three ratings). Profile page: * Fully redesign the profile page, adding a first-contributed date, a field for subject interests, an impact score, and a list of created/edited explorations. * Add links to the profile page from both the Preferences page and the top-right menu. * Add new backend jobs to compute a user impact score, the list of contributors to each exploration, the list of explorations created or edited by a user, the first contribution date of a user, and the first date on which an exploration was published. Interactions: * Create a new interaction for inputting and evaluating math expressions. * Build a framework for evaluating learner answers in the frontend, and migrate the following interactions: ImageClickInput, ItemSelectionInput, LogicProof, MusicNotesInput, NumericInput and SetInput. * EndExploration: Change the displayed name from 'End Conversation' to 'End Exploration'. * EndExploration: Use the new summary tiles to display exploration recommendations. * ItemSelectionInput: Fix a bug in the implementation of the "DoesNotContainAtLeastOneOf" rule. * LogicProof: Extend the timeout for the frontend tests which checks the interaction's evaluation speed, since these tests occasionally fail on slow machines. Editor page: * Allow moderators to send emails when unpublishing or featuring explorations. * Prevent an exploration from being saved if there are critical interaction validation errors. * Restyle the history page to use checkboxes instead of radio buttons. * Fix a bug that prevented the title of a state from showing up when the corresponding node in the exploration graph was hovered over. Other pages: * Remove some unnecessary warnings that were triggered when a user moved to another page while there was a pending HTTP request. * Fix an issue where the site feedback link at the bottom left was blocking content on small screens. * Update the text on the privacy page for clarity. * Make the 'development mode' indicator a bit less obtrusive. Infrastructure * Rewrite the installation scripts using gulp and a manifest, and add tasks for bundling JS and CSS dependencies in order to reduce the number of backend requests on page load. * Check that versions of installed node modules are correct when running the setup scripts; if not, download the correct version of the module. * Fix #1170: Check if pip is present on the developer's machine, and output an error message if it isn't. * Automatically install a local copy of the numpy dependency. * Skip the App Engine SDK update check at startup. * Speed up Travis-CI runs by making the coverage report for backend tests optional. v2.0.3 (21 Nov 2015) -------------------- Learner page: * Add help cards for Oppia's responses for supplemental interactions. * Increase width of cards without supplements. * Animate changes in card widths. * Change the 'Previous responses' heading to 'Previous answers'. Interactions: * Fix a bug where rule fields of type CodeString default to None instead of the empty string. Editor page: * Partially fix a bug where the save and publish buttons drop off the navbar on small screens. Rich-text editor components: * Fix a bug where images overspill their boundaries in Firefox. * Fix a bug that caused images to display inline; they should display as centered block elements instead. * Remove whitespace around links. Other pages: * Make the site feedback form more prominent. * Add a frontend learner view for collections. Infrastructure: * Reduce the time taken for backend tests by splitting up the jobs files. * Rename test scripts to run_backend_tests.sh, run_frontend_tests.sh and run_e2e_tests.sh. * Create a run_tests.sh script to run all of the tests. * Run all tests on deployment, instead of just the backend ones. v2.0.2 (8 Nov 2015) ------------------- Learner page: * Add conversation bubbles to the conversation skin. * Remove the card-level feedback icon. * On mobile devices, do not autofocus form fields. * Center the progress dot tooltips on the progress dots. * Add a short delay to Oppia's response in order to better simulate a chat coversation. Interactions: * Add a new PencilCodeEditor interaction. * MusicNotesInput: Fix #987: make the interaction wait for the page to load before displaying. * InteractiveMap: Fix #966: make the interaction load correctly on small screens. * InteractiveMap: Remove the SensorNotRequired warning. * EndExploration: Remove the 'Return to Editor' button in editor preview mode. * TextInput, MultipleChoiceInput, SetInput: Adjust margins and icons. * MultipleChoiceInput: Fix an issue that was causing images to display incorrectly. Editor page: * Add functionality for gadgets. * Add functionality for fallbacks. * Add functionality for enabling advanced features (fallbacks, gadgets, parameters) from the Settings page. * Move the parameter editor into the state editor. * Use the avatars from the learner page in the editor page. * Fix a bug where the exploration is sometimes initialized wrongly in the preview tab. * Show state-specific warnings as tooltips in the exploration graph. * Redirect to the 'My Explorations' page after an exploration is deleted. * Improve the layout and wording of the buttons in the 'delete exploration' modal footer. Other pages: * Add links and avatars pointing to contributor profile pages. * Redesign the profile page. * Rephrase a point in the participation playbook for clarity. * Set an explicit timeout for the creation modal autofocus. * Remove the /editor_tutorial page, since it has already been moved to the Oppia GitHub page. * Add touch events for tooltips. * Use spaces instead of tabs in all codemirror form fields. * Allow the use of 'pre' tags in HTML fields. * Clarify the changelog for the terms page. Infrastructure: * Add a pre-commit script that lints JavaScript files. * Be more flexible in determining which Python binary to use. * Replace some frontend JS/CSS dependencies with their minified versions. * Remove some unneeded properties in app.yaml. * Update Angular to v1.4.7. * Update node to v4.2.1. * Update protractor to v2.5.0. * Update ui-bootstrap to v0.13.4. * Remove the material-design-icons and material-design-iconic-font dependencies, and replace them with the material-icons font import. * Improve the error message when the backend tests fail. * Split the Protractor tests into multiple files so that they parallelize better. * Change the default number of sharding instances for Protractor tests to 3. * When running Protractor tests, stop Selenium and Google App Engine from sending useless info logs to the terminal. * Fix various errors and warnings in the Protractor tests. v2.0.1 (13 Oct 2015) -------------------- Sitewide changes: * Update the terms of use and privacy pages. Learner page: * Make some aesthetic improvements to the learner view, including a new bakground and some styling changes. * Implement #963: smoothly animate the expansion of previous answers a learner submitted to a card. * Implement #962: animate the appearance of Oppia's response to a learner's answer. * Fix a bug where elements at the bottom of the learner view sometimes overlap on mobile screens. * Fix #967: animate the automatic scrolling to the top of the screen when the learner transitions to a new card. * Introduce an information card which displays the metadata information about an exploration. Editor page: * Fix #950: disallow underscores in state names from causing the exploration editor from becoming broken and unusable. Interactions: * Fix #986: replace the JSRepl dependency with Skulpt for running Python code in the frontend. Continuous Integration: * Introduce continuous integration in the GitHub project using Travis CI. This automatically runs both the backend and frontend tests for all pull requests. * Add code coverage and Travis CI badges to the README. Frontend: * Improve a frontend test for the truncation filter. * Refactor up how the 'Continue' interaction is used in the frontend. Backend: * Introduce the backend infrastructure for collections. * Introduce string classification services which will later be used to classify student answers for the TextInput interaction. * Fix a bug which prevents the exploration migration job from resetting the last updated times of all explorations in the gallery. v2.0.0 (26 Sep 2015) -------------------- Learner page: * Fully redesign the learner view in order to make only one state viewable at a time. * Make the feedback popover keyboard-accessible. * Add alt tags to the Oppia and user avatars. Gallery page: * Fix #716: allow ratings to have half-star granularity. * Fix a bug where the tick marks in the gallery dropdown menus were not aligned with the corresponding rows. Editor page: * Upgrade the rule system to support fuzzy rules. * Improve the wording of the tutorial and the default content card. * Make the number next to the 'Save Draft' button less prominent. * If a user does not have permissions to view an exploration, do not allow them to download it. * Fix #865: remove the 'Change Interaction' button from the interaction modal if an interaction is already selected. * Fix #762: prevent more than one modal from opening, even if the "Save Draft" button is clicked twice. * Fix #937: in the feedback tab, allow a status change (with no accompanying message) to count as a valid update to a feedback thread. * In the history tab, fix a display error for text in the 'revert version' modal. Sitewide frontend changes: * Fix links to point to github.com instead of code.google.com. * Fix a bug in which the profile dropdown would sometimes not show up on the top right. * Fix #917: make the error pages more friendly. Interactions: * Add a new ItemSelectionInput interaction. * Redesign the multiple-choice, numeric, text and continue button interactions. * Fix #788: in the ImageClickInput interaction, show a more descriptive representation of the learner's answer. * Fix #882: in the ImageClickInput interaction, enable labels to be specified. * Fix #919: make NumericInput interaction accept percentages. * Fix #953: in the TextInput interaction, change 'Number of rows' to 'Height (in rows)'. * Fix a typo in the editor warning message for multiple choice interactions with no default outcomes. Rich-text editor components: * Fix tooltips for RTE component insertion buttons. * Add an optional MP4 video RTE component. Security: * Specify the filename explicitly in the Content-Disposition header for JSON responses. Infrastructure: * Adjust backend tests to not use datetime.datetime.now(), since it gives different results in different locales. * Add a hook for inserting custom HTML before the end of the 'body' tag. * Broadcast parameter values to the MessengerService for explorationCompleted and stateTransition events. * Speed up the recommendations job by making fewer calls to the datastore. * Update FontAwesome to version 4.4.0. * Add created_on and last_updated fields to reconstituted version snapshots. * Use the date when analytics were migrated away from StateCounter as the signal for which state to consider as the initial state for an exploration. v2.0.0.rc.4 (15 Jul 2015) ------------------------- Editor walkthrough page: * Add a new walkthrough tutorial which teaches the standard functionality of the editor. Learner page: * Show tiles of recommended explorations for the user to play after they have finished an exploration. Editor page: * Introduce answer groups (called responses) which replace the current rules in the editor. * Change the process of creating a new state to use an in-line text field instead of a modal. * Change many of the editor headers and button texts to be more conversational and friendly. * Rename 'states' to 'cards'. * Remove the ability to add varied feedback (only one piece of feedback may be set for a response). * Automatically open the Add Response modal after selecting a new interaction type. * Change the confirmation of deleting a state to use a modal instead of a browser confirmation dialog. * Change the confirmation of deleting an answer group to use a modal instead of a browser confirmation dialog. * Change the confirmation of deleting an interaction to use a modal instead of a browser confirmation dialog. * Update the 'Add Response' (previously called 'Add Rule') modal to allow saving the rule and adding another without the user having to manually reopen the modal. * Increase the width of the editor cards by 140px. * Sanitize content in the Rich Text Editor whenever content changes, as long as the rich-text extension customization modal is not open. Infrastructure: * In the exploration backend, introduce an answer group structure which groups together multiple RuleSpecs with a single piece of feedback. * In the exploration backend, introduce a 'default outcome' structure to replace the concept of a default rule. * Introduce a recommendation system for recommending similar explorations to a user after they have completed an exploration. * Fix issue 839: prevent notifications showing up due to automatic migrations. * Update the gae-mapreduce library to use Cloud Storage instead of the Files API. * Add backend support for fallbacks/triggers, which allow Oppia to react to learner actions that are not just answer submissions. * Add an XBlock for embedding Oppia explorations in courses on the OpenEdX platform. Administration: * Add functionality to disable explorations. Scripts: * Update the run_integration_tests.sh script to have arguments for enabling/disabling sharding and setting the number of shards to run. Emails: * Make it possible to send emails to users when they sign up. Frontend testing: * Add frontend unit tests for interaction validators. Sitewide frontend changes: * Fix issue 855: display the correct profile pictures and usernames on profile pages. * Add functionality allowing users to set email preferences. v2.0.0.rc.3 (11 Jun 2015) ------------------------- Sitewide frontend changes: * Add a new rich-text editor based on textAngular. Deprecate the previous jWysiwyg rich-text editor. * Update page titles to list the page name before the site name. * Add a link to the home page in the left sidebar. Splash/gallery page: * Change the width of the category input field in the exploration creation modal to 100%. * Fix a bug which caused recently-updated explorations to not show higher in the gallery. * Ensure that gallery rankings are never negative. Learner page: * Make cards have a width of 95%, so that they show up properly on small screens. Editor page: * Use icons for save/publish buttons in the exploration editor if the window width is small. * Rename the 'Add Interaction' button to 'Add Interaction / End Conversation'. * Fix a grammatical error in some rule warning messages. * Amend the "path to end state" error message to reflect the fact that there is no longer an explicit END state. * Increase the line spacing in the customization dialogs for both interactions and RTE extensions. * Arrange state names in the rule destination selector in the order that they appear in the state graph. * Reset float input fields when the rule containing them is changed. * Fix issue 764: do not show unhandled answers for the Continue interaction. * Fix preformatting text having inconsistent wrapping in the popup dialog for long unhandled answers. * In the editor settings tab, use a category dropdown similar to the modal in the gallery page. * In the history tab, use grids to display the commit history, and display the commit time in localized format. * Fix issue 789: in the feedback tab, clear the input field after a new message is submitted. 'My Explorations' page: * Include published exploration that subsequently become community-owned. * Fix issue 724: add a realtime model for feedback analytics. Rich-text editor components: * Prevent recursive nesting of the 'collapsible' and 'tabs' RTE extensions. * Image: allow alt text to be specified. Interactions: * EndExploration: do not show a blank card in iframed mode (issue 804). * ImageClickInput: center the image and make it look clickable. * NumericInput: fix a bug where 0 was not accepted as an answer. * InteractiveMap: use a map (instead of latitude/longitude fields) to specify rule location. * SetInput: fix set input display not showing up in the rule editor, and add a warning for duplicates. Infrastructure: * Implement a generic exploration migration system. * In the exploration backend, remove the pseudo END state and add a placeholder field for state triggers. * Upgrade the version of the Google App Engine development SDK to v1.9.19. * Upgrade the version of ui-bootstrap to v0.13.0. * Amend the deployment script to support deployment to App Engine instances within a particular domain. * Add a storage model for completion events, and record completion events in this model instead of the one for MaybeLeave events. Add a migration job to migrate existing completion events from MaybeLeave to the new model. Analytics: * Fix some errors in the StatisticsAggregator computation. Integrations: * Fix issue 167: Add instructions and an XML file to support embedding of explorations in Google Sites pages. Demo explorations: * Update the schema versions for the demo explorations. Security: * Add a layer of HTML cleansing before loading an exploration. v2.0.0.rc.2 (24 Apr 2015) ------------------------- Splash/gallery page: * Add a video to the interstitial section. * Fix reddish-looking placeholder text in the search input field. * Fix an error in search which caused unnecessary errors to be logged. * Fix an error where the search cursor was not being overwritten correctly after fetching results. Learner page: * Add the ability for logged-in users to submit ratings at the end of an exploration. The average rating will display in the gallery after at least 5 ratings have been submitted. * Adjust the loading time for cards to take the server RPC call into account, in order to reduce the effect of network latency on the end user. * Provide options for sharing explorations on Facebook and Twitter. * Change the feedback submission modal into a more lightweight popover. * Redesign the "embed exploration" modal to include instructions for iframing explorations in a container that does not support adding JavaScript or custom tags. * Show the same congratulatory text when the learner completes an exploration via a state with a terminal interaction (as opposed to the END state). Editor page: * Simplify the content + interaction flow: remove unnecessary default content for the initial state and use a redesigned modal for interaction selection. * Allow tags to be specified for an exploration. * In the exploration graph visualization, add links from states with a terminal interaction to the END state, and change the layout algorithm, colors, text positioning, and node heights. * Add checks for errors related to using parameters wrongly. * Add CSS transitions to numerous elements. * Prevent publishing an exploration to the gallery if it contains warnings or errors. * Update the list of warnings when the exploration objective is changed. * Fix a bug where the 'publish changes' button reverted to 'save draft' when an exploration was featured. * Remove the duplicate user response in the rule preview, since it's already in the header. * Show a string instead of a dropdown for rule parameter selectors with a single choice. * Add some space between the various segments that make up the rule description. * In non-edit mode, suppress the sort handles on the rules. * Use a more appropriate rule description for the 'Continue Button' interaction. * Make the currently-selected rule stand out more. * Allow pressing the 'enter' key in the 'add new state' modal to submit the form. Sitewide frontend changes: * Change the body font size to 1.6em. * Add social media chiclets to the sidebar. Other pages: * Updates page: rename this page to 'Notifications'. * My Explorations page: show total and unresolved feedback thread counts (issue 632). * Updates and Preferences pages: fix a bug where the header subtext was aligned too far too the left on narrow screens. * Signup page: show the user's email, and remove the "sign in" navbar tab. * About page: improve the text, move the 'contact' and 'license' sections upwards, and fix a missing link. * Participation Playbook page: simplify the structure.. * Forum page: show the 'category' view instead, and make the forum taller and responsive to the page width. * Admin page: add admin customization options for the embedded forum URL, the videos for the splash and About pages, the sidebar icons, and the different sharing options to be shown in the learner view. Interactions * Shorten the descriptions for many interaction customization options. * EndConversation: add some space above the 'return to gallery' button. Analytics * Fix a bug in the logic for checking null versions in the stats aggregator MapReduce job. * Ensure that a leave event is recorded when any terminal state is hit (issue 703). Infrastructure and tests * Simplify the Windows installation process: do not run chown or chmod. * In development mode, show a 'Development Mode' indicator in the bottom right (issue 83). * Add functionality for running deferred jobs with parameters. * In the integration test script, clarify the messaging about screenshots. * Create a GLOBALS file to be included before all Karma tests. * Add an integration test for the tutorial in the exploration editor. Demo explorations * Add an image credit to the "Solar System" exploration. v2.0.0.rc.1 (5 Mar 2015) ------------------------ Frontend (general): * Add a sidebar to all pages as a primary navigation mechanism. * Restyle top navbar as an area for breadcrumbs and secondary navigation, and to be more responsive. * Revamp the general color scheme. * Use Material Design elements, e.g. cards. * Add avatars representing Oppia and the user. * Remove the footer, and make the licensing text less obtrusive. * Combine the Splash and Gallery pages into a single page. * Make it explicit that users are signing into Oppia with G+. * Use a user icon instead of username in the top-right corner. * Split the Dashboard page into two different pages: My Explorations and Updates. * Split the About page into two different pages: About and Participation Playbook. * Remove the noscript tag so that the G+ crawler can generate the correct snippet. * Allow clicking outside a modal to dismiss it. Splash/gallery page: * Add paged searching and infinite scrolling functionality. * Add a carousel. * Add thumbnail images to exploration cards in the gallery. * Add basic ranking functionality. Learner page: * Add an introductory card with the thumbnail image. * Show the 'edit' button in the navbar only for users who have exploration editing rights. * Add a feedback menu to the top right of each card in the learner view. * Add 'share on G+' functionality. * Make the scrolling behavior more gentle. * Set focus on the learner input field on its appearance, when appropriate. * Show the learner's answer immediately after they submit it. Editor page: * Update the tutorial. * Move the 'create new state' functionality into the rule destination dropdown. * Move the 'unresolved answers' section to the bottom of the page, below the rules. * Move state parameter changes to the right column. * Require the user to explicitly select an interaction for each state. * Hide the default rule if it has not yet been set. * Make the interaction selection menu into a two-tier dropdown. * Make the arrows in the state graph a bit thinner. * Change the colors of the graph nodes. * Add validation for rules and interaction customizations. * When the user changes the currently-active state, apply fading-out/fading-in to the state cards to make the transition less abrupt. About page: * Update the text. * Remove tabs, and add a menu on the right. Profile page: * Allow users to choose a preferred language for explorations shown in the gallery. * Allow users to upload a profile picture and to add a bio. Sign-in flow: * Redirect to sign-in flow if the user is logged in but has not chosen a username. * Allow users to leave the sign-in page midway through sign-in, logging them out if they do so. * Fix issue 136: logging out of Oppia no longer logs you out of all Google accounts. Admin page: * Remove unneeded config properties. * Add config properties for the splash page carousel and for additional links in the sidebar menu. * Add functionality for clearing the search index. Interactions: * Deprecate the 'reuse this interaction' setting in the editor. This is now determined by the individual widget's display mode ('inline' or 'supplemental'). * Load interactions concurrently with the base page. * Rename 'interactive widgets' to 'interactions'. * Add new interactions: EndExploration, ImageClickInput. * CodeRepl: fix a bug where the error message was being overwritten; update UI to use Material Design. * Continue: update UI to use Material Design. * GraphInput: restrict the drawable region, and remove the large left margin in the response area. * InteractiveMap: use spherical distance formula for calculating map distances (issue 487). * InteractiveMap: fix display of rule descriptions. * LogicProof: add new excluded middle rule. * MusicNotesInput: rearrange buttons to make the interaction more intuitive. * NumericInput: update UI to use Material Design. * TextInput: update UI to use Material Design. RTE extensions: * Rename 'noninteractive widgets' to 'RTE extensions'. * Load RTE extensions concurrently with the base page. * Image: add drag-and-drop upload functionality. * Link: allow text to be specified that is different from the link URL. * Video: do not show related videos at the end. Forms: * Make the list, int and nonnegative-int editors use schema-based forms. * Restyle the 'list of strings editor', and hide the 'Add Element' button when the user is editing a field. * Improve error messages for float input. * Make the float editors display inline. * Fix issue 488: do not show a warning for float input when the input field is still in focus. Infrastructure: * Deprecate intro.js dependency. * Add new dependencies: material-design-icons, ngImgCrop, ng-joyride. * Upgrade angular version to 1.3.13 to fix a bug in ngAnimate. * Fix an error in the encoding of filenames when an exploration is downloaded as a zip file. * Use curl instead of wget, to make the installation process easier for Mac users. * Add a flag in the start.sh script to save existing contents of the datastore. * Fix broken installation of webtest. * Make paths to third-party python libraries work on Windows. * Limit backend test parallelization to a maximum batch size of 24. * Update the deployment script to include splash and sidebar folders. * Add an experimental_deploy script that does not run tests and should only be used for experimental purposes. Protractor tests: * Add protractor tests for the history tab. * Add a utility function for scrolling to elements on the page that are not currently in view. * Switch protractor utilities to use classes prefixed by 'protractor-test-', where possible. * Add functionality to display screenshots from failed tests. Demo explorations: * Add the following demo explorations: 'About Oppia', 'The Solar System' and 'Protractor Test'. v1.2.12 (13 Dec 2014) --------------------- Editor improvements: * Add graphical, more intuitive representations for the version history of an exploration. * Replace the old Jinja/server-side parameter framework with a client-side one. * Add functionality for writing expressions such as {{floor((a+b)/2)}} in content and rule feedback fields. * Improve the error messages for invalid parameter changes. * Fix the caret sign in the warnings box to point down and remain in the top-right corner. General UI improvements: * Fix issue 462: add a search loading indicator. * Fix issue 413: add exploration names to the page titles of the exploration editor and player pages. * Add CSS rules specific to Internet Explorer. * Fix a bug where some forms were not editable in Internet Explorer due to their use of a custom 'disabled' attribute. Interactive widgets: * Multiple Choice: Limit the button width for multiple choice options to 350px. * World Map: make the zoom controls display properly. * World Map: trigger a resize event when the map is first loaded in order to show all the map tiles. Demo explorations: * The Lazy Magician: Update the exploration to use the new expressions framework. * Three Balls: Update the exploration to use the new expressions framework. * Three Balls: Remove an invalid parameter specification in the first state. Third-party integrations: * Update the instructions for integration with Course Builder. Infrastructure: * Upgrade the version of node from 0.10.1 to 0.10.33. * Protractor tests: add a test framework for interactive widgets. * Karma tests: - Modify the coverage reports to exclude the karma spec files. - Add missing directories to the coverage report. - Add a viewableIfPrivate test to the exploration rights service. * Install jsrepl using https://... instead of git://... v1.2.11 (14 Nov 2014) --------------------- Editor UI fixes * State editor tutorial: - Show the tutorial immediately for first-time users. - Make tutorial buttons slightly larger. - Rename tutorial link to 'Oppia editor tutorial' in the help menu. - Add new stages to the tutorial for the preview and save buttons; rewrite other parts to flow better. - Do not gray out the 'Let's go' button at the end of the tutorial. * Rules: - Change readonly rule display to a plain text string. - Clarify the 'add variation' text for each rule. - Improve the rule destination UI by removing the search icon, adding targeted error messages, and adding '(New)' helper text. * Controls: - Add tooltip to 'publish exploration' button to explain why it is disabled. - Combine saving + discarding into a single button with a dropdown. - Remove the sentence in the 'save exploration' modal that suggests that the user is changing the publication status of the exploration. - When the save modal is opened, shift focus to the textarea field in which to enter a commit message. * Exploration map: - Fix a bug where the map was not being centered correctly on page load. - Make the exploration map modal bigger. * After a new feedback message is sent, clear the feedback message input field. * Suppress the warning message that pops up when trying to navigate away or reset an exploration while in preview mode (issue 416). * Allow parameter changes to be discarded in mid-edit. * Autofocus to the corresponding create-new-state text box after a new state has just been created. * Remove the on-hover effect for the content and rule sections in non-editable mode. * Change the interaction editor icon from a pencil to a cog (to suggest 'settings' or 'customization'). * Make the interaction selector responsive. * Update the client-side exploration data immediately after the first state of the exploration is changed, when a tab transition is made, and after a state deletion event (cf. issues 441 and 442). * Fix a bug where the settings and history tabs were displayed before the exploration data loaded fully. * Add a 'Cancel' button to the content editor in exploration editor (issue 343). Learner view: * Separate the state transition handler into multiple handlers, for parity with the editor preview mode. Gallery: * Add a search field to the gallery. * If an interstitial breaks the exploration creation flow, redirect the user to the exploration creation modal in the gallery at the end of the process. * Show beta explorations in the gallery by default, and remove private explorations and the 'status' checkbox group. * Rename 'beta' to 'public', and mark released explorations as 'featured' in the gallery. Update the wording on the site to reflect this change. * Create exploration summary models so that the gallery loads faster. * Make the 'Create New Exploration' button a bit smaller. * Autofocus to the title field in the gallery modal when the 'create new' button is clicked. * Add inline validation to the 'create exploration' modal. Dashboard: * Show notifications of new activity in the navbar and page title (where appropriate) and highlight this information in the dashboard. * Record the time a user last checked the dashboard. Site pages: * Update and simplify the splash page. * Change the issue tracker link on error pages to use HTTPS. Widgets: * Add a new interactive widget for combinatorial graphs, and a sample exploration to illustrate its use. * Change the 'misspelled by one character' rule for string input to 'misspelled by at most one character'. * MultipleChoiceInput: forbid the case of zero choices. * MultipleChoiceInput: stop very long strings in the aanswer buttons from overflowing. Infrastructure and tests: * Upgrade intro.js to v1.0.0. * Upgrade Angular to v1.3.0-rc.5. * Upgrade jQuery to v2.1.1. * Add Protractor tests for non-interactive widgets, the rich-text editor, parameters, complex behaviours and navigation within the exploration editor. * Add Protractor tests for the embedding of oppia explorations in external webpages. * In Protractor tests, allow each widget to have its own integration test utilities. * Add checks for console errors during Protractor tests. * Fix issue 411: the check for the installed version of Protractor was not working correctly. v1.2.10.patch (10 Oct 2014) --------------------------- Editor improvements: * In noneditable mode, hide the widget selector in the state editor. * Fix a bug relating to the graph visualization height in Firefox. Infrastructure: * Allow exploration statistics datastore models to be migrated. v1.2.10 (7 Oct 2014) -------------------- General editor improvements: * Add a preview mode to enable changes to be previewed without saving. * Add a tutorial for the editor page. * Shorten the label for the 'Save Changes' button and make it clearer when an exploration has been saved. * Add a category label to the top of the page. * Simplify the inter-tab routing code, and allow sub-tabs in the editor page to be accessed directly. * Fix a routing bug causing errors when the user navigates to states whose names have trailing question marks. State editor improvements: * Make the overall state editor interface cleaner, friendlier and more responsive. * Fix the layout and panning behavior of the state graph. * Fix a couple of bugs involving graph elements (arrow tips and legends) not showing up in Firefox. * Allow the exploration creator to change which state is the initial one. * Change the default initial state name from '(untitled state)' to 'First State'. * Fix issue 166: allow states defined in rules to use periods in their names. * Show a warning when invalid new state names are entered, in order to explain why they are invalid. * Fix a bug in the state editor that allowed states to be renamed to 'END'. * Speed up the process of adding a new state by removing the need for a backend RPC. * Add unit tests for the state editor. Improvements to the editor settings tab: * Rename 'Objective' to 'Goal'. * Remove the helper text around the objective field, which does not make sense for non-English explorations. * Remove the obtrusive warning message that appears when the objective field is blurred. * Add a 'Permissions' section to clarify an exploration's sharing status, and add a field showing a link to the exploration that can be shared. * Add an option allowing private explorations to be viewed by anyone with the link. * Remove functionality for adding users by email, and add functionality for adding them by username instead. Improvements to the learner view: * Highlight the most recent content and feedback in the conversation skin view, and clean up the user interface slightly. Improvements to the dashboard and gallery pages: * Add objective and language fields to the exploration creation modal. * Slightly simplify the 'Create New Exploration' flow triggered by the button in the gallery page. * In the dashboard, make the links for feedback notifications point directly to the feedback tab in the exploration editor. Widget improvements: * Rename all interactive widget descriptions for consistency in the state editor dropdown. * Set input widget: create new elements automatically when the user hits the enter key. * Interactive map widget: fix an issue where the map width spills over that of its boundary container. * Music notes widget: - rename 'play desired sequence' to 'play target sequence' - add a note icon to the 'Add Note' button - add functionality for specifying an initial sequence of notes * Numeric widget: - in the learner view, do not show integers as floats - fix a bug where inputs of 0 were not being accepted * Text widget: improve the description of the 'rows' field. * Code widget: add a border around the coding pane to separate it more clearly from the surrounding container. * Video widget: add autoplay functionality. * Link widget: show an error message when an invalid link is saved (issue 147). Moderator/Admin functionality: * Fix issue 373: for moderators, show edit buttons in the gallery. * Fix issue 374: fix broken timestamps in the moderator page, and add a moderator page to the profile menu where relevant. * Refactor the admin page to use the new schema-based forms framework. Infrastructure and testing improvements: * Create a framework for end-to-end testing in protractor, and add tests for the state editor page, settings tab, publication process and subsequent gallery display. * In the forms framework, add a validator for testing the maximum length of a list. * Downgrade error logging about unused widget customization arguments to a warning. Dependencies: * Use a local version of MathJax, since the CDN sometimes does not respond. * Upgrade GAE version to v1.9.11. * Update select2 version to v3.5.1. * Upgrade d3 version to v3.4.11. * Update protractor version to v1.2.0. * Update MIDI.js version to revision 2ef687. v1.2.9 (11 Sep 2014) -------------------- Deprecations: * Deprecate the 'File Input' and 'Tar File Input' widgets. * Deprecate the 'lua' and 'scheme' language options for the Code REPL widget. General frontend improvements: * User dashboard: add a table of recent updates to a user's explorations and feedback threads. * User dashboard: move the 'Create New Exploration' button to the top of the column listing a user's explorations. * Galleries: consolidate the Learn, Playtest and Contribute pages into a single responsive gallery with options for filtering by languages and categories. * Learner view: fix a bug where version numbers of explorations were being ignored in external embeddings. * Learner view: add a button group with 'restart', 'feedback' and 'look inside' options to the top right of the page. * Learner view: remove the warning at the top if a user views an unpublished exploration. * Forum page: add a new forum page which embeds the oppia Google Group. * Site guidelines page: update the publication policies to reflect the change in the gallery layout. * All pages: add a meta tag to prevent unnecessary 404 errors when browserconfig.xml and apple-touch-icon.png are fetched. Editor page improvements: * Add a visualization that allows exploration editors to visually compare differences between versions. * Add support for specifying the language that an exploration is written in. * When a new state is added to an exploration, navigate to it automatically. * Make the layout of buttons and tooltips more consistent throughout the editor page. * When the 'discard changes' button is clicked, register all pending changes before clearing the change stack. * Add text to the widget picker and language selector pointing users to the issue tracker, where they can request new widgets and languages. * Remove the obtrusive warning message for a missing objective. * Disable the 'create feedback thread' button until the preconditions for successful thread creation are satisfied. * When the widget type changes, show the preview tab in the interactive widget editor accordion by default. * Remove some text from the 'publish exploration' modal. * Make the editor page degrade gracefully when running on localhost. * Load all interactive widgets at the outset in order to minimize the number of RPCs required to the backend. * Add frontend services to cache the widget definitions, in order to prevent multiple refetches of the same data. Widget improvements: * Remove autofocus behavior from several interactive widgets, since this is a distraction in the editor page. * InteractiveMap widget: remove a spurious 404 error in the response template. * LogicProof widget: automatically convert '^'s into AND symbols to ameliorate typos. * LogicProof widget: fix a typo in the keystroke table. * MultipleChoiceInput widget: replace the radio options with buttons, so that they work better on a mobile interface. * MusicNotesInput widget: update MIDI.js to correspond to the updated Web Audio API. Infrastructure: * Use the new schema-based forms framework in several widgets and other places in the editor page. * Add focus management and UI configuration options to the forms framework. * Add backend code and an indexing job for exploration search functionality. * Add the current time and a button for viewing individual job outputs to the admin page. * Add a one-off job to populate the user dashboard. * Add cron jobs for deleting old auxiliary models and for sending a daily email to the admin summarizing the statuses of recently-run MapReduce jobs. * Fix a flaky backend test for statistics MapReduce jobs. * Ensure that the deploy script fails if the backend tests do not pass. * Make Karma tests run on Mac OS X. * Increase the default datastore query limit from 100 to 1000. * In the start.sh script, change the path to google-chrome to prevent a 'missing symlink' error on some Linux systems. * Upgrade the GAE development SDK version from 1.8.8 to 1.9.10. * Update ui-codemirror from v0.1.1 to v0.1.2. v1.2.8 (12 Aug 2014) -------------------- General features: * Add a user dashboard page that shows private, beta and released explorations. * Make Oppia installable on Windows, with all tests passing. * Speed up the 'Contribute' gallery. * Add a friendlier 404 error page. * Add a robots.txt file. * Download a local copy of MathJax, so that we have a backup if the MathJax CDN goes down. * Show navbar dropdowns on-hover. Widget improvements: * Make the input field in the non-interactive math widget larger, and add a preview. * In the LogicProof widget, stop converting spaces into tabs as the user types. Editor features: * Add a draggable handle to the rule tiles. * When the date is today's date, show only the time in the UI. * Use a help icon throughout the editor, instead of sometimes using a help icon and sometimes using 'More info'. * Make 'preview' and 'customize' links in the interactive widget accordion look clickable. * Reduce the left padding in the list of widget types. * Move the 'Use this widget / Cancel' buttons to the bottom of the widget editor. * Replace the empty content placeholder message with a more positive one. * Fix a bug where the state name display in the exploration editor is not updated. * Fix a bug that caused errors to arise due to IE8 not supporting String.prototype.trim() or Object.create(). Infrastructure changes: * Implement an infrastructure for continuously-running computations, together with event listeners and an admin dashboard. * Add dependency management for widgets that make use of modules that need to be registered with Angular. * Change frontend controller syntax to the one recommended by the Angular team. * Use ndb.OR instead of ComputedProperty in datastore queries. Setup and testing scripts: * Rewrite install_third_party.sh to exit gracefully if the installation of jsrepl and node.js on the given OS is not supported. * Add a check to the integration test script to ensure that no local server is running. * Speed up the backend tests significantly by running them in parallel. * Use Chrome as the browser for the frontend tests, due to PhantomJS's installation being buggy. v1.2.7 (19 June 2014) --------------------- UI changes: * Improve the user experience when registering to make contributions. * Fix links to tabs within the About pages. * Feedback submitted at the END state now automatically refers to the whole exploration. * Set a maximum width for images in multiple choice question options, so that they don’t overwhelm the rule editor. * Update ui-codemirror to version 1.0.1. * Separate the learner user interface into a presentation layer and a data layer, in order to support multiple skins in the future. Editor features: * Ensure that the state graph is never panned out of the viewport. * Downloading exploration zip files while the exploration is being edited no longer issues a warning. * Return only the top ten unresolved answers for each state, in order to avoid overloading the client browser. Widget improvements: * Add a new LogicProof widget in which students prove logical formulas. * Remove the 'columns' customization option for the TextInput widget. * Add a docstring for the video id in the non-interactive Video widget. Backend changes: * Implement schemas to standardise the backend handling of objects used by widgets (e.g. lists of strings). * Log frontend errors to the backend, so that the developers can see and handle them. v1.2.6 (4 Jun 2014) ------------------- UI changes: * Upgrade to Bootstrap 3. Editor features: * Allow exploration editor pages for non-private explorations to be viewed in read-only mode. * Add 'feedback thread' functionality to the exploration editor page. * Add instructions for embedding explorations in other pages. * Deprecate exploration cloning functionality. * Display an expandable warning bar for things like 'an objective needs to be specified for this exploration'. * Fix a saving bug: when a rule with a variable is selected, and then changed to a rule without one, the extraneous variable from the original rule is kept, causing a backend save error. * Fix a bug that prevented changes to rules from being saved after a new interactive widget was selected. * Fix a bug in the state minimap where the '+' button was not showing up in Safari. * Add a help link to the parameter changes section. * Move the 'answers received' section to the right-hand column, below the graph minimap. * Make the jwysiwyg rich-text editor responsive. * Move the parameter changes section into the state content section. * Make the rule destination bubbles fixed-width. * Clarify the labels indicating the publication status of an exploration. * Remove non-working links in the statistics tab that link back to the state editor. * Make the statistics tab rule descriptions slightly more human-readable. * Move some settings-related controls to the exploration settings tab. * Only show the 'delete exploration' button to exploration owners, Widget improvements: * Numeric input widget: allow decimal numbers that start with a decimal point. * Code REPL widget: restore line numbers. * Interactive map widget: fix response HTML bug where a zoomed-in map of (0, 0) was being shown; add a custom stats_response file to display the coordinates rounded to 6 decimal places. * Video widget: allow exploration authors to set start and end times. * Image widget: convert file extensions to lower case before checking their validity. * Image widget: add clarification about which filetypes are permitted. Windows issues: * Fix issue 219: image uploads did not work in Windows. * We now open zip files in binary mode on Windows. * Fix a failure in the startup script due to Windows directory names not being case-sensitive. Demo explorations: * Fix a small bug in the Pitch Perfect exploration. * Add a demo exploration that tests all the interactive widgets. Tests: * Update karma and associated libraries. * Add a code coverage reporter for frontend tests. * Add backend integration tests for reverting to previous versions of an exploration. * Fix an issue with the test runner not deleting all datastore models correctly between tests. * Fix an issue with the test runner not getting the correct versions of third-party libraries. Infrastructure: * Add a focus management service to the frontend. * Add a new input reader for reading multiple datastore input fields during MapReduce jobs. * Add a backend module for schema-based object validation. v1.2.5 (16 May 2014) -------------------- UI changes: * Add a 'Publication Policies' tab to the site guidelines page. * Add a 'Nominate for release' button (and associated modal) to the exploration editor page. * Add 'community-owned' tags to community-owned explorations in the playtest queue. * Clean up the gallery user interfaces. * Change the color of the initial state of an exploration to pale green. Developer-facing changes: * Refactor the startup scripts, moving some functionality from bash to Python to make the setup process work on more operating systems. * Fix issue 148: open a browser using the correct command in Macs, and do not fail noisily on other operating systems. Infrastructure: * Add a backend integration test for exploration rights. * Add a jobs dashboard to the admin page. * Add functionality for running mapreduce jobs. * Add backend models for feedback threads. v1.2.4 (5 May 2014) ------------------- New pages: * Add a new 'playtest queue' page. * Add a new tab in the 'How to use Oppia' page that outlines the 'beta' and 'release' criteria for explorations, and further clarify the description of the exploration lifecycle. Editor interface improvements: * Redesign the exploration editor page to focus more on the state editor rather than the exploration graph, and make it generally tidier. * Make exploration graph nodes have a fixed width. * Rewrite and simplify the 'publish exploration' modal. Editor functionality improvements: * Allow each exploration to specify an objective, and make this mandatory for published explorations. Profile page improvements: * Show counts of a user's private/public explorations. Improvements to the workflow for embedding Oppia explorations in other pages: * Create a new version of the embedding script that allows explorations to be loaded only after the user clicks a button. * Add manual integration tests for the embedding workflow. Infrastructure: * Use PhantomJS instead of Firefox for running unit tests. * Add an integration test framework. * Add an integration test for the exploration download handler. v1.2.3 (26 Apr 2014) -------------------- Interactive widgets: * Add a new widget (as well as corresponding rules and objects) for inputting music notes, together with a 'Pitch Perfect' exploration that demonstrates its use. Profile page: * On each user's profile page, display feedback that they have submitted to explorations, and the present status of this feedback. * Fix issue 120: change links to playtestable explorations to point to the reader view instead of the editor view. Editor interface improvements: * Fix the display of answers in the statistics viewer modal of the exploration editor, so that they accommodate newlines. * Fix an issue with 'Address this feedback' links not redirecting to the state editor. * Add a specific warning message to handle feedbackless self-loops. * Fix issue 151: clarify the 'feedback required' message. * Change the pencil icon in the editor page to point towards the editable content. Gallery interface improvements: * Move the 'Upload Exploration' button to the top of the contribute gallery page (when the uploading option is enabled). * Color buttons that represent a 'success' action in the contribute gallery green. Site interface improvements: * Separate the current 'About' page into two pages: 'About' and 'How to use this site'. Infrastructure: * Add a simple framework for handling widget dependencies, so that if multiple widgets in the same page use the same dependencies, the dependencies are loaded at most once. * Fix a bug in unescaping state names that have unicode characters in them. * Add backend models for long-running jobs. Moderator page: * Add a list of recent changes to explorations. v1.2.2 (24 Mar 2014) -------------------- Editor interface improvements: * Create separate tabs for exploration settings and version history. * Move help links to a tab in the navbar. * Allow older versions of explorations to be downloaded. * Fix a bug where the versions of files included with explorations were wrongly calculated, resulting in an error when the exploration was downloaded (issue 145). * Fix a couple of cases where the server connection error messages did not appear in the UI. * Improve the state editor: make it draggable, make the state name and rules editable inline, widen the working space, add a feedback link at the bottom, and fix a bug where parameter values in the interactive widget selector were stale (issue 137). Gallery interface improvements: * Move the "Create Exploration" button to the top of the gallery. * Allow announcements to be placed in the contributors' gallery. * Hide beta explorations in both galleries by default. Reader view improvements: * Remove the green feedback button for narrow viewports. Noninteractive widgets * Link widget: add an option to open links in the same window, rather than a new one. * Hint widget: require tab names to be specified (issue 92). * Image widget: allow images with .jpg extensions to be uploaded (issue 116). Interactive widgets * Multiple choice input: fix the vertical misalignment between radio buttons and their labels. * Code REPL: fix an issue where the 'code' key was sometimes missing from the data passed to the server, thus resulting in a server error. Backend changes: * Extend the CSRF token lifetime. * Normalize reader answers to the correct object type, before they are classified. Documentation: * Add a README file to the main repository with installation instructions. Dependencies: * Fix an npm breakage, as described in http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more Admin and moderator functionality: * Moderators can unpublish or delete explorations, and move them in or out of beta. * Admins can ban individual users. v1.2.1 (25 Feb 2014) -------------------- Major deprecations: * Deprecate the Django branch of Oppia, and remove Django-related code from the codebase. Improvements to the workflow for embedding Oppia explorations in other pages: * Add versioned code that allows explorations to be embedded in Course Builder and in arbitrary web pages. This code is auto-generated from a script in integrations_dev/. * Capture more reader events, such as onExplorationLoaded, onStateTransition and onExplorationReset. * Display a loading message before the exploration fully loads. * Add a setting that allows the height of the exploration window to automatically expand as the reader plays through the exploration. Reader-visible improvements: * Add a confirmation dialog when the reader resets or navigates away from an exploration, after interacting with it at least once. * Improve the accessibility of the reader view, especially support for screen readers. * Ensure that the reader view supports Internet Explorer 9 and later, as well as Firefox and Chrome. Editor interface improvements: * Remove the separate tab for the state editor, and instead overlay the state editor on the exploration graph editor so that the exploration graph is always visible (and can be panned behind the state editor). * Make the graph visualization responsive, so that the sizes of the nodes adapt to the size of the browser window. Make the visualization fit within a single horizontal viewport without scrolling. Add some light animation effects. * Move the interactive widget editor inline (it used to be in a pop-up). * Load the version history lazily, rather than each time an exploration is loaded. Show summaries of each commit, and implement reverting functionality. * Do not show version history for cloned explorations, since they are not meant to be published. * Improve the UI for the statistics tab. Mark rules as generic/specific in order to determine which user answers should be displayed for improvement. * Allow noninteractive widgets to be used in feedback for rules. * Show the full feedback for a rule in the state editor, so that contributors do not have to click in order to view it. * Allow parameter changes to be swapped. Changes to widgets: * Convert all interactive widgets to Angular directives, and simplify the process for creating new widgets. * Add a new interactive music note input widget that allows the reader to enter a sequence of music notes. The widget is still in the pre-alpha stage, and can be accessed by removing the comments in feconf.py. * Add a noninteractive collapsible widget, which only shows its content when the reader clicks on it. * Add validation for the multiple-choice input and numeric input widgets, and allow the latter to accept floating-point numbers. * Remove the line numbers for the code window in the Code REPL widget, since having them occasionally causes the widget to be replaced by a blank grey screen. * Use a static map to display reader responses in the interactive map widget. Backend changes: * Add a sample end-to-end test. * Add a load test script for the reader view. * Increase the stack trace limit for appstats to 50 lines, to ease the inspection and debugging of load test logs. v1.2.0 (13 Jan 2014) -------------------- NOTE: This version of Oppia is not backwards-compatible with earlier versions, due to significant changes to the datastore models. User-facing changes: * Do a full revamp of the user interface, including significant changes to the splash page and the general theming. * Allow old versions of explorations to be explicitly linked to. This means that an exploration creator can embed a stable version of the exploration in another webpage, which will then continue to remain the same despite further changes to the latest version of the exploration on the Oppia site. * Add a 'strict validation' mode for explorations, which is called before an action that affects readers of a public exploration is performed. * Add interstitial "Loading..." pages. * Remove the feedback tab when an exploration is iframed in another webpage. * Add instructions for users with JavaScript disabled (to ask them to turn it on). * There is now a wiki article on exploration design patterns that is linked to from the exploration editor page. * Fix the YAML file upload flow, which was previously broken. This setting can now be toggled in the admin page. * Add roles for site admins and moderators. * Fix some bugs, including one where the graph visualization in Firefox was truncated, and another in which the 'sticky' bit was not working correctly for the InteractiveMap widget. Infrastructure changes: * Remove the model for States. The states of an exploration are now stored as a data blob. This simplifies a lot of things (e.g., we no longer use multiple unique identifiers for states) but is a backwards-incompatible change. States are now identified by their human-readable name, which is unique within an exploration. * Add a new ExplorationRights model, which stores rights information for the corresponding exploration and keeps track of things like the exploration's publication status, whether it is community-owned or not, and the list of people who can playtest it (if the exploration is private). * Implement full versioning of explorations, exploration rights, and files associated with explorations. * Handle exploration change lists on the server side, and add metadata about the atomic changes performed to each commit. * Use App Engine user_ids, as opposed to email addresses, for user management; this is because the former are guaranteed to stay the same even if the user's email address changes. * Minify JavaScript and CSS files. Changes to widgets: * Add a non-interactive LaTeX widget. * Remove the existing music note widget. * Improve the code REPL widget: add a CodeMirror display, a rule for catching errors, and a large input text field for entering the placeholder code. Remove some superfluous customization options. Changes affecting developers: * Remove the build/test requirement in the startup script. This script now just starts up a development server, without running tests. * Add a deploy script for making a deployment to an App Engine server running in production. v1.1.2 (17 Dec 2013) -------------------- Major changes: * Make the startup and test scripts runnable without any use of sudo. * Add commit messages to the version history log. Each message consists of an automatically-generated part (stating which parts of the exploration have changed) that is attached to a human-written commit message. * Allow edits to multiple states and exploration-level properties to be batched in a single commit. * Allow some configuration properties for the app to be edited via the Oppia admin interface. * Show reader feedback in the state editor page, and allow exploration creators to mark it as 'fixed' or 'will not fix'. Minor changes: * Update Google App Engine SDK from version 1.7.7 to version 1.8.8. * Links in an exploration now open in a new window, so that the reader does not lose progress. * Add a new exploration to demonstrate the use of the coding widget. Tweak the Parameterized Adventure exploration in response to reader feedback. Remove the tar exploration. * Appstats logging now takes place at level DEBUG instead of level INFO. * Delay the fetching of exploration statistics at the outset, in order to make the exploration editor page load faster. * Various UI tweaks. v1.1.1 (2 Dec 2013) ------------------- New features: * Oppia explorations can now be easily embedded in any webpage using the oppia-player-0.0.0.js script in the static/scripts directory. This is done by using an tag at the place where the exploration should be embedded, and including the aforementioned script at the bottom of the embedding webpage. * Explorations are now represented as zip files which contain a single YAML file and a directory for static assets. * Published explorations can now only be deleted by an admin. Reader-visible improvements: * Improve the look-and-feel of the gallery page. Editor improvements: * Significantly improve the state editor user interface, which now includes contextual help links, a new interface for rules, descriptions of widget parameters, a three-column layout, and numerous other small improvements. * Improve the saving flow by allowing changes to a state to be batched into a single commit. The user is prompted if he/she tries to close or navigate away from the page before his/her changes are committed to the server. * Allow each type of object (such as a real number of a music note) to have its own specialized editor. * Collapse the various non-interactive content textareas into a single textarea, and add controls for including videos, images, links and tabs. Extensions: * For the code REPL widget, make it possible for code to be prepended and appended to the reader's submission before the latter is executed, and allow comparison of the output of the reader's program against a reference output. * Add a "Cities of the World" exploration, which was created programmatically using data from Wikipedia. * Improve the existing binary search exploration by adding pictures and fixing bugs. Speed: * Make explorations load faster by batching datastore operations, and by only retrieving partial exploration statistics when an exploration is first loaded. Infrastructure: * Add a versioned file system for each exploration, so that images can be uploaded. * When a user deletes an exploration, mark it as deleted rather than remove it from the datastore, in case it needs to be reinstated later. Development: * Modify the startup scripts to be more modular, and to require as little use of sudo as possible. Security: * Add HTML sanitization, XSSI protection, escaping of special characters and various other improvements. Dependencies: * Update AngularJS to version 1.2.0-rc.3. * Use jwysiwyg for the rich text editor, replacing the YUI 2 library. * Remove the AngularUI dependency in favor of ui-bootstrap. * Try to load the JQuery and JQueryUI dependencies from the Google CDN before fetching them from the local server. v1.1.0 (14 Sep 2013) -------------------- Reader-visible improvements: * Add better support for LaTeX. * Improve the scrolling behavior in the reader view. Editor improvements: * Make the exploration statistics view much more intuitive: introduce a graph showing what fraction of reader entries reach each state, provide helpful suggestions to improve state content and rules, and add direct links to the state editor to make such improvements easy. * Add links in the state editor to incoming and destination states for easy navigation. * Display a warning if the END state for an exploration is unreachable. * Update the exploration graph when a change is made, without requiring the editor to refresh the page. * Add simple versioning for explorations. Extensions: * Add interactive widgets for code REPL and file input. * Add new binary search and tar explorations; rewrite the combinatorics and welcome explorations. * Allow customization of the text on the button for the Continue widget. Admin page: * Add a link to a simple admin page for app owners. * Add latency and memcache counters. * Allow an admin to reload individual demo explorations. Domain models and infrastructure: * Substantial cleanup of the domain modelling across the entire backend. * Finalize v1 of the exploration data file schema. * Rewrite the statistics models to be more conceptually expressive. * Add pluggable storage models, thus allowing Oppia to run on Django as well as App Engine. * Add a new datastore model for app configuration properties. * Replace the classifier datastore model with individual rule domain objects to improve flexibility. * Add a registry for widgets, and take them out of the datastore; they now run at the code level. * Add a new parameter value generator extension framework, and some examples. * Allow explorations to define custom skins for the reader view. * Add memcache functionality. * Add transactions around exploration update operations. Testing: * Add karma test framework for the frontend. * Add lots of backend and frontend tests. * Add flags that allow individual tests and tests within a particular class or module to be run, instead of the entire suite. * Add a flag that allows slow tests to be omitted from a test run. * Added a test runner that 'plays through' reader explorations. Development: * Start scripts now run on (at least) Ubuntu Linux and Mac. Security: * Add CSRF protection. v1.0.5 (30 Jun 2013) -------------------- * Add support for initializing parameters at the exploration level. * Allow custom static views to be specified for rendering reader responses. (Previously, the answer was simply rendered as a string in all cases.) * Allow an arbitrary number of non-interactive widgets to be included as part of the content of a state. * Add a "My Explorations" page which lists the improvable states for all explorations that a user can edit, ranked by priority. * Add more data to the exploration statistics page. * Tidy up the appearance of the exploration graph visualization. * Allow tests to be run on individual subdirectories by passing in a flag to the test script. v1.0.4 (28 Apr 2013) -------------------- * Add tooltips for progress bars in the exploration statistics page. * Add information in the exploration statistics page about the number of readers who left an exploration without submitting an answer. * Add a new exploration ('Parametrized Adventure') showing how parameters can be used to retain the reader's state. * Fix a routing bug that caused the state editor page to occasionally break when reloaded. * Upgrade App Engine version from 1.7.4 to 1.7.7. * In progress: Add dataset functionality, so that editors can easily upload many questions that have the same type but different parameters; Oppia would pick a random one to show the reader. * In progress: Add exploration-level parameter initialization. * Change the format of the exploration YAML files used to store the default explorations, to include exploration-level initial parameters. * Add tests to cover all models except Statistics. * Restructure the codebase slightly to ease the upcoming port of Oppia to the django-nonrel framework. v1.0.3 (13 Apr 2013) -------------------- * Allow the same interactive widget to persist through multiple rounds of reader answers so that the reader does not lose previous work. (The widget still disappears when the reader moves to a state that uses a different interactive widget.) * Add markers for previous reader answers to the interactive map widget, as an example of the previous point. * Add an admin handler that allows an admin to reload the default explorations. * In the statistics dashboard, show detailed exploration statistics for every rule (not just the default one). * Start a migration to typed objects with their own normalizers and view/edit templates. Remove the old normalizers. * Bug fixes and general tidying up. * Security fixes. v1.0.2 (6 Apr 2013) ------------------- * Add an interactive map widget, a classifier for 2D coordinates, and a simple exploration showcasing these. * Show exploration statistics directly in the state editor, so that it is easy to view and act on readers' answers for individual states. * Add an 'unresolved answers' list which keeps track of answers that need to be acted on. * Add a warning to the editor UI when there are self-loops that do not give the reader any feedback. * Add more unit tests for the Exploration model. * Add the Python 2.7 backport of unittest.mock for testing. * Various UI fixes. v1.0.1 (29 Mar 2013) -------------------- * Add hits-per-state data to the statistics page. * Add responsive CSS support for viewing Oppia in mobile devices. * Add a 'Give Feedback' handler. The feedback is stored in the datastore. * Improve the display of the main page, the gallery page and the editor pages by tweaking the CSS. * After an interaction with the reader on the exploration page, scroll down to show the new content. * Remove the AugmentedUser class, replacing it instead with datastore queries. * Update sample explorations * Security fixes v1.0 (22 Mar 2013) ------------------ * Initial release