{"push_id":2537621870,"size":23,"distinct_size":0,"ref":"refs/heads/stable","head":"c4b736e44fdecef1f18e493144ab71e012ff86c8","before":"fe9c25e9522bdc026b745d30538b055b1469b116","commits":[{"sha":"ee2a6d65f0c6459699c9bcfba6ca4ecbc27ffa72","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Lesson.parse: create Lesson object from HTML","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/ee2a6d65f0c6459699c9bcfba6ca4ecbc27ffa72"},{"sha":"58b9a00b900b8d2b42c2fcc25b3f88cb74118660","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Load Lessons from the filesystem","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/58b9a00b900b8d2b42c2fcc25b3f88cb74118660"},{"sha":"1dc523e7445b2534b693169c9ea58861fa53c6ec","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"add Lesson.DoesNotExist","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/1dc523e7445b2534b693169c9ea58861fa53c6ec"},{"sha":"c8752aa5b6e34074cd69954960d11e5bfa0845ff","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Send Lesson from Django to client [refs #157226997]\n\nFun changes:\n* /lessons/stub and /workflows/id are nearly equivalent: only one is\n  canonical, depending on whether workflow.lesson_slug is set. Users\n  are redirected to the canonical URL.\n* make_init_state() is converted to JSON later: we edit it before render\n  in one place. The dream is to render JSON directly in the template: this\n  gets us one step closer, though it adds jank for now.\n* No more CSRF vulnerability: we don't consider JSON HTML-safe. This one's\n  for you, Bobby Tables.","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/c8752aa5b6e34074cd69954960d11e5bfa0845ff"},{"sha":"aa99ef1c3cf88da0cdeee34c695bb921a4a5cc2c","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Document lesson HTML","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/aa99ef1c3cf88da0cdeee34c695bb921a4a5cc2c"},{"sha":"1833667a8bf44445f0ee5491b7230c1f2f04e4bb","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Webpack: don't watch node_modules/\n\n... my system wasn't letting me jest --watch and webpack watch at\nthe same time, because of a file limit. This seems to fix it.","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/1833667a8bf44445f0ee5491b7230c1f2f04e4bb"},{"sha":"dbdf093f0f8ad7225d8f576774f596456b3a51b1","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Don't cache lessons when we read them from disk.\n\nThe cache was frustrating development because updates weren't appearing.\n\nDjango doesn't cache templates, either, so this is consistent.","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/dbdf093f0f8ad7225d8f576774f596456b3a51b1"},{"sha":"0b251d8e4af41f4b7463d28a33e845ff3bb2ba48","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Render a lesson on page.\n\nThis is just a proof of concept.","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/0b251d8e4af41f4b7463d28a33e845ff3bb2ba48"},{"sha":"dad4d02899d5b90b7cf28de969dc4e22cb756551","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Integration-test that lesson appears","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/dad4d02899d5b90b7cf28de969dc4e22cb756551"},{"sha":"c27d1930f9277414734cc76f62cf19513b9ee79d","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Merge remote-tracking branch 'origin/master' into one-lesson","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/c27d1930f9277414734cc76f62cf19513b9ee79d"},{"sha":"9bff543f6195a5d3f20438c96ab4e8c6c11157d1","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Make reducer not crash in unit tests.\n\nIn the future, maybe one of these approaches would be better:\n* Stub the reducer in unit tests\n* Put workflowId in the reducer instance, not its JS module\n\n... but since the module-level var is better than the previous\nglobal-function-that-reads-from-window.location, I still think this\nchange is an improvement.","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/9bff543f6195a5d3f20438c96ab4e8c6c11157d1"},{"sha":"4876c7b3ffbe52d32ee4ecc24c0cbade3801e1ab","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"s/let/const/ in a test","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/4876c7b3ffbe52d32ee4ecc24c0cbade3801e1ab"},{"sha":"7f54e5bfe4094f47a5b50ffd547302550c4729d7","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Allow a LessonSection to have 0 steps","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/7f54e5bfe4094f47a5b50ffd547302550c4729d7"},{"sha":"6c0856bca60f098d3a2297e1fe9ec643dee18e2e","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Allow navigating through a lesson","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/6c0856bca60f098d3a2297e1fe9ec643dee18e2e"},{"sha":"458f821de786a020c653dddf92a6db40b64878d6","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"My bad -- fix integration test","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/458f821de786a020c653dddf92a6db40b64878d6"},{"sha":"e7dcef15671474e3698fc03f9409dcbbe082406a","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Rename navbar files","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/e7dcef15671474e3698fc03f9409dcbbe082406a"},{"sha":"4d054aae70ee1786414412a5a2339f5d7d772769","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Fix WorkflowMetadata: <ul> children all <li>","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/4d054aae70ee1786414412a5a2339f5d7d772769"},{"sha":"8a0e7fd3b24c747612deecf5326b8699126fc281","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Make navbar pink, hide buttons when in lesson","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/8a0e7fd3b24c747612deecf5326b8699126fc281"},{"sha":"54bcf566cab610997b8815e6772e4612061a3015","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Change module-library color in lesson (incomplete)","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/54bcf566cab610997b8815e6772e4612061a3015"},{"sha":"0b76ecab4a2de10e40932935625bed65f44ecda9","author":{"name":"Adam Hooper","email":"0e18f44c1fec03ec4083422cb58ba6a09ac4fb2a@adamhooper.com"},"message":"Add Lesson PropTypes","distinct":false,"url":"https://api.github.com/repos/CJWorkbench/cjworkbench/commits/0b76ecab4a2de10e40932935625bed65f44ecda9"}]}
{"actor":{"display_login":"pierreconti"}}