Extension:MassMessage/Page input list improvements/Progress reports

Current project status

 * The new backend is functional and delivery works, along with a UI for adding / removing pages directly from list view.
 * Remaining tasks / features:
 * More readable diff
 * Autocomplete for title and site entry
 * Tests for code from the project
 * Utilising the parser cache
 * A UI for bulk editing as in the prototype (if time allows)

Progress reports

 * Community bonding report
 * /May
 * /June

Week of June 30

 * June 30: Worked on code refactoring, submitted as ; submitted.
 * July 1: Discussed and planned user interface for basic list editing and related API with mentors.
 * July 2-July 3: Submitted ; worked on API.
 * July 5-July 6: Worked on API and reducing code duplication (it turns out that the API would do a lot of what Special:EditMassMessageList already does); submitted.

Week of July 7

 * July 7-9: Split some common tasks into utility functions functions and finished API.
 * July 10-13: Worked on adding a JavaScript UI for removing items (WIP at ).

Week of July 14

 * July 14: Finished JavaScript UI for removing items.
 * July 15-16: Worked on a UI for adding items in list view (WIP at ).
 * July 17-18: Finished the above.

Week of July 21

 * July 21-July 22: Addressed issues with UI for adding items raised in code review; fixed handling of '@' in titles in JavaScript UI ; changed the API to allow partially invalid requests.
 * July 23: Implemented redlinks for nonexistent pages in the page-adding UI and added LinkBatch to API and list display.
 * July 24: Made the error message when adding an invalid page more descriptive.
 * July 25: Added helper text for when all pages in a list section have been removed ; attempted to implement a more readable diff.
 * July 26: Added normalization of JSON data on save ; implemented editing of old revisions.
 * July 27: Resolved issues with editing of old revisions raised in code review.

Week of July 28

 * July 28: Finished the above; started work on autocomplete for site entry.