)]}'
{
  "log": [
    {
      "commit": "ea8a17bc794e7ff61c1be6c6c82c674302be0f49",
      "tree": "ff87624ea82ad2ae4aeab10e0a67f2eef229d41d",
      "parents": [
        "e5627c2f8e2db93da77b2a01b3d53e99d6e8b5c7"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Apr 02 16:18:05 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 18:52:50 2026"
      },
      "message": "ssh_client: openssh: upgrade to 10.3\n\nChange-Id: I13de052f0b0f2f3987e637dc6f6cb62ff17d935f\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7726824\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "e5627c2f8e2db93da77b2a01b3d53e99d6e8b5c7",
      "tree": "7779a5c9df3a04ab797f48adae7b08fcd4f2daf1",
      "parents": [
        "be11860ed2b3c2a005ea660aa4a06ab4fb5aa62f"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Mar 21 03:18:07 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 17:58:49 2026"
      },
      "message": "ssh_client: wasi-sdk: upgrade to 32.0\n\nChange-Id: Idcc4e6440a736a0c7e7119a602750f3190b7438e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7722819\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "be11860ed2b3c2a005ea660aa4a06ab4fb5aa62f",
      "tree": "00c742aca18fed040356e0bd2ed1dfdb619e1e6b",
      "parents": [
        "def50387220d1394399f5315904ef6288155bde7"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Feb 13 04:42:46 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 15:01:55 2026"
      },
      "message": "bazel: ignore generated dirs\n\nChange-Id: I0343ee7477ead5a0cf1db17c51a108352229cd8a\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7570847\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "def50387220d1394399f5315904ef6288155bde7",
      "tree": "e65dd5f3ab9494d5d060abc5852b7d9009483c3a",
      "parents": [
        "531352fc268f9370ae2b7eea2520c343616f1730"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Apr 01 19:44:18 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 15:01:07 2026"
      },
      "message": "nassh: plugin: update to 0.76\n\nChange-Id: Ibb7a380f50d3c38769037f147e57102521edbc90\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7722818\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "531352fc268f9370ae2b7eea2520c343616f1730",
      "tree": "af40e1ab09706b8728785266e8bc5dfec4317d0c",
      "parents": [
        "73d0048c5578739b80ae005cfbab3a95669eec48"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 06:27:57 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Apr 04 12:55:52 2026"
      },
      "message": "libdot: fetch: do not rely on server Content-Length header\n\nIf the response does not include the Content-Length header,\ncompute the final download length ourselves before checking.\n\nChange-Id: I07658e83b08622726425de808759a5825aaa2289\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7727153\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "73d0048c5578739b80ae005cfbab3a95669eec48",
      "tree": "0c0e997f06d0bbd8eb7757209fa68149b329169c",
      "parents": [
        "e18a2d269725b5d00c35ff9fba887b9c833237cf"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Mar 01 05:30:05 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Apr 02 16:19:13 2026"
      },
      "message": "ssh_client: protobuf: upgrade to 3.20.3\n\nThis is the last release series to support autotools.\nNewer versions would require switching to cmake.\n\nChange-Id: Iffbaab56ae559f9bcc8003d5fcecf5cadd0ccced\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7620786\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "e18a2d269725b5d00c35ff9fba887b9c833237cf",
      "tree": "2d1934a6fef1b24458313e58a9f57ffe4bb730dd",
      "parents": [
        "dcdd6f1a88f9c8a6a24536894df51e2593e2c6fb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Mar 21 03:16:32 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 24 03:16:50 2026"
      },
      "message": "ssh_client: zlib: update to 1.3.2\n\nChange-Id: Idf826060abd64eb2d383072698cdc401861ef81e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7688935\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "dcdd6f1a88f9c8a6a24536894df51e2593e2c6fb",
      "tree": "5e370fc9c7b514a2a8e44f6a62240c63eec5c258",
      "parents": [
        "80b8c22b99ce91409a7d850793d26100623f02ad"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Mar 21 03:16:20 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Mar 22 22:59:08 2026"
      },
      "message": "wassh: readpassphrase: add missing include for size_t\n\nChange-Id: I2788c3866e02334594115f023c6916264ba280cd\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7688934\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "80b8c22b99ce91409a7d850793d26100623f02ad",
      "tree": "3405a2c22768c1e5b27e76a5687a16c8ff1dc598",
      "parents": [
        "023e9663c5e537c49d2cb76b1739d731a3917133"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Mar 14 01:10:10 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Mar 18 21:13:34 2026"
      },
      "message": "nassh: release 0.76\n\nChange-Id: Ibf505d736f8b2f481991eb9c01f5ae37dcfb87c3\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7664086\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "023e9663c5e537c49d2cb76b1739d731a3917133",
      "tree": "51361516cd6a3ef2a505093f8a250982913021c2",
      "parents": [
        "ed86bc322850a8717793df165f04a8055d655fb2"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 04:26:33 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 15:03:18 2026"
      },
      "message": "wassh: GAI: handle trailing dot in localhost checks\n\nThe trailing dot in DNS is rarely used, but is correct, so check for i\nwith the various hardcoded localhost names.\n\nBug: b/262350367\nChange-Id: I3f6f947ca2d197df974d62976a248e9322aa9603\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7647921\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "ed86bc322850a8717793df165f04a8055d655fb2",
      "tree": "02bca0c47e9cc63111b1f442b8825080aa9b172b",
      "parents": [
        "8da53f1344e70eba529f9f6b5dcfded86867de6d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 04:22:24 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 14:18:45 2026"
      },
      "message": "wassh: GAI: drop localdomain hardcoding\n\nI don\u0027t recall why I included this in the initial implementation, and\nsince I can\u0027t find any RFCs justifying its existence, and it\u0027s not how\ne.g. the GNU libc resolver works, drop it.\n\nBug: b/262350367\nChange-Id: I6d17841152d8dff8d92e73ec3b1b4ef9fc947e39\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7647920\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "8da53f1344e70eba529f9f6b5dcfded86867de6d",
      "tree": "12b2d2fc2e45092b0a26dc277c55851fe19f3193",
      "parents": [
        "af300ffed27e27ef634fc3ceca1aedda3a9e1734"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 03:49:49 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 04:51:56 2026"
      },
      "message": "libdot: colors: simplify hsla() handling\n\nSince hsla() is an alias for hsl(), there\u0027s no need to handle it\ndifferently.  Normalize everything to \"HSL\", use a single regex\nto match it, and always return hsl() in results.\n\nBug: b/490478687\nChange-Id: I447e29d12c06469e5076e24be59612c853e7b6e8\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7646335\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "af300ffed27e27ef634fc3ceca1aedda3a9e1734",
      "tree": "d2467cc5aa06318ccfc649765095cd316be6f67b",
      "parents": [
        "42fbcbdf4a1a8a416248b19434af4c735409b092"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 03:29:56 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 04:51:39 2026"
      },
      "message": "libdot: colors: simplify rgba() handling\n\nSince rgba() is an alias for rgb(), there\u0027s no need to handle it\ndifferently.  Normalize everything to \"RGB\", use a single regex\nto match it, and always return rgb() in results.\n\nBug: b/490478687\nChange-Id: I7e104e5a8f76ef3cbd1536a3fd3e9aa838eaf232\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7646334\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "42fbcbdf4a1a8a416248b19434af4c735409b092",
      "tree": "3b0518a5a421402752d9f631bb3a18ea28931a41",
      "parents": [
        "795c6c83d47b8c1ebdc3836d28018c7f9fa2a32d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Feb 19 04:30:40 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 04:28:57 2026"
      },
      "message": "prettier: enable formatting for CSS files\n\nChange-Id: Id5d66736ec93b44ab3fa65762e42e4183e595116\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7649434\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "795c6c83d47b8c1ebdc3836d28018c7f9fa2a32d",
      "tree": "2b9a85b5b57cf3cc2fd51a4e16bce6d918f10235",
      "parents": [
        "18302c586f2448e215f87a1671f43955817f8894"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Nov 16 17:28:39 2023"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 10 04:27:24 2026"
      },
      "message": "wassh: GAI: return stub addresses for fake ones\n\nTo avoid confusing people further, normalize all fake addresses into\nthe \"any\" form.  We\u0027ve long documented IP addresses of 0.0.0.0 as\n\"delaying resolving\", so maintain that here.\n\nThese IP addresses can show up when displaying \"unknown host key\"\nerrors, or in the known_hosts file.\n\nChange-Id: I2e4df1bba956757517b2b13f0e3ceb415d6f7f9b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7647919\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "18302c586f2448e215f87a1671f43955817f8894",
      "tree": "f12348e89cd8af1da5af1e9a5583b8dc376b2c6f",
      "parents": [
        "b7e97ea117dbb4e788843c01b442dd1d3071152c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Mar 08 05:22:40 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 04:27:36 2026"
      },
      "message": "nassh: prefs: handle invalid colors\n\nIf a saved pref color is invalid such that it can\u0027t be cracked, don\u0027t\ncrash and break loading of the page, reset it and continue on.\n\nBug: b/490478687\nChange-Id: Ibe91eaf699e215c424b07589a090224c6a025027\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7646333\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "b7e97ea117dbb4e788843c01b442dd1d3071152c",
      "tree": "b419f9ad7392a2bb223b0a75a0f46258cfa08091",
      "parents": [
        "5b18d1d06de219a3c56955a7f15764b8cccfcb03"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Mar 08 05:08:27 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 09 03:08:57 2026"
      },
      "message": "hterm: vt: normalize cursor color before cracking\n\nSince the terminal\u0027s cursor color can be set directly by API calls or\nuser preferences to any valid CSS value, make sure we normalize it\nbefore we attempt to crack it as an rgb value.\n\nBug: b/490478687\nChange-Id: I3cc475e854c6b125c1d6a84cbe70dc34b48f1819\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7646332\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "5b18d1d06de219a3c56955a7f15764b8cccfcb03",
      "tree": "e92d88eb93c1ac14e9549110f7b1e6c18f150f0a",
      "parents": [
        "33d7330f7568131947854394fb858d0d92dfc9f2"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Mar 01 04:53:24 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 03 15:15:01 2026"
      },
      "message": "ssh_client: protobuf: skip shared libs\n\nWe don\u0027t need the shared lib, so disable it to speed up the build.\n\nChange-Id: I8a8807cd12b2f3211886147d6a9611082c8ac7c2\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7620785\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "33d7330f7568131947854394fb858d0d92dfc9f2",
      "tree": "9fedd6bb13d75cb965935455c66ad0e2783f6efb",
      "parents": [
        "4ecd7376fec37d03289739299684b4f92dfee046"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 02 11:08:11 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 03 12:56:27 2026"
      },
      "message": "libdot: fetch: support writing to dirs \u0026 character devices\n\nFor testing purposes, it\u0027s helpful to run `./fetch -o /dev/null ...`\nor `./fetch -o ./ ...`.  Otherwise it can only write to a file, and\nif that file exists, it gives up.\n\nChange-Id: Ia155ec8ba3e87b9db9577efbf480c4e8f9dec0a8\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7620025\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "4ecd7376fec37d03289739299684b4f92dfee046",
      "tree": "eb5c2b54b5cea0a830197b7987673f3d3562c1d4",
      "parents": [
        "7469fb394beb7fa107e8c717d3aabe44a14fbca2"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Mar 02 11:10:03 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Mar 03 12:56:23 2026"
      },
      "message": "libdot: fetch: retry HTTP download errors\n\nWhile the fetch logic handled ConnectionError which comes from the\nhttp.client layers, we didn\u0027t handle urllib failures.  These show\nup with HTTP errors returned by the server.\n\nChange-Id: I5d05088980db891a16aacd56867a272ca01214d4\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7620026\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "7469fb394beb7fa107e8c717d3aabe44a14fbca2",
      "tree": "6d324aacfa45a4ffb0e6b2b464e936163a4c89d6",
      "parents": [
        "7ed34d54a61e2b8624f2b1a1d680c1130c61ef44"
      ],
      "author": {
        "name": "Jimmy Chang",
        "email": "jimmychang@google.com",
        "time": "Wed Feb 18 22:06:40 2026"
      },
      "committer": {
        "name": "Jimmy Chang",
        "email": "jimmychang@google.com",
        "time": "Thu Feb 19 21:21:57 2026"
      },
      "message": "nassh: google: Route `.mandiant-aws-prod.s.off.goog` to use SUP SSH Relay.\n\nBug: 479614039\nChange-Id: I56e851745bd857b6f9b3e7dbbb5e0f36594976d2\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7590595\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "7ed34d54a61e2b8624f2b1a1d680c1130c61ef44",
      "tree": "35a75d715608dcf2b4b01f65195ec9c33b2349ce",
      "parents": [
        "4aea83d4e0986cb13dc1681d7082f4857c8bed41"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 28 03:02:34 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Feb 19 03:14:39 2026"
      },
      "message": "nassh: prefs: make side panel opaque\n\nIf the main page content is too large and we start horizontally\nscrolling, the content bleeds through the left navigation pane\nwhich makes it impossible to read either.  Make the left pane\nopaque to fix that.\n\nChange-Id: Icee720e3211f531ed45f5ad155c9147f1f9a2607\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7591753\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "4aea83d4e0986cb13dc1681d7082f4857c8bed41",
      "tree": "de16628458c317b2db67086f917684695e4166e1",
      "parents": [
        "4364206198e8f81e94e82e5a94380d58f0550066"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Nov 28 19:23:11 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Feb 19 01:35:22 2026"
      },
      "message": "prettier: enable formatting for HTML files\n\nDon\u0027t enable the JS settings just yet.\n\nChange-Id: I8b5c8a68352c70d610b17b07e8f0a737fa44103e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7511662\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "4364206198e8f81e94e82e5a94380d58f0550066",
      "tree": "15892e04e3a0c238c7f4ca9badc31154ba17a82a",
      "parents": [
        "b4890cb472b710592654fd735e2ca494599dd699"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Feb 16 04:40:42 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Feb 16 05:18:53 2026"
      },
      "message": "node: update to v24\n\nChange-Id: I37c1f8dcba7986a9976b0006295d293fac1e018e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7580514\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "b4890cb472b710592654fd735e2ca494599dd699",
      "tree": "c44475b9396ec24743304096621aba4aa485ba16",
      "parents": [
        "50928d5e35f75fac28ff275294345f950940902a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 04:27:29 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Feb 16 05:04:00 2026"
      },
      "message": "html: reformat with prettier\n\nUse the Google standard settings.\n\nChange-Id: If4f7d1e791957339c13272ddaa54548bd3553156\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7511661\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "50928d5e35f75fac28ff275294345f950940902a",
      "tree": "c244b496d9881d9baed6273cfe0003d413e3fc4e",
      "parents": [
        "e1bdaf22584415cd72f246f7aab32ea9cc50ff00"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Feb 09 16:01:58 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Feb 09 22:59:00 2026"
      },
      "message": "nassh: plugin: update to 0.75\n\nChange-Id: I4c5c0ee5a8a351474acacd429aa9b3e121bf4697\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7558772\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "e1bdaf22584415cd72f246f7aab32ea9cc50ff00",
      "tree": "0cf21e90f420246f7b21e1f895d4e07019f3b781",
      "parents": [
        "34241f0b551e1a2f169652e864fd42b477f1ad03"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 06:28:13 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Feb 08 22:30:03 2026"
      },
      "message": "nassh: release 0.75\n\nChange-Id: If12e1a0e670b260e3437aa0d7f85083812b9b3b0\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7541115\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "34241f0b551e1a2f169652e864fd42b477f1ad03",
      "tree": "1d812e00624c2857584581e6023830496d1c6f6d",
      "parents": [
        "926d193942e90c5365c39c65fbaf858227619077"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Feb 06 15:09:28 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Feb 08 19:56:06 2026"
      },
      "message": "Revert \"nassh: command: enable automatic newlines\"\n\nThis reverts commit 9ecc11bc3082e432a5a98a812d9493838a6674a1.\n\nReason for revert: Breaking some applications using the secondary\nscreen unless they run `reset` first.\n\nOriginal change\u0027s description:\n\u003e nassh: command: enable automatic newlines\n\u003e\n\u003e NaCl\u0027s tty implementation would handle this at a lower level and have\n\u003e it enabled by default.  We aren\u0027t doing that in wassh currently.  We\n\u003e can hack it up slightly in nassh by turning it on in hterm during init.\n\u003e This might not be the best/correct way to handle this, but it seems to\n\u003e get the job done, so let\u0027s unblock users for now.\n\u003e\n\u003e Bug: b/386855226\n\u003e Change-Id: I8c1c26f7d39410d5a740c5a76f47cb1f319626e4\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7499442\n\u003e Tested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n\u003e Reviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n\nBug: b/386855226\nBug: b/480963281\nChange-Id: I6b621e5d91c4ebfe041e92a72d22789834c993c1\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7548899\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "926d193942e90c5365c39c65fbaf858227619077",
      "tree": "1c60f68c89a5172b4c3dd826cba703ef2b75243f",
      "parents": [
        "82464845b5aeb741f7502198a73f354213149aac"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Feb 04 11:21:36 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Feb 08 19:56:04 2026"
      },
      "message": "wassh: docs: refresh a bit\n\nChange-Id: I89034160177a518b227e147ea5de5b6c2d312ad1\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7545277\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "82464845b5aeb741f7502198a73f354213149aac",
      "tree": "db4e555fab89121f23ed85aeca9ee13f0c18dd05",
      "parents": [
        "bd949da24c4b31e3207098b5154f556ef1e4be7b"
      ],
      "author": {
        "name": "James Zhang",
        "email": "yzhangad@google.com",
        "time": "Fri Jan 30 19:11:12 2026"
      },
      "committer": {
        "name": "James Zhang",
        "email": "yzhangad@google.com",
        "time": "Fri Feb 06 21:19:36 2026"
      },
      "message": "ssh_client: openssh: Fix webauthn sk ecdsa signature support in openssh-10.2\n\nChange-Id: I0e37413db3bc85633a7c83a2a2dc05f06165b9db\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7533679\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nReviewed-by: Damien Miller \u003cdjm@google.com\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "bd949da24c4b31e3207098b5154f556ef1e4be7b",
      "tree": "68fb8f0d811a08bb7f03c2378fdf9c7e23e07c08",
      "parents": [
        "a88b92d73110841a2daf0359713338266a4578e6"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 06:31:46 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 12:23:09 2026"
      },
      "message": "wassh: drop more IP ssh agent\n\nThe rest of this logic has already been deleted, but this was missed.\n\nBug: b/40825936\nChange-Id: If9216bd2f37a890cd54558a5b846b9fb2b4bac4f\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7541116\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "a88b92d73110841a2daf0359713338266a4578e6",
      "tree": "bdd67ab96550801b4a2be1c5b553d50a0d9a44d4",
      "parents": [
        "634b37b48fb8bbcf2655b4819655242fbb4ff06c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 06:27:05 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 12:23:05 2026"
      },
      "message": "nassh: plugin: update to 0.74\n\nChange-Id: I69b31ac1b1ab1a6b70dbc594040325da8e0954f4\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7541114\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "634b37b48fb8bbcf2655b4819655242fbb4ff06c",
      "tree": "e483b6a32dd2df7972b156fb1c8759b3cf75bfdc",
      "parents": [
        "b5d2c316942bb87a6e7f960a18b8b646a077c7bd"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 06:00:39 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 12:22:56 2026"
      },
      "message": "ssh_client: wassh-libc-sup: getaddrinfo: return IPv6 \u0026 IPv4 results for localhost\n\nWhen handling AF_UNSPEC on localhost, don\u0027t return only IPv6 results.\nSSH will use these details to determine which ports to bind, and since\nlocalhost has both IPv4 \u0026 IPv6 addresses, make sure we return both so\nSSH will bind both.\n\nBug: b/480787773\nChange-Id: I51fc76e551263b19053c5da23978dd19df6a0ea7\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7541113\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "b5d2c316942bb87a6e7f960a18b8b646a077c7bd",
      "tree": "8b127ae6e6c555f89992b995917b2001dc494e20",
      "parents": [
        "75c47aec1c3e7342703b6d30f8a3b9a966aa614e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 05:54:56 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 12:22:47 2026"
      },
      "message": "wassh: sockets: plumb IPV6_V6ONLY support through direct sockets\n\nSince the direct sockets APIs support the IPv6 only setting, plumb\nthrough support for it.\n\nBug: b/480787773\nChange-Id: I8497c3918c96c2e620cd9c0a7923000a09e705d3\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7540937\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "75c47aec1c3e7342703b6d30f8a3b9a966aa614e",
      "tree": "8ccc11f57b5a0629ae9143038cd536fb07861e3f",
      "parents": [
        "755256647f5cd8b1070ab99a4db4d1886f4da9eb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 27 08:37:30 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Feb 03 12:22:07 2026"
      },
      "message": "nassh: prefs: translate the Reset button\n\nChange-Id: Ide13d1836fe71382ed477bdc2dd343d80ce9a39d\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7517908\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "755256647f5cd8b1070ab99a4db4d1886f4da9eb",
      "tree": "e11c770ec62be6b242eba93c1b102f09a1567f70",
      "parents": [
        "0ac5b1b8c3eae400d468a06d2c9a09f7875460cd"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 05:26:04 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 30 01:04:57 2026"
      },
      "message": "wassh: udp: fix automatic binding for IPv6\n\nWe were always using the IPv4 wildcard address (0.0.0.0) even when\nthe socket was IPv6.  Dynamically pick the address instead.\n\nBug: b/479480718\nChange-Id: Ib8d6384987cce03bfbe3960a8aae6b62d663e7ed\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7529396\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "0ac5b1b8c3eae400d468a06d2c9a09f7875460cd",
      "tree": "8c11c172234aa0e1c72c88a590c22df6dbd1ce71",
      "parents": [
        "5e01033f9e88939167ade78435975bf7e6cd1a26"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 15:49:15 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 30 01:04:47 2026"
      },
      "message": "eslint: increase language to 2021\n\nWe already updated docs \u0026 other tools like closure-compiler,\nbut this was missed.\n\nChange-Id: I105a38c46ac2d853ffd229a09aa2959a82317cab\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7532909\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "5e01033f9e88939167ade78435975bf7e6cd1a26",
      "tree": "695069ed25102664895d9bd3460783975396add7",
      "parents": [
        "9d871cc6ebc6b084c5357eca676979a0418d5060"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 05:28:00 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 15:59:16 2026"
      },
      "message": "nassh: mosh: use -s when starting up the server\n\nTell mosh to use the active ssh connection info to bind its own\nsettings.  Otherwise when using a multihome system, it defaults\nto IPv4\u0027s 0.0.0.0 which is not reachable over IPv6.\n\nBug: b/479480718\nChange-Id: Ie169a098ed5dae21b2bc48508d292993f86b0d7b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7529397\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "9d871cc6ebc6b084c5357eca676979a0418d5060",
      "tree": "546f85b173ea9d7a32be30ac189e29d86741acd5",
      "parents": [
        "6605a8ab248f9c6b97905302d77801f887f09948"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 00:56:12 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 29 15:38:30 2026"
      },
      "message": "wassh: sockets: fix IPv6 address loading\n\nThe Uint16Array construction was broken because of a typo -- the property\nis \"byteOffset\", not \"bytesOffset\".  Fixing that doesn\u0027t fix loading of\nthe address though because of endianness.  Uint16Array uses the native\nendianness of the host system.  On x86 systems, that\u0027s little endian.\nBut network addresses are encoded using big endian.  Unfortunately the\nTypedArray APIs are very thing wrappers and don\u0027t handle endianness\nthemselves.  Which means we have to go through DataView\u0027s getUint16.\n\nTested with mosh connecting to an IPv6 address as it uses GAI APIs and\nthen attempts to connect via UDP.\n\nBug: b/479480718\nChange-Id: I1ef5b52eaf4e019a2fc6c9be139497244517fafe\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7530535\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "6605a8ab248f9c6b97905302d77801f887f09948",
      "tree": "8a43c8f2116e487b97fc1be804cc85e3cc12c13d",
      "parents": [
        "387364d5a1938f0e6d424b4d6e6477fd270a7398"
      ],
      "author": {
        "name": "Jimmy Chang",
        "email": "jimmychang@google.com",
        "time": "Wed Jan 28 20:42:12 2026"
      },
      "committer": {
        "name": "Jimmy Chang",
        "email": "jimmychang@google.com",
        "time": "Wed Jan 28 21:40:56 2026"
      },
      "message": "nassh: google: Route `.mandiant-aws-prod.s.off.goog` to use SUP SSH Relay.\n\nBug: 434243578\nChange-Id: I08935c9fc78f92a8079516fcbd2df7463451689b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7528714\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "387364d5a1938f0e6d424b4d6e6477fd270a7398",
      "tree": "bd185391e2ab0f6f798d0453457d31d45b08a3fb",
      "parents": [
        "32cbb7a1cea8dc1c20aa0ff6f47e42ba69c3ba21"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 27 08:05:18 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 27 15:09:51 2026"
      },
      "message": "ssh_client: mosh: handle network retries w/out exceptions\n\nmosh signals transient network errors for retrying via exceptions.\nSince WASI doesn\u0027t support them currently, rework the recv_one\nfunction to use optional returns instead to signal transient errors.\n\nBug: b/478689412\nChange-Id: I9bdd6e0e7b6c31919e20bcaf9006bad9d82cec00\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7519328\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "32cbb7a1cea8dc1c20aa0ff6f47e42ba69c3ba21",
      "tree": "cc4a0a194d28e30fd93642c76e7afd3837a9f105",
      "parents": [
        "d3c1092d34b7a9ca4246bc10dca30375a94044b4"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 14:45:03 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 27 15:09:48 2026"
      },
      "message": "lint: robustify checks a bit\n\nCatch more inputs and correctly diagnosis them rather than crash.\n\nChange-Id: I17373c630747368be744bbea309b57860dd789d5\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7514480\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "d3c1092d34b7a9ca4246bc10dca30375a94044b4",
      "tree": "e881e853cec8e0c5946c9fa03ce71a1501018ad6",
      "parents": [
        "a554b1674d510b9ba8a6a7defa00a4ca8907be35"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 13 00:47:53 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 17:25:10 2026"
      },
      "message": "nassh: release 0.74\n\nChange-Id: I9b57773243b75a07b117356de550ce4708c43876\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7453857\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "a554b1674d510b9ba8a6a7defa00a4ca8907be35",
      "tree": "081a075cf229844ec07ab4f4e7a1f9ae4af3bf16",
      "parents": [
        "71cfd273ef77c4e5dda896f3308f84e2c804dbfb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 04:09:24 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 17:15:09 2026"
      },
      "message": "hterm: fix test page syntax error\n\nMissing ; on the html entity.\n\nChange-Id: I7fe55ad298521450dbdced87a4d7412fba117c57\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515247\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "71cfd273ef77c4e5dda896f3308f84e2c804dbfb",
      "tree": "7263b2021003ab72c87522a7da96c51f99cb97ba",
      "parents": [
        "af3a931dfd1e8fbf83e76ccabb6b8687456e2118"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 07:02:30 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 26 17:15:05 2026"
      },
      "message": "nassh: prefs: inline setup function\n\nThe nested function was needed when we had more callback APIs, but\nsince those have migrated to async, we can inline this.\n\nChange-Id: I6078437beb096853e980af3b5c985996b904a1a8\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7514233\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "af3a931dfd1e8fbf83e76ccabb6b8687456e2118",
      "tree": "474417254e4de7d17b2e0c8d31e95ff7e5f96b51",
      "parents": [
        "18c3956dbaadee050ef689516e5fff29dd418a63"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 08:27:51 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:33:26 2026"
      },
      "message": "nassh: prefs: display help text all the time\n\nThe tooltip approach doesn\u0027t really work when the browser truncates\nones that are \"too long\".  CrOS at least switched to doing this some\ntime ago, so now many help descriptions are unreadable.\n\nI tried recreating the tooltip approach with a dynamic element, but\nthe UX isn\u0027t that great: you can\u0027t search or copy text, and it makes\nthe view area a bit too dynamic as things pop in \u0026 out, and the logic\nto make it work gets complicated quickly.\n\nDisplay the per-option help text under each one all the time.\n\nChange-Id: I9e7e8460bda1e7f53ae807a1da99b82164292e96\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7514479\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "18c3956dbaadee050ef689516e5fff29dd418a63",
      "tree": "38756a9512d4a429ff29bf1cc9ea23ef7a7e8975",
      "parents": [
        "590a268ea076019d3792c533a17b231eb56ac0ba"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 06:01:31 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:33:24 2026"
      },
      "message": "ssh_client: libssh: disable threading\n\nNewer wasi-sdk enables pthread emulation by default, except it doesn\u0027t\ninclude all the APIs that libssh uses, so it fails to build.  Since we\naren\u0027t running multithreaded libssh currently, disable it.\n\nChange-Id: I5825b2f8944af5111d77521f7c80c5a3a4d6a35b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515166\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "590a268ea076019d3792c533a17b231eb56ac0ba",
      "tree": "e56ecfdee5f3d7d2bc961e2159681d433c9c959a",
      "parents": [
        "ae7e202d31227d9b1506f9a4e6accf4feff11571"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 05:18:16 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:33:22 2026"
      },
      "message": "nassh: nasftp: convet ProgressBar to class\n\nChange-Id: Ie94e43fa6fd68698e75a08ab72a0cc5fb1e48df2\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515292\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "ae7e202d31227d9b1506f9a4e6accf4feff11571",
      "tree": "77ab20c60bd512ce02bf7836cb917b83e60e8ac8",
      "parents": [
        "a2f5a67378a14587c972667cf414b3cd81adcf0e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 24 13:01:27 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:33:18 2026"
      },
      "message": "nassh: fsp: add foreground mount support\n\nSince the background page can\u0027t support the required APIs directly\nunder MV3, port the logic from Terminal over to run mounts in the\nforeground.\n\nBug: b/287727650\nChange-Id: I2f91d5cf69cc244fa1a5e7f80738bdea741c612e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7509819\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "a2f5a67378a14587c972667cf414b3cd81adcf0e",
      "tree": "819aa9597de35587aa21f965f9a71a19daea577e",
      "parents": [
        "fdb6520c035ffc3e106d6b137d2fc7f6430edfe1"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 01 06:22:01 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:33:15 2026"
      },
      "message": "libdot: MessageManager: convert to class\n\nTo aid in externs generation, convert this to an ES6 class.  It makes\nthe code more readable too, and removes the last pre-ES6 class code in\nthe libdot project.\n\nChange-Id: Ie2cc2342b7b7178cbc10e403ea0f53495bb55580\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515165\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "fdb6520c035ffc3e106d6b137d2fc7f6430edfe1",
      "tree": "e08fc4b8cd2d6d995549ea7365efc454eabce8c5",
      "parents": [
        "1981a22e8ca2f914623017d0b8ff5c667874cc70"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Dec 22 04:50:15 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:32:31 2026"
      },
      "message": "libdot: format: integrate clang-format for C/C++ checking\n\nChange-Id: I3e3bb922e7cddcafa626daf00c30c1dd14403b7a\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515296\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "1981a22e8ca2f914623017d0b8ff5c667874cc70",
      "tree": "e0277528cea01e617441fd414bdb98fd0a326eca",
      "parents": [
        "b2c64285f801f7327c138b7761b5ca5b6139fe5e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Dec 19 00:55:20 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:32:25 2026"
      },
      "message": "reformat C/C++\n\nUse the new clang-format tool settings to autoformat all of our C\n\u0026 C++ code.  This will let us start enforcing it in the CI.\n\nChange-Id: Iafe9fd6f8446e5c80ec42b07dac45d7c13ec5d5f\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515295\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "b2c64285f801f7327c138b7761b5ca5b6139fe5e",
      "tree": "eed91b5e942d2a73d2bd0cc96ea5339886bc1a8b",
      "parents": [
        "a62e0d808cfa90774f151f14b34ee4c7ede15f39"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Dec 05 04:23:47 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:32:20 2026"
      },
      "message": "clang-format: add some updates from Chromium \u0026 CrOS\n\nChange-Id: Icfa61802af068b090a588806fb6eca8ffcac3fd3\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515294\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "a62e0d808cfa90774f151f14b34ee4c7ede15f39",
      "tree": "65843f2a5b7345655287678f104206b3147112eb",
      "parents": [
        "4baa886dd128021db35d10649f34c9da50076008"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Dec 08 06:33:47 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 18:32:13 2026"
      },
      "message": "libdot: clang-format: new wrapper for tool\n\nThis is used to format C \u0026 C++ code.  We can also use it for JS.\n\nChange-Id: Iba88c547c6d5ad5b56ea244b9366176ffb544b07\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7515293\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "4baa886dd128021db35d10649f34c9da50076008",
      "tree": "34e4700f56be8604824b8eb238edee32d890dd44",
      "parents": [
        "ddea6758bd8b22795ca8b73a3a19867ca84181e4"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 05 01:47:33 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 25 08:40:04 2026"
      },
      "message": "terminal: mkdeps: leave symlinks in place\n\nThese tools are not parallel safe -- if you run load_tests and lint at\nthe sametime, the links will get removed before the other finishes, and\nit ends up failing in a confusing way.  Or the symlinks don\u0027t get fully\nremoved.\n\nDepending on how the tools are interrupted, symlinks can get orphaned,\nand if nassh itself removes files, inks stay orphaned.\n\nChange the code to symlink all the files and leave them in place.  If\na symlink already exists, ignore it.  If a symlink is broken, delete it.\n\nThis also helps with testing the code in-situ without having to rebuild\ndeps all the time.\n\nChange-Id: I3b5535c9cbd6a8dfb21bafb785dee51e416d83f2\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7486464\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "ddea6758bd8b22795ca8b73a3a19867ca84181e4",
      "tree": "141a8afeb39daae454462ad589d7dd92840d0158",
      "parents": [
        "16cea8d19a070295755fba7e102fc2883f84a88e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Sep 01 02:08:35 2024"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 24 18:43:24 2026"
      },
      "message": "nassh: mosh: integrate new WASM client\n\nBug: b/40831504\nChange-Id: I591918678d490b1636f87e00e9712daae2e2e1b0\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494015\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "16cea8d19a070295755fba7e102fc2883f84a88e",
      "tree": "08a3b4ac54710caabb8774cc03ff4780b35acf09",
      "parents": [
        "248925f4b109836f10b7440582cb9c25cfe2bf6e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 23 18:44:32 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 24 18:06:45 2026"
      },
      "message": "Revert \"terminal: fix a bug that terminal-ssh cannot close the tab\"\n\nThis reverts commit ddfcf970c9adc893a96896ee0a4e5721819bb22f.\n\nReason for revert: This was working around behavior in nassh with\nhow it managed window.location, but nassh should be fixed now, so\nwe don\u0027t need this workaround anymore.\n\nOriginal change\u0027s description:\n\u003e terminal: fix a bug that terminal-ssh cannot close the tab\n\u003e\n\u003e Change-Id: I70284b0c1a38f51523bb136c6f0ac71ec4ce60a2\n\u003e Reviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/3466407\n\u003e Reviewed-by: Emil Mikulic \u003ceasy@google.com\u003e\n\u003e Tested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n\nChange-Id: Ibe36e5c8c2151685e3594816716bb8a28bdeb434\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7509298\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "248925f4b109836f10b7440582cb9c25cfe2bf6e",
      "tree": "d9dbeaa5cdb14cf8504e18a22fe30443ad9d6200",
      "parents": [
        "428172814572efa13316df282fe8cb8c4a70f084"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Nov 08 03:38:29 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 24 18:06:08 2026"
      },
      "message": "nassh: connect: move app setup to command instance\n\nCurrently the connect dialog passes along the app type to the command\ninstance via session storage.  This is a bit wonky, and it means you\ncan\u0027t pin the app in the connection and then load that connection via\nother means (e.g. bookmarks) -- it\u0027ll always default to ssh.  If we\nmove this logic out of the connect dialog, it makes things simpler and\neasier to reason about (he connect dialog is purely about choosing a\nsaved connection profile), and avoids session indirection weirdness.\n\nChange-Id: I83e33c5ce11582634257e7c832ef62cc56049295\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494014\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "428172814572efa13316df282fe8cb8c4a70f084",
      "tree": "3276515183c9667ce51a1d7e0fdbea3180f1cb8a",
      "parents": [
        "a32d49dde86cdc681de44ae97683f54ddb38960a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Nov 07 16:39:56 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 23 15:59:07 2026"
      },
      "message": "nassh: connect: rework app UI selection\n\nRather than control which app to run by an ever increasing set of\nbuttons at the bottom, turn it into a drop down list.  This has the\nside-effect of making saved connections per-app, but this is a good\nthing as it\u0027ll allow people to leverage these different modes via\nthe extension popup too whereas today they can only start ssh.  It\nalso avoids us having to filter ssh options between different modes\nand try to guess which are appropriate.  For example, if someone\nhas an ssh connection with port forwarding, do they want to enable\nthose when connecting via sftp?\n\nBug: b/40831504\nChange-Id: I19d9c284f2eb43ae50b77d089f145e385e886830\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494013\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "a32d49dde86cdc681de44ae97683f54ddb38960a",
      "tree": "2a4b9320c6384bd9998ebecc372de13097b48ac1",
      "parents": [
        "9be50587d8f7bc7bbf48d78c23344ebad94365ff"
      ],
      "author": {
        "name": "Dmitry Sherstoboev",
        "email": "sdmitry@google.com",
        "time": "Thu Jan 22 08:31:53 2026"
      },
      "committer": {
        "name": "Dmitry Sherstoboev",
        "email": "sdmitry@google.com",
        "time": "Fri Jan 23 02:51:35 2026"
      },
      "message": "terminal: tmux: Use refresh-client for resizing tmux (3.4+) window.\n\nThis change updates the tmux controller to use \u0027refresh-client -C\u0027\ncommand instead of \u0027resize-window\u0027 when the detected tmux version is 3.4\nor greater. This addresses an issue where \u0027resize-window\u0027 sets the\nwindow size option to manual, preventing automatic resizing.\n\nManual testing details:\n* Create docker container with tmux installed.\n* Follow go/cros-terminal-on-glinux to run cros with terminal.\n* Connect to the docker container from cros.\n* Log incoming control commands, observe `refresh-client`:\n```shell\ndisplay-message -p \"#{version}\"\nrefresh-client -f wait-exit\nlist-windows -F \"#{window_id} #{window_layout}\"\nrefresh-client -C @1:169x62\nselect-window -t @1\ncapture-pane -peNJCt %1 -S -1000\nlist-panes -t %1 -F \u0027#{cursor_x} #{cursor_y} #{pane_title}\u0027\ncapture-pane -pPCt %1\nrefresh-client -C @1:129x47\nselect-window -t @1\n```\n\nBug: b/232042907\nTest: terminal/bin/load_tests tmux_tests.js and manual testing.\nChange-Id: I62265233732e2085bf51c5237708a6322761e7ad\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7508887\nReviewed-by: Mike Frysinger \u003cvapier@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "9be50587d8f7bc7bbf48d78c23344ebad94365ff",
      "tree": "751e5c7d6f08e396df8c7965a0aa23e39fe89fd0",
      "parents": [
        "d09088661409433a073f64eefd377997351d766d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 21 03:04:07 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 22 16:30:38 2026"
      },
      "message": "nassh: sockets: enable direct sockets in the dev version\n\nThis API should be stable enough now for us to try it out in the dev\nversion.  Add some additional checks to make sure the APIs work since\nwe still support versions back to Chrome 108 which predates these.\n\nBug: b/277392663\nChange-Id: If8e8fb993953effb3ea390027e062319987a29b5\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7499837\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "d09088661409433a073f64eefd377997351d766d",
      "tree": "309e9f28b32ea7e89d56ec6d0aca5a916789bc65",
      "parents": [
        "9ecc11bc3082e432a5a98a812d9493838a6674a1"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Nov 24 20:09:22 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 22 16:30:33 2026"
      },
      "message": "nassh: subproc: add support for capturing stdout\n\nFor mosh integration, we need to run ssh with a remote command \u0026 capture\nthe output (the mosh server settings).  It isn\u0027t a long lived command, so\nadd support for capturing the output to process further.\n\nBug: b/40831504\nChange-Id: Ifb45d567599c97439685b0ace5d13ba5187a3114\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494012\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "9ecc11bc3082e432a5a98a812d9493838a6674a1",
      "tree": "fc8996bd1aeb11b47624e4816d40fd477521f96a",
      "parents": [
        "da3ee78fc1ab7dcde7773230a5f1e4b0f9037f57"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 21 05:28:30 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 21 15:26:26 2026"
      },
      "message": "nassh: command: enable automatic newlines\n\nNaCl\u0027s tty implementation would handle this at a lower level and have\nit enabled by default.  We aren\u0027t doing that in wassh currently.  We\ncan hack it up slightly in nassh by turning it on in hterm during init.\nThis might not be the best/correct way to handle this, but it seems to\nget the job done, so let\u0027s unblock users for now.\n\nBug: b/386855226\nChange-Id: I8c1c26f7d39410d5a740c5a76f47cb1f319626e4\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7499442\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "da3ee78fc1ab7dcde7773230a5f1e4b0f9037f57",
      "tree": "dd153b1024088011d96431f3fed09a1d65563c31",
      "parents": [
        "8ab33e6e8c8a18a301e8e0e5fd4010d61b35bfbf"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 16:47:38 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 21 15:26:19 2026"
      },
      "message": "nassh: gsc: convert StatusBytes to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I30bc671ef44a49fc1d4fa3796030f8737558d228\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456056\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "8ab33e6e8c8a18a301e8e0e5fd4010d61b35bfbf",
      "tree": "5a469ba461181406f55dd1dfa14a06eb3c1c000f",
      "parents": [
        "c7f0d29ce8e6426ec00294e365b47e79705ec0e5"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Nov 22 04:39:20 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Wed Jan 21 15:26:02 2026"
      },
      "message": "nassh: subproc: split ssh-specific logic out\n\nThis will make it easier to add more non-ssh commands without fighting\nall of the ssh-specific logic.\n\nBug: b/40831504\nChange-Id: Id7fc86e63d5fea0db42405dddd4035f3722b9dad\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494011\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "c7f0d29ce8e6426ec00294e365b47e79705ec0e5",
      "tree": "7c31ad7eea1a63859be1e8ef54a40132b02f1221",
      "parents": [
        "c684f6e565366d0bacfc361878f8397d9cf71020"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 16:44:39 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 15:44:34 2026"
      },
      "message": "nassh: gsc: convert CommandAPDU to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I85bd12af80fe409164cf43ae5e13a5af9df173b2\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456055\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "c684f6e565366d0bacfc361878f8397d9cf71020",
      "tree": "a1f4503a58798af933afa285a7e0e79b38a81126",
      "parents": [
        "879f45fd17c8c9ee2ece695b386fbfd95d4c04f8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 05:10:07 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 15:44:14 2026"
      },
      "message": "ssh_client: wassh-libc-sup: getaddrinfo: include ai_hints in log output too\n\nWhile tracking down misbehavior, it helps to decode the structure.\n\nBug: b/40831504\nChange-Id: Idb6435ad1238025efe301af9c255e86a32aa220a\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7495313\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "879f45fd17c8c9ee2ece695b386fbfd95d4c04f8",
      "tree": "147dd48096fbdeb3a89b48e3c077d91b84034ac1",
      "parents": [
        "5f441ada2c76aba66ed66274213d3a814738bc66"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 04:04:40 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 15:44:04 2026"
      },
      "message": "ssh_client: mosh: hack exceptions to log+abort\n\nSince WASI doesn\u0027t support C++ exceptions, we need to manually log\noutput \u0026 abort ourselves.  Otherwise the runtime fails immediately\nwith only the basic error message:\n  C++ (...) exceptions are disabled.\n\nConsidering we\u0027re still actively developing mosh (and the APIs under\nit), let\u0027s assume we\u0027ll run into these errors for a while, and need\nto get some level of detail out from users.\n\nBug: b/40831504\nChange-Id: I54e5864348aced3e5b1047a3dcac7a6c491da0c8\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7493805\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "5f441ada2c76aba66ed66274213d3a814738bc66",
      "tree": "f92c92f30bd71cfea5c51b3bbf7d3b73e80e9d56",
      "parents": [
        "8deb43dcf3606ec2300480306105584a3b0b933e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 16:41:08 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 15:43:56 2026"
      },
      "message": "nassh: agent: rewrite as ES6 class\n\nNow that all users of this have switched to ES6, we can migrate the\nbase class over now too.\n\nChange-Id: I19779e3bbccbeb97eac5babc4b4bd410285d67bf\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456054\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "8deb43dcf3606ec2300480306105584a3b0b933e",
      "tree": "01cddc823c02810580448c51ad5a71045c54df24",
      "parents": [
        "7d357c4116643c465e4ce972f2750c5914236dbd"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Nov 20 01:21:28 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 15:43:48 2026"
      },
      "message": "nassh: subproc: rename \"plugin\" to \"subproc\"\n\nThe \"plugin\" nomenclature is tied to the HTML runtime and how NaCl was\nan \u003cembed\u003e element added to the DOM with a src attribute pointing to the\nplugin manifest.  Now that NaCl is gone, and we\u0027re centered around WASM\nwhich only uses JS APIs, keeping \"plugin\" is mismatched with the WASI\nnaming conventions.  The WJB \u0026 wassh layers already use \"program\" to\nrepresent a compiled program, and on top of that is a \"process\" that\nrepresents a runtime.  The JS world often uses \"app\" for a single web\npage or major UI element, so that term is out.  Let\u0027s use \"subproc\"\nas a low-level term akin to the Python library.  This will hold very\nbasic logic on top of specific programs that we want to run which\nshould make it easier to integrate more programs (e.g. mosh) into the\nproject without blowing out existing modules even more.\n\nBug: b/40831504\nChange-Id: I0f624a12fb29a5211ccaf577e67d320cba262c63\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7494010\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "7d357c4116643c465e4ce972f2750c5914236dbd",
      "tree": "ca6e389b8a689bcfc01e94c140913221ef81602a",
      "parents": [
        "206a93e8294797780d508ba0588ae4f81738e5da"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 05:32:41 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 02:41:40 2026"
      },
      "message": "ssh_client: increase default max memory significantly\n\nThe default max memory under WASM is set to the minimum needed by the\nprogram (rounded up to 64KiB page size) which is perfectly reasonable.\nAt runtime, if more memory is needed (e.g. by malloc), then wasi-libc\ngrows it automatically.  However, C++\u0027s allocator handles OOM with\nexceptions, and those aren\u0027t supported in WASI-SDK currently, which\nmeans C++ programs crash fairly quickly.  This includes mosh.\n\nLet\u0027s set the default max memory to a much larger value so C++ will\n\"just work\".  This shouldn\u0027t negatively affect C programs as this is\nallocated using virtual memory.\n\nBug: b/40831504\nChange-Id: Ic1b06b544929f45142960b05e893970d8a7dd71f\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7491717\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "206a93e8294797780d508ba0588ae4f81738e5da",
      "tree": "8f1e2e8095f91a70142fd70bd5ed2383dacbae00",
      "parents": [
        "fc3b96343c280b78a65c0596154f834bee4a1a77"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 02:38:31 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 20 02:40:41 2026"
      },
      "message": "wassh: sockets: add UDPSockets implementation\n\nChange-Id: I380112b51b6918c4259fe1639d9b44996231ff63\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7490143\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "fc3b96343c280b78a65c0596154f834bee4a1a77",
      "tree": "aef13ccb18c860bfff5519f2fdfb0a07a9018298",
      "parents": [
        "1b2ff70ce8bf29bf78a16aa0cc008479bbf9e0f1"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 06:03:25 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:25:19 2026"
      },
      "message": "ssh_client: bazel: drop unused package\n\nWe don\u0027t include mosh-chrome anymore, and that was the only thing\nusing this package.  We might use bazel in the future, but if we\ndo, it\u0027ll be a much newer version.\n\nChange-Id: I503fa10d00422dbacfef501ff6fd01ee7574b09b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7490062\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "1b2ff70ce8bf29bf78a16aa0cc008479bbf9e0f1",
      "tree": "cba7e494ebe64633fa52f135dfaddcf23610129e",
      "parents": [
        "1a6b066faf7039c49e09eb862c562fac449aa515"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 05:56:18 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:25:16 2026"
      },
      "message": "ssh_client: wassh-libc-sup: run preopens before creating sockets\n\nIf a program creates a socket before it tries to use the filesystem,\nWASI won\u0027t run its preopen scanning logic.  Since wassh will create a\nnew file descriptor right after the preopen fd\u0027s (as that is the next\navailable one), when the preopen code does eventually run, it\u0027ll fail\nwhen it finds a non-preopen fd.  So force the scanning code to run if\nit hasn\u0027t already.\n\nBug: b/40831504\nChange-Id: I01133abfbf4be5480c7167af0687eb4b4cf4ff4d\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7489663\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "1a6b066faf7039c49e09eb862c562fac449aa515",
      "tree": "9f432aea318038f5eeb1edba2ee80b7485259101",
      "parents": [
        "a78d21eda6b3c8e9e98df5b9c2496467372d73fa"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 04:42:16 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:25:12 2026"
      },
      "message": "ssh_client: wassh-libc-sup: tweak exceptions error messages slightly\n\nAdd slightly different error messages depending on the failure.  This\ncan help differentiate between custom exceptions being thrown by the\nruntime and running out of memory.\n\nBug: b/40831504\nChange-Id: I223f1fef44fb49feb1e2fc45b55748a0700e2999\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7491716\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "a78d21eda6b3c8e9e98df5b9c2496467372d73fa",
      "tree": "7882e35b005bbd8193243c4e809a0d325cca0530",
      "parents": [
        "bf6d5e762bb8ceb6b370232c9d08a45aa5fda210"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 04:40:00 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:25:04 2026"
      },
      "message": "wassh: sockets: stub out IP_MTU_DISCOVER for UDP sockets\n\nMosh will attempt to set this field if the runtime defines it, and\nthen abort if it fails.  Since WASI defines it for us, we have to\nignore it at runtime.\n\nBug: b/40831504\nChange-Id: I957d4d11e1d42be6471324cb63e08e2ebd0876f1\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7489661\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "bf6d5e762bb8ceb6b370232c9d08a45aa5fda210",
      "tree": "72b9d86a6353e687ca0b02722428a3dd34238583",
      "parents": [
        "0c6f67b21e3222047e6454550299346923f9640d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 04:30:38 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:24:46 2026"
      },
      "message": "ssh_client: mosh: fix random reading\n\nWe don\u0027t implement the /dev/urandom pseudo file, so simplify mosh to\nread via C library calls instead.\n\nBug: b/40831504\nChange-Id: If310d9ac5000bd3d78d8ef98a13af30fd8ceb93c\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7489660\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "0c6f67b21e3222047e6454550299346923f9640d",
      "tree": "9cb2bdd1b7df1bd9122c35f2c20858ee92673d5b",
      "parents": [
        "0f3517dbee4a8642f47dd11251d9605d358703c3"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 04:19:28 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:24:32 2026"
      },
      "message": "wasi-js-bindings: random_get: handle views of SharedArrayBuffer\n\nIf the input buffer is an array view, make sure we check the underlying\nbuffer instead of the view itself.\n\nBug: b/40831504\nChange-Id: If427682818f159f83b8af4aba09d825763716f38\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7491715\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "0f3517dbee4a8642f47dd11251d9605d358703c3",
      "tree": "0970590dd2b2e52e340e8f9eacaa18231a72dba6",
      "parents": [
        "c305e0912a69d0d738b52f78c274c3511c6f4924"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 16:40:56 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:23:52 2026"
      },
      "message": "nassh: gsc: convert to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I68a616d320ceb3f18718782121367a83237cf36a\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456053\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "c305e0912a69d0d738b52f78c274c3511c6f4924",
      "tree": "4ae31628f60aa6eee08864bc1df5c7231041cb8c",
      "parents": [
        "c658f29bb68f48edd94303256f8eed7e6666131d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 09 05:02:08 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:23:05 2026"
      },
      "message": "ssh_client: openssh: add helper for building from latest git\n\nChange-Id: I73664b2c1702f84421d7082eacfaa8d3c03fd65b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7420689\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "c658f29bb68f48edd94303256f8eed7e6666131d",
      "tree": "1a6e9f1b2aa1fa5fa0df3bb3b14f1a52cd64a530",
      "parents": [
        "23c4f8df1a1c13bd2178f9cd3b536f17b3fc0172"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 04:24:50 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:22:32 2026"
      },
      "message": "libdot: mm: switch XMLHttpRequest to fetch\n\nThis makes the code much simpler \u0026 cleaner.  Add tests while here.\n\nChange-Id: I9331ff3df0d1cca99e84a9d3e303274330500d8d\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7490141\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "23c4f8df1a1c13bd2178f9cd3b536f17b3fc0172",
      "tree": "193f47c44e70e111b1cbe526071f2f81a6ad98b1",
      "parents": [
        "1bdf04036b906c653375dfc1c47e511a544dbe26"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 03:58:43 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:22:27 2026"
      },
      "message": "libdot: storage: chrome: add write retries to removeItem(s)\n\nThese APIs count against the write quota too.\n\nBug: b/40874862\nChange-Id: I82e17c3f359cf9717661b31e3eaf3b3d1766de34\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7475471\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "1bdf04036b906c653375dfc1c47e511a544dbe26",
      "tree": "e73056c86752a87fdcfd066a645a02d5a3b851af",
      "parents": [
        "a095903721e8673b8196f4693135892bbdbed9d5"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Nov 23 07:30:52 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 18:22:19 2026"
      },
      "message": "nassh: stream: rewrite as ES6 class\n\nNow that all users of this have switched to ES6, we can migrate the\nbase class over now too.\n\nChange-Id: Id5a59d8b95f4ea065a1340da4372d48290c3b106\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7201905\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "a095903721e8673b8196f4693135892bbdbed9d5",
      "tree": "a9ac566c55d6ee2b4215308736799f1ded5aa683",
      "parents": [
        "a76915a38e48dff4eb57aa71f971ac6d40438188"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 05:39:49 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 02:53:28 2026"
      },
      "message": "nassh: corpv4: fix crash on reconnect\n\nWhen first connecting, the caller passes in callbacks which are used to\nnotify the init finishes.  When attempting to reconnect automatically,\nthose same codepaths internally are used, but the callbacks are no\nlonger valid.  Since the reconnect is meant to be transparent to the\ncaller, do not attempt to use them if they\u0027re cleared.\n\nBug: b/470080430\nChange-Id: Ic27752394ddb6f87d65fbc700653188c9e96f91e\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7490142\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "a76915a38e48dff4eb57aa71f971ac6d40438188",
      "tree": "c383037d90736d1ea933687ced6e9623391245d9",
      "parents": [
        "8e204a3d3c33e4c266456e9b2086decd50991a5a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 20:22:45 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 19 02:53:05 2026"
      },
      "message": "terminal: rework core module\n\nDrop unused import, and tweak pylint disables.\n\nChange-Id: Ib70fbcb4f07c9b3d213a1bf85676ce69a63d572a\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7486463\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "8e204a3d3c33e4c266456e9b2086decd50991a5a",
      "tree": "a275d688c0cc15b4dc46402fe85bf039be957234",
      "parents": [
        "14927572f801cb6745e695091412444b6e6bf19e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 03:45:02 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 19:56:02 2026"
      },
      "message": "libdot: storage: chrome: add write retries to setItems\n\nWhile setItem was protected, and hterm/nassh happened to use that API\nto restore data, we should protect both.\n\nBug: b/40874862\nChange-Id: Iaf8c333d6e511b0eec2c00b083de4ee27c5a1f7b\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7475470\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "14927572f801cb6745e695091412444b6e6bf19e",
      "tree": "3c96394f346993c00496d5f30fc98b65faa92495",
      "parents": [
        "643427b7882a4f4832de96d88b3228539e2f6711"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 12 04:28:32 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 19:55:57 2026"
      },
      "message": "ssh_client: openssh: switch to ldns-config\n\nNow that the wrapper script emits --libs correctly, switch\nto it rather than manually stuffing $LIBS in our own builds.\n\nChange-Id: I680c76f333027271f6174e24e4db3bcb3b5f1a02\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7452773\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "643427b7882a4f4832de96d88b3228539e2f6711",
      "tree": "5184a9ebb91e0af11ffc6879ddc5c0c53a994d4d",
      "parents": [
        "aa9e75930fa1e9ed1cd5519cbb9e3f602d5c8112"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 04:53:12 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 19:55:52 2026"
      },
      "message": "nassh: corp: convert to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I3a1c991320085958a32500e168f94b7d81ec8e2c\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456052\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "aa9e75930fa1e9ed1cd5519cbb9e3f602d5c8112",
      "tree": "82d4cecad09d7e14d55607254267d1143c0a80e4",
      "parents": [
        "23398b728fb156cedb1965d4ceff204b7baaba68"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Oct 02 21:09:34 2025"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sun Jan 18 19:55:43 2026"
      },
      "message": "wasi-js-bindings: use WebAssembly.Suspending automatically\n\nIf the syscall entry is async, automatically wrap it in the new JSPI\nSuspending so the promises suspend \u0026 resolve properly.  This should\nwork the same with existing code as no one is defining their entries\nas async currently.\n\nChange-Id: Ie9c50fb4f198622578c6f0fdd2056dadf395c2dd\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7484779\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "23398b728fb156cedb1965d4ceff204b7baaba68",
      "tree": "e9027745cc9ffeb5758afcb7f01f708732b2e2f5",
      "parents": [
        "2d923c6d30093bf8460da4e21a977ece9be251b3"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 03:41:02 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 15:46:17 2026"
      },
      "message": "libdot: storage: chrome: add tests for quota retries\n\nIt\u0027s a lot easier with the Promise-based API rather than the\nindirect lastError \u0026 callbacks.\n\nBug: b/40874862\nChange-Id: Ib1794c724caa4f7b2b9fd44389a432edae419876\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7475469\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "2d923c6d30093bf8460da4e21a977ece9be251b3",
      "tree": "dab0e7ce47ae76a87b2aa7b51bfed270c69ddb47",
      "parents": [
        "9c37d7894f6a4c8f50d1509dbd68d01e9026bbf7"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Tue Jan 13 06:06:08 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 15:46:12 2026"
      },
      "message": "wasi-js-bindings: detect when syscalls uses async incorrectly\n\nWe don\u0027t support async APIs with sys_ entries or handle_ callbacks,\nso detect when binding.  This is done once per setup, so overhead\nshould be low.\n\nChange-Id: Ic4340d746fe756c0bb5ec910902a3c356ff42b86\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7484778\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "9c37d7894f6a4c8f50d1509dbd68d01e9026bbf7",
      "tree": "b71da494eb66b862843a94ba169270b275ea8072",
      "parents": [
        "5818333cade58a74a6e77d26113b53880352fd97"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 12 04:04:30 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 15:46:03 2026"
      },
      "message": "ssh_client: openssh: adjust endgrent \u0026 setsid overrides\n\nForce the configure test to mark the functions as supported as that\nwill in turn update the config.h properly with these defines.  It\nprovides a minor speed boost to build by skipping the link tests,\nand makes the compile output a bit cleaner as there\u0027s fewer -D.\n\nChange-Id: Ic6c9bd04284f6fe7312686d0873b98cdf400ce92\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7452772\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "5818333cade58a74a6e77d26113b53880352fd97",
      "tree": "9d6eb22cc2ec2925fd537e157cc0f042999a491a",
      "parents": [
        "1e23acb363164e94846686bbad5b545d74a94dca"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 04:49:27 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 15:45:57 2026"
      },
      "message": "nassh: corp xhr: convert to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I1d07185d9a82f9e1b2aa4bffbc7a5eb8cd37938c\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456051\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "1e23acb363164e94846686bbad5b545d74a94dca",
      "tree": "64b765e94a7535545a06c5db9ab5ddbf7bdf9701",
      "parents": [
        "8fc5da2b39f58c91c85d9edc58b30ef6e593d3c8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 03:29:48 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 00:44:17 2026"
      },
      "message": "libdot: storage: chrome: rewrite to use Promises\n\nNow that we can assume Chrome storage APIs support Promises in MV3 \u0026 in\ncurrent Terminal versions, simplify these functions.  The retry helper\nneeds to switch from lib.f.lastError to catching an exception.\n\nBug: b/40874862\nChange-Id: I3ba80ce1ebc506a7cf0107ba2aad1322f65e9e66\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7475468\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "8fc5da2b39f58c91c85d9edc58b30ef6e593d3c8",
      "tree": "46ec0bbf5d0b6e274252642e12a83481f918f4e3",
      "parents": [
        "c44c09b5a4041274265fac997cc941babfb4f136"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 04:35:56 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Sat Jan 17 00:44:12 2026"
      },
      "message": "libdot: externs: start forking some Chrome MV3 extension APIs\n\nThe closure compiler externs for Chrome extensions do not support MV3\nand Promise-based APIs.  It\u0027s difficult updating them to support the\ndifferent modes since the APIs themselves are quite complicated with\nall the different optional ways they may be used.  But we want to use\nthe new Promise APIs now and not wait more years.\n\nStart a space to hold forked APIs.  These take the closure compiler\nsettings, delete all callback settings, and change the returns to\nPromises.  We have to delete the decls from closure\u0027s copy as it\ndoesn\u0027t allow redefining existing APIs.\n\nBug: b/40874862\nChange-Id: If990cc85f2cb71a8e783f913e2b35085621c98ac\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7475467\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: Mike Frysinger \u003cvapier@chromium.org\u003e\n"
    },
    {
      "commit": "c44c09b5a4041274265fac997cc941babfb4f136",
      "tree": "cb256dcd0afd7dd53656e448663203dbc4b9d66a",
      "parents": [
        "11236ddde82fcc4cd4401bdc6191db8320f3db01"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 20:11:24 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 22:29:50 2026"
      },
      "message": "nassh: background: rewrite sync logic with lib.Storage APIs\n\nChange-Id: I23f30a8de27180b6dd372a524c1ace26d8124282\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7489687\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\n"
    },
    {
      "commit": "11236ddde82fcc4cd4401bdc6191db8320f3db01",
      "tree": "691c179e3e2a612108b1e23e0a472763a57c6e10",
      "parents": [
        "4d005b2e0adb9bf33df26911855dc4847508e93e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 02:09:42 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 18:24:33 2026"
      },
      "message": "nassh: runtime: simplify sendMessage API\n\nNow that we can assume sendMessage supports Promises in MV3 \u0026 in\ncurrent Terminal versions, simplify this function.\n\nBug: b/40874862\nChange-Id: I0aef28e89ab54585a088368adfa1c9b3149dc641\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7473768\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "4d005b2e0adb9bf33df26911855dc4847508e93e",
      "tree": "a57c93f6cc84a3ff51d4362551b038b8b39b1605",
      "parents": [
        "6fd827b51941f6d1445079e04e1b16ed2afa772e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Thu Jan 15 00:53:00 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 18:24:30 2026"
      },
      "message": "nassh: mkdist: filter out more stuff for crosh/terminal\n\nDrop stuff that aren\u0027t used when bundled into CrOS:\n* popup: the extension omnibar popup\n* preferences: the hterm/ssh preferences page (Terminal has its own)\n* changelog: it isn\u0027t linked and not populated\n* mosh: it isn\u0027t integrated yet\n\nBug: b/475891214\nChange-Id: I9d4d245fc317334bd4086f2808c854e28a830ddc\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7478993\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "6fd827b51941f6d1445079e04e1b16ed2afa772e",
      "tree": "531f3af00a59e9a7520ab315d130a4a65a6f6808",
      "parents": [
        "588cfcd36e4e5d26ac9c65a85768110b74c51d74"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Mon Jan 12 03:49:18 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 18:24:27 2026"
      },
      "message": "ssh_client: openssh: drop force sys/cdefs.h include\n\nAnother hold over from NaCl builds.  WASM works fine w/out it.\n\nChange-Id: I562f0dbb3a64149158dcd4a940181fa4a612dddc\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7452771\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    },
    {
      "commit": "588cfcd36e4e5d26ac9c65a85768110b74c51d74",
      "tree": "5a01e5c1a0485d093830a21725e41f1288d90791",
      "parents": [
        "7dfe354214e47ea77d22ab04c6e49dee01f3318c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 02 04:46:28 2026"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@chromium.org",
        "time": "Fri Jan 16 18:24:23 2026"
      },
      "message": "nassh: corp ws: convert to ES6 class\n\nShould just be indentation \u0026 class syntax changes.\n\nChange-Id: I0c17274c9c820b0e214b0dbcbf94ed633db160f7\nReviewed-on: https://chromium-review.googlesource.com/c/apps/libapps/+/7456050\nReviewed-by: Joel Hockey \u003cjoelhockey@chromium.org\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n"
    }
  ],
  "next": "7dfe354214e47ea77d22ab04c6e49dee01f3318c"
}
