VisualEditor/Todo list

Bold text = Today's focus

Surface

 * Selection
 * Placing cursor in appropriate locations (Inez)
 * By mouse
 * By cursor keys (home, end, tab, page up, page down)
 * Drawing range
 * By mouse
 * Shift + cursor keys
 * Canceling range
 * By mouse click
 * By cursor keypress
 * Inserting text
 * Typing (Inez)
 * IME (Inez)
 * Autocorrect (Inez)
 * Spellcheck (Inez)
 * Paste (plain text) (Christian)
 * White/Blacklist of keys (Check Alt-123 pattern) (Christian) - demos/playground/whitelist.html is a working demo showing how the model can make changes to the content prior to new content being added by a user when there is a selection range.
 * Removing text
 * With range
 * Type new chars (Inez)
 * Backspace/delete (Inez)
 * Cut (Christian)
 * Paste (Christian) - User can draw a range and paste. The range should be removed before new content is pasted.
 * With cursor
 * backspace/delete (Inez)


 * Toolbar & Inspectors (Rob)
 * Annotation buttons
 * Formatting drop-down (wrapping) (Rob)
 * Link Inspector (Rob)
 * Investigate dual selection with iframe (mobile?) (Christian) - Inspectors in iFrames will maintain original selection on text. iPhone has its own context menu for Cut/Copy/Paste when a range is drawn, so we'll want to figure out a different approach for toolbar/inspector for mobile anyway. Mobile toolbar/inspector is not a June item. The decision is to render inspectors in iFrames.
 * Annotation Inspector (Rob)
 * Maintain original keyboard shortcuts (Rob)
 * Lists (ordered and unordered)
 * Switch between ordered and unordered (Rob)
 * Indent (Rob)
 * Outdent (Rob)
 * Undo/Redo (Use interval to group transactions) (Christian)

Model

 * Converter (Trevor)
 * DOM -> Data (Trevor)
 * Data -> DOM (Trevor)
 * Unit tests (Trevor)
 * Transaction Processor
 * Rebuilding (Trevor, Roan)
 * Splitting (Trevor, Roan)
 * Functionality (Roan)
 * Unit tests (Trevor)
 * Merging (on deletion)
 * Functionality (Roan)
 * Unit tests (Trevor)
 * Transaction Builders
 * Inserting new content (Roan)
 * Unit tests (Trevor)
 * Removing content (Roan)
 * Unit tests (Trevor)
 * Wrap (Roan)
 * Remove offset map (Roan)
 * Undo/redo (Christian)
 * Porting UI Document dependencies. (Rob)
 * Unit tests (Rob)
 * getAnnotationBoundaries (annotation button) - deprecated by getAnnotatedRangeFromOffset
 * getIndexOfAnnotation (annotation button) - deprecated by offsetContainsAnnotation (now returns boolean)
 * getMatchingAnnotations (clear button, link inspector) refactored (now returns hashmap of annotations)
 * traverseLeafNodes (toolbar) - Maybe deprecated by select nodes.

Server

 * HTML5 DOM to Wikitext (Gabriel)
 * HTTP server for the parser (Gabriel)

Integration

 * Integrated only on X namespace (Rob)
 * Disable source editing in namespace, including API (except for staff) (Rob)
 * Source mode tab for admins (Rob)
 * Switch view mode to in-place edit mode (spinner) (Rob)
 * Load assets (Rob)
 * ve API for round tripping (Rob)
 * Save (Rob)
 * Load (Rob)
 * Design (Trevor)
 * Help
 * Save button
 * Cancel button
 * Edit summary (with legal text)
 * Minor edit
 * Save dialog (Rob)
 * Switch from in-place edit to view mode (Rob)
 * Save experience (Rob)
 * spinner
 * success message
 * Feedback link (Rob)
 * Creating pages doesn't work (Roan)
 * Locking the target namespace so e.g. users cannot move pages into or out of it. (Roan)
 * Page title is carried over to editor even if it's something like "Difference between X and Y" (Roan)

Schedule

 * Release week of June 18-22
 * Memorial Day May 28
 * Roan: May 22nd & 23rd traveling, 24th, 25th, 29th working from Europe, 30th traveling, 31st-June 3rd Berlin Hackathon, 4th traveling, 5th back in SF office
 * Christian: May 21st HTML5 dev conf
 * Inez: May 21st HTML5 dev conf
 * Gabriel: May 31st-June 3rd Berlin Hackathon, may be in SF as soon as July 1st
 * James: In SF June 5th

Monday May 7

 * Roan: selectNodes done, now working on TransactionProcessor.replace
 * Trevor: writing tests for structural replacement. Need to improve selectNodes and rebuildNodes tests but can do that on Wednesday when Roan is in RL2 land