)]}'
{
  "log": [
    {
      "commit": "59c17d91d3d41ba66bc4db00b458acc8c3220835",
      "tree": "db3c0d06526ac824d65461936e83105200996f7a",
      "parents": [
        "b8825f6ec38273c429afdc4726a9a6d667db7451"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Nov 10 13:54:29 2025"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Nov 10 17:18:24 2025"
      },
      "message": "Bump golangci/golangci-lint-action from 7.0.0 to 9.0.0\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 7.0.0 to 9.0.0.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/1481404843c368bc19ca9406f87d6e0fc97bdcfd...0a35821d5c230e903fcfe077583637dea1b27b47)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-version: 9.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b8825f6ec38273c429afdc4726a9a6d667db7451",
      "tree": "4af568c9b3dfe47bf7b8de09ab27e16f4a938bd6",
      "parents": [
        "243d79a82e17c2675931460a1aced8b8eba7661a"
      ],
      "author": {
        "name": "Oleksandr Redko",
        "email": "oleksandr.red+github@gmail.com",
        "time": "Fri Jun 06 10:36:34 2025"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Jun 23 13:07:49 2025"
      },
      "message": "go.mod,.github: Go 1.13 is the minimum version\n"
    },
    {
      "commit": "243d79a82e17c2675931460a1aced8b8eba7661a",
      "tree": "7cdeae23c2104a3aae72b13e7c4d00a0721f4c3b",
      "parents": [
        "b64aef052fb707c6af8852bd29e4091ff3472b6d"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu Apr 24 14:22:41 2025"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 24 15:05:51 2025"
      },
      "message": "update github action workflow versions\n\n- pin to exact commits rather than version tags\n- format a few yaml files with prettier\n- update golangci-lint config for v2 syntax\n"
    },
    {
      "commit": "b64aef052fb707c6af8852bd29e4091ff3472b6d",
      "tree": "f80f9ab82ef2465cafd8dd4caa0618269b00180d",
      "parents": [
        "ffb7deb887d74c2c4d3fb185e65955a0e937fa89"
      ],
      "author": {
        "name": "14March",
        "email": "53811984+hcraM41@users.noreply.github.com",
        "time": "Thu Apr 24 08:00:04 2025"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 24 13:54:54 2025"
      },
      "message": "code opt: replace bytes.Buffer with strings.Builder\n"
    },
    {
      "commit": "ffb7deb887d74c2c4d3fb185e65955a0e937fa89",
      "tree": "e9c19c21d9b317b9678ea232af963e1333ea614b",
      "parents": [
        "085cc7882e69d266a8d5683a062957aa5046aa2c"
      ],
      "author": {
        "name": "14March",
        "email": "53811984+hcraM41@users.noreply.github.com",
        "time": "Thu Apr 24 02:07:53 2025"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 24 02:26:20 2025"
      },
      "message": "code opt: prioritize handling boundary conditions\n"
    },
    {
      "commit": "085cc7882e69d266a8d5683a062957aa5046aa2c",
      "tree": "7bce8703ec3af41175417471eb9661d05e662ee1",
      "parents": [
        "d887f3761db5a6239678317f32afdcaa069e5a7b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 08 13:47:53 2024"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 09 03:13:29 2024"
      },
      "message": "Bump golangci/golangci-lint-action from 5.0.0 to 6.0.1\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 5.0.0 to 6.0.1.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/82d40c283aeb1f2b6595839195e95c2d6a49081b...a4f60bb28d35aeee14e6880718e0c85ff1882e64)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d887f3761db5a6239678317f32afdcaa069e5a7b",
      "tree": "efe883c36a522630aafb572427e968d3f4afa165",
      "parents": [
        "d6a1024d386f274c27b1d6116c856a02abba11d8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 25 13:57:50 2024"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 25 15:56:53 2024"
      },
      "message": "Bump golangci/golangci-lint-action from 4.0.0 to 5.0.0\n\nBumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4.0.0 to 5.0.0.\n- [Release notes](https://github.com/golangci/golangci-lint-action/releases)\n- [Commits](https://github.com/golangci/golangci-lint-action/compare/3cfe3a4abbb849e10058ce4af15d205b6da42804...82d40c283aeb1f2b6595839195e95c2d6a49081b)\n\n---\nupdated-dependencies:\n- dependency-name: golangci/golangci-lint-action\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d6a1024d386f274c27b1d6116c856a02abba11d8",
      "tree": "97835539ac4ac4f95dc68025eb4c357ec50a507d",
      "parents": [
        "7af347edbb9773d18095738a7eae8b20f09174ec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 04 13:48:31 2023"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Mar 07 20:19:14 2024"
      },
      "message": "go.mod,.github: update dependencies\n\nThis merges together all of the various PRs opened by dependabot.\n\nSigned-off-by: Will Norris \u003cwill@tailscale.com\u003e\n"
    },
    {
      "commit": "7af347edbb9773d18095738a7eae8b20f09174ec",
      "tree": "36927e76862f27723d753800115f3066652305ea",
      "parents": [
        "3455b5313413da74e4b65662d161dde73d961cdd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jan 26 13:43:39 2024"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Jan 26 15:18:20 2024"
      },
      "message": "Bump codecov/codecov-action from 3.1.4 to 3.1.5\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.4 to 3.1.5.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/eaaf4bedf32dbdc6b720b63067d99c4d77d6047d...4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "3455b5313413da74e4b65662d161dde73d961cdd",
      "tree": "a6ad03eb889cabde5ac6c898c2de32335137970d",
      "parents": [
        "6ab76b241e939fd603e0d777c753517ce6d1739b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 16 13:58:15 2023"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue May 16 15:20:57 2023"
      },
      "message": "Bump codecov/codecov-action from 3.1.3 to 3.1.4\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.3 to 3.1.4.\n- [Release notes](https://github.com/codecov/codecov-action/releases)\n- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/codecov/codecov-action/compare/894ff025c7b54547a9a2a1e9f228beae737ad3c2...eaaf4bedf32dbdc6b720b63067d99c4d77d6047d)\n\n---\nupdated-dependencies:\n- dependency-name: codecov/codecov-action\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "6ab76b241e939fd603e0d777c753517ce6d1739b",
      "tree": "74d8bb0b84726b98fd9262d86661d31377e9bb5d",
      "parents": [
        "1e2d512544ca49d4175376caf612eb892961df99"
      ],
      "author": {
        "name": "Ggicci",
        "email": "ggicci.t@gmail.com",
        "time": "Sun Mar 06 12:31:41 2022"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 16:36:13 2023"
      },
      "message": "recommend an alternative package httpin\n"
    },
    {
      "commit": "1e2d512544ca49d4175376caf612eb892961df99",
      "tree": "5f3687ef1cccade516a276ed81ac4855c65dda2b",
      "parents": [
        "9131c9e1853763286a825abb836a79137c76615f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu May 04 15:44:40 2023"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 15:49:45 2023"
      },
      "message": "Bump github.com/google/go-cmp from 0.5.6 to 0.5.9\n\nBumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.5.6 to 0.5.9.\n- [Release notes](https://github.com/google/go-cmp/releases)\n- [Commits](https://github.com/google/go-cmp/compare/v0.5.6...v0.5.9)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/google/go-cmp\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9131c9e1853763286a825abb836a79137c76615f",
      "tree": "ac68bba019962acc36561dd2231a7a47d83cdb5e",
      "parents": [
        "71a97b19ea3f651063634461d53902d5b4327a92"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu May 04 15:28:42 2023"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 15:39:40 2023"
      },
      "message": ".github: update workflow actions\n\nUpdate the various GitHub actions we\u0027re using like setup-go, which no\nlonger needs the cache action, and supports the new \u0027stable\u0027 and\n\u0027oldstable\u0027 go versions.  Also switch to new concurrency config, which\nremoves the need for styfle/cancel-workflow-action.\n"
    },
    {
      "commit": "71a97b19ea3f651063634461d53902d5b4327a92",
      "tree": "ad622d61d515b8e82183bab2201128a84d3ad0de",
      "parents": [
        "934da1706275a38ef4d8647320f723db0c208595"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@tailscale.com",
        "time": "Thu May 04 15:21:35 2023"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu May 04 15:39:40 2023"
      },
      "message": "gofmt all files\n"
    },
    {
      "commit": "934da1706275a38ef4d8647320f723db0c208595",
      "tree": "a608e011f71aed0cabb954b540c87be1d4c1da7d",
      "parents": [
        "b6e79f1232c697d589dde6da2dd13b4de75b8af9"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 17:15:58 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 17:15:58 2021"
      },
      "message": "better handling of empty values in slices/arrays\n\nif the slice or array has no values, skip it entirely.  This fixes\nan issue where a struct field with a custom delimiter was included in\nthe returned url.Values with an empty string rather than being omitted\nentirely (as is the case when there is no custom delimiter)\n\nfixes #57\n"
    },
    {
      "commit": "b6e79f1232c697d589dde6da2dd13b4de75b8af9",
      "tree": "3b6c9a0ae13ac96415c5003713671266522234af",
      "parents": [
        "9392084f0fd11c8727f6c6710d2b73661c9be4c7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 17:03:21 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Dec 02 17:03:21 2021"
      },
      "message": "docs: clarify behavior of nested structs\n\nrelates to #62\n"
    },
    {
      "commit": "9392084f0fd11c8727f6c6710d2b73661c9be4c7",
      "tree": "ae8fbac505c59f55009d3f3f931484983b0ab48a",
      "parents": [
        "ca42dd88cb30cbc6f8f16315588a97d53116a304"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 13 17:04:22 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 13 17:04:22 2021"
      },
      "message": "Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1 (#56)\n\n* Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1\r\n\r\nBumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.9.0 to 0.9.1.\r\n- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)\r\n- [Commits](https://github.com/styfle/cancel-workflow-action/compare/89f242ee29e10c53a841bfe71cc0ce7b2f065abc...a40b8845c0683271d9f53dfcb887a7e181d3918b)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: styfle/cancel-workflow-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\n* Update .github/workflows/tests.yml\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ca42dd88cb30cbc6f8f16315588a97d53116a304",
      "tree": "8f69142a2a12ca2766cc5a347b97e0d56aeb3e0b",
      "parents": [
        "f76b16e611e840d52c50bd66dabeef5fe3b5e74d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 13 17:02:54 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 13 17:02:54 2021"
      },
      "message": "Bump codecov/codecov-action from 2.0.1 to 2.1.0 (#59)\n\n* Bump codecov/codecov-action from 2.0.1 to 2.1.0\r\n\r\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.0.1 to 2.1.0.\r\n- [Release notes](https://github.com/codecov/codecov-action/releases)\r\n- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/codecov/codecov-action/compare/v2.0.1...v2.1.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: codecov/codecov-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\n* Update .github/workflows/tests.yml\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f76b16e611e840d52c50bd66dabeef5fe3b5e74d",
      "tree": "ee21fa5013c26482ac41872f81c8e01c0df24eea",
      "parents": [
        "e2723fd77966956647cf8af3573ed8bbe467b3b6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 21 20:50:29 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 20:50:29 2021"
      },
      "message": "Bump codecov/codecov-action from 1 to 2.0.1 (#51)\n\nBumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 1 to 2.0.1.\r\n- [Release notes](https://github.com/codecov/codecov-action/releases)\r\n- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/codecov/codecov-action/compare/v1...v2.0.1)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: codecov/codecov-action\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-major\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e2723fd77966956647cf8af3573ed8bbe467b3b6",
      "tree": "92d7ca2fce57a46ee5f63c2b83fcf2e5a5064c08",
      "parents": [
        "e0f76a524f0ec3f7e3f9f4f2d827083cccdfb440"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 21 20:50:02 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 20:50:02 2021"
      },
      "message": "Bump github.com/google/go-cmp from 0.5.2 to 0.5.6 (#52)\n\nBumps [github.com/google/go-cmp](https://github.com/google/go-cmp) from 0.5.2 to 0.5.6.\r\n- [Release notes](https://github.com/google/go-cmp/releases)\r\n- [Commits](https://github.com/google/go-cmp/compare/v0.5.2...v0.5.6)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: github.com/google/go-cmp\r\n  dependency-type: direct:production\r\n  update-type: version-update:semver-patch\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\r\n\r\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e0f76a524f0ec3f7e3f9f4f2d827083cccdfb440",
      "tree": "f2221dc6ebb30f91b9ec63cb4b3dbb48b8959bff",
      "parents": [
        "af7d77dde9d9ac442c24acf94718d9f5114b5fe9"
      ],
      "author": {
        "name": "Matthieu MOREL",
        "email": "mmorel-35@users.noreply.github.com",
        "time": "Wed Jul 21 20:48:10 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 21 20:48:10 2021"
      },
      "message": "Set up dependabot for gomod and github-actions, Update golangci to v1.41 (#50)\n\n"
    },
    {
      "commit": "af7d77dde9d9ac442c24acf94718d9f5114b5fe9",
      "tree": "31353cd5330b9fc5c4e041b1810f6aca80a8bf6d",
      "parents": [
        "1f4a1f9d6e29d314b2513651973fca5c4d4498f1"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 15 14:20:43 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Thu Apr 15 14:20:43 2021"
      },
      "message": "pin cancel-workflow-action to specific SHA\n"
    },
    {
      "commit": "1f4a1f9d6e29d314b2513651973fca5c4d4498f1",
      "tree": "6a52d665ec505e7cc641793edc064dfdf86e65b7",
      "parents": [
        "6c9448afb101fc8db2e49bfbf96f180ccef6aa4e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Mar 10 22:41:24 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Mar 10 22:41:24 2021"
      },
      "message": "cleanup github actions config\n\n- cancel previous workflow runs\n- limit actions to changes on master branch\n- update actions/cache config\n- only upload code coverage status once\n"
    },
    {
      "commit": "6c9448afb101fc8db2e49bfbf96f180ccef6aa4e",
      "tree": "3eec43632debdb342e0c5fa210ccbd1da435c4b0",
      "parents": [
        "c16bb7bfc6551c289c2bdac085d94b1f5ddb5add"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 01 17:01:55 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 01 17:03:41 2021"
      },
      "message": "remove comment about undesirable test values\n"
    },
    {
      "commit": "c16bb7bfc6551c289c2bdac085d94b1f5ddb5add",
      "tree": "6d20827bc46313a5815ed80fe79710ff91458ad0",
      "parents": [
        "5014110ddb7722800ef3c05922b78910d1375c20"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:51:54 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:51:54 2021"
      },
      "message": "use go reference badge from pkg.go.dev\n"
    },
    {
      "commit": "5014110ddb7722800ef3c05922b78910d1375c20",
      "tree": "77eacd2e571d2fec55d6202cb25d47252cf95c71",
      "parents": [
        "e9ef1ee629c6d9a07b0b4231e90da6cb8b7e2693"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:42:49 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:42:49 2021"
      },
      "message": "add tests for embedded struct pointer\n\nRefs #40\n"
    },
    {
      "commit": "e9ef1ee629c6d9a07b0b4231e90da6cb8b7e2693",
      "tree": "4955f6c47262b46b6cafe429faf6e76c1314f6a5",
      "parents": [
        "dd8162071090c2e4dfab2646c770114700b35df6"
      ],
      "author": {
        "name": "Anthony Pratti",
        "email": "apratti@twitter.com",
        "time": "Sat Aug 22 07:07:42 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:42:13 2021"
      },
      "message": "Allow embedded pointers to structs\n"
    },
    {
      "commit": "dd8162071090c2e4dfab2646c770114700b35df6",
      "tree": "072cdfddc882eb9fa16235f66d0133324f100f99",
      "parents": [
        "05266dc9685ccdaeea07051601ef2d5b229a7382"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:01:25 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 22:01:25 2021"
      },
      "message": "allow specifying a custom layout for time values\n\nFixes #17\n"
    },
    {
      "commit": "05266dc9685ccdaeea07051601ef2d5b229a7382",
      "tree": "f914d1f450f8d09e1daac3a8c91866a706c54607",
      "parents": [
        "597fdbe7861abe7ce93b0cd9d6553b4703632f49"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 21:38:16 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 21:38:16 2021"
      },
      "message": "allow custom encoders to handle nil pointers\n\nIf a custom encoder is defined on a pointer of a type, allow that\nencoder to handle nil values.  Encoders defined on non-pointer types\nwill continue to be given the zero value of the type to encode (the\nexisting behavior).\n\nFixes #46\n"
    },
    {
      "commit": "597fdbe7861abe7ce93b0cd9d6553b4703632f49",
      "tree": "ff208514f56687c54cd7833e497e330ddceaec16",
      "parents": [
        "cf94fa1ae4ce5dfe76cebc38400bccaaa6508222"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 21:22:18 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 21:22:18 2021"
      },
      "message": "add more tests for custom encoder implementations\n\nmany of these values are not actually what we want, but allows us to see\nthe change in behavior in a future change.\n\nRelated to #46\n"
    },
    {
      "commit": "cf94fa1ae4ce5dfe76cebc38400bccaaa6508222",
      "tree": "7f1f54a1fce903a60b638bd46e3770a99c04b9f4",
      "parents": [
        "9308ba2d8231e1524fcb51f35dd013912516d5e6"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:56:06 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:56:06 2021"
      },
      "message": "fix typo: delimiters\n"
    },
    {
      "commit": "9308ba2d8231e1524fcb51f35dd013912516d5e6",
      "tree": "daef0d4dbeba49cdccc2aa846b2c7e108c3bd1fe",
      "parents": [
        "faa69f46eca0a09bb9bbcfcf2c4fceed21953c06"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:54:55 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:54:55 2021"
      },
      "message": "fix whitespace in godoc\n"
    },
    {
      "commit": "faa69f46eca0a09bb9bbcfcf2c4fceed21953c06",
      "tree": "dd5db0fe21337c3bda3df3314c3b8a2428e63c8e",
      "parents": [
        "2c9db428f239fa49f8f98b7dfdf0c3a50394ecdb"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:53:27 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Feb 24 00:53:27 2021"
      },
      "message": "allow custom delimiter for slices and arrays\n\nFixes #32\n"
    },
    {
      "commit": "2c9db428f239fa49f8f98b7dfdf0c3a50394ecdb",
      "tree": "42138bf17a674fdd408b9f25bf20d7632df72461",
      "parents": [
        "55faf79c297ffe9e26d034acafd0c9f614ad9da9"
      ],
      "author": {
        "name": "Ed Anderson",
        "email": "ed.anderson@outreach.io",
        "time": "Tue Feb 02 00:21:51 2021"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Feb 23 23:39:00 2021"
      },
      "message": "Added support for unix nano and milliseconds\n\nfixes #44\n"
    },
    {
      "commit": "55faf79c297ffe9e26d034acafd0c9f614ad9da9",
      "tree": "61c5d6f52dd6fe64e070b95de41d557bdace0074",
      "parents": [
        "9905ddd405a53718d770d734d51b36a54e74bdd4"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 02:48:42 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 02:48:42 2020"
      },
      "message": "add alternatives to README\n\nalso remove license section from README, since the LICENSE file is\nalways authoritative\n"
    },
    {
      "commit": "9905ddd405a53718d770d734d51b36a54e74bdd4",
      "tree": "a545fbe5e82e9fce9f1a52c19f8d06db6b906c27",
      "parents": [
        "50c87b20ce05d5c5d4d995f2ef8d79d9c75b81ff"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 02:19:32 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 02:19:32 2020"
      },
      "message": "support empty value for any type with IsZero() method\n"
    },
    {
      "commit": "50c87b20ce05d5c5d4d995f2ef8d79d9c75b81ff",
      "tree": "b748fbc59b188e7dc9ec655eb42b8ff84b04dcb8",
      "parents": [
        "1d3f6751068bb752232fc8fbf4ad3467c84bc869"
      ],
      "author": {
        "name": "Peter Bouwdewijn",
        "email": "peter.bouwdewijn@gmail.com",
        "time": "Tue Oct 27 02:07:46 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 02:07:46 2020"
      },
      "message": "Fix encoding non-nil pointers by their by using their actual value (#42)\n\nAs described in issue #26 if we unwrap the value of the pointer prior to the slice/array logic this should work. It is placed under the omitempty check, since this would be backwards breaking."
    },
    {
      "commit": "1d3f6751068bb752232fc8fbf4ad3467c84bc869",
      "tree": "15414680814442cdde1efd241d6ec34f332b893f",
      "parents": [
        "04f87c93a06ffd78e334757377a4213cbc3f4c69"
      ],
      "author": {
        "name": "Karsten Gresch",
        "email": "karstengresch@users.noreply.github.com",
        "time": "Tue Oct 27 01:48:30 2020"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 01:48:30 2020"
      },
      "message": "Missing \u0027a\u0027 (#20)\n\n"
    },
    {
      "commit": "04f87c93a06ffd78e334757377a4213cbc3f4c69",
      "tree": "38114541ff756ad663a93ea8be3528f617c23588",
      "parents": [
        "afd52ea401b1b612ac2e8be6e8d187acc109b5ae"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 00:34:05 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Tue Oct 27 00:34:05 2020"
      },
      "message": "refactor remaining tests for readability\n"
    },
    {
      "commit": "afd52ea401b1b612ac2e8be6e8d187acc109b5ae",
      "tree": "55e05afeb29775ca1a84abc2d6544f88ccca6b1b",
      "parents": [
        "1edf4fbc6055531c4e29476ba3e344a0e48a7375"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 20:46:43 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 20:46:43 2020"
      },
      "message": "re-add test case for slices of pointer values\n"
    },
    {
      "commit": "1edf4fbc6055531c4e29476ba3e344a0e48a7375",
      "tree": "b69482d3028f8c95b0b4c17f34f4c60660077b17",
      "parents": [
        "e5b6f122d32fb2e7f9e3672c8991e636156d28bd"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 20:18:05 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 20:33:43 2020"
      },
      "message": "refactor tests to make them more readable\n\nthis splits TestValues_types into multiple test functions focused on\ndifferent types of values.  Also, instead of testing multiples types at\na time by having a single large struct with lots of different fields,\nthis switches to testing lots of small structs with a single field.\nThis does result in longer code in some cases (specifically slices and\narrays, which tend to span multiple lines), but it makes the individual\ncases much easier to read, since the input and expected output are\ndirectly next to each other.\n\nMore cleanup to come; this just focused on the TestValues_types func.\n"
    },
    {
      "commit": "e5b6f122d32fb2e7f9e3672c8991e636156d28bd",
      "tree": "d814ef83f6ba652d3439f933c66926236cb348da",
      "parents": [
        "e157c8a4db3220d6811c72887e692d8ac1c5793f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:24:04 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:24:04 2020"
      },
      "message": "run golangci-lint as GitHub Action\n"
    },
    {
      "commit": "e157c8a4db3220d6811c72887e692d8ac1c5793f",
      "tree": "f0ce4f2d29deded44cd672ab0891e4a56ac250f3",
      "parents": [
        "15305558fcc1a50f48ccac2c004cb1e03db58592"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:22:01 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:22:01 2020"
      },
      "message": "check error returned from reflectValue\n"
    },
    {
      "commit": "15305558fcc1a50f48ccac2c004cb1e03db58592",
      "tree": "e0eae3f0ad4826d1619468d196675396d647422f",
      "parents": [
        "fc903d29e12075805358adf678c9636f80c50e9f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:02:00 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 18:02:00 2020"
      },
      "message": "add isEmptyValue test for unknown type\n"
    },
    {
      "commit": "fc903d29e12075805358adf678c9636f80c50e9f",
      "tree": "f2b17362b182bddb0df4768fb654305148dbc7e4",
      "parents": [
        "286e09a3bdadbb8bf0c0a39a2e3a1fe840b9a6b0"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:55:34 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:55:34 2020"
      },
      "message": "add minimum version in go.mod file\n\ngo 1.10 is really just a guess.  We\u0027re not doing anything special in\nthis package, and we could probably support much earlier versions, but\nthis seems sufficient.\n"
    },
    {
      "commit": "286e09a3bdadbb8bf0c0a39a2e3a1fe840b9a6b0",
      "tree": "0701db9e5ef31d5cafd52a7e48bb965688024c41",
      "parents": [
        "a9f42ff32ed4b755ad27791ab6992d22518070f2"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:53:41 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:53:41 2020"
      },
      "message": "add tests for isEmptyValue\n"
    },
    {
      "commit": "a9f42ff32ed4b755ad27791ab6992d22518070f2",
      "tree": "934748ef579d8b444c2333aae4afdd132501a8c6",
      "parents": [
        "3a21a47a95db0636199455e5aec10ba62b30745e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:08:24 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:08:24 2020"
      },
      "message": "add test coverage badge\n"
    },
    {
      "commit": "3a21a47a95db0636199455e5aec10ba62b30745e",
      "tree": "3d994757f248211d9a609685607827a2be13ecd5",
      "parents": [
        "c8c88dbee036db4e4808d1f2ec8c2e15e11c3f80"
      ],
      "author": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:00:46 2020"
      },
      "committer": {
        "name": "Will Norris",
        "email": "wnorris@twitter.com",
        "time": "Mon Oct 26 17:00:46 2020"
      },
      "message": "switch from travis to GitHub Actions\n"
    },
    {
      "commit": "c8c88dbee036db4e4808d1f2ec8c2e15e11c3f80",
      "tree": "ae97b2ef70bac4645168bdc97a92f10300763789",
      "parents": [
        "13ff458984ea583806ab2c2c55cd8e7fd266f139"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:54:38 2019"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:54:38 2019"
      },
      "message": "travis: don\u0027t bother running on go master\n"
    },
    {
      "commit": "13ff458984ea583806ab2c2c55cd8e7fd266f139",
      "tree": "f7337a7f37458668fec8ebc263585917caf69802",
      "parents": [
        "023a8394f9e6d0d52733a810a4a0b3d3914faac3"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:47:22 2019"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:47:22 2019"
      },
      "message": "properly put .travis.yml in root directory\n"
    },
    {
      "commit": "023a8394f9e6d0d52733a810a4a0b3d3914faac3",
      "tree": "9b72944d8b56dd07d5c5190d292a937226d0e34e",
      "parents": [
        "9c8b890f5e8d502679c72711728cfebcf4a3cf4f"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:44:51 2019"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:44:51 2019"
      },
      "message": "readme: update badges\n\n- switch from drone to travis for CI\n- move badges inline under the title\n"
    },
    {
      "commit": "9c8b890f5e8d502679c72711728cfebcf4a3cf4f",
      "tree": "1c0270af73bbcea5c9dcf4f7ccd141d0949f4a52",
      "parents": [
        "992e8021cf787c100d55520d5c906e01536c0a19"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:43:30 2019"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:43:30 2019"
      },
      "message": "add minimal travis configuration\n"
    },
    {
      "commit": "992e8021cf787c100d55520d5c906e01536c0a19",
      "tree": "902e049622d8faa21d141b6f9fc2750aa3c8eadd",
      "parents": [
        "44c6ddd0a2342c386950e880b658017258da92fc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:40:10 2019"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Mar 18 16:40:10 2019"
      },
      "message": "use proper \u0027%v\u0027 format for logging structs\n"
    },
    {
      "commit": "44c6ddd0a2342c386950e880b658017258da92fc",
      "tree": "8119052e229f0583375c5ac7bf4fbbe702c8d062",
      "parents": [
        "53e6ce116135b80d037921a7fdd5138cf32d7a8a"
      ],
      "author": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Sun Sep 16 13:16:37 2018"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Sun Sep 16 13:16:37 2018"
      },
      "message": "add go.mod file to identify as a module\n"
    },
    {
      "commit": "53e6ce116135b80d037921a7fdd5138cf32d7a8a",
      "tree": "dbb22aa9b3ff7f1591038e29ed9fd4b2553908b1",
      "parents": [
        "9235644dd9e52eeae6fa48efd539fdc351a0af53"
      ],
      "author": {
        "name": "micanzhang",
        "email": "micanzhang@gmail.com",
        "time": "Wed Jan 11 10:11:55 2017"
      },
      "committer": {
        "name": "micanzhang",
        "email": "micanzhang@gmail.com",
        "time": "Wed Jan 11 10:11:55 2017"
      },
      "message": "fix pointer to time.Time\n"
    },
    {
      "commit": "9235644dd9e52eeae6fa48efd539fdc351a0af53",
      "tree": "2e7a9905aede186ced1b5271d522988866113ff6",
      "parents": [
        "6bb77fe6f42b85397288d4f6f67ac72f8f400ee7"
      ],
      "author": {
        "name": "Chris Marchesi",
        "email": "cmarchesi@paybyphone.com",
        "time": "Fri Mar 11 01:20:12 2016"
      },
      "committer": {
        "name": "Chris Marchesi",
        "email": "cmarchesi@paybyphone.com",
        "time": "Fri Apr 01 23:30:42 2016"
      },
      "message": "New array handling options (semicolon, numbered)\n\n * New \"semicolon\" option changes array delimiters to be semicolons.\n * New \"numbered\" option changes array output to be numbered, ie:\n   given a array-style type of \"var\", output will look like\n   name0\u003dvalue0\u0026name1\u003dvalue1, etc.\n"
    },
    {
      "commit": "6bb77fe6f42b85397288d4f6f67ac72f8f400ee7",
      "tree": "2d62408025a3e253065e69c612e8ff596c158c8b",
      "parents": [
        "4ef331387c8bca09bd05f9172ea301583a939546"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Thu Feb 18 00:51:18 2016"
      },
      "committer": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Thu Feb 18 00:51:18 2016"
      },
      "message": "Now checking if a field is not anonymous before\nskipping it when walking over values in an struct, to make sure that we\ndon\u0027t skip validly accessible (exported) embedded values in an\nunexported field.\n\nThis new checking logic is the new recommended strategy for reflective\nstruct walking as of the Go 1.6 release.\n\nRelated/References:\n\n- Go 1.6 reflect release note: https://golang.org/doc/go1.6#reflect\n- Issue: https://golang.org/issue/12367\n    (https://github.com/golang/go/issues/12367)\n- CL: https://golang.org/cl/14085\n    (https://go-review.googlesource.com/#/c/14085/)\n- Commit: https://github.com/golang/go/commit/afe9837b23f889c59144d90ce3ae87d32aee59fe\n"
    },
    {
      "commit": "4ef331387c8bca09bd05f9172ea301583a939546",
      "tree": "28aca184211b97344406413e8a6ad8744bad9172",
      "parents": [
        "2a60fc2ba6c19de80291203597d752e9ba58e4c0"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Thu Feb 18 00:50:36 2016"
      },
      "committer": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Thu Feb 18 00:50:36 2016"
      },
      "message": "Updating tests for the expected behavior\n"
    },
    {
      "commit": "2a60fc2ba6c19de80291203597d752e9ba58e4c0",
      "tree": "0d6446cc6698e0b8d0213016471e01f8117cf2e3",
      "parents": [
        "547ef5ac979778feb2f760cdb5f4eae1a2207b86"
      ],
      "author": {
        "name": "Trevor Suarez",
        "email": "rican7@gmail.com",
        "time": "Wed Oct 28 18:53:53 2015"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Wed Oct 28 21:10:38 2015"
      },
      "message": "Fix invalid call to value method with nil pointer\n\nNow checking if a reflected value is invalid and, if so, making sure to\ninitialize the reflected value with the type\u0027s expected zero-value\nbefore attempting to call the interface method.\n\nThis prevents panics due to invocation through reflection, such as:\n\"value method query.EncodedArgs.EncodeValues called using nil\n*EncodedArgs pointer\"\n\nFixes #9\n"
    },
    {
      "commit": "547ef5ac979778feb2f760cdb5f4eae1a2207b86",
      "tree": "bfd79ead1253e67c38f4198ff63619ce1fad6c81",
      "parents": [
        "d8840cbb2baa915f4836edda4750050a2c0b7aea"
      ],
      "author": {
        "name": "Ernesto Jiménez",
        "email": "me@ernesto-jimenez.com",
        "time": "Sun Nov 09 01:42:17 2014"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Apr 14 21:48:48 2015"
      },
      "message": "Better support for array and struct serialization\n\nThis patch allows better encoding of nested structs and arrays to follow\n[conventions followed by frameworks like Rails][1] when parsing query\nstrings such as ```ids[]\u003d1\u0026ids[]\u003d2\u0026ids[]\u003d3``` for arrays and\n```user[name]\u003dacme\u0026user[addr][postcode]\u003d1234\u0026user[addr][city]\u003dSFO``` for\nhashes.\n\nChanges:\n\n * Encode nested attributes: ```Parameter.Nested.Value \u003d \"str\"``` would\n be encoded as ```parameter[nested][value]\u003dstr```\n * New ```brackets``` tag option for arrays so that in stead of encoding\n an array as ```a\u003done\u0026a\u003dtwo``` it\u0027s encoded as ```a[]\u003done\u0026a[]\u003dtwo```\n which are read\n\n[1]: http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters\n"
    },
    {
      "commit": "d8840cbb2baa915f4836edda4750050a2c0b7aea",
      "tree": "768748f5a21681dcec564eabf66ae1a1bc61f1fd",
      "parents": [
        "30f7a39f4a218feb5325f3aebc60c32a572a8274"
      ],
      "author": {
        "name": "Dave Johnston",
        "email": "johnsto@gmail.com",
        "time": "Sat Sep 06 08:41:35 2014"
      },
      "committer": {
        "name": "Dave Johnston",
        "email": "johnsto@gmail.com",
        "time": "Sat Sep 06 08:41:35 2014"
      },
      "message": "Add parameter key to EncodeValues\n"
    },
    {
      "commit": "30f7a39f4a218feb5325f3aebc60c32a572a8274",
      "tree": "5653964f3694bb8f16cc128456d2eb65513f7c34",
      "parents": [
        "ec0a78e0f4db229b7897be36596a8944230b857a"
      ],
      "author": {
        "name": "Dave Johnston",
        "email": "dave@fireteam.net",
        "time": "Mon Aug 04 06:26:24 2014"
      },
      "committer": {
        "name": "Dave Johnston",
        "email": "dave@fireteam.net",
        "time": "Mon Aug 04 06:26:24 2014"
      },
      "message": "Add `Encoder` type for custom encoding of values\n"
    },
    {
      "commit": "ec0a78e0f4db229b7897be36596a8944230b857a",
      "tree": "c6d474d7fdde54e5faf0e1fce40f9b6cbc798b57",
      "parents": [
        "b61dfd1700df87f7d4f354561847b87e52335aa6"
      ],
      "author": {
        "name": "Quinn Slack",
        "email": "sqs@sourcegraph.com",
        "time": "Sat Sep 14 07:35:20 2013"
      },
      "committer": {
        "name": "Quinn Slack",
        "email": "sqs@sourcegraph.com",
        "time": "Sat Sep 14 07:35:20 2013"
      },
      "message": "Fix reference: Values, not Value"
    },
    {
      "commit": "b61dfd1700df87f7d4f354561847b87e52335aa6",
      "tree": "bcae2dcea78885384a8784863c77c3ea8ce2a2ef",
      "parents": [
        "9f402b68fdca9e2782f8a3dff38f1aa9445e3c02"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 21:48:01 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 21:48:01 2013"
      },
      "message": "fill out README a bit more\n"
    },
    {
      "commit": "9f402b68fdca9e2782f8a3dff38f1aa9445e3c02",
      "tree": "a0b010c0cc6c94bf56c1e51a062520f21f7fa233",
      "parents": [
        "30fd897b5dcf3d50ee4d340370320a55805615f5"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 19:56:53 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 19:56:53 2013"
      },
      "message": "add README and CONTRIBUTING files\n"
    },
    {
      "commit": "30fd897b5dcf3d50ee4d340370320a55805615f5",
      "tree": "cc046b7abd60e49a5a419945168facd08142bdcb",
      "parents": [
        "3839cefd31ec8ce997d898d33aa29aa395d8495c"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 19:25:06 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 19:25:06 2013"
      },
      "message": "various code cleanup\n\n- change single case switch statements to if\n- no need for pointer to url.Values since it has a pointer internally\n- document that reflectValue updates url.Values and recurses through val\n"
    },
    {
      "commit": "3839cefd31ec8ce997d898d33aa29aa395d8495c",
      "tree": "41ca2f11e26ed402fd2d1355e3de0a14532b0e06",
      "parents": [
        "c6dce2f795e1b0b43079ef35afeefb155d7c22e7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 19:23:21 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 19:23:21 2013"
      },
      "message": "support dereferencing pointers to pointers\n\nalso update docs to clarify how empty values are handled\n"
    },
    {
      "commit": "c6dce2f795e1b0b43079ef35afeefb155d7c22e7",
      "tree": "07441ef037f06a6a74eb955ff506413baf68ef2d",
      "parents": [
        "066ac02329c3d517f760d4f01364e4e3f0d3994e"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Tue Sep 10 19:18:26 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Tue Sep 10 19:18:26 2013"
      },
      "message": "combine tags.go into encode.go and simplify\n\nhaving tagOptions be of type []string *greatly* simplifies working with\noptions.\n"
    },
    {
      "commit": "066ac02329c3d517f760d4f01364e4e3f0d3994e",
      "tree": "dd0a418ab9ea7f2a598e1378ceb18358134164ed",
      "parents": [
        "d45ccfe3ece3def48ecb9c6af2a8e165734f3318"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 21:29:32 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 21:29:32 2013"
      },
      "message": "fix imports and cleanup code handling pointers\n"
    },
    {
      "commit": "d45ccfe3ece3def48ecb9c6af2a8e165734f3318",
      "tree": "03569b23b661fd2138c19babebf23f980c166b99",
      "parents": [
        "ab27bc2c541fddbad0a4058eb1ab6d955c594609"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 18:36:53 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 18:36:53 2013"
      },
      "message": "improve handling of slice values\n\nensure that any type-specific encoding logic is applied for each value\nin a slice or array.\n"
    },
    {
      "commit": "ab27bc2c541fddbad0a4058eb1ab6d955c594609",
      "tree": "7ec2b2fe6e98305cd5311bc4b2bc44075321a86a",
      "parents": [
        "e8fedec7a51f1e254463f577e06340811d4d80bc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 18:04:03 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 18:04:03 2013"
      },
      "message": "add LICENSE (BSD)\n"
    },
    {
      "commit": "e8fedec7a51f1e254463f577e06340811d4d80bc",
      "tree": "81c908142bc3db390ca00a0a356d5dabea399eb0",
      "parents": [
        "0d72f004f7b312d6fa5f857577f660a6d95e5dd6"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Mon Sep 09 16:32:17 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Mon Sep 09 16:32:17 2013"
      },
      "message": "handle struct pointers passed to Values()\n"
    },
    {
      "commit": "0d72f004f7b312d6fa5f857577f660a6d95e5dd6",
      "tree": "b6cd602f1e324d8562a2f6191de6dd7b9ce1a19c",
      "parents": [
        "5428a56ee140ca79b090d5c72cf7e00b36be8433"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 23:23:17 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 23:29:33 2013"
      },
      "message": "add user documentation\n"
    },
    {
      "commit": "5428a56ee140ca79b090d5c72cf7e00b36be8433",
      "tree": "99dba60d9289168b32c465754e53eebbb888e588",
      "parents": [
        "d167cbdb648290070db39d65171e51f6129f1543"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 23:11:16 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 23:11:16 2013"
      },
      "message": "add support for anonymous struct fields\n\nthese fields are encoded as if their inner exported fields were fields\non the outer struct, the same as encoding/json\n"
    },
    {
      "commit": "d167cbdb648290070db39d65171e51f6129f1543",
      "tree": "ed3f548f07e70e471b9d01e542f3c7dd7ae95c5d",
      "parents": [
        "f5a9f37dd064bfcd0eca8e7d3dcb05194f462d13"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 22:06:52 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 22:06:52 2013"
      },
      "message": "allow encoding bool values as int\n\nincluding the \"int\" field tag on a bool field will encode the value as\neither \"1\" or \"0\".\n"
    },
    {
      "commit": "f5a9f37dd064bfcd0eca8e7d3dcb05194f462d13",
      "tree": "b3762b9f364f1c2a70cbb64d9c1a77e30aad96b3",
      "parents": [
        "c51ad0c35621b0ede069181f424bd1f3492ed4cb"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 22:01:18 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 22:01:18 2013"
      },
      "message": "restructure tests a little more\n\nbreak type tests down to be table driven, so errors are a little easier\nto decipher\n"
    },
    {
      "commit": "c51ad0c35621b0ede069181f424bd1f3492ed4cb",
      "tree": "f2235c4a6896ef08488fa1bcda2fb7f9f1c98207",
      "parents": [
        "30a774e1fdde7442573b3fe43d56cab502b62ea1"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 20:19:58 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 20:22:26 2013"
      },
      "message": "support command and space delimited strings\n\nusing the \"comma\" and \"space\" field tag options, slices or arrays will\nbe marshaled as comma or space delimited strings.\n"
    },
    {
      "commit": "30a774e1fdde7442573b3fe43d56cab502b62ea1",
      "tree": "89b50cac2004bc1509e27ce0029f3d8ed4dfc93c",
      "parents": [
        "65fbecd2aff2a690d1aa24d30a97cc0ee2222ddc"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 20:01:30 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 20:01:30 2013"
      },
      "message": "add support for time.Time field values\n\nTime values are serialized as RFC3339 timestamps by default.  If the\n\"unix\" field tag is specified, it is serialized as a Unix time (see\ntime.Unix())\n"
    },
    {
      "commit": "65fbecd2aff2a690d1aa24d30a97cc0ee2222ddc",
      "tree": "44d85490d03d9a20a5ce9543adb65a5e7a1d3878",
      "parents": [
        "afb9774134160dd91338c394b41ab166ce394d71"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 19:39:30 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 19:42:33 2013"
      },
      "message": "add support for slice and array field values\n"
    },
    {
      "commit": "afb9774134160dd91338c394b41ab166ce394d71",
      "tree": "f2617723371b6fcc117cf9dcba2281ca62de53dc",
      "parents": [
        "fd7548d9aff4ab344996832506956cb2a232e182"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 19:17:52 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 19:26:28 2013"
      },
      "message": "dereference non-empty pointer field values\n"
    },
    {
      "commit": "fd7548d9aff4ab344996832506956cb2a232e182",
      "tree": "91ca2a5b70b97bf31c7b8815ad025e16296c03f8",
      "parents": [
        "954984c738cb6e6143dd320c195ec5a57ba8a73b"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 19:07:34 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 19:07:34 2013"
      },
      "message": "skip unexported fields\n"
    },
    {
      "commit": "954984c738cb6e6143dd320c195ec5a57ba8a73b",
      "tree": "57bb03b4956eb55b9daccd7be9bcc6cc37334c1f",
      "parents": [
        "f7d31fdc2e3f198a9a14b72ab2538cc828b68be9"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 19:04:59 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 19:04:59 2013"
      },
      "message": "restructure tests\n\nsplit tests for field types and field tags\n"
    },
    {
      "commit": "f7d31fdc2e3f198a9a14b72ab2538cc828b68be9",
      "tree": "90a53b95a2332b51e2364b682b8634e3ec0fbe11",
      "parents": [
        "bd775fd84bd63a4ae99794a9212bf1dfcfc30229"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 18:09:43 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 18:15:46 2013"
      },
      "message": "skip empty fields with the \"omitempty\" tag field\n\nisEmptyValue() copied from encoding/json\n"
    },
    {
      "commit": "bd775fd84bd63a4ae99794a9212bf1dfcfc30229",
      "tree": "3eff72f228bc6b047c9cbde8aae3d82ba6a2ec1f",
      "parents": [
        "0c2ced0ea7f1424699f70ba717c90beb11da33a7"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 18:01:08 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 18:01:08 2013"
      },
      "message": "skip fields with tag name \"-\"\n"
    },
    {
      "commit": "0c2ced0ea7f1424699f70ba717c90beb11da33a7",
      "tree": "5888d9c13d26ad22ae73b411006c932efab232ea",
      "parents": [
        "5afcd79de991628109c4718fc4cd92a16cd5cd02"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 17:42:06 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 17:46:23 2013"
      },
      "message": "add support structured tag fields\n\ntags.go is copied from encoding/json in the go standard library.  We\u0027re\nnot doing anything with the field options yet, just parsing them out.\n"
    },
    {
      "commit": "5afcd79de991628109c4718fc4cd92a16cd5cd02",
      "tree": "d0f9622dbe1375c01a49ffe2b45f18ae012f684b",
      "parents": [
        "19ef3dcdd4fb1439a0c07fa3305e713183932b1b"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 17:34:36 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 17:46:23 2013"
      },
      "message": "allow specifying param name in \"url\" field tag\n"
    },
    {
      "commit": "19ef3dcdd4fb1439a0c07fa3305e713183932b1b",
      "tree": "1ef76e452c54dc7c80e60478dd1c2903171ea08a",
      "parents": [
        "e376fe87b0445e8aed18ac3e78b7ac59b7358754"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 17:30:05 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 17:46:23 2013"
      },
      "message": "initial naive implementation\n\nconvert struct fields to url.Values just using field names\n"
    },
    {
      "commit": "e376fe87b0445e8aed18ac3e78b7ac59b7358754",
      "tree": "e36fab067f14c35cf7a65a037908fc0ef43cf1ab",
      "parents": [
        "9bc6eb0b9e0abc498b995ded009d7f6848f1e0db"
      ],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 17:19:46 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 17:19:46 2013"
      },
      "message": "ignore *.test files\n"
    },
    {
      "commit": "9bc6eb0b9e0abc498b995ded009d7f6848f1e0db",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [],
      "author": {
        "name": "Will Norris",
        "email": "willnorris@google.com",
        "time": "Fri Sep 06 17:10:01 2013"
      },
      "committer": {
        "name": "Will Norris",
        "email": "will@willnorris.com",
        "time": "Fri Sep 06 17:10:01 2013"
      },
      "message": "initial empty commit\n"
    }
  ]
}
