)]}'
{
  "log": [
    {
      "commit": "602433e6761e11af3d57f2d9bd04b27419f004e7",
      "tree": "97a3e1ccce26b0906f68373d697189e0c9955e25",
      "parents": [
        "6812219a6db1d9ce577c33a71a712618ab2e0844",
        "6c9b88fc9e4cab28f40b09534c3c797844b9101c"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Tue Jan 02 14:31:58 2024"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 02 14:31:58 2024"
      },
      "message": "Merge pull request #321 from MirServer/accept-more-protocol-compliant-xdg-toplevel-behaviour\n\nXdgToplevelStable: Accept more protocol-compliant behaviour.\n"
    },
    {
      "commit": "6812219a6db1d9ce577c33a71a712618ab2e0844",
      "tree": "a1006b980341b5df69dee535ca4b3bc71d80762f",
      "parents": [
        "2a9809e5d038935784b8421766f0bb58fd326bc9",
        "111dc970660e08654ec9532ac22ba62efedf204a"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Fri Dec 15 12:51:09 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 15 12:51:09 2023"
      },
      "message": "Merge pull request #323 from MirServer/release/1.7\n\nRelease 1.7.0\n"
    },
    {
      "commit": "111dc970660e08654ec9532ac22ba62efedf204a",
      "tree": "a1006b980341b5df69dee535ca4b3bc71d80762f",
      "parents": [
        "c544f3a129a65bdcf8cfc3aa22970238c84185a1"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Dec 11 16:44:29 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Dec 14 12:39:25 2023"
      },
      "message": "Merge pull request #322 from MirServer/add-missing-surface-configure\n\nXdgSurfaceStable: Fix configure event logic\n"
    },
    {
      "commit": "c544f3a129a65bdcf8cfc3aa22970238c84185a1",
      "tree": "bb3efa12315fa368c6c8ec69d60336cfebe91a2b",
      "parents": [
        "dcb149e506f802d242f97324b240d47e7b7ada96"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Dec 11 16:31:46 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Dec 14 12:38:50 2023"
      },
      "message": "Merge pull request #324 from MirServer/more-missing-configure-acks\n\nInProcessServer: Fix xdg_shell window construction.\n"
    },
    {
      "commit": "2a9809e5d038935784b8421766f0bb58fd326bc9",
      "tree": "325fa17aa43717a4843a76385d65db24e5dcd150",
      "parents": [
        "3e7bc6805fb01c79720f7e13c802937b20b938fa",
        "f5b1a921dd53eca10f13d5b170f5a352d333e473"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Dec 11 16:44:29 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 11 16:44:29 2023"
      },
      "message": "Merge pull request #322 from MirServer/add-missing-surface-configure\n\nXdgSurfaceStable: Fix configure event logic\n"
    },
    {
      "commit": "3e7bc6805fb01c79720f7e13c802937b20b938fa",
      "tree": "ee16db2d757ff9151b1b1188bb9e2b5676410a92",
      "parents": [
        "6f009116d777c6e794aaf99caa3cec3a29c01d65",
        "2a5bfbcbf46a69f7ff7946d66cd543e1f3bb2659"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Dec 11 16:31:46 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 11 16:31:46 2023"
      },
      "message": "Merge pull request #324 from MirServer/more-missing-configure-acks\n\nInProcessServer: Fix xdg_shell window construction.\n"
    },
    {
      "commit": "2a5bfbcbf46a69f7ff7946d66cd543e1f3bb2659",
      "tree": "ee16db2d757ff9151b1b1188bb9e2b5676410a92",
      "parents": [
        "6f009116d777c6e794aaf99caa3cec3a29c01d65"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Dec 08 00:54:53 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Dec 08 00:54:53 2023"
      },
      "message": "InProcessServer: Fix xdg_shell window construction.\n\nProtocol requires that a client `commit` the surface after setting up\nXDG roles and `ack_configure` the resulting `xdg_surface.configure` event\n*before* attaching a buffer to the surface.\n\nWe don\u0027t notice in Mir because we XFAIL the relevant tests 🤦‍♀️.\n"
    },
    {
      "commit": "dcb149e506f802d242f97324b240d47e7b7ada96",
      "tree": "ab626d82bb7388115edb7ab00ff58616292a483f",
      "parents": [
        "6f009116d777c6e794aaf99caa3cec3a29c01d65"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Dec 05 12:52:39 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Dec 05 12:52:39 2023"
      },
      "message": "release: changelog and version bump\n"
    },
    {
      "commit": "f5b1a921dd53eca10f13d5b170f5a352d333e473",
      "tree": "12da724d3ec25fc5390a05dae24bc6d46d809cef",
      "parents": [
        "6f009116d777c6e794aaf99caa3cec3a29c01d65"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Mon Dec 04 00:11:33 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Mon Dec 04 00:12:05 2023"
      },
      "message": "XdgSurfaceStable: Fix configure event logic\n\nWe have a test, further down the file, testing that attaching a buffer to\nan `xdg_surface` before the first commit throws a protocol error.\n\nFix `gets_configure_event` to not attach a buffer to an `xdg_surface`\nbefore the first commit 🤦‍♀️.\n\nFixes: #312\n"
    },
    {
      "commit": "6c9b88fc9e4cab28f40b09534c3c797844b9101c",
      "tree": "c4ba74fefba43502a2cb433b648b794ec380b7b8",
      "parents": [
        "6f009116d777c6e794aaf99caa3cec3a29c01d65"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Sun Dec 03 23:15:01 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Sun Dec 03 23:15:01 2023"
      },
      "message": "XdgToplevelStable: Accept more protocol-compliant behaviour.\n\nWe assumed that the compositor would send a second `xdg_surface.configure` after\ncommitting a buffer, as now that the surface is mapped we expect it to be in the\n`activated` state.\n\nThis second configure isn\u0027t guaranteed by the protocol, and there\u0027s no reason a\ncompositor couldn\u0027t set the `activated` state in the *first* `configure`, prior\nto the window being mapped, on the basis that it\u0027ll almost certainly be made active\nonce it *has* been mapped¹.\n\nInstead of waiting for a second configure, wait for the surface to be in `activated`\nstate. That catches both, equally protocol compliant, compositor behaviours.\n\n¹: This is possibly desirable behaviour - this way the client can immediately draw\nin the activated state, rather than rendering for an inactive window and then immediately\nneeding to re-render for an active window.\n"
    },
    {
      "commit": "6f009116d777c6e794aaf99caa3cec3a29c01d65",
      "tree": "850eb7a7bb317dcda23c91a0666314fecd05f402",
      "parents": [
        "a9429a77da20daa26da93105aefcf28646cf72ec",
        "cf50030140a65aa6413e7abce6f2ec4c6d47847e"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Fri Dec 01 19:23:37 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 01 19:23:37 2023"
      },
      "message": "Merge pull request #320 from MirServer/avoid-kernel-warning\n\nhelpers: avoid triggering a kernel warning\n"
    },
    {
      "commit": "a9429a77da20daa26da93105aefcf28646cf72ec",
      "tree": "8d6c6ab63af5a8d1bcffd52e68bdce07d1003efa",
      "parents": [
        "06d324f7f8c8569754d3582ae019596bfb1a2273",
        "5d158418a66f69817fbabff47046dfa987b2f682"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Fri Dec 01 12:45:29 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 01 12:45:29 2023"
      },
      "message": "Merge pull request #319 from MirServer/xdg-configure-race\n\nXdgToplevelStable: Fix race in .configure handling.\n"
    },
    {
      "commit": "cf50030140a65aa6413e7abce6f2ec4c6d47847e",
      "tree": "ee25707b786f762369221d9b993c6d6816c0b6ce",
      "parents": [
        "06d324f7f8c8569754d3582ae019596bfb1a2273"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Dec 01 07:05:50 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Dec 01 07:05:50 2023"
      },
      "message": "helpers: avoid triggering a kernel warning\n\nIn kernels ≥ 6.3 there\u0027s a warning generated when you create a memfd without\nsetting one of `MFD_NOEXEC_SEAL` or `MFD_EXEC`. Since we don\u0027t need to be\nable to execute our shm buffers, set `MFD_NOEXEC_SEAL` when:\n* We\u0027re built against sufficiently new kernel headers, and\n* The kernel we\u0027re running on is sufficiently new.\n\n`memfd_create` will return `EINVAL` if it doesn\u0027t understand\n`MFD_NOEXEC_SEAL` (ie: if it\u0027s too old), so it\u0027s easy to fallback.\n"
    },
    {
      "commit": "5d158418a66f69817fbabff47046dfa987b2f682",
      "tree": "8d6c6ab63af5a8d1bcffd52e68bdce07d1003efa",
      "parents": [
        "06d324f7f8c8569754d3582ae019596bfb1a2273"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Thu Nov 30 07:01:26 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Dec 01 06:48:36 2023"
      },
      "message": "XdgToplevelStable: Fix race in .configure handling.\n\nFixes: #318\n"
    },
    {
      "commit": "06d324f7f8c8569754d3582ae019596bfb1a2273",
      "tree": "faf47200c6dfde57fc307aaff175ecd4de90be71",
      "parents": [
        "ce0065256b1f9588c752cceb09419f3806bcb38a",
        "c4aa6a0e99647b445af1bacf51a1c4fa8f91cb69"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Nov 22 11:04:25 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 22 11:04:25 2023"
      },
      "message": "Merge pull request #313 from MirServer/dont-incorrectly-error-on-partial-pointer-events\n\nwlcs::Client: Handle incomplete logical pointer/touch events better.\n"
    },
    {
      "commit": "ce0065256b1f9588c752cceb09419f3806bcb38a",
      "tree": "50b3a59303c05f1c8631e604e8ccb947c8c32263",
      "parents": [
        "5e7cd481936c43d20dbfefa2a202456f978e665c",
        "99e576bde946e5510745b0a876bc2d1ea13fb25f"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Thu Nov 16 12:23:09 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 16 12:23:09 2023"
      },
      "message": "Merge pull request #317 from MirServer/fedora-refresh\n\nspread: refresh fedora\n"
    },
    {
      "commit": "99e576bde946e5510745b0a876bc2d1ea13fb25f",
      "tree": "50b3a59303c05f1c8631e604e8ccb947c8c32263",
      "parents": [
        "768c33bbf04f736d3c31150af1fcaa452a4bce1e"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Nov 16 09:17:42 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Nov 16 09:42:16 2023"
      },
      "message": "spread: add fedora-rawhide\n"
    },
    {
      "commit": "768c33bbf04f736d3c31150af1fcaa452a4bce1e",
      "tree": "610d50037f05b6c664488cddc7100ff603233f75",
      "parents": [
        "5e7cd481936c43d20dbfefa2a202456f978e665c"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Nov 16 09:16:15 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu Nov 16 09:16:15 2023"
      },
      "message": "spread: add fedora-39\n"
    },
    {
      "commit": "5e7cd481936c43d20dbfefa2a202456f978e665c",
      "tree": "6bdaffdccb7a354d8ec544a50ae543da801ddf8d",
      "parents": [
        "68166707dba7e08c5edf431f5b8dd9ee137abc91",
        "6add41d532684017a26da80d5ac103054009c412"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Nov 14 14:45:58 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 14 14:45:58 2023"
      },
      "message": "Merge pull request #316 from MirServer/gcc-12-bug-13\n\ndebian: apply workaround for gcc13, too\n"
    },
    {
      "commit": "6add41d532684017a26da80d5ac103054009c412",
      "tree": "6bdaffdccb7a354d8ec544a50ae543da801ddf8d",
      "parents": [
        "68166707dba7e08c5edf431f5b8dd9ee137abc91"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Nov 14 08:52:29 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Nov 14 08:52:29 2023"
      },
      "message": "debian: apply workaround for gcc13, too\n"
    },
    {
      "commit": "68166707dba7e08c5edf431f5b8dd9ee137abc91",
      "tree": "e45acab76ff44196e0534f28c5490be8fa29071b",
      "parents": [
        "5447027cc460cbdba52add010776e359cf1efec0",
        "1434d80bd51669076ac1f73df0ce9b5215588895"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Mon Nov 13 20:48:14 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 13 20:48:14 2023"
      },
      "message": "Merge pull request #311 from MirServer/drive-by-tidy-up\n\nMark some constructors explicit to avoid unintended conversion construction\n"
    },
    {
      "commit": "c4aa6a0e99647b445af1bacf51a1c4fa8f91cb69",
      "tree": "781936799cd80971f54b7d28c36f0856e88f1076",
      "parents": [
        "9fb1a42d93d4686d2053f98c37bfb137e4506f81"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Nov 10 18:54:18 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Nov 10 18:54:18 2023"
      },
      "message": "wlcs::Client: Handle incomplete logical pointer/touch events better.\n\nA sequence of `wl_pointer`/`wl_touch` events are combined into a logical event by\nthe terminating `frame` event. When tests ask for the current touch/pointer position,\nor window under touch/pointer, always return the current state, even if there is\nan incomplete logical event (ie: some events have been received, but not a terminating\n`frame` event).\n\nThere\u0027s no guarantee that a compositor will emit a complete logical event in a\nsingle flush of the protocol socket, so there\u0027s no guarantee that we won\u0027t\nrun test code after receiving (for example) a `wl_pointer.enter` event but before\nprocessing a `wl_pointer.frame`.\n\nSo it is incorrect to fail the test in such cases\n"
    },
    {
      "commit": "1434d80bd51669076ac1f73df0ce9b5215588895",
      "tree": "e45acab76ff44196e0534f28c5490be8fa29071b",
      "parents": [
        "5447027cc460cbdba52add010776e359cf1efec0"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Thu Nov 09 07:18:53 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Thu Nov 09 07:18:53 2023"
      },
      "message": "Single argument constructors that should be explicit\n"
    },
    {
      "commit": "5447027cc460cbdba52add010776e359cf1efec0",
      "tree": "1806dea2722cc1d82ccc5a9e0f9e3d0e9791d870",
      "parents": [
        "407c00a58c5c706bc8222d1db287bc1f9457c637",
        "2118f4011960b9bcd9a7f876814aa6a6e5514500"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Thu Nov 09 06:32:48 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 09 06:32:48 2023"
      },
      "message": "Merge pull request #310 from MirServer/fix-FTBFS\n\nFix FTBFS\n"
    },
    {
      "commit": "2118f4011960b9bcd9a7f876814aa6a6e5514500",
      "tree": "1806dea2722cc1d82ccc5a9e0f9e3d0e9791d870",
      "parents": [
        "407c00a58c5c706bc8222d1db287bc1f9457c637"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Nov 08 10:36:55 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Nov 08 10:36:55 2023"
      },
      "message": "Move constructor out of line\n"
    },
    {
      "commit": "407c00a58c5c706bc8222d1db287bc1f9457c637",
      "tree": "cf6790b72bbee2be28f820209fe75b199126b160",
      "parents": [
        "89b338aeafe369e0dbfe369e163117ff843362bc"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Nov 07 14:05:18 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Nov 07 14:05:18 2023"
      },
      "message": "Force PPA upload\n"
    },
    {
      "commit": "89b338aeafe369e0dbfe369e163117ff843362bc",
      "tree": "cf6790b72bbee2be28f820209fe75b199126b160",
      "parents": [
        "9fb1a42d93d4686d2053f98c37bfb137e4506f81"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Fri Nov 03 07:08:08 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Fri Nov 03 07:08:08 2023"
      },
      "message": "Revert \"Fix FTBFS on 23.10\"\n\nThis reverts commit 2006ea3a51a9b25e80c0b51828ab27d4206f73c2.\n"
    },
    {
      "commit": "9fb1a42d93d4686d2053f98c37bfb137e4506f81",
      "tree": "5f7ed74e7f2ea2bca409c5cbb91de4fccaa5c21f",
      "parents": [
        "36be3433b116a9f625b032df01b4c57e4fd1b3a3",
        "9bc9e5f741c2f7890aad5b9f8d371a954a3e28d9"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Thu Oct 26 15:25:04 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 26 15:25:04 2023"
      },
      "message": "Merge pull request #307 from MirServer/refresh-ubuntu\n\nci,spread: refresh Ubuntu\n"
    },
    {
      "commit": "9bc9e5f741c2f7890aad5b9f8d371a954a3e28d9",
      "tree": "5f7ed74e7f2ea2bca409c5cbb91de4fccaa5c21f",
      "parents": [
        "36be3433b116a9f625b032df01b4c57e4fd1b3a3"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Wed Oct 25 07:07:27 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Wed Oct 25 07:07:27 2023"
      },
      "message": "ci,spread: refresh Ubuntu\n"
    },
    {
      "commit": "36be3433b116a9f625b032df01b4c57e4fd1b3a3",
      "tree": "1cccf9e8f157e3cf8b0ce596dd58dadb1e249526",
      "parents": [
        "fd617c7fecaf44f7c66274647c38db77949e7fe7",
        "91d63da4cb391954527f58eaad598b7fc0259ae2"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Tue Oct 10 10:29:21 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 10 10:29:21 2023"
      },
      "message": "Merge pull request #305 from MirServer/release/1.6\n\nRelease 1.6.1\n"
    },
    {
      "commit": "91d63da4cb391954527f58eaad598b7fc0259ae2",
      "tree": "1cccf9e8f157e3cf8b0ce596dd58dadb1e249526",
      "parents": [
        "fd617c7fecaf44f7c66274647c38db77949e7fe7"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 10:15:57 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 10:16:28 2023"
      },
      "message": "Release 1.6.1\n\nWe missed to update the project version in 1.6.0.\n"
    },
    {
      "commit": "fd617c7fecaf44f7c66274647c38db77949e7fe7",
      "tree": "e6a1a570553bd87a02644248f268522adf94982f",
      "parents": [
        "77766bf229e1c0bbffa92cc0d0a2c61ef4d15a2b"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:57:25 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:57:25 2023"
      },
      "message": "tarball: wlcs, not mir…\n"
    },
    {
      "commit": "77766bf229e1c0bbffa92cc0d0a2c61ef4d15a2b",
      "tree": "6b265dc7601576bc7637fc29166871a545446080",
      "parents": [
        "4c6db9aa05ca38370ab1c6a0c0519066cee141eb",
        "28d80fa7633c47d36ff07bb1e5af67ad6e6c781f"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Tue Oct 10 09:35:47 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 10 09:35:47 2023"
      },
      "message": "Merge pull request #304 from MirServer/add-tarball-workflow\n\nci: add tarball workflow and tweak apt-get, concurrency\n"
    },
    {
      "commit": "28d80fa7633c47d36ff07bb1e5af67ad6e6c781f",
      "tree": "6b265dc7601576bc7637fc29166871a545446080",
      "parents": [
        "eb072bd8b7af07e753f2b21fd40067c398693ea6"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:07:05 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:07:05 2023"
      },
      "message": "ci: keep one build at a time\n"
    },
    {
      "commit": "eb072bd8b7af07e753f2b21fd40067c398693ea6",
      "tree": "9eb340ff7b99ad03d83e7ca6b9d8b0843d460c77",
      "parents": [
        "afe9058b119d535eb3ac12a97ee4e6b68cf4b2d4"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:06:18 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:06:18 2023"
      },
      "message": "spread: tweak apt-get usage\n"
    },
    {
      "commit": "afe9058b119d535eb3ac12a97ee4e6b68cf4b2d4",
      "tree": "7d55ca3b17c3acca0485d6767bc3357ca724dd0e",
      "parents": [
        "4c6db9aa05ca38370ab1c6a0c0519066cee141eb"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:02:23 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Tue Oct 10 09:02:23 2023"
      },
      "message": "ci: add tarball workflow\n"
    },
    {
      "commit": "4c6db9aa05ca38370ab1c6a0c0519066cee141eb",
      "tree": "08c9eb7dc5285ba5b2ec87d0b154d372e2f73bb4",
      "parents": [
        "97eae7b12ab2d88911a9198be5fac005016521a6",
        "0b5f8d42eb02e19be661b4db00316036613ee8e2"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Mon Aug 21 08:10:53 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 21 08:10:53 2023"
      },
      "message": "Merge pull request #302 from MirServer/feature/2777\n\n(#2777) Tests for input-method-v1\n"
    },
    {
      "commit": "0b5f8d42eb02e19be661b4db00316036613ee8e2",
      "tree": "08c9eb7dc5285ba5b2ec87d0b154d372e2f73bb4",
      "parents": [
        "aaf4226c17d2a0835c796f5a3b89d1e78b9e89ea"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 19:44:31 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 19:44:31 2023"
      },
      "message": "All tests are awaiting the proper flags now\n"
    },
    {
      "commit": "aaf4226c17d2a0835c796f5a3b89d1e78b9e89ea",
      "tree": "a23f290b8af3420116589c29348e642632ec2dde",
      "parents": [
        "38e2d1e6963cd4a02980c7d99f5db3da88b21acd"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 19:16:05 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 19:16:05 2023"
      },
      "message": "Waiting for events appropriately\n"
    },
    {
      "commit": "38e2d1e6963cd4a02980c7d99f5db3da88b21acd",
      "tree": "9bba4ef5c7a590e3d745e25dbc90cc90ab26db0f",
      "parents": [
        "794cef5b3b14213154a05fca0f9c7b1dd760b2a0"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 18:22:50 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 18:22:50 2023"
      },
      "message": "Capturing the serial from text input v2\n"
    },
    {
      "commit": "794cef5b3b14213154a05fca0f9c7b1dd760b2a0",
      "tree": "b9a6d58c13d0c7dd3b4cb4b5fdfd423a309c1eb5",
      "parents": [
        "01b052b71afd034e17722eb3d81a5344fcf5cb48"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 18:03:15 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Fri Aug 18 18:03:15 2023"
      },
      "message": "No longer explicitly calling the superclass constructor\n"
    },
    {
      "commit": "01b052b71afd034e17722eb3d81a5344fcf5cb48",
      "tree": "e7220b8de647c4c1995d18331573d392dcae390e",
      "parents": [
        "4560f184f7e5271f8fa54005f1afb4a92c12a13a"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 17:57:58 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 17:57:58 2023"
      },
      "message": "Test for text direction\n"
    },
    {
      "commit": "4560f184f7e5271f8fa54005f1afb4a92c12a13a",
      "tree": "ed0724ce9314ae047c2e2264c6788bd39ef359d6",
      "parents": [
        "8d8f4c14baf7f413cda40ce273724056272ee802"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 14:11:26 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 14:11:26 2023"
      },
      "message": "Deactivation test\n"
    },
    {
      "commit": "8d8f4c14baf7f413cda40ce273724056272ee802",
      "tree": "9e28ea0705594f933a13719c75d9d67c256f2359",
      "parents": [
        "8b0b59ecf20445b147866f65eec93e0bf9a9efc0"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 13:53:04 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Wed Aug 16 13:53:04 2023"
      },
      "message": "Modifier map test\n"
    },
    {
      "commit": "8b0b59ecf20445b147866f65eec93e0bf9a9efc0",
      "tree": "8756e1f4837169e9dcefe95d1f1c4989c705585c",
      "parents": [
        "adeffe61738474d0566a5abd1926dd8c7b652d51"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 21:28:15 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 21:28:15 2023"
      },
      "message": "Preedit cursor test\n"
    },
    {
      "commit": "adeffe61738474d0566a5abd1926dd8c7b652d51",
      "tree": "0b9654a64e5cd7b89c8ee016747a75c88b5a5c5b",
      "parents": [
        "3d685e9c47bd4f31cd6c77e34c9c335bdabf33b6"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 21:26:16 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 21:26:16 2023"
      },
      "message": "Preedit style test\n"
    },
    {
      "commit": "3d685e9c47bd4f31cd6c77e34c9c335bdabf33b6",
      "tree": "5bbb8270855adf9107bfab37751573a0ed0155a6",
      "parents": [
        "a6cc47b7249e681eb5f5d86cca8118996f464a23"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:44:50 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:44:50 2023"
      },
      "message": "Fallback commit tests\n"
    },
    {
      "commit": "a6cc47b7249e681eb5f5d86cca8118996f464a23",
      "tree": "ce35692933256296286a7f7a42aab272649891c9",
      "parents": [
        "c7ffa9a67a1e27597cbdf097aa19eb17180cd8d1"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:21:57 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:21:57 2023"
      },
      "message": "Keysym test\n"
    },
    {
      "commit": "c7ffa9a67a1e27597cbdf097aa19eb17180cd8d1",
      "tree": "1c48e3000218859969f643f264ed20504263d79a",
      "parents": [
        "9be3af0ad7444cd9382eb9be48c44866553df443"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:13:01 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 20:13:01 2023"
      },
      "message": "Test for delete_surrounding_text\n"
    },
    {
      "commit": "9be3af0ad7444cd9382eb9be48c44866553df443",
      "tree": "212a71db49bf9d169b33419a1058dfd2b7ab12bb",
      "parents": [
        "a22c8d1764cabc009b1a8202094a637a50c9846c"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 19:29:04 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 19:29:04 2023"
      },
      "message": "A handful of working tests\n"
    },
    {
      "commit": "a22c8d1764cabc009b1a8202094a637a50c9846c",
      "tree": "3212d52dbae55bdae449fbd06242ef5bb9197a84",
      "parents": [
        "43d781bd50befffa868223d2053ade62c904691b"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 14:11:14 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 14:11:14 2023"
      },
      "message": "Mocks for input method v1\n"
    },
    {
      "commit": "43d781bd50befffa868223d2053ade62c904691b",
      "tree": "74523ccf209805cc4dea454aaf7ed63a8b46bf9b",
      "parents": [
        "97eae7b12ab2d88911a9198be5fac005016521a6"
      ],
      "author": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 13:53:06 2023"
      },
      "committer": {
        "name": "Matthew Kosarek",
        "email": "matthew@matthewkosarek.xyz",
        "time": "Tue Aug 15 13:53:06 2023"
      },
      "message": "Mocks for text input v2\n"
    },
    {
      "commit": "97eae7b12ab2d88911a9198be5fac005016521a6",
      "tree": "119b469c184880ff361fda19c287b69e6077a9b7",
      "parents": [
        "a38fe5c30dfbe79da239170350577c3a7fe5ed2e",
        "2006ea3a51a9b25e80c0b51828ab27d4206f73c2"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Wed Jul 26 13:36:51 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 26 13:36:51 2023"
      },
      "message": "Merge pull request #300 from MirServer/fix-ftbfs\n\nFix FTBFS with g++-13\n"
    },
    {
      "commit": "a38fe5c30dfbe79da239170350577c3a7fe5ed2e",
      "tree": "81a6bbd80cc39949b08e134a50813ca9a0093843",
      "parents": [
        "e54a52188cfcc9db870a90706baf4c5a82630677",
        "dc5d859bac0a5da124c7a406d01751ee04f723c8"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Tue Jul 25 12:51:35 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 25 12:51:35 2023"
      },
      "message": "Merge pull request #301 from MirServer/drop-22.10\n\nkinetic (a.k.a. 22.10) is obsolete\n"
    },
    {
      "commit": "dc5d859bac0a5da124c7a406d01751ee04f723c8",
      "tree": "81a6bbd80cc39949b08e134a50813ca9a0093843",
      "parents": [
        "e54a52188cfcc9db870a90706baf4c5a82630677"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Tue Jul 25 12:43:11 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Tue Jul 25 12:43:11 2023"
      },
      "message": "kinetic (a.k.a. 22.10) is obsolete\n"
    },
    {
      "commit": "2006ea3a51a9b25e80c0b51828ab27d4206f73c2",
      "tree": "097996ee111b47d3008a0f5f8cc18fe5f1f99458",
      "parents": [
        "e54a52188cfcc9db870a90706baf4c5a82630677"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Fri Jul 21 17:32:57 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Fri Jul 21 17:32:57 2023"
      },
      "message": "Fix FTBFS on 23.10\n"
    },
    {
      "commit": "e54a52188cfcc9db870a90706baf4c5a82630677",
      "tree": "53b5b17731829b3105ac7ec86e95380189b3b3f4",
      "parents": [
        "98ff4b3e8c2c48f8f063c31e215c6607419bff8c",
        "2a83b430d02ca78101818125d01a29556e0d581a"
      ],
      "author": {
        "name": "Michał Sawicz",
        "email": "michal@sawicz.net",
        "time": "Fri Jul 21 11:48:41 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 21 11:48:41 2023"
      },
      "message": "Merge pull request #299 from MirServer/release/1.6\n\nRelease 1.6.0\n"
    },
    {
      "commit": "2a83b430d02ca78101818125d01a29556e0d581a",
      "tree": "53b5b17731829b3105ac7ec86e95380189b3b3f4",
      "parents": [
        "98ff4b3e8c2c48f8f063c31e215c6607419bff8c"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Jul 17 14:22:23 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Jul 17 14:22:23 2023"
      },
      "message": "Draft changelog\n"
    },
    {
      "commit": "98ff4b3e8c2c48f8f063c31e215c6607419bff8c",
      "tree": "a003c8cd1e6620a0d8aa578284517a95a1c3d20a",
      "parents": [
        "f604f1af9fb0716952f318a83348f6bdb16823f5",
        "2c87f65fcb6ba82b62e894e6440ce1a573d3a7c7"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Fri Jul 14 08:00:52 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 14 08:00:52 2023"
      },
      "message": "Merge pull request #297 from MirServer/hackier_hack\n\nMake hack more reliable\n"
    },
    {
      "commit": "f604f1af9fb0716952f318a83348f6bdb16823f5",
      "tree": "5888b6bfd253917c3560e7b85356434f7790c14f",
      "parents": [
        "5a3c2388c163238d19143fa5658e2e470073bbef",
        "4438fe1bbc1b4e2ccb38df38da2f8936d42cacac"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Thu Jul 13 03:39:38 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 13 03:39:38 2023"
      },
      "message": "Merge pull request #298 from MirServer/fix-frame-timestamp-again\n\nFix frame_timestamp_increases *again*\n"
    },
    {
      "commit": "4438fe1bbc1b4e2ccb38df38da2f8936d42cacac",
      "tree": "5888b6bfd253917c3560e7b85356434f7790c14f",
      "parents": [
        "de356fe7b491c1cb029ae7f1a9287c8121773800"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Wed Jul 12 07:41:21 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Wed Jul 12 07:41:21 2023"
      },
      "message": "frame_timestamp_increases: Less magic number\n"
    },
    {
      "commit": "de356fe7b491c1cb029ae7f1a9287c8121773800",
      "tree": "119f33eeb0adc023cbdefc6465b5a440c8be6050",
      "parents": [
        "47ca077c5bd8ec775e3264790e5113002a293394"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:13:08 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:13:08 2023"
      },
      "message": "wlcs::Client: Add doc for `roundtrip()`\n\nWhile we\u0027re here…\n"
    },
    {
      "commit": "47ca077c5bd8ec775e3264790e5113002a293394",
      "tree": "6ff4ef61c46e495cfe39e3d926ff88a70ae3140a",
      "parents": [
        "cc9288e33c870d29003a0d4b24d024d2cdc6dd04"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:12:42 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:12:42 2023"
      },
      "message": "ClientSurfaceEventsTest.frame_timestamp_increases: More principled sleeping\n"
    },
    {
      "commit": "cc9288e33c870d29003a0d4b24d024d2cdc6dd04",
      "tree": "ee738f453a9531c2b230417a6da0cf59a91e4852",
      "parents": [
        "aac8aebae167b8c3f342ff07b1149ccf131abc30"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:07:59 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:07:59 2023"
      },
      "message": "ClientSurfaceEventsTest.frame_timestamp_increases: Fix *again*.\n\nThis test turns out to be flaky; if you run it in a loop, about half the time it will\npass and about half the time it will fail (on my system).\n\nThis is because we weren\u0027t ensuring that the first `frame`+`commit` request was\n*actually sent to the compositor* before we waited and then sent the second\n`frame`+`commit` request.\n\nFix this by adding a `client.flush()` after the first `commit`.\n"
    },
    {
      "commit": "aac8aebae167b8c3f342ff07b1149ccf131abc30",
      "tree": "0719ac3d724549493fc63473c18bc9a75f717da1",
      "parents": [
        "5a3c2388c163238d19143fa5658e2e470073bbef"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:00:28 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 11 02:00:28 2023"
      },
      "message": "wlcs::Client: Add `flush()` method.\n\nSometimes we want to ensure the server has seen all our requests, but we don\u0027t\nneed to wait until the server to have processed any of them.\n\n`wl_display_flush()` is the tool to use here; expose it as `Client::flush()`.\n"
    },
    {
      "commit": "5a3c2388c163238d19143fa5658e2e470073bbef",
      "tree": "79320818e1e756bcc40bb10aab31c3a583615d99",
      "parents": [
        "65a40d417b9e3357d74289e47a6469be79eda57e",
        "3345e2cc877ddcae032ebea74b3db1c6ed205b3f"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Thu Jul 06 07:59:05 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 06 07:59:05 2023"
      },
      "message": "Merge pull request #295 from MirServer/fix-frame-event-tests\n\nFix various frame-event misunderstandings\n"
    },
    {
      "commit": "3345e2cc877ddcae032ebea74b3db1c6ed205b3f",
      "tree": "977376436ea4394bc26a521de0ea9d2bb6e00204",
      "parents": [
        "e3c75c0ded19184d83512ecf3b21a512e99bb293"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Thu Jul 06 07:20:42 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Thu Jul 06 07:51:24 2023"
      },
      "message": "Factor out and name the frame callback lambda\n"
    },
    {
      "commit": "e3c75c0ded19184d83512ecf3b21a512e99bb293",
      "tree": "0e9df5c250835fb5ace8ddd481d0e65fc6d75796",
      "parents": [
        "808d41ac6080c3693485e7d567626d07d5f88eab"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Thu Jul 06 07:02:53 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 06 07:02:53 2023"
      },
      "message": "Better name for callback-storm test\n\nCo-authored-by: Alan Griffiths \u003calan@octopull.co.uk\u003e"
    },
    {
      "commit": "2c87f65fcb6ba82b62e894e6440ce1a573d3a7c7",
      "tree": "b4b6ce92bd8f3c902961180c4fb252283b6c7bfd",
      "parents": [
        "65a40d417b9e3357d74289e47a6469be79eda57e"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Jul 05 15:17:38 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Jul 05 15:17:38 2023"
      },
      "message": "Better hack\n"
    },
    {
      "commit": "65a40d417b9e3357d74289e47a6469be79eda57e",
      "tree": "17e5c34ce56a5bfa7efe6d4522a1f942daa4341c",
      "parents": [
        "b7601531492993a58dac78a1422a66a1a5d7893f",
        "6bc79b190d5152370028d1f6dd1635ef516ff6a3"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Jul 05 09:40:27 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 05 09:40:27 2023"
      },
      "message": "Merge pull request #296 from MirServer/virtual-pointer-followup\n\nVirtualPointerV1Test: Ensure no-events-sent test fails if events are sent\n"
    },
    {
      "commit": "6bc79b190d5152370028d1f6dd1635ef516ff6a3",
      "tree": "17e5c34ce56a5bfa7efe6d4522a1f942daa4341c",
      "parents": [
        "b7601531492993a58dac78a1422a66a1a5d7893f"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 04 07:09:07 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jul 04 07:09:07 2023"
      },
      "message": "VirtualPointerV1Test: Ensure no-events-sent test fails if events are sent\n"
    },
    {
      "commit": "b7601531492993a58dac78a1422a66a1a5d7893f",
      "tree": "4f033fe2dc19a5fa7269c188b910fb3581d81dd9",
      "parents": [
        "12234affdc0a4cc104fbaf8a502efc5f822b973b",
        "5e784accb2f846016f7136341d34ce8cfabedefc"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Tue Jul 04 01:28:32 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 04 01:28:32 2023"
      },
      "message": "Merge pull request #294 from MirServer/hack_better_synchronization\n\nLess flaky synchronization for VirtualPointerV1Test\n"
    },
    {
      "commit": "5e784accb2f846016f7136341d34ce8cfabedefc",
      "tree": "4f033fe2dc19a5fa7269c188b910fb3581d81dd9",
      "parents": [
        "a1a271f5f71735582c7360001a09238fe5519c12"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Jul 03 10:55:11 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon Jul 03 10:55:11 2023"
      },
      "message": "Fix for #293\n"
    },
    {
      "commit": "808d41ac6080c3693485e7d567626d07d5f88eab",
      "tree": "777a0b669c2c47e630e8b44572c07c6df4813e6b",
      "parents": [
        "a4e5d1e413c80a98a54d8f409ff23f5b05eaff4c"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Mon Jul 03 03:10:52 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Mon Jul 03 03:10:52 2023"
      },
      "message": "test_surface_events: Fix misunderstanding of the behaviour of add_frame_callback\n\n`surface.add_frame_callback()` adds a *one-shot* frame event - it just does the necessary\ndance to approximate `wl_surface_frame()` + `wl_callback_add_listener()` for a functor.\n\nSo, if we want to get called back twice, we need to call `add_frame_callback()` twice,\nand we can safely dispatch until `frame_callback_count \u003d\u003d 2`\n"
    },
    {
      "commit": "a1a271f5f71735582c7360001a09238fe5519c12",
      "tree": "c9115862694438062d51ebab3faf09ae1f6023b4",
      "parents": [
        "12234affdc0a4cc104fbaf8a502efc5f822b973b"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Fri Jun 30 09:19:10 2023"
      },
      "committer": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Fri Jun 30 09:19:10 2023"
      },
      "message": "Mitigation for #293\n"
    },
    {
      "commit": "a4e5d1e413c80a98a54d8f409ff23f5b05eaff4c",
      "tree": "56318eba3cdbf0653a1077735e2b1b3eb8a8067a",
      "parents": [
        "df1e492bded7491ad1fa63d9a888316b2475848e"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jun 27 06:44:16 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jun 27 06:44:16 2023"
      },
      "message": "FrameSubmission: Add test for Firefox frame storm\n\nNow that we\u0027re no longer accidentally testing the\n\"request frame without attaching anything\" case, do so deliberately\n"
    },
    {
      "commit": "df1e492bded7491ad1fa63d9a888316b2475848e",
      "tree": "9c7496818dbce72300beb14150ef4242aaa95217",
      "parents": [
        "12234affdc0a4cc104fbaf8a502efc5f822b973b"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jun 27 06:40:57 2023"
      },
      "committer": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Tue Jun 27 06:40:57 2023"
      },
      "message": "FrameSubmission.post_one_frame_at_a_time: Fix\n\n`wl_surface.damage` only applies to the *pending* buffer; since we are not\nattaching any buffers, this whole thing is a no-op and the test is *actually*\ntesting what happens if you repeatedly ask for a frame event without submitting\nanything.\n\nActually attach a buffer, so we\u0027re now testing the normal case: attach a buffer,\nrequest a frame event, attach a new buffer after that frame event fires.\n"
    },
    {
      "commit": "12234affdc0a4cc104fbaf8a502efc5f822b973b",
      "tree": "0207d707d97e6f2414d47a331961d56d58307cd6",
      "parents": [
        "4a5c66474e865407ce1758af1c9c95a9cf6d3139",
        "88b993156e52c85d467533a7a2ebc8876d5c8cbc"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Fri Jun 09 06:31:10 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 09 06:31:10 2023"
      },
      "message": "Merge pull request #291 from MirServer/test-deleted-buffer\n\nTest buffer can be deleted after it\u0027s attached\n"
    },
    {
      "commit": "88b993156e52c85d467533a7a2ebc8876d5c8cbc",
      "tree": "0207d707d97e6f2414d47a331961d56d58307cd6",
      "parents": [
        "0edd11a2477723eca3045622906f7a447c2460dc"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Fri Jun 09 06:30:04 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 09 06:30:04 2023"
      },
      "message": "Add some comments to the new test"
    },
    {
      "commit": "0edd11a2477723eca3045622906f7a447c2460dc",
      "tree": "12685a188ff42bcae4e8310e4263b5918fbcedff",
      "parents": [
        "4a5c66474e865407ce1758af1c9c95a9cf6d3139"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Fri Jun 09 01:02:22 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Fri Jun 09 01:03:02 2023"
      },
      "message": "Test buffer can be deleted after it\u0027s attached\n"
    },
    {
      "commit": "4a5c66474e865407ce1758af1c9c95a9cf6d3139",
      "tree": "cb0f970bcc1d6265ef6b8d8bbebee6058a39d7d7",
      "parents": [
        "b1e3a816f17c1c8501c4bd896e431c95086c75da",
        "ab2d7ffae6f07fcd19e6ba485180185119fe9edb"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Wed Jun 07 11:24:27 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 07 11:24:27 2023"
      },
      "message": "Merge pull request #290 from MirServer/drop-alpine3.17-fedora36\n\nspread: drop Alpine 3.17, Fedora 36\n"
    },
    {
      "commit": "ab2d7ffae6f07fcd19e6ba485180185119fe9edb",
      "tree": "cb0f970bcc1d6265ef6b8d8bbebee6058a39d7d7",
      "parents": [
        "b1e3a816f17c1c8501c4bd896e431c95086c75da"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Wed Jun 07 11:21:17 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Wed Jun 07 11:21:17 2023"
      },
      "message": "spread: drop Alpine 3.17, Fedora 36\n"
    },
    {
      "commit": "b1e3a816f17c1c8501c4bd896e431c95086c75da",
      "tree": "7f2ada7be3bdfaaf3abe234c14c66f08e252a506",
      "parents": [
        "b356a38d041e96cc8753bd807d82f9e2bc1b2390",
        "b7bb9820b8eee45813f2210b2392ee51cf386b8c"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Thu May 18 02:40:44 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 18 02:40:44 2023"
      },
      "message": "Merge pull request #223 from MirServer/popup-done-order\n\nTest popups are dismissed in the correct order\n"
    },
    {
      "commit": "b7bb9820b8eee45813f2210b2392ee51cf386b8c",
      "tree": "7f2ada7be3bdfaaf3abe234c14c66f08e252a506",
      "parents": [
        "26f408497fc516cc65c498ff707a3d33f25aea8a"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "christopher.halse.rogers@canonical.com",
        "time": "Thu May 18 02:39:51 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 18 02:39:51 2023"
      },
      "message": "Fix \u003cexperimental/optional\u003e include\n\nWe don\u0027t use `std::experimental::optional` anywhere (I hope!), but we do use `std::optional` in this header, so it\u0027s reasonable to `#include` the necessary `\u003coptional\u003e`"
    },
    {
      "commit": "26f408497fc516cc65c498ff707a3d33f25aea8a",
      "tree": "3ac08ac07eee32a1d2a3429db8485320507ff00a",
      "parents": [
        "03e0a70e9af80043be9d20db781659988d6e37e0"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:22:48 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:22:48 2023"
      },
      "message": "Improve comment\n"
    },
    {
      "commit": "03e0a70e9af80043be9d20db781659988d6e37e0",
      "tree": "e20d203dca49ebc2236850df4451ad08dc14c91b",
      "parents": [
        "d531020757ffd41ffc0da9680e6e8d37e7b51b7f"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:22:03 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:22:03 2023"
      },
      "message": "grabbed_popups_get_done_events_in_correct_order: click outside of parent window\n"
    },
    {
      "commit": "d531020757ffd41ffc0da9680e6e8d37e7b51b7f",
      "tree": "e94fe47cac1945ae871739589bb2ed7f050beb6c",
      "parents": [
        "b2acbf625d8056107127902be283723030fa8034"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:21:36 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 23:21:36 2023"
      },
      "message": "Drop unnecessary this-\u003e\n"
    },
    {
      "commit": "b2acbf625d8056107127902be283723030fa8034",
      "tree": "73a347142467b147eadfe155e2252771584e45d9",
      "parents": [
        "804e621b45857a1d799e00a919d4cd7256a3adb3",
        "b356a38d041e96cc8753bd807d82f9e2bc1b2390"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 20:53:27 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Tue May 16 20:53:27 2023"
      },
      "message": "Merge branch \u0027main\u0027 into popup-done-order\n"
    },
    {
      "commit": "b356a38d041e96cc8753bd807d82f9e2bc1b2390",
      "tree": "a1210906d09002ed5154a71e0afb6a5dc573bd3c",
      "parents": [
        "40d4fe819ce110c22ffe41f83d5c3baaacc4f4ae",
        "a90d57f2b829080e13c653fd33de83677cc7796e"
      ],
      "author": {
        "name": "Christopher James Halse Rogers",
        "email": "chris@cooperteam.net",
        "time": "Tue May 16 07:44:51 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 16 07:44:51 2023"
      },
      "message": "Merge pull request #283 from MirServer/add-geom\n\nCopy geometry headers from Mir\n"
    },
    {
      "commit": "40d4fe819ce110c22ffe41f83d5c3baaacc4f4ae",
      "tree": "c907df6409523494764bcfa84f9e7913aa28c5e3",
      "parents": [
        "24f502d6fbb702b68ba8f485e9de998e231da234",
        "4cdd36baa9061316f613a06d30db80ced77f3fdd"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "wm@wmww.sh",
        "time": "Mon May 15 17:34:09 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 17:34:09 2023"
      },
      "message": "Merge pull request #216 from MirServer/text-input-child-window-closed\n\nTest that text input is entered after child window is closed\n"
    },
    {
      "commit": "4cdd36baa9061316f613a06d30db80ced77f3fdd",
      "tree": "95d3c125d942be93300b4598a78c69686f0f19a9",
      "parents": [
        "605bba98870aba7d30b9b73ab44b61124fae8573"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 15 17:33:48 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 15 17:33:48 2023"
      },
      "message": "Fix nits\n"
    },
    {
      "commit": "24f502d6fbb702b68ba8f485e9de998e231da234",
      "tree": "51dca62f91e3108fa0631b2a3f9c91e44a916739",
      "parents": [
        "48a4a31b4ae52c06c1b91839aa8769ae5d35e26e",
        "9fb119c88dea68d2ee3daa3c74fe9363b6107daa"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon May 15 14:29:03 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 14:29:03 2023"
      },
      "message": "Merge pull request #289 from MirServer/migrate-bors\n\nci: migrate to merge groups\n"
    },
    {
      "commit": "48a4a31b4ae52c06c1b91839aa8769ae5d35e26e",
      "tree": "aa4e85e4b28f2f5b11df92cc5236ff09852fb27e",
      "parents": [
        "75accd02447dd19b8aa2be6ff3d5778bec789c1c",
        "00754e70c4f8411e2d5bd50cb365db0c37e6cd52"
      ],
      "author": {
        "name": "Alan Griffiths",
        "email": "alan@octopull.co.uk",
        "time": "Mon May 15 13:36:35 2023"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 13:36:35 2023"
      },
      "message": "Merge pull request #288 from MirServer/refresh-distros\n\nci: refresh distros\n"
    },
    {
      "commit": "00754e70c4f8411e2d5bd50cb365db0c37e6cd52",
      "tree": "aa4e85e4b28f2f5b11df92cc5236ff09852fb27e",
      "parents": [
        "75accd02447dd19b8aa2be6ff3d5778bec789c1c"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu May 11 11:18:39 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu May 11 11:18:39 2023"
      },
      "message": "ci: refresh distros\n"
    },
    {
      "commit": "9fb119c88dea68d2ee3daa3c74fe9363b6107daa",
      "tree": "139e181c8cadbc05459aa72eb6a404773cc1bd86",
      "parents": [
        "75accd02447dd19b8aa2be6ff3d5778bec789c1c"
      ],
      "author": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu May 11 10:56:15 2023"
      },
      "committer": {
        "name": "Michał Sawicz (Saviq)",
        "email": "michal@sawicz.net",
        "time": "Thu May 11 10:56:15 2023"
      },
      "message": "ci: migrate to merge groups\n"
    },
    {
      "commit": "605bba98870aba7d30b9b73ab44b61124fae8573",
      "tree": "9b495976fa21b9ecfbd335e27bf5fc9bd0d3e27c",
      "parents": [
        "08eac870d0fbc0a6822b355e687c8a57da49b8ca"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 17:00:29 2023"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 17:00:29 2023"
      },
      "message": "Don\u0027t use ZXDG enums for XDG shell stable\n"
    },
    {
      "commit": "08eac870d0fbc0a6822b355e687c8a57da49b8ca",
      "tree": "9b94afee31da9eb395993f52e8377281d64197b3",
      "parents": [
        "b4d0737772f4140bdecaf3942421555521b6d3ba"
      ],
      "author": {
        "name": "Sophie Winter",
        "email": "wm@wmww.sh",
        "time": "Tue Nov 15 18:54:28 2022"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 16:59:53 2023"
      },
      "message": "Add and use Surface::wl_surface() helper\n"
    },
    {
      "commit": "b4d0737772f4140bdecaf3942421555521b6d3ba",
      "tree": "95deeab93e5eef5f84fb423637aba7d6fc1ffab2",
      "parents": [
        "fa2f50831798d46ef77880cdfa93bbb4ff9032ba"
      ],
      "author": {
        "name": "William Wold",
        "email": "wm@wmww.sh",
        "time": "Fri Mar 18 13:52:36 2022"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 16:12:11 2023"
      },
      "message": "text_input_does_not_enter_non_grabbing_popup: expect does not enter or leave any surface\n"
    },
    {
      "commit": "fa2f50831798d46ef77880cdfa93bbb4ff9032ba",
      "tree": "66906871804fd56a69618fdf1529b2fb3275c88b",
      "parents": [
        "edd1ad3a19fcd7783578502058028f8bf7417e1a"
      ],
      "author": {
        "name": "William Wold",
        "email": "wm@wmww.sh",
        "time": "Tue Dec 07 21:21:52 2021"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 16:12:11 2023"
      },
      "message": "Make sure we generate a serial before popup grabbing\n"
    },
    {
      "commit": "edd1ad3a19fcd7783578502058028f8bf7417e1a",
      "tree": "26cc5a721b7cf069a95ccdfee98e38f11cc718cd",
      "parents": [
        "0285681dd92754b85dde916459a9d73020f7c710"
      ],
      "author": {
        "name": "William Wold",
        "email": "wm@wmww.sh",
        "time": "Tue Dec 07 21:15:13 2021"
      },
      "committer": {
        "name": "Sophie Winter",
        "email": "git@phie.me",
        "time": "Mon May 08 16:12:11 2023"
      },
      "message": "Add grabbing and non-grabbing popup text input tests\n"
    }
  ],
  "next": "0285681dd92754b85dde916459a9d73020f7c710"
}
