)]}'
{
  "log": [
    {
      "commit": "3dcb47ebc77639fb0458b4ffdc8ba334107236e2",
      "tree": "c4edd27433791a8b4ceb286bbf5a8c914150d978",
      "parents": [
        "fc26a104a7a0a30f36d4bd6eca2e423deb8afbca",
        "3b72e6a2d42a44b48fb1db36d20fa5a8c1126850"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:56:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:56:16 2026"
      },
      "message": "Merge pull request #689 from christhomas/example-tls\n\n[v1] add examples of SFTP over TLS without SSH"
    },
    {
      "commit": "fc26a104a7a0a30f36d4bd6eca2e423deb8afbca",
      "tree": "6f3aebb6c410c3a9acc23d270af6c574bc4e927e",
      "parents": [
        "a76f552afc262412f6048ac29d95a63510685ef3",
        "9a410c8b56315387e899eaf1a12c45abe25c9437"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:49:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:49:05 2026"
      },
      "message": "Merge pull request #671 from christhomas/fix-newclient-session-leak\n\nclose session when NewClient fails"
    },
    {
      "commit": "a76f552afc262412f6048ac29d95a63510685ef3",
      "tree": "0382e620fbd03ac43e21cb54dbd06788223b15cf",
      "parents": [
        "337c2c6d87be57c20ae8fe688487b4c45d3346b1",
        "5d630230ffcaf3c7b4950c733b5e8920627c6d91"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:45:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:45:47 2026"
      },
      "message": "Merge pull request #702 from omrzk/fix/server-relative-symlink-701\n\nPreserve relative server symlink targets with a working directory"
    },
    {
      "commit": "337c2c6d87be57c20ae8fe688487b4c45d3346b1",
      "tree": "989c8c70cbb89f4ca95853d8059c7fa0dad8bfd0",
      "parents": [
        "8583321203238602f160d88ded6f46e57a82582a",
        "0424ea86279a6f59d2f8089e4b0fdef304955cea"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:43:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:43:22 2026"
      },
      "message": "Merge pull request #680 from christhomas/datatracker-links\n\n[v1] link to the drafts on datatracker again"
    },
    {
      "commit": "8583321203238602f160d88ded6f46e57a82582a",
      "tree": "c7ab8e0128f69035a7144632184b28525e9226a1",
      "parents": [
        "59f7936df9330cc2dd0174565d9e4421a9124bcd",
        "b4992ad3b17d2b22399abe4ba70d134fec2fa274"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:36:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:36:09 2026"
      },
      "message": "Merge pull request #675 from christhomas/fix-open-attr-flags\n\nuse the attribute flags for the attributes of an open request"
    },
    {
      "commit": "59f7936df9330cc2dd0174565d9e4421a9124bcd",
      "tree": "ce048d7f74dc3b6eb9d671de27221f7d0aba1e77",
      "parents": [
        "c85d352053d88c9c5b880100a029522d6f30bfd0",
        "1e574844246ce51419aebbe9d88884e7bbaca4f5"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Nov 05 13:33:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 13:33:59 2026"
      },
      "message": "Merge pull request #672 from christhomas/fix-duplicate-handle\n\nreturn an error when the server reuses an open handle"
    },
    {
      "commit": "c85d352053d88c9c5b880100a029522d6f30bfd0",
      "tree": "ab2eb0627381fa047b8c7cff434c05ec828c6baa",
      "parents": [
        "915d66ccbe3ec5fafa6250b466d45accff1b56e7",
        "d822ca6cf6e81d09ab4190f88b278b67642ed3aa"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Nov 04 11:21:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 04 11:21:27 2026"
      },
      "message": "Merge pull request #690 from christhomas/example-reconnect\n\n[v1] add an example of a client that reconnects"
    },
    {
      "commit": "915d66ccbe3ec5fafa6250b466d45accff1b56e7",
      "tree": "6f0bf69dd05c670c71bb2fa60eecedb30361a0ca",
      "parents": [
        "519dbfab5976c6d2a71b67ab9b567e2b816c2ac6",
        "0dcc3be3e14f371087e343803cb196d45a5abaa3"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Sat Oct 31 19:05:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 31 19:05:20 2026"
      },
      "message": "Merge pull request #704 from likitha011/rename-no-overwrite\n\nserver: do not let SSH_FXP_RENAME replace an existing file"
    },
    {
      "commit": "0dcc3be3e14f371087e343803cb196d45a5abaa3",
      "tree": "6f0bf69dd05c670c71bb2fa60eecedb30361a0ca",
      "parents": [
        "519dbfab5976c6d2a71b67ab9b567e2b816c2ac6"
      ],
      "author": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Tue Oct 27 02:37:55 2026"
      },
      "committer": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Thu Oct 29 18:11:57 2026"
      },
      "message": "server: do not let SSH_FXP_RENAME replace an existing file\n\nThe os-backed Server handled SSH_FXP_RENAME with a bare os.Rename, which\nreplaces newpath when it already exists. The SFTP v3 draft makes that an\nerror, OpenSSH\u0027s sftp-server refuses it with SSH_FX_FAILURE, and the\nrequest server\u0027s InMemHandler already enforces it, so a client relying on\nRENAME to never clobber (upload to a temporary name and rename into\nplace, or rename as a lock between two writers) silently lost the\nexisting file against this server.\n\nRefuse the request when newpath exists. posix-rename@openssh.com keeps\nits overwriting behaviour.\n"
    },
    {
      "commit": "519dbfab5976c6d2a71b67ab9b567e2b816c2ac6",
      "tree": "e15d0e01fcae736310c2d7e7ffca80cc25302c9f",
      "parents": [
        "4b4c6a4385536ad091ae3f8d756261b35f0f860f",
        "07fbb7b2d82dcf62d1c10a222de801640199025a"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Oct 26 14:15:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 14:15:38 2026"
      },
      "message": "Merge pull request #665 from hoobnn/fix/glob-literal-paths\n\nfix: preserve literal paths in Glob"
    },
    {
      "commit": "5d630230ffcaf3c7b4950c733b5e8920627c6d91",
      "tree": "9f03acbcd83629e6c7efbf77e702d9e4c2478ae4",
      "parents": [
        "61642ad5df35530753c6e5f7e9723c2854d9adae"
      ],
      "author": {
        "name": "omrzk",
        "email": "193513049+omrzk@users.noreply.github.com",
        "time": "Mon Oct 26 14:08:08 2026"
      },
      "committer": {
        "name": "omrzk",
        "email": "193513049+omrzk@users.noreply.github.com",
        "time": "Mon Oct 26 14:08:16 2026"
      },
      "message": "Separate native target conversion and check complete symlink contents\n"
    },
    {
      "commit": "07fbb7b2d82dcf62d1c10a222de801640199025a",
      "tree": "e15d0e01fcae736310c2d7e7ffca80cc25302c9f",
      "parents": [
        "a30b8fb824e8add9fc85b9abe1232c4343585991"
      ],
      "author": {
        "name": "hoobnn",
        "email": "111053672+hoobnn@users.noreply.github.com",
        "time": "Mon Oct 26 13:39:07 2026"
      },
      "committer": {
        "name": "hoobnn",
        "email": "111053672+hoobnn@users.noreply.github.com",
        "time": "Mon Oct 26 13:39:07 2026"
      },
      "message": "test: check Glob no-match result with assert.Empty\n\nAssisted-by: Claude:claude-opus-5-5\n"
    },
    {
      "commit": "a30b8fb824e8add9fc85b9abe1232c4343585991",
      "tree": "028c4042557f1700c6391f3b6c88cba6f4aadf7c",
      "parents": [
        "4b4c6a4385536ad091ae3f8d756261b35f0f860f"
      ],
      "author": {
        "name": "hoobnn",
        "email": "111053672+hoobnn@users.noreply.github.com",
        "time": "Sat Oct 03 06:17:04 2026"
      },
      "committer": {
        "name": "hoobnn",
        "email": "111053672+hoobnn@users.noreply.github.com",
        "time": "Sun Oct 25 14:44:22 2026"
      },
      "message": "fix: preserve literal paths in Glob\n\nAssisted-by: Codex:gpt-6.1-sol\nAssisted-by: Claude:claude-opus-5-5\n"
    },
    {
      "commit": "61642ad5df35530753c6e5f7e9723c2854d9adae",
      "tree": "3d62ac8aff244e359f91ce5962326b304af0fd1d",
      "parents": [
        "4b4c6a4385536ad091ae3f8d756261b35f0f860f"
      ],
      "author": {
        "name": "omrzk",
        "email": "193513049+omrzk@users.noreply.github.com",
        "time": "Sun Oct 25 03:49:06 2026"
      },
      "committer": {
        "name": "omrzk",
        "email": "193513049+omrzk@users.noreply.github.com",
        "time": "Sun Oct 25 03:49:06 2026"
      },
      "message": "Preserve relative server symlink targets with a working directory\n"
    },
    {
      "commit": "d822ca6cf6e81d09ab4190f88b278b67642ed3aa",
      "tree": "b4384793d1416b2fac9de6a73098df79be1ef921",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 11:23:55 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Fri Oct 23 15:36:14 2026"
      },
      "message": "Add an example of a client that reconnects\n\nConnect only when a client is needed and validate cached sessions with\nRealPath before returning them. Discard failed sessions and reconnect even\nwhen the disconnect notification is still pending.\n\nUse Client.Wait to close the SSH transport after the SFTP session ends,\nand publish the disconnect notification before logging. Cover live-session\nreuse and both pending and delivered disconnect notifications with tests.\n\nUpdates #144.\n"
    },
    {
      "commit": "1e574844246ce51419aebbe9d88884e7bbaca4f5",
      "tree": "158cd9dc2e9d48e485f2bb52d6b1a1f0645dc718",
      "parents": [
        "4b4c6a4385536ad091ae3f8d756261b35f0f860f"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Fri Oct 23 15:28:27 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Fri Oct 23 15:28:27 2026"
      },
      "message": "Detect duplicate handles and support single-file clients\n\nTrack open file and directory handles and fail the connection when the\nserver returns a handle that is already in use. Preserve the failure cause\nfor pending and subsequent operations.\n\nAdd ForceSingleFile to reject a second open immediately without serializing\nreads or writes. Release the reservation after every close attempt and\nretain connection-lost errors wrapping EOF during ReadFrom.\n\nCover duplicate handles, single-file reservations, and connection loss\nduring full and short writes with regression tests.\n\nUpdates #424.\n"
    },
    {
      "commit": "4b4c6a4385536ad091ae3f8d756261b35f0f860f",
      "tree": "f330848a5800162c29d39fc9bef5ab17057d6835",
      "parents": [
        "4778ed9f1d2cb34ae53c9c88576092d2699d17cf",
        "efa1d9bd335ad9dc4aea03ae5a63a8089facaf59"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Fri Oct 23 12:45:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 12:45:14 2026"
      },
      "message": "Merge commit from fork\n\nRemoveAll: do not follow a symlink at the given path"
    },
    {
      "commit": "b4992ad3b17d2b22399abe4ba70d134fec2fa274",
      "tree": "a4da5df021adc64f5d209229c4274eec34bcf17f",
      "parents": [
        "9a5ce852258dcf6fbacff5aacb10cc152f552cb9"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Tue Oct 20 11:10:20 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Tue Oct 20 11:10:20 2026"
      },
      "message": "test: simplify open attribute handler"
    },
    {
      "commit": "9a5ce852258dcf6fbacff5aacb10cc152f552cb9",
      "tree": "e3e79a9a8e3772332ab545d9ea2ca6a8cd92fba8",
      "parents": [
        "22c1629b1e1376e9bf128beb0b4f2237b6510d8a"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 21:50:45 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 21:50:45 2026"
      },
      "message": "fix: preserve fsetstat attribute flags"
    },
    {
      "commit": "22c1629b1e1376e9bf128beb0b4f2237b6510d8a",
      "tree": "906b8842e34780ff6706228fc0b6b7b577f33738",
      "parents": [
        "5fffd22459c303ee077f66cfd9495722b74ba9ac"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 21:44:07 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 21:44:07 2026"
      },
      "message": "test: isolate open attribute handler"
    },
    {
      "commit": "4778ed9f1d2cb34ae53c9c88576092d2699d17cf",
      "tree": "c571bdaff2b7fc0708e52b5247a92a5f9a583963",
      "parents": [
        "6cc52099be2bf147b44844b55adbff6df57ea8b8",
        "757ab9ed5201f9c4ec6a57a27f9e13aa95430e5d"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Oct 19 17:45:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:45:02 2026"
      },
      "message": "Merge pull request #686 from christhomas/example-exit-status\n\n[v1] send exit-status from the example servers"
    },
    {
      "commit": "3b72e6a2d42a44b48fb1db36d20fa5a8c1126850",
      "tree": "e81370fcecf673e56b4eabff645a2cc4d5fda066",
      "parents": [
        "e0a2b2ea58d26661fabc0246685c3d20e08be268"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 16:57:39 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 16:57:39 2026"
      },
      "message": "Use valid Go example names"
    },
    {
      "commit": "6cc52099be2bf147b44844b55adbff6df57ea8b8",
      "tree": "0d1192fb3a9cf5a226bcf505dcb9a2c73fc2809b",
      "parents": [
        "5771a0def111f6fb3e9afb651d26d407822ffec0",
        "28b6c4351ea3f17e8eba09d6c62031a28cd7673a"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Oct 19 16:44:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:44:49 2026"
      },
      "message": "Merge pull request #674 from christhomas/fix-readfrom-source-error\n\nreturn the reader\u0027s io.ErrUnexpectedEOF from File.ReadFrom"
    },
    {
      "commit": "e0a2b2ea58d26661fabc0246685c3d20e08be268",
      "tree": "87bc46d751e8a476179a7801349209d6a1cc93dc",
      "parents": [
        "98b65047f81f8fb80b46bfafeff8676f28a6e0c2"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:57:11 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:57:11 2026"
      },
      "message": "Fix TLS example names and connection cleanup"
    },
    {
      "commit": "5fffd22459c303ee077f66cfd9495722b74ba9ac",
      "tree": "d5ad52c1fd1e0161d1339205f84c7a4bd4c7e1fa",
      "parents": [
        "d4d026d82bd9473a84aaeb7540863dbefe069cf6"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:42:37 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:42:37 2026"
      },
      "message": "Use attribute flags directly in request helpers"
    },
    {
      "commit": "d4d026d82bd9473a84aaeb7540863dbefe069cf6",
      "tree": "d655ca93392d5f5e9c377551324267cb53af8dc7",
      "parents": [
        "60a349140b9885524e1107f29a72f73b934a02ec"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:42:33 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:42:33 2026"
      },
      "message": "Use request attribute flags for all attribute payloads"
    },
    {
      "commit": "28b6c4351ea3f17e8eba09d6c62031a28cd7673a",
      "tree": "9b71ad8cd774b5c896766ba27ab2fc919c52e76d",
      "parents": [
        "e5604b2e3bc6938243d4b25abd18f88dddd9b768"
      ],
      "author": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:37:10 2026"
      },
      "committer": {
        "name": "Christopher Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Mon Oct 19 15:37:10 2026"
      },
      "message": "Wrap readFull comment at semantic line breaks"
    },
    {
      "commit": "5771a0def111f6fb3e9afb651d26d407822ffec0",
      "tree": "77f3dd7afb442b7c8a50f376c9cb16b8ee59ad77",
      "parents": [
        "de6aa9855b7493a0482302974ed22214d340e89d",
        "5c81370259274e926116c03b2878a21e59fecfc7"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Oct 19 14:07:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 14:07:33 2026"
      },
      "message": "Merge pull request #694 from likitha011/server-drop-malformed-packets\n\nserver: do not dispatch packets that failed to unmarshal"
    },
    {
      "commit": "de6aa9855b7493a0482302974ed22214d340e89d",
      "tree": "3e80f03bde1ee0df2c0a9ce8806303f5a0a0f3ce",
      "parents": [
        "f79a590cd18398e956ccf15e089cecc6b987d195",
        "9336ec59390ea28b9fc6a42a9818aa4a35eb8945"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Oct 19 13:19:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:19:08 2026"
      },
      "message": "Merge pull request #682 from likitha011/readonly-hardlink-creat-trunc\n\nreject hardlink and create/truncate opens on a read-only server"
    },
    {
      "commit": "9336ec59390ea28b9fc6a42a9818aa4a35eb8945",
      "tree": "3e80f03bde1ee0df2c0a9ce8806303f5a0a0f3ce",
      "parents": [
        "f79a590cd18398e956ccf15e089cecc6b987d195"
      ],
      "author": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Fri Oct 16 16:30:04 2026"
      },
      "committer": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Mon Oct 19 08:35:10 2026"
      },
      "message": "reject hardlink and create/truncate opens on a read-only server\n\nThe ReadOnly() server option relies on readonly() to classify requests.\nhardlink@openssh.com reported itself as read-only, and an OPEN was\nconsidered read-only whenever SSH_FXF_WRITE was absent, so a client of a\nread-only server could create hard links, create new files with\nSSH_FXF_READ|SSH_FXF_CREAT, and truncate existing files to zero bytes\nwith SSH_FXF_READ|SSH_FXF_TRUNC.\n\nTreat hardlink as a write operation and SSH_FXF_CREAT/SSH_FXF_TRUNC as\nrequiring write access.\n"
    },
    {
      "commit": "efa1d9bd335ad9dc4aea03ae5a63a8089facaf59",
      "tree": "54d1343a8d78f693b1cf151af75aa0ccac56c32c",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sun Oct 18 11:49:46 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sun Oct 18 11:49:46 2026"
      },
      "message": "RemoveAll: do not follow a symlink at the given path\n"
    },
    {
      "commit": "f79a590cd18398e956ccf15e089cecc6b987d195",
      "tree": "e28a072af8674c576addc09bd391a341aa83ff2e",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471",
        "8634d511639bad36f5201fc5546217f14d77ef30"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Sun Oct 18 10:31:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 10:31:02 2026"
      },
      "message": "Merge pull request #670 from christhomas/fix-readfrom-final-chunk-error\n\nreturn write error for short final chunk in File.ReadFrom"
    },
    {
      "commit": "5c81370259274e926116c03b2878a21e59fecfc7",
      "tree": "f6c292cfba839f0ebca5179c9da86fc2f5aaaa1f",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Sun Oct 18 07:26:56 2026"
      },
      "committer": {
        "name": "likitha naik",
        "email": "likitha@medios.digiscrypt.com",
        "time": "Sun Oct 18 08:43:00 2026"
      },
      "message": "server: do not dispatch packets that failed to unmarshal\n\nWhen makePacket fails with anything other than an unknown extended\nrequest, Serve closes the connection and then uses a bare break, which\nonly leaves the switch. The partially decoded packet is still queued\nand executed by a worker with its missing fields left at their zero\nvalues, so a truncated SSH_FXP_MKDIR still creates the directory and a\nrename/symlink/link whose second path is cut off runs against \"\" (the\nworking directory when one is configured).\n\nBreak out of the receive loop instead, as RequestServer already does,\nso the malformed packet is dropped and Serve returns the decode error.\n"
    },
    {
      "commit": "98b65047f81f8fb80b46bfafeff8676f28a6e0c2",
      "tree": "766c8c70ccec448baeaed8f95366f4819a6fd7d7",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 11:22:29 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 11:22:29 2026"
      },
      "message": "add examples of SFTP over TLS without SSH\n\nThe NewClientPipe docs say it can be used over TCP/TLS, but the only\nexample runs the ssh command. Add a client and a server example using\ncrypto/tls with client certificates, since SFTP has no authentication\nof its own, and point out that NewServer exposes the local filesystem.\n"
    },
    {
      "commit": "757ab9ed5201f9c4ec6a57a27f9e13aa95430e5d",
      "tree": "dad905726651d8efe387f6eb3d5130b6fa5e56da",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 11:15:57 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 11:15:57 2026"
      },
      "message": "send exit-status from the example servers\n\nThe SFTP subsystem\u0027s exit status is sent by whoever owns the SSH\nchannel, since Server and RequestServer only see an io.ReadWriteCloser.\nThe example servers never sent it, and some clients (restic, for\nexample) wait for it before they consider the session finished. Send\nit after Serve returns, the same way the server integration tests\nalready do.\n"
    },
    {
      "commit": "e5604b2e3bc6938243d4b25abd18f88dddd9b768",
      "tree": "32d2ec9534d02b619acc978cc3eec191a5b014ec",
      "parents": [
        "8634d511639bad36f5201fc5546217f14d77ef30"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Thu Oct 15 07:35:44 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 10:19:17 2026"
      },
      "message": "return the reader\u0027s io.ErrUnexpectedEOF from File.ReadFrom\n\nReadFrom filled its buffer with io.ReadFull and treated\nio.ErrUnexpectedEOF as the end of the data, because io.ReadFull returns\nit when the reader ends part way through the buffer. An\nio.ErrUnexpectedEOF from the reader itself was dropped as well. For\nexample, copying an HTTP response body that was cut off into a File\nreturned a nil error, and left a truncated file.\n\nFill the buffer with a loop that returns the reader\u0027s error unchanged,\nand only treat io.EOF as the end of the data.\n\nFixes #673\n"
    },
    {
      "commit": "8634d511639bad36f5201fc5546217f14d77ef30",
      "tree": "e28a072af8674c576addc09bd391a341aa83ff2e",
      "parents": [
        "eb379c1f4327e1b978458f4184432bfd3e770471"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Wed Oct 14 18:48:04 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Sat Oct 17 10:19:17 2026"
      },
      "message": "return write error for short final chunk in File.ReadFrom\n\nWhen the reader ends part-way through the buffer, io.ReadFull returns\nio.ErrUnexpectedEOF with the last bytes. ReadFrom kept that error over\nthe error from writing those bytes and then returned nil for it, so a\nrefused final write was reported as success.\n\nOnly replace it when the write failed, so the loop doesn\u0027t read r again\nafter it has ended.\n\nFixes #668\n"
    },
    {
      "commit": "eb379c1f4327e1b978458f4184432bfd3e770471",
      "tree": "ea8c4cb7e442ee3a3a4613463b2acf42b0fa91b5",
      "parents": [
        "16147c5dd9bba33f5d87a8693d630d169c558932"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Thu Oct 15 07:34:32 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sat Oct 17 09:34:04 2026"
      },
      "message": "fix flaky TestRequestStatVFS\n\nCompare only values that don\u0027t change when something else writes to\nthe disk, as the client StatVFS tests do. Bavail and Bfree can change\nbetween the two calls.\n\nFixes #463\n"
    },
    {
      "commit": "0424ea86279a6f59d2f8089e4b0fdef304955cea",
      "tree": "00a93ec88a42a46ffa706fe7e58c30fe45663af4",
      "parents": [
        "16147c5dd9bba33f5d87a8693d630d169c558932"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Fri Oct 16 15:31:04 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Fri Oct 16 15:31:04 2026"
      },
      "message": "link to the drafts on datatracker again\n\ndatatracker serves each revision of the drafts again, with section\nanchors, so switch the filezilla and tools.ietf.org links back to it.\n"
    },
    {
      "commit": "60a349140b9885524e1107f29a72f73b934a02ec",
      "tree": "aa96e94043fd761c2bbf1202921348d666386fb5",
      "parents": [
        "16147c5dd9bba33f5d87a8693d630d169c558932"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Thu Oct 15 07:32:21 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Thu Oct 15 07:32:21 2026"
      },
      "message": "use the attribute flags for the attributes of an open request\n\nSince 159d286, requestFromPacket copies the attributes of an\nSSH_FXP_OPEN into Request.Attrs, but Request.Flags holds the open\nflags. AttrFlags and Attributes read Request.Flags, so for an open they\ndecoded the attributes with the pflags as attribute flags. For example,\nan open for write, create and truncate reported UID/GID and times, and\nAttributes returned nil or wrong values.\n\nKeep the attribute flags of an open request and use them in AttrFlags\nand Attributes for Get, Put and Open requests.\n\nFixes #557\n"
    },
    {
      "commit": "9a410c8b56315387e899eaf1a12c45abe25c9437",
      "tree": "1301c98787e69b04c45fb219634de878f92c72be",
      "parents": [
        "16147c5dd9bba33f5d87a8693d630d169c558932"
      ],
      "author": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Wed Oct 14 18:51:49 2026"
      },
      "committer": {
        "name": "Chris Thomas",
        "email": "chris.thomas@antimatter-studios.com",
        "time": "Wed Oct 14 19:04:58 2026"
      },
      "message": "close session when NewClient fails\n\nNewClient returned without closing the session it had opened when the\nsubsystem request, one of the pipes, or newClientPipe failed. Each\nfailed call left a session open until the connection was closed.\n\nFixes #669\n"
    },
    {
      "commit": "16147c5dd9bba33f5d87a8693d630d169c558932",
      "tree": "02c50cf7d34d590d5a0e92d7b44ba2f1e9d6e2f0",
      "parents": [
        "f15ad81095f701ab2368fb62ddc6840155426eee"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 14:14:11 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Thu Oct 08 12:35:28 2026"
      },
      "message": "harden client reply parsers against malformed server replies\n\nThe client response decoders parsed server replies with the unchecked\nunmarshalUint32/unmarshalString helpers and with fixed-offset reads in\nunmarshalStatus. A malicious or compromised server could return a truncated\nor oversized reply and panic the client goroutine with an index- or\nslice-bounds-out-of-range. Convert these paths to the bounds-checked Safe\nvariants and clamp the data-length before slicing, so a hostile reply\nreturns an error instead of panicking.\n\nReported by @mjbommar\n"
    },
    {
      "commit": "f15ad81095f701ab2368fb62ddc6840155426eee",
      "tree": "7d2301f8b600a03144a63ef5ab387e98cdaa2b0b",
      "parents": [
        "fc82c354c0d87349411e30a08bef297c9f132105",
        "524edf1d4edd7a4ea40117887c21a670c2cf8eac"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Thu Oct 08 12:34:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 12:34:38 2026"
      },
      "message": "Merge pull request #666 from drakkan/fix_darwin_statvfs_test\n\nfix flaky TestClientStatVFS on macOS"
    },
    {
      "commit": "524edf1d4edd7a4ea40117887c21a670c2cf8eac",
      "tree": "7d2301f8b600a03144a63ef5ab387e98cdaa2b0b",
      "parents": [
        "fc82c354c0d87349411e30a08bef297c9f132105"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Thu Oct 08 06:43:36 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Thu Oct 08 12:29:16 2026"
      },
      "message": "fix flaky TestClientStatVFS on macOS\n\nCheck only stable values, as on Linux, and include expected and\nactual values in failure messages.\n"
    },
    {
      "commit": "fc82c354c0d87349411e30a08bef297c9f132105",
      "tree": "4ae59b8895cd06d919afe169ae5041a29e90be41",
      "parents": [
        "c1bc2fffcb14f580c4d365ae9660fa149ec1dba5"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:36:53 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:36:53 2026"
      },
      "message": "CI: run tests on macOS with the latest Go version\n"
    },
    {
      "commit": "c1bc2fffcb14f580c4d365ae9660fa149ec1dba5",
      "tree": "25e2482622ab78be173f8d5e9b6ca7ef6b6281ab",
      "parents": [
        "fe6029a9018698a0533b8b978038c4654216ec90"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:21:49 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:21:49 2026"
      },
      "message": "fix: bound extended-count pre-allocation in unmarshalFileStat\n\nThe SSH_FILEXFER_ATTRS decoder allocated the extended-attribute slice\ndirectly from the wire-supplied extended_count.\n\nThis is reachable server-side post-authentication via Request.Attributes()\nand the SETSTAT/FSETSTAT/OPEN paths, and client-side from a malicious\nserver via Stat/Lstat/Fstat/Open/ReadDir attribute parsing.\n\nBound the pre-allocation to the number of entries that can fit in the\nremaining bytes (each entry is two length-prefixed strings, i.e. at least\n8 bytes) and grow the slice with append.\n\nCo-authored-by: Michael Bommarito \u003cmichael.bommarito@gmail.com\u003e\n"
    },
    {
      "commit": "fe6029a9018698a0533b8b978038c4654216ec90",
      "tree": "9ea2eaf9544c9695776450ee7e431c17fbfe0fb1",
      "parents": [
        "208320fa10d3e2e17b840eb81c265106cd01630a"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:17:02 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:17:02 2026"
      },
      "message": "CI: update Go version and GitHub Actions\n\nSigned-off-by: Nicola Murino \u003cnicola.murino@gmail.com\u003e\n"
    },
    {
      "commit": "208320fa10d3e2e17b840eb81c265106cd01630a",
      "tree": "cb074a9d609747c246fd6988bb2f7acdd8cd0517",
      "parents": [
        "dda38481a0d1b25903d59ccfb2f044361d092c16"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:14:01 2026"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Sun Jul 12 13:14:01 2026"
      },
      "message": "update deps\n"
    },
    {
      "commit": "dda38481a0d1b25903d59ccfb2f044361d092c16",
      "tree": "a2f4d0bfcb3ba58f70a78e130307f096fbec2dd7",
      "parents": [
        "ef1dc72596d67f71796f323a42fd648bca14c4e9",
        "26bf701b06bfb19a4d0245605b9e23141d428f2a"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Mon Jun 08 13:25:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:25:59 2026"
      },
      "message": "Merge pull request #652 from MD-Mushfiqur123/refactor/interface-to-any\n\nrefactor: replace interface{} with any (Go 1.18+)"
    },
    {
      "commit": "26bf701b06bfb19a4d0245605b9e23141d428f2a",
      "tree": "a2f4d0bfcb3ba58f70a78e130307f096fbec2dd7",
      "parents": [
        "ef1dc72596d67f71796f323a42fd648bca14c4e9"
      ],
      "author": {
        "name": "Md Mushfiqur Rahim",
        "email": "20mahin2020@gmail.com",
        "time": "Thu Jun 04 03:39:42 2026"
      },
      "committer": {
        "name": "Md Mushfiqur Rahim",
        "email": "20mahin2020@gmail.com",
        "time": "Thu Jun 04 03:39:42 2026"
      },
      "message": "refactor: replace interface{} with any (Go 1.18+)"
    },
    {
      "commit": "ef1dc72596d67f71796f323a42fd648bca14c4e9",
      "tree": "41858dd1e752574de701171887b97da48689894e",
      "parents": [
        "ab3b1a348110878ba49035ce91904cc41743feb0",
        "dbf7c752efad233b0c5cfc03e857d27d0e8ffe65"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu May 21 19:09:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 19:09:07 2026"
      },
      "message": "Merge pull request #650 from alrs/ineffective-functions\n\nfix: ineffective assignments"
    },
    {
      "commit": "dbf7c752efad233b0c5cfc03e857d27d0e8ffe65",
      "tree": "41858dd1e752574de701171887b97da48689894e",
      "parents": [
        "ab3b1a348110878ba49035ce91904cc41743feb0"
      ],
      "author": {
        "name": "Lars Lehtonen",
        "email": "lars.lehtonen@gmail.com",
        "time": "Fri May 15 22:33:03 2026"
      },
      "committer": {
        "name": "Lars Lehtonen",
        "email": "lars.lehtonen@gmail.com",
        "time": "Tue May 19 00:23:32 2026"
      },
      "message": "fix: ineffective assignments\n"
    },
    {
      "commit": "ab3b1a348110878ba49035ce91904cc41743feb0",
      "tree": "c47bf4092a56b9f5d1efe31d3ed88ec328c16182",
      "parents": [
        "939b20346433320aab08dfb0f175db0742304cf5",
        "4583fed401bd4d0454867e7416a5a2e721a63b52"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Thu Nov 20 12:52:58 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 12:52:58 2025"
      },
      "message": "Merge pull request #641 from pkg/dependabot/go_modules/golang.org/x/crypto-0.45.0\n\nBump golang.org/x/crypto from 0.41.0 to 0.45.0"
    },
    {
      "commit": "4583fed401bd4d0454867e7416a5a2e721a63b52",
      "tree": "c47bf4092a56b9f5d1efe31d3ed88ec328c16182",
      "parents": [
        "939b20346433320aab08dfb0f175db0742304cf5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Nov 20 02:45:17 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 20 02:45:17 2025"
      },
      "message": "Bump golang.org/x/crypto from 0.41.0 to 0.45.0\n\nBumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.41.0 to 0.45.0.\n- [Commits](https://github.com/golang/crypto/compare/v0.41.0...v0.45.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/crypto\n  dependency-version: 0.45.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "939b20346433320aab08dfb0f175db0742304cf5",
      "tree": "6fdae80eb11cc6cc06122e71e5191bc291231a08",
      "parents": [
        "ab738a129f42bb43182c74786aff6263dc214850",
        "935fe8ec9bb8757c4d81e2620338f4e99b3412d9"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Oct 22 22:24:47 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 22:24:47 2025"
      },
      "message": "Merge pull request #639 from jas4711/test-username-regexp\n\nAccept \u0027-\u0027 in usernames for ls self-test"
    },
    {
      "commit": "ab738a129f42bb43182c74786aff6263dc214850",
      "tree": "8f94ac3a15b57eecfab64265bf04a6d0ec86d991",
      "parents": [
        "6b96da12d0610829e5e2075416d232dcf967dd65",
        "36e0a6fb555d10ba36f09d63f1fb7b647fc6b93a"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Oct 22 22:07:19 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 22:07:19 2025"
      },
      "message": "Merge pull request #638 from jas4711/use-sample-file\n\nDon\u0027t use LICENSE as a self-test sample file"
    },
    {
      "commit": "6b96da12d0610829e5e2075416d232dcf967dd65",
      "tree": "5a35f410d24826dd64050b5cea0407980e12a26c",
      "parents": [
        "ad5b1e75691bc1b656936dd8f43339844d8ef696",
        "0af9d9e0c38150ca9e39ab9a0af91bf9b9f511ff"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Oct 22 22:06:44 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 22 22:06:44 2025"
      },
      "message": "Merge pull request #640 from KleeKitz/patch-1\n\nFix typos in InMemHandler comments"
    },
    {
      "commit": "0af9d9e0c38150ca9e39ab9a0af91bf9b9f511ff",
      "tree": "5a35f410d24826dd64050b5cea0407980e12a26c",
      "parents": [
        "ad5b1e75691bc1b656936dd8f43339844d8ef696"
      ],
      "author": {
        "name": "Mike",
        "email": "59291735+KleeKitz@users.noreply.github.com",
        "time": "Mon Oct 20 15:58:25 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 20 15:58:25 2025"
      },
      "message": "Fix typos in InMemHandler comments"
    },
    {
      "commit": "935fe8ec9bb8757c4d81e2620338f4e99b3412d9",
      "tree": "ec1909062091e102b1120c3dec5262ed890e0a06",
      "parents": [
        "ad5b1e75691bc1b656936dd8f43339844d8ef696"
      ],
      "author": {
        "name": "Simon Josefsson",
        "email": "simon@josefsson.org",
        "time": "Tue Oct 07 13:32:45 2025"
      },
      "committer": {
        "name": "Simon Josefsson",
        "email": "simon@josefsson.org",
        "time": "Tue Oct 07 14:02:22 2025"
      },
      "message": "Improve regexp for valid usernames in ls self-test\n"
    },
    {
      "commit": "36e0a6fb555d10ba36f09d63f1fb7b647fc6b93a",
      "tree": "4ebe2c34b31bc792b70bb680b0b5e45a5325cd47",
      "parents": [
        "ad5b1e75691bc1b656936dd8f43339844d8ef696"
      ],
      "author": {
        "name": "Simon Josefsson",
        "email": "simon@josefsson.org",
        "time": "Tue Oct 07 13:19:18 2025"
      },
      "committer": {
        "name": "Simon Josefsson",
        "email": "simon@josefsson.org",
        "time": "Tue Oct 07 13:59:58 2025"
      },
      "message": "Don\u0027t use LICENSE as a self-test sample file\n"
    },
    {
      "commit": "ad5b1e75691bc1b656936dd8f43339844d8ef696",
      "tree": "3dbd65b780ea0eba2be76ff8d638d628bdfe9b4f",
      "parents": [
        "ff15937e02db298cde7cb0fee81e119b93427150"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Mon Oct 06 12:40:56 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 12:40:56 2025"
      },
      "message": "Update SECURITY.md"
    },
    {
      "commit": "ff15937e02db298cde7cb0fee81e119b93427150",
      "tree": "f43f021ceed732ad15f48dde6a2aa9e6d3749c7c",
      "parents": [
        "ac1008fcf182802ff14fd519b064d463dd70dc32",
        "1871076d09a1cd1a2c1084f36d8d70582f866754"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Mon Oct 06 12:35:47 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 12:35:47 2025"
      },
      "message": "Merge pull request #637 from drakkan/security\n\nadd security policy"
    },
    {
      "commit": "1871076d09a1cd1a2c1084f36d8d70582f866754",
      "tree": "f43f021ceed732ad15f48dde6a2aa9e6d3749c7c",
      "parents": [
        "ac1008fcf182802ff14fd519b064d463dd70dc32"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Mon Oct 06 12:20:34 2025"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Mon Oct 06 12:20:34 2025"
      },
      "message": "add security policy\n"
    },
    {
      "commit": "ac1008fcf182802ff14fd519b064d463dd70dc32",
      "tree": "f8dcf13735188860e9dc592b57d7a7a06bb6f2fa",
      "parents": [
        "53c62f1551a4ce8280dcc639cfce05a859ff48d0",
        "9af70941c7fda2e4a08cc272d5c9fba1406c2bac"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Aug 27 11:34:23 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 27 11:34:23 2025"
      },
      "message": "Merge pull request #635 from Farokhcpu/updating-go-packages\n\nUpdating go packages"
    },
    {
      "commit": "9af70941c7fda2e4a08cc272d5c9fba1406c2bac",
      "tree": "f8dcf13735188860e9dc592b57d7a7a06bb6f2fa",
      "parents": [
        "da6c80ecda479fd74c2d5968afdb7a91b044b9cb"
      ],
      "author": {
        "name": "Farokh",
        "email": "farokh.khajuee@vipps.no",
        "time": "Thu Aug 21 10:18:07 2025"
      },
      "committer": {
        "name": "Farokh",
        "email": "farokh.khajuee@vipps.no",
        "time": "Thu Aug 21 10:18:07 2025"
      },
      "message": "go mod tidy\n"
    },
    {
      "commit": "da6c80ecda479fd74c2d5968afdb7a91b044b9cb",
      "tree": "b7c5af33e0014660ff46131b66c94a8663bdbc70",
      "parents": [
        "53c62f1551a4ce8280dcc639cfce05a859ff48d0"
      ],
      "author": {
        "name": "Farokh",
        "email": "farokh.khajuee@vipps.no",
        "time": "Thu Aug 21 10:17:34 2025"
      },
      "committer": {
        "name": "Farokh",
        "email": "farokh.khajuee@vipps.no",
        "time": "Thu Aug 21 10:17:34 2025"
      },
      "message": "go get -u .\n"
    },
    {
      "commit": "53c62f1551a4ce8280dcc639cfce05a859ff48d0",
      "tree": "e392c2d8ed975e4b2f154d0f915e3b25cef82dc1",
      "parents": [
        "36ce9cfd5c257416ed074f58de17e3e6c2149857",
        "c7176b3c6ee097f642f9c9a2dfb65a8df2ad5ad2"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Sun Jul 13 18:13:11 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 13 18:13:11 2025"
      },
      "message": "Merge pull request #632 from pkg/fix-ssh-client-use\n\nFix SSH subsystemrequest usage"
    },
    {
      "commit": "c7176b3c6ee097f642f9c9a2dfb65a8df2ad5ad2",
      "tree": "e392c2d8ed975e4b2f154d0f915e3b25cef82dc1",
      "parents": [
        "d9ce3caa7238eac4673a96c43428c38cd69e014c"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 14:00:15 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 14:00:15 2025"
      },
      "message": "rework recv debug messages to be context-added errors\n"
    },
    {
      "commit": "d9ce3caa7238eac4673a96c43428c38cd69e014c",
      "tree": "bf6c268ad6d0b957888bd6d7b801552627290bb3",
      "parents": [
        "9ae47f41703d52f79a148606705c430f4989d1f5"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 13:29:21 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 13:30:46 2025"
      },
      "message": "convert uses of uint8 instead of fxp to fxp\n"
    },
    {
      "commit": "9ae47f41703d52f79a148606705c430f4989d1f5",
      "tree": "afb9477de8e6490e288018f17173e2d0e1c678d2",
      "parents": [
        "8a0fc6568b76bf34d030a4ac5a6e15c50d337124"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 13:23:15 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 13:23:15 2025"
      },
      "message": "better debug info\n"
    },
    {
      "commit": "8a0fc6568b76bf34d030a4ac5a6e15c50d337124",
      "tree": "b0b21167135f918647afce9e95d8fa1540fb96d1",
      "parents": [
        "f1b135a6f5c7d0e273eadc2e7ebc7513d55b2b13"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 12:50:06 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 30 12:50:06 2025"
      },
      "message": "DO NOT close the CopyStderrTo writer\n"
    },
    {
      "commit": "f1b135a6f5c7d0e273eadc2e7ebc7513d55b2b13",
      "tree": "f045d8544df12a0a92ad2f33e16892cb042704a6",
      "parents": [
        "32bfbbb6c0bcf82bb0452bff2c2d0bd5c93a40b8"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 10:25:23 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 10:25:23 2025"
      },
      "message": "invert if-blocks to reduce indention levels\n"
    },
    {
      "commit": "32bfbbb6c0bcf82bb0452bff2c2d0bd5c93a40b8",
      "tree": "b08663075e08085d46cd6780688378fa713eaeec",
      "parents": [
        "18192955ef8b3b9553923e85ba7edeac63929857"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 10:18:29 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 10:18:29 2025"
      },
      "message": "I think I prefer this API design\n"
    },
    {
      "commit": "18192955ef8b3b9553923e85ba7edeac63929857",
      "tree": "8a815567a12792752318fbc9764033138eb75fd0",
      "parents": [
        "36ce9cfd5c257416ed074f58de17e3e6c2149857"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 03:04:57 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Fri May 23 09:21:31 2025"
      },
      "message": "fix ssh subsystem request invocation\n"
    },
    {
      "commit": "36ce9cfd5c257416ed074f58de17e3e6c2149857",
      "tree": "abcb78816c90e0177dade20bbe8fafece512d84b",
      "parents": [
        "7049dd7cdd33420ed2b16c3a4012abd13bc690f2",
        "7d16eb687f5cb9c65b2cf670e81b151ec2f4c2d8"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 20:44:05 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 28 20:44:05 2025"
      },
      "message": "Merge pull request #629 from drakkan/tidy\n\nrun go mod tidy"
    },
    {
      "commit": "7d16eb687f5cb9c65b2cf670e81b151ec2f4c2d8",
      "tree": "abcb78816c90e0177dade20bbe8fafece512d84b",
      "parents": [
        "7049dd7cdd33420ed2b16c3a4012abd13bc690f2"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 20:39:58 2025"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 20:39:58 2025"
      },
      "message": "run go mod tidy\n"
    },
    {
      "commit": "7049dd7cdd33420ed2b16c3a4012abd13bc690f2",
      "tree": "bb4efab366bc8e61a6a7305057e6653926d94a9a",
      "parents": [
        "02ac914e35400584d7bf29dff8b01d281d09eaae",
        "28eb326a677026d1ab4f0916508538c0188a1238"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 15:46:10 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 28 15:46:10 2025"
      },
      "message": "Merge pull request #628 from drakkan/goversion\n\ngo.mod: set the minimum version to 1.23.0 as x/crypto"
    },
    {
      "commit": "28eb326a677026d1ab4f0916508538c0188a1238",
      "tree": "bb4efab366bc8e61a6a7305057e6653926d94a9a",
      "parents": [
        "8c3d7097fdcf6fc09fed5aa379b72ac0c3e95bac"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:26:22 2025"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:26:22 2025"
      },
      "message": "CI: swith to Go 1.23 and 1.24\n"
    },
    {
      "commit": "8c3d7097fdcf6fc09fed5aa379b72ac0c3e95bac",
      "tree": "934b86309865456bdd55881d7b2393465ea50835",
      "parents": [
        "210a475d5cd891478c4a5c08b4d5cfd4ec6bab83"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:25:39 2025"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:25:39 2025"
      },
      "message": "update deps\n"
    },
    {
      "commit": "210a475d5cd891478c4a5c08b4d5cfd4ec6bab83",
      "tree": "dd0e05c30f250b334eade17d1807982b2ed1d8fa",
      "parents": [
        "02ac914e35400584d7bf29dff8b01d281d09eaae"
      ],
      "author": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:23:41 2025"
      },
      "committer": {
        "name": "Nicola Murino",
        "email": "nicola.murino@gmail.com",
        "time": "Fri Mar 28 09:23:41 2025"
      },
      "message": "go.mod: set the minimum version to 1.23.0 as x/crypto\n"
    },
    {
      "commit": "02ac914e35400584d7bf29dff8b01d281d09eaae",
      "tree": "db2ea4b1333ddc3e4dfb7512ea262590b6e7836e",
      "parents": [
        "320d62f9de173bbc3631acf1b07309c8d2753ee9",
        "d4cb202a816bf449b7e069c39118ff3fb4811e17"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Thu Mar 27 23:39:29 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 27 23:39:29 2025"
      },
      "message": "Merge pull request #626 from kbutz/go-and-crypto-version-updates\n\nUpdate crypto version to v0.35.0 sftp#625"
    },
    {
      "commit": "d4cb202a816bf449b7e069c39118ff3fb4811e17",
      "tree": "db2ea4b1333ddc3e4dfb7512ea262590b6e7836e",
      "parents": [
        "76003fea2cd2a959d05d1907cd71a90e241e3809"
      ],
      "author": {
        "name": "Kyle Briar",
        "email": "kyle.a.briar@gmail.com",
        "time": "Wed Mar 26 17:14:02 2025"
      },
      "committer": {
        "name": "kyle.butz",
        "email": "kyle.butz@sezzle.com",
        "time": "Wed Mar 26 17:14:02 2025"
      },
      "message": "Update crypto version to v0.35.0 sftp#625\n"
    },
    {
      "commit": "76003fea2cd2a959d05d1907cd71a90e241e3809",
      "tree": "8df1b87e63093ef1464cc1ea4be7ee064ed615dd",
      "parents": [
        "320d62f9de173bbc3631acf1b07309c8d2753ee9"
      ],
      "author": {
        "name": "kyle.butz",
        "email": "kyle.butz@sezzle.com",
        "time": "Wed Mar 26 03:38:45 2025"
      },
      "committer": {
        "name": "kyle.butz",
        "email": "kyle.butz@sezzle.com",
        "time": "Wed Mar 26 03:38:45 2025"
      },
      "message": "Update crypto version to v0.35.0 sftp#625\n"
    },
    {
      "commit": "320d62f9de173bbc3631acf1b07309c8d2753ee9",
      "tree": "98ef9f163852bc459833bcd66fcaf83e07a67b5b",
      "parents": [
        "19bfb49e7134fcddb4c9566a493eb472b34a812f",
        "28eb389db7ef49d1991cb59d1f17495fb4c55304"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Tue Mar 25 13:30:11 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 25 13:30:11 2025"
      },
      "message": "Merge pull request #623 from justfalter/read-full\n\nperf: ensure full write buffer for *File.ReadFrom"
    },
    {
      "commit": "28eb389db7ef49d1991cb59d1f17495fb4c55304",
      "tree": "98ef9f163852bc459833bcd66fcaf83e07a67b5b",
      "parents": [
        "19bfb49e7134fcddb4c9566a493eb472b34a812f"
      ],
      "author": {
        "name": "Mike Ryan",
        "email": "falter@gmail.com",
        "time": "Sun Mar 23 20:37:04 2025"
      },
      "committer": {
        "name": "Mike Ryan",
        "email": "falter@gmail.com",
        "time": "Mon Mar 24 13:47:25 2025"
      },
      "message": "perf: ensure full write buffer for *File.ReadFrom\n\nIn `*File.ReadFrom`, ensure that the buffer is filled to capacity (`maxPacket`\nlength) before performing the write.\n\nPrior to this change, the amount of data read into the buffer was dictated by\nthe `io.Reader`\u0027s `Read` implementation, and write performance would suffer\nwhen the Read would return less than maxPacket bytes of data. An example\nsource would be a `net/http` response `Body` from a TLS server, which\nseems to cap each read to 16384 bytes -- half the default max packet size of\n32768 bytes.\n"
    },
    {
      "commit": "19bfb49e7134fcddb4c9566a493eb472b34a812f",
      "tree": "3b115280703dc9b2d823f19d30ce6c7507d15a1d",
      "parents": [
        "5b63029e5d4ec61a48e201ffad3ff661a0651754",
        "eea14d0395ded713bcd20babfac6be4ea1c16db6"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Mar 12 15:08:34 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 12 15:08:34 2025"
      },
      "message": "Merge pull request #618 from pkg/v1-backport-client-remove-and-fsync\n\nBackport v2/Client.Remove and File.Sync"
    },
    {
      "commit": "5b63029e5d4ec61a48e201ffad3ff661a0651754",
      "tree": "1a113c13cd4888b117f6355d0fa2ecff4ec289ea",
      "parents": [
        "fb0652cf58a5dec0a399756c4c5e0753fc028985",
        "067046a74c65631e63f239bad565fe0cb9afbd20"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Wed Mar 12 15:06:49 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 12 15:06:49 2025"
      },
      "message": "Merge pull request #621 from cloudsbit/bugfix/readAt-hang\n\nfix: readAt() occasional hang in concurrent reads"
    },
    {
      "commit": "067046a74c65631e63f239bad565fe0cb9afbd20",
      "tree": "1a113c13cd4888b117f6355d0fa2ecff4ec289ea",
      "parents": [
        "fb0652cf58a5dec0a399756c4c5e0753fc028985"
      ],
      "author": {
        "name": "cloudsbit",
        "email": "JohnnyHu90@hotmail.com",
        "time": "Wed Mar 12 00:42:59 2025"
      },
      "committer": {
        "name": "cloudsbit",
        "email": "JohnnyHu90@hotmail.com",
        "time": "Wed Mar 12 00:42:59 2025"
      },
      "message": "fix: readAt() occasional hang in concurrent reads\n"
    },
    {
      "commit": "eea14d0395ded713bcd20babfac6be4ea1c16db6",
      "tree": "4945f870688282009d766c1e462d3a2f006037f0",
      "parents": [
        "584399def273f6fbed8ceeddad4ce37f91765e65"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Tue Mar 04 09:40:55 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Tue Mar 04 09:40:55 2025"
      },
      "message": "if errF and errD are pointers to os.PathError, then they won\u0027t compare equal, even when they are\n"
    },
    {
      "commit": "584399def273f6fbed8ceeddad4ce37f91765e65",
      "tree": "0dadebf44fa0fe10d4970f20353e027f35f52f72",
      "parents": [
        "27c996992853814ef487135dc5f094fab054ee08"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 14:02:29 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 14:02:29 2025"
      },
      "message": "oops, duh\n"
    },
    {
      "commit": "27c996992853814ef487135dc5f094fab054ee08",
      "tree": "44e1eda1666704441cb38149b2f674329383a236",
      "parents": [
        "46608778f55eb65d898cd5ab4ed4347ff5a68a6e"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:53:16 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:53:16 2025"
      },
      "message": "go mod tidy\n"
    },
    {
      "commit": "46608778f55eb65d898cd5ab4ed4347ff5a68a6e",
      "tree": "add16c20f759faf9c540e6a5e951b90ac47cd020",
      "parents": [
        "a2172dc0b913c15eb701e644cf67e2db2a1b7f22"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:52:07 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:52:52 2025"
      },
      "message": "backport v2/client.Remove; return PathError\n"
    },
    {
      "commit": "a2172dc0b913c15eb701e644cf67e2db2a1b7f22",
      "tree": "492e425e1d6b0ce3f53e5ba64cbe580873569b24",
      "parents": [
        "fb0652cf58a5dec0a399756c4c5e0753fc028985"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:51:25 2025"
      },
      "committer": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@gmail.com",
        "time": "Thu Feb 27 13:51:25 2025"
      },
      "message": "short-circuit File.Sync if not supported\n"
    },
    {
      "commit": "fb0652cf58a5dec0a399756c4c5e0753fc028985",
      "tree": "3b1bd4392b7d636b2966c83651efc6f7bd209b2b",
      "parents": [
        "088878ba50e5a977e9bc70a6c7d778b1e8dcc4aa",
        "050bb2ea5fa34c71d55608cf40cfb7b6226260d2"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Fri Jan 03 17:18:05 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 03 17:18:05 2025"
      },
      "message": "Merge pull request #611 from pkg/ISSUE-609-clarify-mkdirall-error-condition\n\nIssue #609 - clarify what \u0027path contains a regular file\u0027 actually means"
    },
    {
      "commit": "088878ba50e5a977e9bc70a6c7d778b1e8dcc4aa",
      "tree": "a2d24e8d839fb88012dd6ae4503d8543f937262c",
      "parents": [
        "a3da03b0ba23aaad8499763101c422650bdd12fd",
        "6be1dd2db9ed752cc7de9132ddeaa5562d32d731"
      ],
      "author": {
        "name": "Cassondra Foesch",
        "email": "puellanivis@users.noreply.github.com",
        "time": "Fri Jan 03 17:17:45 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 03 17:17:45 2025"
      },
      "message": "Merge pull request #571 from powellnorma/win-root\n\nserver.go: \"/\" for windows"
    },
    {
      "commit": "6be1dd2db9ed752cc7de9132ddeaa5562d32d731",
      "tree": "a2d24e8d839fb88012dd6ae4503d8543f937262c",
      "parents": [
        "33e8fe86c202bdb89bb88b58ae6ef37b77526188"
      ],
      "author": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Thu Jan 02 19:15:18 2025"
      },
      "committer": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Thu Jan 02 19:15:18 2025"
      },
      "message": "review adjustments\n"
    },
    {
      "commit": "33e8fe86c202bdb89bb88b58ae6ef37b77526188",
      "tree": "52b45e48fe555252375a64ccb003cdcff9c5c38f",
      "parents": [
        "524cb6221d353c81a5d5545f66f02e8465e5ff35"
      ],
      "author": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:16:23 2025"
      },
      "committer": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:24:12 2025"
      },
      "message": "go.mod: add golang.org/x/sys\n"
    },
    {
      "commit": "524cb6221d353c81a5d5545f66f02e8465e5ff35",
      "tree": "beca9a5c2b5a89ff989011cdd4351784322d7cc1",
      "parents": [
        "8dcbf480f2e8f0e262767b39e1c453a3dc46b74e",
        "a3da03b0ba23aaad8499763101c422650bdd12fd"
      ],
      "author": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:23:41 2025"
      },
      "committer": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:23:41 2025"
      },
      "message": "Merge branch \u0027master\u0027 into win-root\n"
    },
    {
      "commit": "8dcbf480f2e8f0e262767b39e1c453a3dc46b74e",
      "tree": "1de984f11fd6984463141a4402ae76320af06406",
      "parents": [
        "d8192421c2a62ae40336a5257de157c78279d46c"
      ],
      "author": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:08:40 2025"
      },
      "committer": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:23:02 2025"
      },
      "message": "windows root: add stat for \u0027/\u0027\n"
    },
    {
      "commit": "d8192421c2a62ae40336a5257de157c78279d46c",
      "tree": "84a0c2d25c40a7c81622affde333fdc1c3f960a8",
      "parents": [
        "e52de81b009d13f4852dc59de4463e60834573d4"
      ],
      "author": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:06:54 2025"
      },
      "committer": {
        "name": "powellnorma",
        "email": "101364699+powellnorma@users.noreply.github.com",
        "time": "Wed Jan 01 15:06:54 2025"
      },
      "message": "examples/go-sftp-server: add \u0027-wr\u0027\n"
    }
  ],
  "next": "050bb2ea5fa34c71d55608cf40cfb7b6226260d2"
}
