forked from oppia/oppia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
1081 lines (898 loc) · 61.3 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This file contains a summary of changes to the Oppia code base. For a full changelog, please see
https://github.com/oppia/oppia/commits/master
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 <oppia/> 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.