{"push_id":997644362,"size":8,"distinct_size":8,"ref":"refs/heads/master","head":"923a13d998aa6d83f900e1a178aed8d328330889","before":"d9f9c4233b5279fa922b56eb7294da764c05cffe","commits":[{"sha":"36eedf399592b8b84a8a0a5de1d8c64c30035541","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Switch was not so exhaustive after all\n\nActually ensuring it returned made Swift warn that the fatalError would\nnot execute. Now I know the signs.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/36eedf399592b8b84a8a0a5de1d8c64c30035541"},{"sha":"2a82de50fe0b9ed61354f1980bfb3c68fa84a98c","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Add Undoing protocol and conform NSUndoManager\n\nIncludes a PerformableClosure to play along with NSUndoManager's expectation\nthat the undo action is to send a message with an object.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/2a82de50fe0b9ed61354f1980bfb3c68fa84a98c"},{"sha":"b12eb3b8cf03f24b8bc88c4390e7f035779bba7d","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Add undo support to Job\n\nThis includes adding some higher-level actions to manipulate cuts\nand marks and adopting those APIs in JobView.\n\nNote that nothing outside tests is actually using this support yet.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/b12eb3b8cf03f24b8bc88c4390e7f035779bba7d"},{"sha":"1a6f1d75af3493cffffe2fd4614629c21d8d6523","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Give Job an undo manager\n\nThis doesn't actually work to undo, because I NSUndoManager weakly retaining\nits target means my PerformingClosures go poof.\n\nThis is funny, because I ensured that Job.undo() weakly retains the Job.\n\nThis will be fixed another time.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/1a6f1d75af3493cffffe2fd4614629c21d8d6523"},{"sha":"f2c887793480f097a6fb39f1eb56d5b50562db32","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Fix crash on undo\n\nWe're, uh, not actually informing the UI that the object it's representing\nhas changed. So that needs fixing.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/f2c887793480f097a6fb39f1eb56d5b50562db32"},{"sha":"56ed1789bc47fc858429503f43f1002d5595c4cd","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Add keyboard shortcuts galore\n\n- Added shortcuts to buttons.\n- Added new menu items for all the shortcutted things to make the\n  shortcuts discoverable.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/56ed1789bc47fc858429503f43f1002d5595c4cd"},{"sha":"a5d1cdf8d71e77c75a6cce8d9407b000365b97cb","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Add support for writing an Anki import file\n\nIt's untested and in the wrong place, but we can fix both of those things\nlater.","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/a5d1cdf8d71e77c75a6cce8d9407b000365b97cb"},{"sha":"923a13d998aa6d83f900e1a178aed8d328330889","author":{"email":"3efe51fd881b1a849d4b39592125eda41a19cc34@gmail.com","name":"Jeremy W. Sherman"},"message":"Extract method and actually present any error","distinct":true,"url":"https://api.github.com/repos/jeremy-w/ImageSlicer/commits/923a13d998aa6d83f900e1a178aed8d328330889"}]}