)]}'
{
  "log": [
    {
      "commit": "cc836d38a86ad3c897788109c531d3f71cf9579b",
      "tree": "13e6e10e87e84776e82b417e286f00ab661dbf5b",
      "parents": [
        "4b3d5dbe55bca165d4bc0f7bab11a5a4e7989709"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 22:10:37 2020 -0500"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 22:10:37 2020 -0500"
      },
      "message": "Add @license JSDoc tag.\n"
    },
    {
      "commit": "4b3d5dbe55bca165d4bc0f7bab11a5a4e7989709",
      "tree": "7254f4ed22ee3ea533d7a11c6b52be5298fca6fc",
      "parents": [
        "19406a115f4a74e7f4a930216ac0184e350b200a"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 22:04:27 2020 -0500"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 22:04:27 2020 -0500"
      },
      "message": "Added MPL 2.0 text to license.md.\n"
    },
    {
      "commit": "19406a115f4a74e7f4a930216ac0184e350b200a",
      "tree": "584751312749e045350f7b814ce69159d166decf",
      "parents": [
        "c562b38499bad52d3c2f923d61f672a21690dc4e"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 17:52:27 2020 -0500"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "tmilev@google.com",
        "time": "Wed Jan 15 17:52:27 2020 -0500"
      },
      "message": "Copy the license portion of readme.md into license.md.\n"
    },
    {
      "commit": "c562b38499bad52d3c2f923d61f672a21690dc4e",
      "tree": "fa27e06836026727a48c60da74f6ee05369a8430",
      "parents": [
        "c215bebd5cc87c3e54c64ae5b77d4d102928699c"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 14:29:06 2018 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 24 14:29:06 2018 -0400"
      },
      "message": "Update README.md"
    },
    {
      "commit": "c215bebd5cc87c3e54c64ae5b77d4d102928699c",
      "tree": "0e91de1004d07fbccfed4bbcc5d511f5fc452259",
      "parents": [
        "08909d20eaaffefe27fe12ac554854c59c3bdacd"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 14:08:09 2018 -0400"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 14:08:09 2018 -0400"
      },
      "message": "Added build files to the repo.\n"
    },
    {
      "commit": "08909d20eaaffefe27fe12ac554854c59c3bdacd",
      "tree": "e30b9a06357f4db0266d1d8941b345ab0c1c258a",
      "parents": [
        "679c910ec5334073f3a7c7eb16d04e9d40763608"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 14:01:10 2018 -0400"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 14:01:10 2018 -0400"
      },
      "message": "Merge of visual.html: matrix and main.\n"
    },
    {
      "commit": "679c910ec5334073f3a7c7eb16d04e9d40763608",
      "tree": "e05ade4e427a190b6fea4446e4c09d1214becd88",
      "parents": [
        "95b4523a93113bf5021ee32a8f1eeece3842805d",
        "592a5c3a4942a2728880e3281eaa6bf95b4064f6"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 13:56:43 2018 -0400"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 13:56:43 2018 -0400"
      },
      "message": "Merge branch \u0027matrix\u0027\n"
    },
    {
      "commit": "95b4523a93113bf5021ee32a8f1eeece3842805d",
      "tree": "f7d7a123d4b4ef0f9a9aed549b1c54edce09932c",
      "parents": [
        "2e9d77955178270130aeab853b265f7a4cce3171"
      ],
      "author": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 13:39:27 2018 -0400"
      },
      "committer": {
        "name": "Todor Milev",
        "email": "todor.milev@gmail.com",
        "time": "Sun Jun 24 13:39:27 2018 -0400"
      },
      "message": "Build fix: see https://github.com/mathquill/mathquill/issues/817.\n"
    },
    {
      "commit": "592a5c3a4942a2728880e3281eaa6bf95b4064f6",
      "tree": "2fb6bf009c945e061dfab8035b1f70858be56975",
      "parents": [
        "fb4e7e2e84432f539ccd5d10ff37d94f9fb61e8e"
      ],
      "author": {
        "name": "Alex Finkel",
        "email": "alex@finkel.net",
        "time": "Fri Sep 15 20:47:23 2017 +1000"
      },
      "committer": {
        "name": "Eoghan McIlwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Fri Sep 15 11:47:23 2017 +0100"
      },
      "message": "Support for \u0027leftRightIntoCmdGoes\u0027 config in the matrix element (#59)\n\n* Add direction-sensitive implementation of leftRightIntoCmdGoes for matrix.\r\n\r\nThis lets the user cross over the top or bottom of the matrix naturally\r\nwithout getting caught inside it, using the same config option as for\r\nfractions."
    },
    {
      "commit": "2e9d77955178270130aeab853b265f7a4cce3171",
      "tree": "b409c6f2cbcd2dfba1fdf28ec329063e26a0e998",
      "parents": [
        "6ef337bb8d0ed9de64bdd4d1b3976dd49483d728",
        "96fc3bff36e53be9638481029059aa7a4b16fb6f"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 23:10:15 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 23:10:15 2017 -0700"
      },
      "message": "#768: [CI] Fix Firefox on macOS screenshot to be full page\n\nIt works! https://455-598343-gh.circle-artifacts.com/0/tmp/circle-artifacts.fXfLmPS/imgs/Firefox_54.0_%2528evergreen%2529_OS_X_10.11_15.6.0.png\r\n\r\nFixes #720"
    },
    {
      "commit": "96fc3bff36e53be9638481029059aa7a4b16fb6f",
      "tree": "b409c6f2cbcd2dfba1fdf28ec329063e26a0e998",
      "parents": [
        "6ef337bb8d0ed9de64bdd4d1b3976dd49483d728"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 23:02:49 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 23:02:49 2017 -0700"
      },
      "message": "CI: Fix Firefox on macOS screenshot to be full page"
    },
    {
      "commit": "6ef337bb8d0ed9de64bdd4d1b3976dd49483d728",
      "tree": "bb5a09a078fef70fcdd64842d15db05f39301bd6",
      "parents": [
        "10ac8f05b783293558c5acf2ad2310ca75faaa8b",
        "9f1a8de0e2710404fd92bd3f2d3985a8313ab7ca"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 22:51:02 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 22:51:02 2017 -0700"
      },
      "message": "#715: [Makefile] Wipe node_modules if not properly installed\n\n"
    },
    {
      "commit": "10ac8f05b783293558c5acf2ad2310ca75faaa8b",
      "tree": "8bcea000d59faca717fbb293acb97b2dc8cd5a68",
      "parents": [
        "5d23a11da27dc0db869c804794525c2d465345e6",
        "7b3139ab293ce6c544b0af293553ca4a53372165"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 22:31:38 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 22:31:38 2017 -0700"
      },
      "message": "#767: Fix #709: typing \u0027\\text{\u0027 barfs\n\n"
    },
    {
      "commit": "5d23a11da27dc0db869c804794525c2d465345e6",
      "tree": "8641915ac1eb698b0319cb310495d8607c9789e9",
      "parents": [
        "7ab57e870a0a1faa053de64fc4620cd274d31a85",
        "55f66aae317ffc425f64f4eff03cb0137014665a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 21:40:49 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 21:40:49 2017 -0700"
      },
      "message": "#750: New API method .empty()\n\nSupersedes #553"
    },
    {
      "commit": "7ab57e870a0a1faa053de64fc4620cd274d31a85",
      "tree": "9cfdbe0c779fc3f53646ba82923ab35451fa130e",
      "parents": [
        "ddc2b8e39087a598dcfe2563a4100a21664d958b",
        "a923b54e0bcb0f7fed13d064204b8a15542d1d06"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Aug 14 21:33:24 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 14 21:33:24 2017 -0700"
      },
      "message": "#766: Fix Ctrl-Backspace and Ctrl-Del\n\n"
    },
    {
      "commit": "a923b54e0bcb0f7fed13d064204b8a15542d1d06",
      "tree": "9cfdbe0c779fc3f53646ba82923ab35451fa130e",
      "parents": [
        "ddc2b8e39087a598dcfe2563a4100a21664d958b"
      ],
      "author": {
        "name": "Jason Merrill",
        "email": "jwmerrill@gmail.com",
        "time": "Fri Aug 11 15:40:16 2017 -0700"
      },
      "committer": {
        "name": "Jason Merrill",
        "email": "jwmerrill@gmail.com",
        "time": "Fri Aug 11 15:47:22 2017 -0700"
      },
      "message": "Fix Ctrl-Backspace and Ctrl-Del.\n\nThere were two problems here:\n\n1. dir was passed into ctrlDeleteDir, but was ignored, so Ctrl-Del\nbehaved the same as Ctrl-Backspace.\n2. dir was not being passed to deleteDir in the short-circuit case,\nwhich caused a prayer that expected a direction in deleteDir to fail.\n\nAdds some test coverage to both the non-empty and empty-cases of\nctrlDeleteDir.\n"
    },
    {
      "commit": "ddc2b8e39087a598dcfe2563a4100a21664d958b",
      "tree": "5ef337757923b272c1e825b39dd6a2c01e1467cf",
      "parents": [
        "97c7c02b1623ea61744c47807ebe6ec0c9d12480",
        "39291616acb49396a02cb1597daf5b1093129edd"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jul 25 10:25:52 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 25 10:25:52 2017 -0700"
      },
      "message": "#679: Add \\overarc and \\overleftrightarrow\n\n"
    },
    {
      "commit": "97c7c02b1623ea61744c47807ebe6ec0c9d12480",
      "tree": "939b7738abdfe5ca139b0a5854446e00e2df0a40",
      "parents": [
        "56a2051b245856486108aaab95a8eb46e93dc715",
        "a1cab26e9bab01c2f6ceea60bb3bd63844bc06a3"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jul 25 09:48:09 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 25 09:48:09 2017 -0700"
      },
      "message": "#752: Fix typo in API name in docs\n\n"
    },
    {
      "commit": "56a2051b245856486108aaab95a8eb46e93dc715",
      "tree": "fc22e7365e559a5b98705efd9aa5b30d3d1d7df3",
      "parents": [
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6",
        "b53088500e4d43a7ef51231d6e7498e127f65402"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jul 25 09:45:32 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 25 09:45:32 2017 -0700"
      },
      "message": "#764: Fix #763 Superscript of tall expression\n\n"
    },
    {
      "commit": "b53088500e4d43a7ef51231d6e7498e127f65402",
      "tree": "fc22e7365e559a5b98705efd9aa5b30d3d1d7df3",
      "parents": [
        "8abc39186ee018615c0f37ce8ad90fabc1e90354"
      ],
      "author": {
        "name": "savthegood",
        "email": "savthegood@users.noreply.github.com",
        "time": "Mon Jul 17 21:51:31 2017 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 17 21:51:31 2017 +0300"
      },
      "message": "Update commands.js"
    },
    {
      "commit": "8abc39186ee018615c0f37ce8ad90fabc1e90354",
      "tree": "422d87bf12f8426aeaa10c033bce8cac4cd7876a",
      "parents": [
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6"
      ],
      "author": {
        "name": "savthegood",
        "email": "savthegood@users.noreply.github.com",
        "time": "Mon Jul 17 21:06:37 2017 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 17 21:06:37 2017 +0300"
      },
      "message": "Update commands.js"
    },
    {
      "commit": "fb4e7e2e84432f539ccd5d10ff37d94f9fb61e8e",
      "tree": "57bcc72eaa2cd6595f4260b1651b687e76b9511c",
      "parents": [
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6"
      ],
      "author": {
        "name": "eoghanmcilwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Fri Jul 04 17:42:54 2014 +1000"
      },
      "committer": {
        "name": "Eoghan McIlwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Tue Jul 11 12:20:16 2017 +0100"
      },
      "message": "Add matrix support\n\n\\matrix\n\\pmatrix\n\\bmatrix\n\\Bmatrix\n\\vmatrix\n\\Vmatrix\n"
    },
    {
      "commit": "39291616acb49396a02cb1597daf5b1093129edd",
      "tree": "ff1defdbe42516ab95dc8a73bfea36f5562674e0",
      "parents": [
        "b3835082cd76da8f8d8d2a52c870e462b11eaad3",
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6"
      ],
      "author": {
        "name": "Karl Schaefer",
        "email": "karlgschaefer@gmail.com",
        "time": "Mon Jun 12 17:08:29 2017 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 12 17:08:29 2017 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into feature/arcs-and-lines"
    },
    {
      "commit": "b3835082cd76da8f8d8d2a52c870e462b11eaad3",
      "tree": "a9d677d090d73e51305c894b68a522dfa5456597",
      "parents": [
        "cd24d80daa22a2a720f3ce67d038086be9ee9cfd",
        "162b9d3f7e3aebbc9de7ae08edc3b959beb05623"
      ],
      "author": {
        "name": "Karl Schaefer",
        "email": "karlgschaefer@gmail.com",
        "time": "Mon Jun 12 17:06:12 2017 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 12 17:06:12 2017 -0400"
      },
      "message": "Merge pull request #24 from ryan-codingintrigue/feature/arcs-and-lines\n\nFeature/arcs and lines"
    },
    {
      "commit": "a1cab26e9bab01c2f6ceea60bb3bd63844bc06a3",
      "tree": "706d81cb32726620670c274562f6877084bdbd14",
      "parents": [
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6"
      ],
      "author": {
        "name": "hezhiqiang",
        "email": "simlesos@gmail.com",
        "time": "Thu Jun 01 15:51:45 2017 +0800"
      },
      "committer": {
        "name": "hezhiqiang",
        "email": "simlesos@gmail.com",
        "time": "Thu Jun 01 15:51:45 2017 +0800"
      },
      "message": "fix: api name error\n"
    },
    {
      "commit": "162b9d3f7e3aebbc9de7ae08edc3b959beb05623",
      "tree": "a9d677d090d73e51305c894b68a522dfa5456597",
      "parents": [
        "cd24d80daa22a2a720f3ce67d038086be9ee9cfd"
      ],
      "author": {
        "name": "Ryan Graham",
        "email": "ryan@codingintrigue.co.uk",
        "time": "Wed May 31 08:16:14 2017 +0100"
      },
      "committer": {
        "name": "Ryan Graham",
        "email": "ryan@codingintrigue.co.uk",
        "time": "Wed May 31 08:16:14 2017 +0100"
      },
      "message": "\n\nAdd visual tests for \\overline, \\overleftarrow, \\overrightarrow, \\overleftrightarrow and \\overarc"
    },
    {
      "commit": "55f66aae317ffc425f64f4eff03cb0137014665a",
      "tree": "8b232091b02e35701717096b4b96cad445520450",
      "parents": [
        "3d20c9cf030dcc49dc30c1ee7bed5879f295524b"
      ],
      "author": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Mon May 29 04:03:18 2017 +0100"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Sun May 28 20:04:32 2017 -0700"
      },
      "message": "used more efficient method for .empty()\n"
    },
    {
      "commit": "3d20c9cf030dcc49dc30c1ee7bed5879f295524b",
      "tree": "c9e349f0b02ea481830b98bc70723a0559838d2a",
      "parents": [
        "8a1194affc0d5169c94227fd23b3b4faaaeff1d3"
      ],
      "author": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Mon May 29 03:50:46 2017 +0100"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Sun May 28 20:04:32 2017 -0700"
      },
      "message": "removed test for .clear()\n"
    },
    {
      "commit": "8a1194affc0d5169c94227fd23b3b4faaaeff1d3",
      "tree": "443b51410f0553a313ffb10d68e2ba16f327cb97",
      "parents": [
        "a5b9fc46621c8671d57631d19fb6db25ca86b48c"
      ],
      "author": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Mon May 29 03:49:18 2017 +0100"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Sun May 28 20:04:32 2017 -0700"
      },
      "message": "removed .clear() alias\n"
    },
    {
      "commit": "a5b9fc46621c8671d57631d19fb6db25ca86b48c",
      "tree": "4f7c33f4d2ce464dc6632a728efa23610313b88a",
      "parents": [
        "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6"
      ],
      "author": {
        "name": "eoghanmcilwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Mon Nov 24 16:38:37 2014 -0600"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Sun May 28 20:04:32 2017 -0700"
      },
      "message": "[LRN] Add `empty()` public method and `clear()` as its alias\n\nRemoves all math from the editable field\n\nConflicts:\n\tsrc/commands/math.js\n\tsrc/commands/math/commands.js\n\tsrc/publicapi.js\n"
    },
    {
      "commit": "b456a3e22a6a2f7a9c8cf7d95906329de66d1db6",
      "tree": "b38045ff805c32ce8a50729cbf0721f79ca5f13f",
      "parents": [
        "1a029b8f0c785181a75ae53ebf6f5e592bb06426",
        "ff1b1d8424ffbe13b68501d2c9167557ba3cbd02"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Apr 19 02:15:22 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 19 02:15:22 2017 -0700"
      },
      "message": "Merge pull request #743 from Learnosity/fix.staticmath-selectable-escaping\n\nEscape latex in staticmath selectable span"
    },
    {
      "commit": "1a029b8f0c785181a75ae53ebf6f5e592bb06426",
      "tree": "60ad5afc47159580007a925ff557aa76d41bf12d",
      "parents": [
        "4a7423dae584842c2bdd091dc889d3ef4a26069e",
        "5871fbca3d50426a71cd36b84325272fa1375b38"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Apr 19 01:25:42 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 19 01:25:42 2017 -0700"
      },
      "message": "Merge pull request #735 from mathquill/fix.729-text-spacing\n\nFix.729 text spacing"
    },
    {
      "commit": "4a7423dae584842c2bdd091dc889d3ef4a26069e",
      "tree": "ea8c9521e0aa71d17c53b78fde147f30a40d5ce2",
      "parents": [
        "e16ccf8c3cc99e4bcad1d1f8e06ae176e1524098",
        "6bfa84dd4dbc8a72d4872d2e754aec91ec8ceb5e"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Apr 19 01:21:13 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 19 01:21:13 2017 -0700"
      },
      "message": "Merge pull request #744 from mathquill/ci.fix-sauce-outdated\n\nOn CI, cached Sauce Connect is outdated"
    },
    {
      "commit": "e16ccf8c3cc99e4bcad1d1f8e06ae176e1524098",
      "tree": "13d40c87ca5656a2a082e1a9a8878ee78f5119ae",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565",
        "d134d3bd668c861975c5e3d00607edb4b27c087d"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Apr 19 01:20:33 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 19 01:20:33 2017 -0700"
      },
      "message": "Merge pull request #726 from mathquill/ci.link-many-worlds\n\nCI: Add Many-Worlds build link to Commit Status"
    },
    {
      "commit": "6bfa84dd4dbc8a72d4872d2e754aec91ec8ceb5e",
      "tree": "b3bf8f71c900e58a2060caf2fe825c427553e877",
      "parents": [
        "decc185d1caaa75ee369ef9ddb66b945957183f8"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Apr 18 23:16:16 2017 -0700"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Apr 18 23:16:16 2017 -0700"
      },
      "message": "Fix emptying Sauce Connect cache #ImAnIdiot\n\n`rm -rf .` unlinks the current directory, which we\u0027re still in, so the\nsubsequent sc-*-linux still finds the old Sauce Connect.\n"
    },
    {
      "commit": "decc185d1caaa75ee369ef9ddb66b945957183f8",
      "tree": "841aa38b022e49d1c2abd662c59def5c2a4bb52f",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Apr 18 22:48:54 2017 -0700"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Apr 18 22:48:54 2017 -0700"
      },
      "message": "Redownload Sauce Connect on failure\n\nCircle builds 407-410 have all failed with:\n\n    {\"error\": \"Your Sauce Connect version (4.3) is no longer supported. Please download the\n    latest version from https://wiki.saucelabs.com/display/DOCS/Sauce+Connect+Proxy.\"}\n\ne.g. https://407-598343-gh.circle-artifacts.com/0/tmp/circle-artifacts.TKNsK04/stdout_SauceConnect_12869.txt\n(on https://circleci.com/gh/mathquill/mathquill/407#artifacts )\n\nSauce Connect also randomly fails quite often (https://git.io/vPN8v),\nbut those random failures take like 2 minutes, much slower than\nredownloading, so it doesn\u0027t save any time to retry before trying\nredownloading.\n"
    },
    {
      "commit": "ff1b1d8424ffbe13b68501d2c9167557ba3cbd02",
      "tree": "f6a53099482a92b1dc30d05114efd59836aa8290",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565"
      ],
      "author": {
        "name": "Eoghan McIlwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Wed Apr 12 16:07:06 2017 -0500"
      },
      "committer": {
        "name": "Eoghan McIlwaine",
        "email": "eoghan.mcilwaine@learnosity.com",
        "time": "Wed Apr 12 16:07:06 2017 -0500"
      },
      "message": "Escape latex in staticmath selectable span\n"
    },
    {
      "commit": "5871fbca3d50426a71cd36b84325272fa1375b38",
      "tree": "fa20d77cb0a31209dbd72fbc1407318c7e466e33",
      "parents": [
        "09794edbe6b84cffc44ecc800a651a78b7160864"
      ],
      "author": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Tue Apr 04 06:42:47 2017 +0100"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Tue Apr 04 06:42:47 2017 +0100"
      },
      "message": "Adds visual tests that cover whitespace behavior in text mode\n"
    },
    {
      "commit": "09794edbe6b84cffc44ecc800a651a78b7160864",
      "tree": "012606f8be882725ed70f639fdc82b357018b6e2",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565"
      ],
      "author": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Tue Apr 04 06:28:33 2017 +0100"
      },
      "committer": {
        "name": "Erik Krasner",
        "email": "erik.krasnerkarpen@gmail.com",
        "time": "Tue Apr 04 06:28:33 2017 +0100"
      },
      "message": "Fixes #729 whitespace at the beginning and end of text mode blocks\n"
    },
    {
      "commit": "d134d3bd668c861975c5e3d00607edb4b27c087d",
      "tree": "13d40c87ca5656a2a082e1a9a8878ee78f5119ae",
      "parents": [
        "4f9341785e8a55b30a23905f380ca8da40f0acd7"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Mar 21 23:41:51 2017 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 21 23:41:51 2017 -0700"
      },
      "message": "CI: Gomix has been renamed to Glitch\n\nhttps://medium.com/glitch/welcome-to-glitch-fe161d0fc39b#.9u0or7q8p"
    },
    {
      "commit": "7b3139ab293ce6c544b0af293553ca4a53372165",
      "tree": "b5309f223d3f7b05bd3f4fcaf8bbc04cb79334e7",
      "parents": [
        "5c7bfe5749bbf0ffec897367cd198ed4337e73f8"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Mar 21 21:45:27 2017 -0700"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Mar 21 21:45:27 2017 -0700"
      },
      "message": "Fix LaTeX exporting of \\text{} to escape {}\\\n"
    },
    {
      "commit": "5c7bfe5749bbf0ffec897367cd198ed4337e73f8",
      "tree": "41fe18c9a9620ac4cab9aa74ab4102c145ab1498",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Mar 21 21:38:28 2017 -0700"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Mar 21 21:38:28 2017 -0700"
      },
      "message": "Fix #709: typing \u0027\\text{\u0027 barfs\n\nLike both literally throws an exception, and also the LaTeX output ends\nup with a decompiled function string\n"
    },
    {
      "commit": "4f9341785e8a55b30a23905f380ca8da40f0acd7",
      "tree": "c18a1f78ab2bd5d9c906fbc8aff20227c34b4b34",
      "parents": [
        "90e5f6f7218e36ae2941cb3a8f415a872bed8c99"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 23:11:26 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 23:11:26 2017 -0800"
      },
      "message": "CI: Tweak curl formatting #cosmetic\n\nKeeping the curly braces at the same indention level looks better and\nmatches the immediate preceding commit; line continuation to a pipe\nmatches the curl in the \"Wait for tests to finish\" step.\n"
    },
    {
      "commit": "90e5f6f7218e36ae2941cb3a8f415a872bed8c99",
      "tree": "4cd8ea5f9660b51e0999b4b89f94673bfb786de2",
      "parents": [
        "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 22:37:25 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 22:37:25 2017 -0800"
      },
      "message": "CI: Add Many-Worlds build link to Commit Status\n\nSo [Many-Worlds] is this thing I hacked together on Gomix that can fetch,\nbuild, and serve any branch, PR, or commit of MathQuill, on demand. For\nexample, if you go to:\n\n  http://many-worlds.gomix.me/mathquill/mathquill/branch/master/test/unit.html\n\nthen it will fetch the latest `master` branch, run `make test`, then\ndelegate to a static file server to serve `test/unit.html` and\n`build/mathquill.test.js` and all that good stuff.\n\n[Many-Worlds]: https://gomix.com/#!/project/many-worlds\n\nCurrently, though, manually formatting that URL is the only way to use\nit. What would be nice is if an auto-generated URL were generated per\nbranch or PR or commit or something and available on GitHub, so you\ncould just click a link to try out a PR. We could automatically post a\ncomment on new PRs, but that would spam PR authors with notifications.\n\nA better, quieter way is to use the GitHub Commit Status API:\nhttps://developer.github.com/v3/repos/statuses/\n\nThis lets us quietly attach a link to every commit built by CircleCI\nwithout spamming anyone with notifications, and lets you try out\nintermediate commits on a PR; not just the tip, every push.\n\nAuthentication\n--------------\n\nCircleCI doesn\u0027t provide us with the token they use for their status\nupdate, probably for good security reasons, but this is exactly what the\nMathQuillBot GitHub bot user is for.\n\n`$GITHUB_STATUS_API_KEY` is a [personal access token] for MathQuillBot\nlimited to the [`repo:status`] authorization scope (so this token can\u0027t\nbe used to write to anything other than commit statuses) that I\u0027ve added\nto the build environment.\n\n[personal access token]: https://help.github.com/articles/creating-an-access-token-for-command-line-use/\n[`repo:status`]: https://developer.github.com/v3/oauth/#scopes\n"
    },
    {
      "commit": "c877a7cc4d7ef7fcaeda097dcbfb79f37b930565",
      "tree": "6e22333efe5f177f3f17d328540e59e5724af152",
      "parents": [
        "d712a84e060c2fc20251fa58dd0baf4bc6f198ee"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:36:51 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:36:51 2017 -0800"
      },
      "message": "CI: Use master not ci.cleanup as baseline screenshots\n\nRevert of a3484e4c135573f0158ca0e89084af1e550a2a6a, which was for\ntesting only.\n"
    },
    {
      "commit": "d712a84e060c2fc20251fa58dd0baf4bc6f198ee",
      "tree": "53e76a3b09082170c57795597cc5e2e39e4e69be",
      "parents": [
        "50daba7d9636ec9a6d3e2084382ceab35dfaa0a4",
        "ec409c448c5c7808d71900368b31cbfe12c58c69"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:24:56 2017 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 24 01:24:56 2017 -0800"
      },
      "message": "Merge pull request #723 from mathquill/ci.cleanup\n\nMajor changes:\r\n- throughout circle.yml, use the `json` cli tool\r\n- fix the Sauce Connect retry-ing to only retry on failure rather than\r\n  always\r\n- on Sauce, use human-readable build name similar to on Circle; in\r\n  particular, mention the CircleCI build number\r\n- when applicable keep around pieces of screenshots in `imgs/pieces/`,\r\n  and file away the baseline imgs (formerly the `PREV_*` imgs) in\r\n  `imgs/baseline/`\r\n- screenshot filename mentions version of browser used (which changes\r\n  over time for evergreen browsers)\r\n- `script/screenshots.js` now uses the \"promise chain\"-style of `wd`,\r\n  much fewer callbacks\r\n\r\nAlso lots of minor improvements to comments, screenshots script error\r\nlogging, test names on Sauce, etc."
    },
    {
      "commit": "ec409c448c5c7808d71900368b31cbfe12c58c69",
      "tree": "ba0b30c62d2bb941feae941c7d2710b3270f1c36",
      "parents": [
        "50abeb4a2e2486b8f7bd8a6a5ebbc3125b8dea1c"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:18:38 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:18:38 2017 -0800"
      },
      "message": "CI: On Sauce, mark screenshot jobs failure if error\n\nThis is just a little enhancement to how screenshot jobs show up in the\nSauce Labs dashboard; if no status is set they\u0027ll be a question mark,\nbut if a screenshot job has an error (other than fetching browser logs),\nit should be marked a failure (which\u0027ll be a nice red X in the Sauce\nLabs dashboard).\n"
    },
    {
      "commit": "50abeb4a2e2486b8f7bd8a6a5ebbc3125b8dea1c",
      "tree": "3bcaa0ba03660544394e7833bd3732ce95eebb91",
      "parents": [
        "fa0054e0437378b69829b3c8a5818323af53a3dd"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:17:28 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 24 01:17:28 2017 -0800"
      },
      "message": "CI: Use `jq` instead of `json` CLI utility\n\nBuilt-into the Ubuntu instance provided by CircleCI, one less\ndependency!\n\nBonus: sed doesn\u0027t need to insert the \u0027-o \u0027\n\nhttps://github.com/mathquill/mathquill/pull/723#discussion_r102721226\n"
    },
    {
      "commit": "50daba7d9636ec9a6d3e2084382ceab35dfaa0a4",
      "tree": "09b31bf76515d570adee7826c5d0979912c2d779",
      "parents": [
        "6b03f498a47b9f275558facc88d714098e5d416b",
        "0db151fcb1ec908e4e28d4a5645862d4a3763e53"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 21:02:53 2017 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 16 21:02:53 2017 -0800"
      },
      "message": "Merge pull request #719 from mathquill/fix.rename-font-folder\n\nRename font/ \u003d\u003e fonts/"
    },
    {
      "commit": "6b03f498a47b9f275558facc88d714098e5d416b",
      "tree": "47dd760cbcf4277af7894d755997fb126abeceab",
      "parents": [
        "ca789246b706992865e7581a3af6ecb07ceec724",
        "fea9b275c4dfbd6352b5bedc91d1979efb1eab87"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:41:52 2017 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 16 20:41:52 2017 -0800"
      },
      "message": "Merge pull request #561 from Learnosity/feature/dot-recurring\n\n[LRN] Added recurring decimal dot symbol"
    },
    {
      "commit": "ca789246b706992865e7581a3af6ecb07ceec724",
      "tree": "862d0341405e0493ee8651be7895cbbf4351b6bc",
      "parents": [
        "6693617d2022af9b7212ff8ba56a3f201b972900",
        "1caf0f67c45b624a1c1b808d07d86bd6a3a848ce"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:31:36 2017 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 16 20:31:36 2017 -0800"
      },
      "message": "Merge pull request #676 from italoc-84/master\n\nupgrade \\vee, \\wedge to Binary Operator"
    },
    {
      "commit": "0db151fcb1ec908e4e28d4a5645862d4a3763e53",
      "tree": "42dc749707073e1584830d351088f3bc194b2de8",
      "parents": [
        "2e11936097734a5d65db265af6cbb3ac06313edd"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:22:20 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:22:20 2017 -0800"
      },
      "message": "Rename font/ \u003d\u003e fonts/ in Makefile #ImAnIdiot\n"
    },
    {
      "commit": "fa0054e0437378b69829b3c8a5818323af53a3dd",
      "tree": "eda28e0370bcf1f33aab49c6d2c5accbdc1a1f23",
      "parents": [
        "1bc7fc84b568f6231485ae0568306eeaed83bd94"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:20:45 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:20:45 2017 -0800"
      },
      "message": "CI: Write Mocha xunit.xml to where CircleCI docs say\n\nSee https://circleci.com/docs/test-metadata/#a-namemochajsamocha-for-nodejs\n"
    },
    {
      "commit": "1bc7fc84b568f6231485ae0568306eeaed83bd94",
      "tree": "3b43f365bbd42cee9b7dc338f516c36b9cb1a523",
      "parents": [
        "47234693fa07372e1f6076f759d5bdc89b4673c7"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:06:36 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:14:50 2017 -0800"
      },
      "message": "CI: Tweak spacing of log output when stitching and diffing screenshots\n"
    },
    {
      "commit": "47234693fa07372e1f6076f759d5bdc89b4673c7",
      "tree": "1809745be36adc63b6a436c83194b3e05e766911",
      "parents": [
        "5ea81b8d69396bafc0c3b1bb09e9a15f5ec5705a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:02:12 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:14:49 2017 -0800"
      },
      "message": "CI: Consolidate CircleCI commands for readability\n\nThis way there are only 3 \"commands\" (really, entire scripts) that\nCircleCI runs, each which begins with a descriptive comment.\n\nThis commit also reduces the number of backgrounded commands, and most\nbackgrounded commands start with a word in the comment that describes it\nwell, so the \u0027stdout_*.txt\u0027 and \u0027stderr_*.txt\u0027 log outputs auto-captured\nby CircleCI will have more readable names and we don\u0027t need those *.log\nfiles.\n\nRecommend -w to view diff.\n"
    },
    {
      "commit": "5ea81b8d69396bafc0c3b1bb09e9a15f5ec5705a",
      "tree": "10faf7c559fe19ccfa7a1b2ddcfbb9c1bf2e0cde",
      "parents": [
        "1d34d4c641ced07c6e90c0a79888beec82fe5602"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:07:37 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 16 20:07:37 2017 -0800"
      },
      "message": "CI: Fix regex for evergreen OS X versions\n"
    },
    {
      "commit": "1d34d4c641ced07c6e90c0a79888beec82fe5602",
      "tree": "f7a2242fabf29515529e2f89cb99469461759ddf",
      "parents": [
        "05e23ec66c80dd78aef8f6cfabceebb5eb3cc88b"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:33:17 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:33:17 2017 -0800"
      },
      "message": "CI: Tweak comments in script/screenshots.js\n\n\"should be\" is unclear, does that mean this causes it to be pinned?\n\n\"assume\" hopefully makes it clearer that our code is assuming it to be\ntrue\n"
    },
    {
      "commit": "05e23ec66c80dd78aef8f6cfabceebb5eb3cc88b",
      "tree": "c4bc08aa26b0b5c40a2ffba2433033fef4e0621a",
      "parents": [
        "9ed3c52e188e7d0e546157cdbed7acd1c9cc673d"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:28:58 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:28:58 2017 -0800"
      },
      "message": "CI: Fix getting baseline screenshot for evergreen OS X versions\n"
    },
    {
      "commit": "9ed3c52e188e7d0e546157cdbed7acd1c9cc673d",
      "tree": "3e7d044656d72ac058b7e3539e132f82ca0537f2",
      "parents": [
        "4a58afbe4b3b5bc2d49566b055ba7162038a5ea8"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:12:31 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 17:12:31 2017 -0800"
      },
      "message": "CI: Fix Sauce screenshot exit conditions\n\nFirstly, always quit the Sauce browser instance even if an error was\nthrown.\n\nSecondly, if no error was thrown, tell Sauce the job status passed.\n"
    },
    {
      "commit": "4a58afbe4b3b5bc2d49566b055ba7162038a5ea8",
      "tree": "50b9f8c42c976dbabb114dc4d3c78038f6bffebd",
      "parents": [
        "a57dd9d504dcf9b633c972e8501e79d8af7cb6f0"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 14:53:58 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 14:53:58 2017 -0800"
      },
      "message": "CI: Fix screenshots on Sauce not quitting\n\n...when fetching logs fails\n"
    },
    {
      "commit": "a57dd9d504dcf9b633c972e8501e79d8af7cb6f0",
      "tree": "d77b604c2b87d63c8e2a4693f23e51a860f822ed",
      "parents": [
        "a15c42bee934e76b9f07b1055e44f0a9c80c8c4e"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 14:42:59 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Wed Feb 15 14:42:59 2017 -0800"
      },
      "message": "CI: Descriptively name each Sauce invocation\n\nAlso, attach .customData.build_url to screenshot invocation, to match\nunit tests\n"
    },
    {
      "commit": "a15c42bee934e76b9f07b1055e44f0a9c80c8c4e",
      "tree": "1a765c92539bf656bfe8fe841aeb2f9f007e3c9f",
      "parents": [
        "7eb153df1cf739804721b453f3427c42cc1b6c3d"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:30:18 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:30:18 2017 -0800"
      },
      "message": "CI: Fix missing close-paren )\n"
    },
    {
      "commit": "7eb153df1cf739804721b453f3427c42cc1b6c3d",
      "tree": "55014ec223d5399ce72a8c66bb708d87d83ab955",
      "parents": [
        "975c8b74aaae586dad4a462578e943cbf0551edc"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:20:40 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:20:40 2017 -0800"
      },
      "message": "CI: Fix and simplify glob for baseline screenshot\n\n...for evergreen browsers\n\nWhoops previous commit was broken because the double quotes were\npreventing the glob from expanding. So fix that but also I discovered\nthat we don\u0027t need the `ls` or the `sh -c` if we don\u0027t do the double\nquotes, just having another layer of subshell (the `$(...)`) will expand\nthe glob.\n"
    },
    {
      "commit": "975c8b74aaae586dad4a462578e943cbf0551edc",
      "tree": "b79b5ebcef914876dfe1cde4d0e8534c063e29b1",
      "parents": [
        "4f5c48c002b9d0a575c5006281eebfb10610d9e4"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:06:49 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 18:06:49 2017 -0800"
      },
      "message": "CI: Fix use of glob to find baseline screenshot of evergreen browser\n\nhttps://github.com/mathquill/mathquill/commit/9aca1a02a6b8ccc2a41904cc57713847401b3cbb#commitcomment-20870854\n"
    },
    {
      "commit": "4f5c48c002b9d0a575c5006281eebfb10610d9e4",
      "tree": "3cdc7b92486e5ad24282db057d4a5338cbda6401",
      "parents": [
        "bef40d2b5bcb5315876bf2dbe1dbb2fd24a1db7b"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 17:31:37 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 17:31:37 2017 -0800"
      },
      "message": "CI: Suppress visual diff errors\n\nEspecially \"image widths or heights differ\" which happens a lot:\nhttps://github.com/mathquill/mathquill/issues/649#issuecomment-228233818\n\nAlso https://circleci.com/gh/mathquill/mathquill/365 if you go and look\nat the output of the `...compare -metric...` line, you can see that an\n\"image widths or heights differ\" warning was logged (but then a\nsubsequent diff succeeded so Circle thinks the command worked overall).\n"
    },
    {
      "commit": "bef40d2b5bcb5315876bf2dbe1dbb2fd24a1db7b",
      "tree": "4cf60553b601c7b3dad2364a50f6147f18635b66",
      "parents": [
        "c40bc56b81583c697420b8db3cfc49e50e6345b4"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:42:23 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:42:23 2017 -0800"
      },
      "message": "CI: Ignore diffs when fetching baseline screenshots\n\nAlso when ignoreing pieces and baselines, fixed string not regex\n"
    },
    {
      "commit": "c40bc56b81583c697420b8db3cfc49e50e6345b4",
      "tree": "2b1846bdcb8a65cbbd06dd85ea035f4e12261f0f",
      "parents": [
        "cd0fbcb41c34d235d71763bcc7910d88a0141a9a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:38:50 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:38:50 2017 -0800"
      },
      "message": "CI: Fix gap in MS Edge screenshot (followup to #722)\n\nReset the browser window size *before* measuring the size of the page\n"
    },
    {
      "commit": "cd0fbcb41c34d235d71763bcc7910d88a0141a9a",
      "tree": "162fe89be8a1de0b6e1c57e377c12b2874aebbed",
      "parents": [
        "75dcca11e20676eaa960a7193dc3381321d1f882"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:33:07 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:33:07 2017 -0800"
      },
      "message": "CI: Hide scrollbars from screenshots\n\nCopy technique from wdio-screenshot as mentioned by #722\n"
    },
    {
      "commit": "75dcca11e20676eaa960a7193dc3381321d1f882",
      "tree": "2fcece4727245188d69bbf0185ba57778b5e58df",
      "parents": [
        "86d42ccb5e5927e852980c0d8a743be8c814c414"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:06:00 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Feb 13 16:06:00 2017 -0800"
      },
      "message": "CI: Fix #722 MS Edge screenshot last piece misaligned\n"
    },
    {
      "commit": "2e11936097734a5d65db265af6cbb3ac06313edd",
      "tree": "eb80c4b918e1bfa4afb71db4116ff3ebf20896fe",
      "parents": [
        "6693617d2022af9b7212ff8ba56a3f201b972900"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Feb 07 17:16:03 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Feb 07 17:16:03 2017 -0800"
      },
      "message": "Rename font/ \u003d\u003e fonts/\n\nFirst suggested by https://mathquill.slack.com/archives/mathquill/p1486494860000902\n\nIt\u0027s definitely the consensus:\nKaTeX\n  https://github.com/Khan/KaTeX/tree/f3df1ccbac4c61efd55bec423bc8509f8d173fb2/static/fonts\nMathJax\n  https://github.com/mathjax/MathJax/tree/6273842a9746731b9ecca0de18ec9fd50a36df99/fonts\nFontAwesome\n  https://github.com/FortAwesome/Font-Awesome/tree/04dad1e192b129ab09cddcd9b1aefb8b189c8d79/fonts\nmaterialize\n  https://github.com/Dogfalo/materialize/tree/189722c9cac812f5e9b3b05299298e8d4e90d7c5/fonts\na blogpost on React-Meteor\n  https://medium.com/@abhaytalreja/custom-fonts-in-react-meteor-app-ebe2a7fc7a2b#.43mnzbxaj\nclinical-meteor\n  https://github.com/clinical-meteor/fonts\n\nIt\u0027s even the consensus for Rails and Django:\nreact_on_rails \"recommended project structure\"\n  https://github.com/shakacode/react_on_rails/blob/9483bf8aaa2610a0ba5c5f04a551001f99589b0d/docs/additional-reading/recommended-project-structure.md#directory-structure\n\"Custom Web Fonts and the Rails Asset Pipeline\": \"The recommended way\"\n  https://gist.github.com/anotheruiguy/7379570#the-recommended-way\n\"Ultimate Django\"\n  https://ultimatedjango.com/learn-django/lessons/serving-static-files/\nsomeone on stackoverflow \"Best practice for Django project working\ndirectory structure\"\n  http://stackoverflow.com/a/35244323/362030\n"
    },
    {
      "commit": "86d42ccb5e5927e852980c0d8a743be8c814c414",
      "tree": "7c01a50d68405b41c1bc40fecf2d4815d21c8b60",
      "parents": [
        "b800523cdc4699e0064efbc6262b254560994049"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 17:58:33 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 17:58:33 2017 -0800"
      },
      "message": "CI: Ensure looped screenshot pieces start at top\n\nVisual test pages auto-focus something in the middle of the page, which\ncauses initial state to be scrolled down. Also, blinking cursor may be\ndifferent across screenshots of unchanged page, so ensure we blur\nanything auto-focused.\n"
    },
    {
      "commit": "b800523cdc4699e0064efbc6262b254560994049",
      "tree": "c0146f55ee3c27c898012cf64f1beb9bdb7d8c64",
      "parents": [
        "2be50c0e3c2d3d5325141c5cfc336b8116c53d85"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 17:46:36 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 17:46:36 2017 -0800"
      },
      "message": "CI: Fix screenshot diff\n\nTurns out `-list metric` just lists the *available* metrics (AE, MAE,\nNCC etc), not their actual values; it also doesn\u0027t create the actual\ndiff images.\n"
    },
    {
      "commit": "2be50c0e3c2d3d5325141c5cfc336b8116c53d85",
      "tree": "148afd5a3fb1e72a654d4d14539890f3c1100d0e",
      "parents": [
        "8bf2e20ab31d6e163688362d3e125084491a3f20"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:24:24 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:24:24 2017 -0800"
      },
      "message": "CI: Skip raw diffs\n\nTurns out the `-compose src` turns off the \"shadow\" of the image that\nwe\u0027re manually adding in on the next line:\nhttps://www.imagemagick.org/Usage/compare/\n\nAlso, apparently `-list metric` will list every diff metric, that\u0027s\ncool:\nhttp://www.imagemagick.org/script/command-line-options.php?#metric\n"
    },
    {
      "commit": "8bf2e20ab31d6e163688362d3e125084491a3f20",
      "tree": "27e90d3f556ff23d8bfdf13f464be8f7d77a828c",
      "parents": [
        "562377f55704fadc9dab32cb1126aae18725435a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:12:54 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:12:54 2017 -0800"
      },
      "message": "CI: Fix metric diff reporting\n\nTurns out `compare` reports the metric on stderr. Could add a ` 2\u003e\u00261`\nbut like, why not just order things right; it\u0027s nice to have the metric\nbe on its own line anyway, since the filename is variable-length.\n"
    },
    {
      "commit": "562377f55704fadc9dab32cb1126aae18725435a",
      "tree": "a9b13bad53d7e3e90b45eaaa64da59c13ae213cb",
      "parents": [
        "fb2fc4e5963573a7daeb54f6d1b3261eb80d01f6"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:11:38 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:11:38 2017 -0800"
      },
      "message": "CI: Stuff baseline imgs and raw diffs into subdir\n\nBonus: don\u0027t have to filter out PREV_*.png when diffing.\n"
    },
    {
      "commit": "fb2fc4e5963573a7daeb54f6d1b3261eb80d01f6",
      "tree": "4ffb6d916d279f6d28b302777f88e5760d582dbc",
      "parents": [
        "a3484e4c135573f0158ca0e89084af1e550a2a6a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:09:32 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Fri Feb 03 15:09:32 2017 -0800"
      },
      "message": "CI: Fix missing version number for Edge screenshot\n"
    },
    {
      "commit": "a3484e4c135573f0158ca0e89084af1e550a2a6a",
      "tree": "1aeb76b06b30ce7c66ca74276a9b4285b6331d6a",
      "parents": [
        "bf0bd2cd1ba1885a86f8c1943f4cdb413aa8f0e7"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:52:42 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:52:42 2017 -0800"
      },
      "message": "CI: \u003cFOR TESTING ONLY\u003e Use ci.cleanup instead of master\n\nBecause we changed screenshot filename format so we can\u0027t find the\nmatching baseline one\n"
    },
    {
      "commit": "bf0bd2cd1ba1885a86f8c1943f4cdb413aa8f0e7",
      "tree": "0e5215b3a268c6dd7bedc423f9f543e24239a89d",
      "parents": [
        "9aca1a02a6b8ccc2a41904cc57713847401b3cbb"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:50:57 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:50:57 2017 -0800"
      },
      "message": "CI: Tweak comments in circle.yml fetching baseline screenshots\n"
    },
    {
      "commit": "9aca1a02a6b8ccc2a41904cc57713847401b3cbb",
      "tree": "3285470ce9f27d30853b0a81845c48b66c0823c6",
      "parents": [
        "14d9f0106c010f0b20697f605519147870372f8b"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:44:32 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:44:32 2017 -0800"
      },
      "message": "CI: Fix matching previous screenshot to use glob for evergreen\n\nAlso fix variable name typo in screenshots.js\n"
    },
    {
      "commit": "14d9f0106c010f0b20697f605519147870372f8b",
      "tree": "8d71f656ff9c2c91968109047ca289bcbaf91e29",
      "parents": [
        "6dad20ce3ed58e723ead08947d287c263a7a672c"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:11:19 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:11:19 2017 -0800"
      },
      "message": "CI: Fix screenshots.js error handler variable scoping\n"
    },
    {
      "commit": "6dad20ce3ed58e723ead08947d287c263a7a672c",
      "tree": "28c106ba537b201c92a6d85bc52b9dfb883ad4ca",
      "parents": [
        "5d6805cc852313dd2b305e8328eb7b3ca194200d"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:06:33 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 21:06:33 2017 -0800"
      },
      "message": "CI: Fix Sauce Connect not twice in spite of readyfile\n\nAparently Sauce Connect deletes the readyfile after it exits?!?!!\nWhy?!?!!\n"
    },
    {
      "commit": "5d6805cc852313dd2b305e8328eb7b3ca194200d",
      "tree": "164e121f59840e359e3bac116aa2d98ec6b5ce96",
      "parents": [
        "fc39255e4080fc32fb1dcc7b86658126001372ee"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:50:41 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:50:41 2017 -0800"
      },
      "message": "CI: Fix screenshots.js browser logs catcher to not catch all errors\n\nOnly catch browser logs errors\n\nRecommend -w to view diff.\n"
    },
    {
      "commit": "fc39255e4080fc32fb1dcc7b86658126001372ee",
      "tree": "48325f9b87098fc538811b0faf74ef03731c6ed9",
      "parents": [
        "a0f0baf9a9d62f13ae2a5cf17034f28365ab510b"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:46:07 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:46:07 2017 -0800"
      },
      "message": "CI: Fix Sauce Connect to not always do it twice\n\n...only do it twice if the first time fails whoops lol\n"
    },
    {
      "commit": "a0f0baf9a9d62f13ae2a5cf17034f28365ab510b",
      "tree": "61d79a41715675569956d1ea1e364e0143ab10bc",
      "parents": [
        "164b5f95539cece357d2b4b6ac99989bf4fb0e5f"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:32:18 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:32:18 2017 -0800"
      },
      "message": "CI: Fix screenshots.js to get only browser/OS version from Sauce\n\nThe browser and OS names reported by Sauce are inconsistent (Chrome on\nmacOS is reported as being on \"Mac OS X\"; Firefox and Safari on macOS is\nreported as being on \"MAC\") and poorly formatted (all-caps or all\nlowercase).\n\nNote that .platformVersion is only reported by some drivers, so it\u0027s\noptional.\n"
    },
    {
      "commit": "164b5f95539cece357d2b4b6ac99989bf4fb0e5f",
      "tree": "5e48eca0a634d4b05a0a81846658fee45c0a269c",
      "parents": [
        "63077e82d734f0648770d9c5bc4c4cf13ff9f139"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:05:51 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:05:51 2017 -0800"
      },
      "message": "CI: Fix screenshots.js browser logs to handle JSON\n"
    },
    {
      "commit": "63077e82d734f0648770d9c5bc4c4cf13ff9f139",
      "tree": "b34bd783037300d6f976b1a464112c57b2f20990",
      "parents": [
        "194270652a87277584c30226f4b7b6c6c40ac720"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:02:03 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 20:02:03 2017 -0800"
      },
      "message": "CI: Only want previous actual screenshots not diffs\n"
    },
    {
      "commit": "194270652a87277584c30226f4b7b6c6c40ac720",
      "tree": "04cd71184e84cf9b5a786980acb0eba708b6690f",
      "parents": [
        "946bfebcc0a1e18f5c30ffed895a8ba07da468c8"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:58:57 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:58:57 2017 -0800"
      },
      "message": "CI: Whoops create borowser_logs/ folder\n"
    },
    {
      "commit": "946bfebcc0a1e18f5c30ffed895a8ba07da468c8",
      "tree": "ef7497cf05c310a49a51db7a6027c78a2cc330a1",
      "parents": [
        "28bd415b74cc02d0f9dec2f9d24cf67d22f0e114"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:55:36 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:55:36 2017 -0800"
      },
      "message": "CI: Ensure concatenating screenshot pieces in right order\n\nOn some systems, `ls ...*...` lists them in random order; and if there\nare ever \u003e9 pieces, lexicographic sort will be wrong, must sort in\nnumeric order.\n"
    },
    {
      "commit": "28bd415b74cc02d0f9dec2f9d24cf67d22f0e114",
      "tree": "5dbdfd9ab1bf6e17de4b645755231da8d269736c",
      "parents": [
        "be35ff8c8c3ae0264a936bec147a094a24a041c6"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:50:53 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:50:53 2017 -0800"
      },
      "message": "CI: Move pieces from screenshots.js into imgs/pieces/, don\u0027t delete\n"
    },
    {
      "commit": "be35ff8c8c3ae0264a936bec147a094a24a041c6",
      "tree": "db69db4f34ec83fad6b31b56817cb8fa004ad5d2",
      "parents": [
        "0f92bfd4f59aad3ff4466efe16bc22b7890b508a"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:46:44 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:46:44 2017 -0800"
      },
      "message": "CI: Fix screenshots.js browser logs filenames\n"
    },
    {
      "commit": "0f92bfd4f59aad3ff4466efe16bc22b7890b508a",
      "tree": "aaa1ccbfd445232c3acf82589938fc56f9ad74dd",
      "parents": [
        "e2ed1d029f85284db748a4801b124555a38699ed"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:35:54 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:35:54 2017 -0800"
      },
      "message": "CI: Fix reading args from WebDriver init\n"
    },
    {
      "commit": "e2ed1d029f85284db748a4801b124555a38699ed",
      "tree": "2661bc938d5cc4a74f8ddcb073ac36c0919a1483",
      "parents": [
        "ad9bd478112eb920d10d86b390e2ffd710736e89"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:23:11 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 19:23:11 2017 -0800"
      },
      "message": "CI: Fix screenshots.js fetching browser logs\n"
    },
    {
      "commit": "ad9bd478112eb920d10d86b390e2ffd710736e89",
      "tree": "816b423c30ca002bce2a316ae0ddf4ed1e1fcdd8",
      "parents": [
        "68f122f166922fbb440591cf58bd9ef3735bc4a9"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 18:41:09 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 18:41:09 2017 -0800"
      },
      "message": "CI: Reorg screenshots.js for clarity\n\n- rename list of browser info objects\n- make `pinned` optional boolean key\n- log sessionID\n- log browser version, not just name and platform\n- use info on the actual browser we\u0027re using as reported by Sauce, not\n  our config info\n- check for specifically Firefox and IE for single-screenshot case,\n  rather than checking that it\u0027s not one of the ones that require\n  multiple screenshots (wish this was feature-based, i.e. it would\n  actually measure the returned screenshot and see if it\u0027s less than the\n  viewport height)\n- factor out capturing browser logs to a subsequent .then() after the\n  if/else and the loop, rather than duplicating it (also, don\u0027t write\n  logs at all if no logs returned (Edge/IE))\n- loop starts out by taking screenshot and then scrolls, rather than\n  starting by scrolling to 0\n"
    },
    {
      "commit": "68f122f166922fbb440591cf58bd9ef3735bc4a9",
      "tree": "ac16f908641359a54ca5ea8ab82ad55ca194adb5",
      "parents": [
        "92c9ee200bfd31167962f4155d377c1d8a65e724"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 17:52:03 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Thu Feb 02 17:52:03 2017 -0800"
      },
      "message": "CI: Reorg reading env vars in screenshots.js\n"
    },
    {
      "commit": "92c9ee200bfd31167962f4155d377c1d8a65e724",
      "tree": "b83673ed9bda956eaf28cb364c67dfbd34d78008",
      "parents": [
        "f98a1f18abd219be71c0e056d0b622408460e309"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 31 18:43:47 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 31 18:43:47 2017 -0800"
      },
      "message": "CI: circle.yml source of truth for Sauce build name\n\nBefore the same algorithm was duplicated in shell form in circle.yml as\nwell as in JS form in script/screenshots.js. Now it\u0027s in shell form\ntwice, in two different places in circle.yml, but at least it\u0027s only in\none file.\n"
    },
    {
      "commit": "f98a1f18abd219be71c0e056d0b622408460e309",
      "tree": "e960dc9607a28bf80cb601d96044234eeacffd55",
      "parents": [
        "dc9899bb053ad7a15eaf0a6b8f2675b79e4ae34e"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 31 18:43:07 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 31 18:43:07 2017 -0800"
      },
      "message": "Fix script/screenshots.js variable scope\n\nAnd improve error messages\n"
    },
    {
      "commit": "dc9899bb053ad7a15eaf0a6b8f2675b79e4ae34e",
      "tree": "033f8f66b685096dbd0ce5dc05a5900821deef34",
      "parents": [
        "473e3f621c8232eb4bde0a6612919cfc271ee18f"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 24 14:28:13 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 24 14:28:13 2017 -0800"
      },
      "message": "CI: Add more logging before trying to take screenshot\n\nSeems that\u0027s where it\u0027s failing:\nhttps://337-598343-gh.circle-artifacts.com/0/tmp/circle-artifacts.6yTG23L/screenshots.log\n"
    },
    {
      "commit": "9f1a8de0e2710404fd92bd3f2d3985a8313ab7ca",
      "tree": "ab6f6667996d85a48ff8243b0cd24776ef3319df",
      "parents": [
        "6693617d2022af9b7212ff8ba56a3f201b972900"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 24 13:51:02 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Tue Jan 24 13:51:02 2017 -0800"
      },
      "message": "Makefile: Wipe node_modules if not properly installed\n\nIf `make server` is already running (or port 9292 is someotherhow\nalready in use), and I run `make server` in a fresh clone, the test\nserver gets an EADDRINUSE and quits. However, it first starts up `make\ntest` in parallel, which does an `npm install`, which gets aborted\npartway through. On my machine, this race condition results in the\npackages seemingly all installed under `node_modules/*`, but not the\nexecutables like `node_modules/.bin/lessc`.\n\nThe problem arises when subsequently building again (e.g. `PORT\u003d9393\nmake server`), which runs `npm install` again, this time to completion.\n`npm` sees all the packages and installed under `node_modules/*` and\ndoesn\u0027t try to complete the installation and install the\n`node_modules/.bin/*` executables (it probably doesn\u0027t want to do a full\nintegrity check: https://github.com/npm/npm/issues/15562 ), instead\nquitting and reports success, but the Makefile then fails when it tries\nto do `node_modules/.bin/lessc`.\n\nhttps://mathquill.slack.com/archives/mathquill/p1482616486000235\n"
    },
    {
      "commit": "473e3f621c8232eb4bde0a6612919cfc271ee18f",
      "tree": "533e7b4fded83c07099e3fd1babc5d9b20fcde0e",
      "parents": [
        "53ae5af9e5882837df9cf1e5a4cd5af7e56fecd4"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Sat Dec 24 17:58:43 2016 -0500"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Jan 23 16:14:14 2017 -0800"
      },
      "message": "CI: Convert script/screenshots.js to \"promise chain\" style\n\n...of `wd` (our Node.js client for webdriver)\n\nThere\u0027s fewer indents and callbacks, so it\u0027s more readable overall.\nThere\u0027s still lots of indents though because in order to use info from\nprevious steps, have to use .then() callbacks, promises don\u0027t eliminate\ncallbacks, just uniformize them and in particular, uniformize\nerror-handling:\n\nInstead of all the `if (err) log(err);`s, can have just one .fail()\nhandler at the end of the chain. On the other hand, injecting logging\nsteps in the chain is more annoying, had to define a `willLog()` promise\nto log when each step completes.\n\nWe also use the fancy-ish Q feature .spread() to parallelize getting\nscrollHeight and clientHeight (which requires combining logging steps),\nnot sure if we should be doing more or less of that.\n\nFor convenience, we move assembling the screenshot filename a little\nearlier, to the nearest .then(). Also, unfortunately, we have to\nmanually wrap Node\u0027s filesystem API in a promise; the builtin Promise\nshould be available in Node 4+.\n\nRecommend -w to view diff.\n"
    },
    {
      "commit": "6693617d2022af9b7212ff8ba56a3f201b972900",
      "tree": "854497f683b89347fde8d6c95bd7fbf3553f9769",
      "parents": [
        "bdabebd47c4c130061ccf10fb14f4af73d3e57b1"
      ],
      "author": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Jan 23 16:07:55 2017 -0800"
      },
      "committer": {
        "name": "Han Seoul-Oh",
        "email": "laughinghan@gmail.com",
        "time": "Mon Jan 23 16:07:55 2017 -0800"
      },
      "message": "Remove vestigial comment in advancedSymbols.js\n\nTeX backslash control sequences are letters-only, whereas HTML character\nentity references are alphanumeric; therefore `\u0026there4;` is a valid\ncharacter entity reference, but `\\there4` cannot be a valid control\nsequence. Initially I hoped to support every character entity reference\nas a backslash command, but we can\u0027t support this one, so forget it.\n\nThe out-of-place \"case\" is because backslash commands used to be a\nswitch/case, not a dictionary:\nhttps://github.com/mathquill/mathquill/commit/77bd6c476f081979c6ea754ece77eff783f3c928#diff-239c238d8c090904fa1a9261bf2ef674L961\n"
    }
  ],
  "next": "bdabebd47c4c130061ccf10fb14f4af73d3e57b1"
}
