)]}'
{
  "log": [
    {
      "commit": "2a678a1f16ebf6aa2c34e31478cb7096b1daeed7",
      "tree": "8d0eb0828261ee3b97b5e367031eec93aa94e8ed",
      "parents": [
        "0d80dea4102faaa1f51b6df0a49a9c948f82b6d0"
      ],
      "author": {
        "name": "Ryan Huang",
        "email": "ryankert01@gmail.com",
        "time": "Mon Nov 09 19:53:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 12:53:41 2026 +0100"
      },
      "message": "docs(connectors): update Retry-After behavior for InfluxDB and Quickwit (#133)\n\nDepends on apache/iggy#4192\n\nCo-authored-by: Maciej Modzelewski \u003cmaciej@modzelewski.dev\u003e"
    },
    {
      "commit": "0d80dea4102faaa1f51b6df0a49a9c948f82b6d0",
      "tree": "75c7803d8850981a530245003ad22c1ef423e9e4",
      "parents": [
        "b231dacc77189e49c46554c5c6b1129d482e45e1"
      ],
      "author": {
        "name": "Maciej Modzelewski",
        "email": "maciej@modzelewski.dev",
        "time": "Mon Nov 09 12:34:12 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 12:34:12 2026 +0100"
      },
      "message": "build: move the site and CI to Node.js 26 and update all deps (#153)\n\nEvery CI and deploy run warned that actions/checkout@v4 and\nactions/setup-node@v4 target the deprecated Node.js 20 runtime.\nnpm audit also reported critical advisories for next 16.4.0 and\na high one for zod below 4.6.6.\n\nBoth actions now use v7, which runs on Node.js 24. The breaking\nchanges since v4 do not affect these workflows: CI runs on\npull_request, not pull_request_target, and each workflow sets\ncache: npm explicitly. peaceiris/actions-gh-pages@v4 already\nresolves to v4.1.0 on Node.js 24.\n\nThe site moves to Node.js 26, the current LTS, in .nvmrc and in\nthe engines floor. All dependencies move to their latest minor\nor patch release, with next at 16.4.5, and npm audit now finds\nno vulnerabilities.\n\nfumadocs-core 16.18 removed the stringify option of\nremarkStructure. The search index now stores Markdown snippets,\nand the search dialog renders them, so the custom handlers that\nremoved Markdown syntax from the index are gone.\n\nnext dev 16.4.5 writes AGENTS.md at the project root, with rules\nthat point AI agents at the docs in node_modules/next. The file\nis committed, so next dev does not leave an untracked change."
    },
    {
      "commit": "b231dacc77189e49c46554c5c6b1129d482e45e1",
      "tree": "52b0b1e3ab27fb3687b0b88fce8963e6fe3dedec",
      "parents": [
        "e53c1113c52c1fa5a47cb267d003f5dc083cd2ea"
      ],
      "author": {
        "name": "Maciej Modzelewski",
        "email": "maciej@modzelewski.dev",
        "time": "Mon Nov 09 10:39:40 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 10:39:40 2026 +0100"
      },
      "message": "fix(site): stop navbar labels wrapping at desktop widths (#152)\n\nWith eight links, the ASF dropdown and the buttons on the right,\nthe navbar row needs more than its 1400px maximum. The flex items\nshrink, and labels such as \"Powered By\" and \"Ask the docs\" wrap\nonto two or three lines.\n\nTighter link padding and a narrower GitHub button, with the GitHub\nmark and a star icon in place of the word, let the full row fit.\nBelow 1400px the buttons move into the menu, and below 1080px the\nlinks move too. fumadocs switches only at 1024px and 640px, so the\nCSS targets its class names. Make sure that these rules still work\nafter a fumadocs upgrade."
    },
    {
      "commit": "e53c1113c52c1fa5a47cb267d003f5dc083cd2ea",
      "tree": "e2c0616231223f414e7c0fab615f67fe0b875a88",
      "parents": [
        "4a5bc72c07c4bcb257c4ee425d0dc8120e581a51"
      ],
      "author": {
        "name": "Maciej Modzelewski",
        "email": "maciej@modzelewski.dev",
        "time": "Mon Nov 09 10:33:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 09 10:33:51 2026 +0100"
      },
      "message": "docs: point the 0.10.0 docs at the final release (#151)\n\nThe 0.10.0 docs went up before the release vote closed. They\nlinked the server-0.10.0-rc.1 tag, told readers to build from\nthe release candidate until packages and images were out, and\nshowed a \"release preparation\" banner in the sidebar.\n\n0.10.0 is now released. Links use the server-0.10.0 tag, the\ninterim instructions for the release candidate are gone, and\nthe sidebar banner is removed."
    },
    {
      "commit": "4a5bc72c07c4bcb257c4ee425d0dc8120e581a51",
      "tree": "f8a0c260e33121e7dacbd811ebe82952cbe8825e",
      "parents": [
        "331d06144f873d817f1ebf7adeef0e47b9c9ca7f"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Sun Nov 08 22:01:03 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 08 22:01:03 2026 +0100"
      },
      "message": "blog: announce Iggy 0.10.0 and add it to the downloads page (#150)\n\n0.10.0 was released on 2026-11-07, but the site had no post for it\nand the downloads page still offered 0.9.0 as the latest release.\n\nMerging publishes the post at /blogs/2026/11/09/release-0.10.0/.\nThe 0.9.0 row now links archive.apache.org, so it keeps working\nonce 0.9.0 leaves dist."
    },
    {
      "commit": "331d06144f873d817f1ebf7adeef0e47b9c9ca7f",
      "tree": "f4a2abe04d597adfb3f6581dee80494491844ab5",
      "parents": [
        "204b5e821dd09a0fde613a3f25b423f180279dd6"
      ],
      "author": {
        "name": "Piotr Gankiewicz",
        "email": "piotr.gankiewicz@gmail.com",
        "time": "Sat Nov 07 08:55:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 07 08:55:14 2026 +0100"
      },
      "message": "docs: add Iggy 0.10.0 documentation (#149)"
    },
    {
      "commit": "204b5e821dd09a0fde613a3f25b423f180279dd6",
      "tree": "5bbd56acc5a2ba32c9940c7111a7d0bd58e5b766",
      "parents": [
        "a0a23db90282ab0ef35f2fbd5ad1b9eb9352335b"
      ],
      "author": {
        "name": "justin-laserdata",
        "email": "justin@laserdata.com",
        "time": "Sat Nov 07 05:23:55 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 06 19:23:55 2026 +0100"
      },
      "message": "content(site): add FileBelt to Powered By, add Sockudo website (#146)"
    },
    {
      "commit": "a0a23db90282ab0ef35f2fbd5ad1b9eb9352335b",
      "tree": "0d886e6883611f7c0916bfc929ea6302d54142c0",
      "parents": [
        "c61772d3e7952c487de12135e2ff6b1f9b563fe4"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Nov 05 18:18:02 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 05 12:48:02 2026 +0530"
      },
      "message": "content(site): add a meetups page (#143)"
    },
    {
      "commit": "c61772d3e7952c487de12135e2ff6b1f9b563fe4",
      "tree": "cf8596b9992934e98bb6bf186b2810a8dac2c8bb",
      "parents": [
        "7fcf320b4807cff977bc2b334bbb141bccec59b1"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Oct 29 03:36:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 29 09:06:47 2026 +0530"
      },
      "message": "content(site): add Shozan, Ostrium Labs and Prometheus AGS to Powered By (#145)"
    },
    {
      "commit": "7fcf320b4807cff977bc2b334bbb141bccec59b1",
      "tree": "b32e323b48f219cbce3f3ab53d8f1f8c66d25a23",
      "parents": [
        "48cebd28fea595bcd3a425ec368f331ebbe7f3a0"
      ],
      "author": {
        "name": "Parthiban Rajasekaran",
        "email": "36532774+ParthibanRajasekaran@users.noreply.github.com",
        "time": "Tue Oct 27 11:29:03 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 27 12:29:03 2026 +0100"
      },
      "message": "docs: document config environment listing (#130)\n\nDocuments the config environment variable discovery flag added by\napache/iggy#4350 for the server, connectors runtime, and MCP server.\nCovers the `\u003cN\u003e`, `\u003cKEY\u003e`, and `\u003cFIELD\u003e` placeholder semantics and\nearly-exit behavior requested in apache/iggy#4322."
    },
    {
      "commit": "48cebd28fea595bcd3a425ec368f331ebbe7f3a0",
      "tree": "44eb0e20d25f7d218f80ea32d33a8aaea870cb5a",
      "parents": [
        "90f6d58accd379b75a65a7eebea8ed77db783d42"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Oct 22 04:33:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 09:03:34 2026 +0530"
      },
      "message": "content(site): publish Powered By entries on merge, add four organisations (#140)"
    },
    {
      "commit": "90f6d58accd379b75a65a7eebea8ed77db783d42",
      "tree": "ae06f6007b63984b2c206e6f09ef217aecea7752",
      "parents": [
        "9224964e064e8d5c76ea7b9a912284c8b5a4dc3c"
      ],
      "author": {
        "name": "saie-ch",
        "email": "132209179+saie-ch@users.noreply.github.com",
        "time": "Wed Oct 21 19:30:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 19:30:46 2026 +0530"
      },
      "message": "fix(ci): pass GITHUB_TOKEN to the deploy build so star count refreshes (#142)\n\n## Problem\n\nThe GitHub star count in the nav is baked in at build time by\n`scripts/fetch-github-stars.mjs`, run from `prebuild`. `deploy.yml` has\na daily cron, so the number is meant to refresh itself once a day.\n\nIt never did. The live site shows **4.7K** while `apache/iggy` is at\n**5140** (→ `5.1K`). `4.7K` is the script\u0027s hardcoded `FALLBACK`\nconstant — the site has been shipping a placeholder, not a fetched\nvalue.\n\nThree things combine:\n\n1. **`src/github-stars.json` is gitignored**, so a fresh CI checkout has\nno previous value for the \"keep the old value\" branch to use. It is\nfetch-or-fallback, with no middle ground.\n2. **The build step was never given a token.** The fetch went out\nanonymously against the 60/hr-per-IP limit, which shared Actions runners\nexhaust routinely → `403`.\n3. **The failure is silent** — the script only `console.warn`s, so\ndeploys stayed green while re-baking the same wrong number every\nmorning.\n\n`ci.yml` already passed the token (line 35), which is why this went\nunnoticed: the one workflow wired correctly is the one that does not\ndeploy.\n\n## Fix\n\nHand the same `secrets.GITHUB_TOKEN` already used by the publish step\n(`deploy.yml:41`, `stage.yml:39`) to the build step in both workflows,\nlifting the limit to 1000/hr:\n\n```yaml\n      - name: Build Website\n        run: npm run build\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n```\n\nNo new secret is required — `GITHUB_TOKEN` is auto-provisioned by\nActions. Neither deploy workflow sets a `permissions:` block, and the\nread already succeeds under `ci.yml`\u0027s stricter `contents: read`. The\ncross-repo read works because `apache/iggy` is public; the auth exists\nonly to move off the anonymous rate-limit bucket.\n\nAlso refreshes `FALLBACK` to `5.1K` so a failed fetch ships a roughly\ncorrect number rather than a year-stale one.\n\n## Verification\n\n```\n$ node scripts/fetch-github-stars.mjs\nGitHub stars: 5.1K\n```\n\nThe CI build log for this PR should show `GitHub stars: 5.1K` rather\nthan a `GitHub stars: API returned 403` warning.\n\n## Note\n\nThe count stays `4.7K` on the live site until this merges and the next\n`main` deploy runs; the daily cron keeps it current from then on. The\nnumber remains up to ~24h stale by design — that is inherent to `output:\n\"export\"`, and removing the lag entirely would mean fetching\nclient-side.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Sai Eswar \u003csai@laserdata.com\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "9224964e064e8d5c76ea7b9a912284c8b5a4dc3c",
      "tree": "b965f515ce0bcc029113cef5c645c7c10428f9bf",
      "parents": [
        "05f2f336fd84e4fce0bd47b9e61eca7e9d084a8e"
      ],
      "author": {
        "name": "Krishna Vishal",
        "email": "krishnavishal2008@gmail.com",
        "time": "Wed Oct 21 17:03:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 17:03:35 2026 +0530"
      },
      "message": "blog: clustering part 3 (#141)\n\nAdd the third post in the Viewstamped Replication clustering series. It\ncovers the deterministic simulator that tests the cluster."
    },
    {
      "commit": "05f2f336fd84e4fce0bd47b9e61eca7e9d084a8e",
      "tree": "1c17cf40014aa3ba4bad9394be881d744c95a3ef",
      "parents": [
        "26879646f4201d0d5c3d45a3d8e895f5e93eba14"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Oct 15 12:29:10 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 13:29:10 2026 +0200"
      },
      "message": "content(site): add Omni, A3S Lab, Silkworm and wakuwaku to Powered By (#132)\n\nAdds three Powered By entries found in the 8 Oct check, written from\npublic repositories like the SeaQL and RusTok entries. Nobody at these\norganisations has confirmed them, so all three set showText: false and\nthe descriptions stay off the page. Logos for Omni and A3S Lab come from\ntheir own websites; Silkworm has no logo and shows as text. Left as\ndrafts for a committer to publish.\n\n- Omni: Vortex uses Iggy through the Node.js SDK for its event log,\noutbox, replay and dead-letter queue (omnidotdev/vortex-api,\nomnidotdev/vortex-worker).\n- A3S Lab: Iggy is the default provider in a3s-event (A3S-Lab/Event).\n- Silkworm: Iggy is one of its output pipelines (BitingSnakes/silkworm)."
    },
    {
      "commit": "26879646f4201d0d5c3d45a3d8e895f5e93eba14",
      "tree": "abfbcc0fc7e16eb84694829b34681a6c5f7f660f",
      "parents": [
        "4f3892bdfed6efce7fdefa7f3660c2b158f5edbf"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 13:24:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 13:24:02 2026 +0200"
      },
      "message": "build(deps): bump sharp from 0.35.4 to 0.35.5 (#139)"
    },
    {
      "commit": "4f3892bdfed6efce7fdefa7f3660c2b158f5edbf",
      "tree": "617b12ab43185e51eb22c5aa2e08ded91f791118",
      "parents": [
        "8220dbbdf8b988e80931e39039d8b6291f009b16"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 13:21:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 13:21:39 2026 +0200"
      },
      "message": "build(deps): bump source-map-js from 1.2.1 to 1.2.2 (#138)"
    },
    {
      "commit": "8220dbbdf8b988e80931e39039d8b6291f009b16",
      "tree": "b4ce4011f17077a84c65084e67de6d20a257db2a",
      "parents": [
        "2cc5a5150440c864ff7a76a4a5dee933358f9af0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 13:18:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 13:18:52 2026 +0200"
      },
      "message": "build(deps): bump next from 16.3.4 to 16.4.0 (#137)"
    },
    {
      "commit": "2cc5a5150440c864ff7a76a4a5dee933358f9af0",
      "tree": "46a25472c9d2f44a74a2e6402e7f090ee1f21747",
      "parents": [
        "2dc773406275c5885cdcec711bb5e20b6ae8c887"
      ],
      "author": {
        "name": "Grzegorz Koszyk",
        "email": "112548209+numinnex@users.noreply.github.com",
        "time": "Tue Oct 13 11:37:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 11:37:17 2026 +0200"
      },
      "message": "blog: clustering part 2 (#135)"
    },
    {
      "commit": "2dc773406275c5885cdcec711bb5e20b6ae8c887",
      "tree": "ec0d392f262dffc5bcf53fa4c671678cfeef066d",
      "parents": [
        "1f9763e0d1634fdc6dcfd52c1064db8fefe79277"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Tue Oct 13 11:01:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 11:01:41 2026 +0200"
      },
      "message": "ci: move jobs off ubuntu-latest to slim and 26.04 runners (#136)\n\nubuntu-latest moves from Ubuntu 24.04 to 26.04 in November 2026.\nWithout a pin, the build and publish jobs change image with no\ncommit in this repo. This change pins them to ubuntu-26.04, so\nthe CI build keeps the image of the publish jobs.\n\nThe checks job runs in about 20 seconds and fits the 1-vCPU\nubuntu-slim runner, as in apache/iggy. ubuntu-slim has no PyYAML,\nso the .asf.yaml check uses the preinstalled yq instead."
    },
    {
      "commit": "1f9763e0d1634fdc6dcfd52c1064db8fefe79277",
      "tree": "a7eb49f455e26a0b02bc18c1dc4da91b7c9db655",
      "parents": [
        "e0276917de11f8cba6cce78c2c9137b9cb663bd9"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Mon Oct 12 09:30:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 10:30:05 2026 +0200"
      },
      "message": "Add trademark symbol to the downloads page (#134)"
    },
    {
      "commit": "e0276917de11f8cba6cce78c2c9137b9cb663bd9",
      "tree": "69db274bdeda1ba2f71eb93eed05838df99a87a3",
      "parents": [
        "f5235fa6530e084fc7822eec39ff81ee18ea6a87"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 22:18:20 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 13:18:20 2026 +0200"
      },
      "message": "docs: add a monitoring page for the server\u0027s metrics (#122)"
    },
    {
      "commit": "f5235fa6530e084fc7822eec39ff81ee18ea6a87",
      "tree": "297376c9a4aa4d16897f349637d05395a79f1a2b",
      "parents": [
        "084d30f452c8e08a39897ad6d07a6e9fc87e209e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 21:42:02 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 16:12:02 2026 +0530"
      },
      "message": "docs: add upgrade notes for 0.8 to 0.9 (#121)\n\nLists what has to change when moving to 0.9.0: a fresh data directory,\nmatching SDKs, configuration moves, and the advertised address rule.\n\n---------\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "084d30f452c8e08a39897ad6d07a6e9fc87e209e",
      "tree": "039cfdef11628207a8f19bfe20dbd0466cb616db",
      "parents": [
        "d5afcead8201d5b5d98d0fd0e3f4675f44d3c92c"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 21:39:47 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 16:09:47 2026 +0530"
      },
      "message": "docs: add a Python getting started tutorial (#119)\n\nWalks through a producer, a consumer and a consumer group with the\nPython SDK against 0.9.0, alongside the existing Rust tutorial.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e"
    },
    {
      "commit": "d5afcead8201d5b5d98d0fd0e3f4675f44d3c92c",
      "tree": "cafed6be6c8c671c1d6dd2c96075b60c5226adec",
      "parents": [
        "3975c83ca9f47c35dc6718031004ece14508c6b3"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 18:16:43 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 09:16:43 2026 +0200"
      },
      "message": "docs: add a Grafana dashboard tutorial (#126)\n\nAdds a second tutorial to the Tutorials section: run an Iggy server with\nPrometheus and Grafana in Docker Compose and watch the broker on a\ndashboard. Run end to end against apache/iggy:0.9.0. Builds on #125, so\nthe first two commits are from that PR and drop out once it merges."
    },
    {
      "commit": "3975c83ca9f47c35dc6718031004ece14508c6b3",
      "tree": "83f54936ddc3281f0b96cc47dc68d3e734e36434",
      "parents": [
        "4483cad594a2a0d0848f587d12122ed8b025c112"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 18:08:17 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 12:38:17 2026 +0530"
      },
      "message": "fix(docs): correct the architecture page against server 0.9.0 (#128)\n\nCorrects the architecture page and its shard diagram.\n\n- TLS-wrapped TCP and WSS connections are handed to other shards as raw\nsockets before the handshake, like plaintext TCP. Only QUIC and HTTP\nstay on shard 0. The round-robin includes shard 0 by default.\n- A partition request goes into the owning shard\u0027s channel.\n- `cores\u003d` in the NUMA mode is one count applied to every listed node.\n- Tokio\u0027s 512 is the maximum of a blocking pool that grows on demand.\n- 4096 is the io_uring submission queue size.\n- Storage: `state/log` is an empty file, a fresh partition has only\n`superblock.a`, `journal.wal` is checkpointed into `snapshot.bin`, and\n`current_config.toml` is rewritten at boot with the bound addresses and\nwithout secrets.\n- A sealed segment can exceed the segment size by up to one batch.\n- Removes \"inspired by the Seastar framework\", which the repo does not\nstate.\n\nVerified against the `server-0.9.0` tag:\n`core/server/src/boot/listeners.rs`, `core/shard/src/coordinator.rs`,\n`core/shard/src/router.rs`, `core/cpu_allocation/src/lib.rs`,\n`core/server_common/src/executor.rs`,\n`core/server_common/src/bootstrap.rs`,\n`core/server/src/config_writer.rs`, `core/journal/src/superblock.rs`,\n`core/metadata/src/impls/metadata.rs`, `core/parVerified against the\n`server-0.9.0` tag: `core/server/soml`. The storage layout was also\nchecked on a running `apache/iggy:0.9.0` container.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "4483cad594a2a0d0848f587d12122ed8b025c112",
      "tree": "7a8eb5325f720fad1de55bd3d3ce3647f7ff5863",
      "parents": [
        "8ed2c785604ab979424dc4c7ce3089f015a24abe"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 18:05:34 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 12:35:34 2026 +0530"
      },
      "message": "docs: add a consumer group sample to the Node quick start (#129)\n\nAdds a runnable consumer group sample to the Node quick start, and a\nshort section on what each sample does when it is run again. All three\nsamples were run and rerun against apache-iggy 0.10.0 and\napache/iggy:0.9.0.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "8ed2c785604ab979424dc4c7ce3089f015a24abe",
      "tree": "5983da73b3d71d64e5f39350e47aa8a558daa799",
      "parents": [
        "d591597831046286c93a7b55ce3e3a45aef1070a"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 17:59:14 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 12:29:14 2026 +0530"
      },
      "message": "feat(site): add the kapa.ai Ask the docs widget (#123)\n\nAdds the widget behind a consent screen, with analytics off, and an Ask\nthe docs navbar button that opens it. Allows the kapa and reCAPTCHA\ndomains through the ASF CSP, as approved in the ASF privacy policy.\n\n---------\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "d591597831046286c93a7b55ce3e3a45aef1070a",
      "tree": "8fe5a75456b3c6f14e3bf717cc90276c673ac60b",
      "parents": [
        "12a7573075d0923089555e000228c86a25708cf7"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 17:35:59 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 12:05:59 2026 +0530"
      },
      "message": "docs: add a page on testing with Iggy (#120)\n\nShows how to run the Iggy Docker image from a test suite with\ntestcontainers, with examples for Rust, Python and Node.js.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "12a7573075d0923089555e000228c86a25708cf7",
      "tree": "131a12ff9a5f35a7cb3d82244b37f2c00b4829f1",
      "parents": [
        "bfbebbc13ba08e0fcfb89e4f3d7f426427432788"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 17:33:05 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 12:03:05 2026 +0530"
      },
      "message": "docs: add a troubleshooting page for first-run failures (#118)\n\nCovers what the most common first-run failures look like, what causes\nthem and how to fix them, checked against 0.9.0.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "bfbebbc13ba08e0fcfb89e4f3d7f426427432788",
      "tree": "cd9c36986edda804ce073b1464d8d27cc03a7293",
      "parents": [
        "f8398c2d2c357d0c063b0c59b2c17ff5c74212f5"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 17:27:15 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 11:57:15 2026 +0530"
      },
      "message": "chore: add a pull request template for user stories (#117)\n\nLets people share how they use Iggy as a blog post PR. Opt-in via\n?template\u003duser-story.md, so other PRs are unaffected. Pairs with the\nPowered By page\u0027s caseStudyUrl.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "f8398c2d2c357d0c063b0c59b2c17ff5c74212f5",
      "tree": "ffd2d33858406ef314208103e41f71256278980e",
      "parents": [
        "e5dc87f75a543eb417ba4e73ed280d5ad165607f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 17:25:05 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 11:55:05 2026 +0530"
      },
      "message": "blog: add Justin Mclean to blog authors (#116)\n\nAdds an author entry so posts can use author: justin. Uses the\nplaceholder avatar until a photo is added.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "e5dc87f75a543eb417ba4e73ed280d5ad165607f",
      "tree": "e189b5b2ec72568ed75f0f0ec44f9f23ed54d90c",
      "parents": [
        "9d53c042b82e021aba2f4bb322e362eb33f11d78"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Oct 06 16:53:50 2026 +1100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 06 11:23:50 2026 +0530"
      },
      "message": "docs: add the Docker Desktop workaround for 0.9.0 (#113)\n\nThe quickstart command does not start 0.9.0 on Docker Desktop: the VM\nrejects binding shard memory to its NUMA node. `-e\nIGGY_SHARDING_CPU_ALLOCATION\u003dall` works around it.\n\nAdds this to System requirements and points to it from the quickstart\nand getting started pages.\n\nWorkaround for apache/iggy#4242.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "9d53c042b82e021aba2f4bb322e362eb33f11d78",
      "tree": "05edff80b1df6df339452747a4b5799ff81cd08b",
      "parents": [
        "0c8cf01d9a52f0aa9d9e021d5546121e3a517a44"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Fri Oct 02 23:05:41 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 15:05:41 2026 +0200"
      },
      "message": "docs: add Coming from Kafka, Glossary and Serialising messages pages (#127)"
    },
    {
      "commit": "0c8cf01d9a52f0aa9d9e021d5546121e3a517a44",
      "tree": "53e06bdeecdb32a08343a186d055943d8c1651eb",
      "parents": [
        "ab376eb980055b195bf6632fbea826908a3e2c56"
      ],
      "author": {
        "name": "Grzegorz Koszyk",
        "email": "112548209+numinnex@users.noreply.github.com",
        "time": "Mon Sep 28 16:39:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 16:39:09 2026 +0200"
      },
      "message": "blog: clustering part 1  (#124)"
    },
    {
      "commit": "ab376eb980055b195bf6632fbea826908a3e2c56",
      "tree": "27e3897e307e9b32e638617fc939b06c98981bca",
      "parents": [
        "628d424bbd42c7ae0bc77753efc9c90a18264202"
      ],
      "author": {
        "name": "Kranti Parisa",
        "email": "kranti@laserdata.com",
        "time": "Mon Sep 21 04:19:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 04:19:35 2026 -0700"
      },
      "message": "blog: Update release-0.9.0.mdx (#114)\n\nminor edits to the 0.9.0 blog"
    },
    {
      "commit": "628d424bbd42c7ae0bc77753efc9c90a18264202",
      "tree": "5b31e6540dc3996789975a117bb642e31aa6ca9d",
      "parents": [
        "a48fccbfb623532aba967cf193c87de022e136d0"
      ],
      "author": {
        "name": "Piotr Gankiewicz",
        "email": "piotr.gankiewicz@gmail.com",
        "time": "Mon Sep 21 11:16:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 11:16:18 2026 +0200"
      },
      "message": "blog: add post about Iggy 0.9.0 release (#112)\n\nCo-authored-by: hubcio \u003ch.gruszecki@gmail.com\u003e"
    },
    {
      "commit": "a48fccbfb623532aba967cf193c87de022e136d0",
      "tree": "0821f8858c5b85967c5153dc5649d02191da01d1",
      "parents": [
        "ce110dfd8fe7c89c0a557d0c0cb738524c117a7e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Sat Sep 19 18:28:44 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 01:28:44 2026 -0700"
      },
      "message": "docs: make the docs easier for AI tools to use (#110)\n\nAdds the docs version, the Markdown copy convention and short guidance\nfor writing Iggy clients to llms.txt. Adds llms-full.txt and one file\nper docs section, listed in llms.txt with their sizes. Markdown copies\nnow cover blog posts, use absolute links, and replace diagram components\nwith text. Docs pages get small icon buttons beside the title to copy\nthe page as Markdown, view the Markdown copy, or view the source. Also\ntags the remaining untagged code blocks.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "ce110dfd8fe7c89c0a557d0c0cb738524c117a7e",
      "tree": "7d87a3ed8e34eff2c5ed7f10aeb3280150c1415c",
      "parents": [
        "14d11102326393d4d89ed3b7e3d5414ad4094ed3"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Fri Sep 18 21:15:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 21:15:07 2026 +0200"
      },
      "message": "docs: add the 0.9.0 release to the downloads page (#111)\n\nThe page still listed 0.8.0-incubating as latest and both\nverify snippets still downloaded from the incubator path,\nwhich points readers at a superseded release.\n\nAdd 0.9.0 with the graduated dist paths and closer.lua on\nthe archive link as ASF policy requires. The Changelog\ncolumn points at the GitHub tag until a 0.9.0 post exists."
    },
    {
      "commit": "14d11102326393d4d89ed3b7e3d5414ad4094ed3",
      "tree": "d0d7c04d9625f9c9d2c2c86832413503bf082e00",
      "parents": [
        "0fdcb2bd8ab0a45e0ec6d68bfde843e3f91596ad"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Fri Sep 18 17:28:42 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 00:28:42 2026 -0700"
      },
      "message": "docs: add a frozen copy of the 0.8 docs at /docs/0.8 (#109)\n\nKeeps the 0.8 docs available now that 0.9.0 changes the wire protocol.\nThe pages are a copy from before the 0.9.0 update, with their links and\ndiagrams kept at 0.8. Each page has a notice pointing to the current\ndocs, and the archive is left out of search, the sitemap and llms.txt\nand marked noindex. The current docs move into a route group so the two\nsidebars stay separate, and the link checker now covers both trees.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e"
    },
    {
      "commit": "0fdcb2bd8ab0a45e0ec6d68bfde843e3f91596ad",
      "tree": "6c619d12bdc525d20fbff9817c9c68edd74f2824",
      "parents": [
        "dd8dd341217ab1bf563ea1fefcc9898a919f7f6f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 17 11:51:12 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 16 18:51:12 2026 -0700"
      },
      "message": "docs: add a quickstart and update wording for 0.9.0 (#108)\n\nAdds a one-file Rust quickstart and points the Get Started button and\ndocs card to it. Adds a server compatibility table to the SDK\nintroduction. Replaces pre-release wording and pins image and package\nversions to the 0.9.0 release. Please merge once 0.9.0 is published.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e"
    },
    {
      "commit": "dd8dd341217ab1bf563ea1fefcc9898a919f7f6f",
      "tree": "c32f75e02bae545664a55b7439311a588806c926",
      "parents": [
        "8d0b0aa0695f00f61f3b59b07124c643032d5a30"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:22:44 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:22:44 2026 -0700"
      },
      "message": "docs: say what happens when the getting started apps are run again (#107)\n\nThe producer appends to the existing stream instead of failing, and the\nconsumer starts at offset 0 so it replays earlier messages. Neither is\nobvious from the code, and the guide never says how to start over.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "8d0b0aa0695f00f61f3b59b07124c643032d5a30",
      "tree": "98c8d677fd4e152f2b53e4560236596661f619d3",
      "parents": [
        "d066afc8e90a5566efbc4b5429101e851cfe5d58"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:21:30 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:21:30 2026 -0700"
      },
      "message": "docs: point the KEYS links at the graduated dist path (#106)\n\nIggy graduated in August, so its KEYS file now lives at\ndownloads.apache.org/iggy/KEYS. The per-release paths under incubator\nstay, since 0.6.0 to 0.8.0 are still published there.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "d066afc8e90a5566efbc4b5429101e851cfe5d58",
      "tree": "bf42bbbf1cc4f29e311e2e5bbdf556382f777e9d",
      "parents": [
        "d0aa548b852cc0356b3a76fb992630eef433267a"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:19:56 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:19:56 2026 -0700"
      },
      "message": "docs: state the minimum Linux kernel version (#105)\n\nThe server creates its io_uring rings with setup flags that need Linux\n5.19, and refuses to start on anything older, but no page said so.\nUbuntu 22.04 ships 5.15, which is how people hit this.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "d0aa548b852cc0356b3a76fb992630eef433267a",
      "tree": "04ee76259b63dd6f5bc116bbb468d953992267ad",
      "parents": [
        "cdbd50d1f6317d8b21addfe2c992a2b4bcd8ef9f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:18:46 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:18:46 2026 -0700"
      },
      "message": "docs: link the benchmarking app and dashboard from About (#104)\n\nThe About page feature list says \"Built-in benchmarking app to test the\nperformance\" with no link, while the CLI and Web UI entries next to it\nlink their docs. This links the Benchmarking docs page and\nhttps://benchmarks.iggy.apache.org, so a reader checking the performance\nclaims on that page can find the published results.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "cdbd50d1f6317d8b21addfe2c992a2b4bcd8ef9f",
      "tree": "23287129adc041f525933064a7598866030ac3f6",
      "parents": [
        "314740dbc5408c75d2cb4bdb30258e9aff8978c6"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:17:09 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:17:09 2026 -0700"
      },
      "message": "docs(ai): explain what the MCP server does on the AI introduction page (#103)\n\nThe AI section introduction was a two-line pointer to the MCP Server\npage. It now gives a short, client-agnostic overview drawn from that\npage: what an MCP client can do through the server, the HTTP and stdio\ntransports, and the two layers of access control. It still links to MCP\nServer for setup, configuration and the full tool list.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "314740dbc5408c75d2cb4bdb30258e9aff8978c6",
      "tree": "4e9c755b1996e5bfdf4ca19abdbac40896132003",
      "parents": [
        "e4b50ee2f12b1eaff173a5a512f1db55ac002297"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:13:17 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:13:17 2026 -0700"
      },
      "message": "docs: mark the getting started tutorial as Rust (#102)\n\nintroduction/getting-started is written entirely against the low-level\nRust SDK, and its description already says so, but the title and sidebar\nlabel are just \"Getting started\", which reads as the general entry point\nfor every language. This changes the title to \"Getting started (Rust)\".\nThe URL is unchanged, so existing links still work.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "e4b50ee2f12b1eaff173a5a512f1db55ac002297",
      "tree": "57d72cb60181d2f5ee60b865fb4d85cb949d68d3",
      "parents": [
        "478090f5eb457327cc791ef3e00861905056c55e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:11:52 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:11:52 2026 -0700"
      },
      "message": "docs(site): describe the graduation checklist as a pre-graduation record (#101)\n\nThe Graduation Checklist page has a banner saying Iggy graduated on 19\nAugust 2026, but its subtitle, meta description and overview still\ndescribed the project as preparing for eventual graduation, and it still\nlisted next steps towards proposing graduation. This rewrites the\nframing in the past tense and removes the next steps list. The\nassessment table is unchanged, since it is dated 31 July 2026 and was\naccurate then.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "478090f5eb457327cc791ef3e00861905056c55e",
      "tree": "4ab7cdf2cc90101a30ad5895a25cd92deb494230",
      "parents": [
        "c12e052a4f3f5ffe7caa4cf9a7fa8c2137f3a8c3"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:04:09 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:04:09 2026 -0700"
      },
      "message": "fix(site): use one trademark attribution in both footers (#100)\n\nThe homepage has its own inlined footer, and its trademark notice\ndiffered from the one in SiteFooter used on every other page. Both now\nread: \"Apache Iggy, Iggy, Apache, and the Apache Iggy logo are\ntrademarks or registered trademarks of The Apache Software Foundation.\"\nThe feather logo is dropped: the ASF mark is now the oak leaf, and the\nsite does not display either.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "c12e052a4f3f5ffe7caa4cf9a7fa8c2137f3a8c3",
      "tree": "e5e581395b6be43627f1770549cbfd88932e8567",
      "parents": [
        "d4ebbd7af5c49d61491da5e996ab06de140fcdb2"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:02:11 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:02:11 2026 -0700"
      },
      "message": "fix(site): replace the feather ASF logo with the oak leaf (#99)\n\npublic/img/asf_logo.svg is the Organization logo in the site structured\ndata (src/app/layout.tsx), so search engines were being given the old\nfeather logo. It is replaced with the current horizontal colour logo\nfrom https://www.apache.org/images/asflogo_horizontal_color.svg. Same\nfilename, so nothing else changes.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "d4ebbd7af5c49d61491da5e996ab06de140fcdb2",
      "tree": "49f38ca782415bdbcb7f85df8f9d47eace2eeaf2",
      "parents": [
        "a7b3a001d73947cce6ad07c4312f9d63e933eeab"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 16 14:00:23 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 15 21:00:23 2026 -0700"
      },
      "message": "fix(site): point the homepage Bluesky link at the Apache Iggy account (#98)\n\nThe homepage footer links to bsky.app/profile/iggy.rs, which no longer\nresolves on Bluesky. The project posts as apache-iggy.bsky.social, which\ncarried the graduation announcement. One-line change in\nsrc/app/(home)/page.tsx.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e"
    },
    {
      "commit": "a7b3a001d73947cce6ad07c4312f9d63e933eeab",
      "tree": "f356bef04b7ce7897e2e3875db05a31b064b7d00",
      "parents": [
        "15a1e72bd375a5e64d0af733d2794a9eb0780757"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Mon Sep 14 16:26:50 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 23:26:50 2026 -0700"
      },
      "message": "Fix missing logos on Powered By page in Chrome (#97)"
    },
    {
      "commit": "15a1e72bd375a5e64d0af733d2794a9eb0780757",
      "tree": "cfc39f72c8b834fb684adc52bc70bde7a72578c9",
      "parents": [
        "9eece0aa91e1305a6474e990a3f2dfb02787f290"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Mon Sep 14 08:21:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 08:21:52 2026 +0200"
      },
      "message": "fix(docs): align documentation with server 0.9.0 (#95)"
    },
    {
      "commit": "9eece0aa91e1305a6474e990a3f2dfb02787f290",
      "tree": "22d8fd10d4533cd9242ce82b52715a3c3fa15fff",
      "parents": [
        "c5a3053ece0086b120465539ea20729d14be09c1"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Mon Sep 14 13:19:48 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 20:19:48 2026 -0700"
      },
      "message": "Show the star bar on every page (#96)"
    },
    {
      "commit": "c5a3053ece0086b120465539ea20729d14be09c1",
      "tree": "4eb5cda82f53dd9f00702318ce1b7331e102de21",
      "parents": [
        "69ea665ba2bae0c2a1d91e35a330b6ed54d5e2a3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Sep 11 11:28:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:28:15 2026 +0200"
      },
      "message": "build(deps): bump next from 16.3.1 to 16.3.4 (#94)"
    },
    {
      "commit": "69ea665ba2bae0c2a1d91e35a330b6ed54d5e2a3",
      "tree": "449309428d0fdfe2a025105e6a2ff0ebd9de2f8a",
      "parents": [
        "4f656bec14d55d72f7666eebfe1a53a6c08ff76c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Sep 11 11:26:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:26:37 2026 +0200"
      },
      "message": "build(deps): bump sharp from 0.35.3 to 0.35.4 (#93)"
    },
    {
      "commit": "4f656bec14d55d72f7666eebfe1a53a6c08ff76c",
      "tree": "cefe3fcf8cc7b7d97c30a2aec9967e6a526badbd",
      "parents": [
        "918e3bc68988256fef607eead26de2687fc7960c"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 10 16:09:02 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 23:09:02 2026 -0700"
      },
      "message": "Add seven organisations to Powered By (#92)\n\nAdds AWeber, Apache Camel, CocoIndex, SeaQL, Sockudo, Security Union,\nand RusTok, each written from the organisation\u0027s own public repository,\nwith the source and the date checked recorded in the file.\n\nOnly Camel carries a use-case description on the page. The other six\nhave one in their file, but it isn\u0027t published, because we wrote it from\npublic code rather than getting it from them. That\u0027s what the new\nshowText flag does: it defaults to true, so every existing entry is\nunaffected, and setting it to false keeps a description in the file\nwithout putting words in someone\u0027s mouth on the page.\n\nTwo presentation fixes came out of adding logos of different shapes. The\nwall pinned every logo to a fixed height, which left square marks a\nthird the size of the wordmarks, so it now uses a max-height and\nmax-width box instead. Tile spacing went up to match, since a wide logo\ncould previously run to the edge of its tile.\n\nAlso widens the section intro so it stops wrapping early and stops\n\"Apache Iggy\" from splitting across lines.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "918e3bc68988256fef607eead26de2687fc7960c",
      "tree": "a014dc996d10dc826730bf636861eec0e63170d6",
      "parents": [
        "25290ae045a17861cd334ecc83be9054a511db4f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 10 11:56:44 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 18:56:44 2026 -0700"
      },
      "message": "Fix the logo aspect ratio (#91)\n\nThe declared width and height did not match the image files, which are\n1951x652. The nav and brand kit logos were stretched to a 5:1 box.\n\n\u003cimg width\u003d\"836\" height\u003d\"119\" alt\u003d\"Screenshot 2026-09-09 at 10 47 49 am\"\nsrc\u003d\"https://github.com/user-attachments/assets/9c9d42e3-8e22-45f1-94ab-37b95ca754b0\"\n/\u003e\n\n---------\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "25290ae045a17861cd334ecc83be9054a511db4f",
      "tree": "28a5064c813df1bf1f8385f2862ae7ccc81de045",
      "parents": [
        "acec443eed78e285949166671ac19d6d8f9e5b2f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 09 23:48:55 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 06:48:55 2026 -0700"
      },
      "message": "Add a Join Discord button to the homepage hero (#90)\n\nDiscord is in the top nav and in the footer, but nothing in the body of\nthe homepage points a visitor at the community. Someone reading down the\npage never passes an invitation to join.\n\nThis adds a third hero button, Join Discord, alongside Get Started and\nView on GitHub, in the same outline style as the GitHub one. The button\nrow is widened from max-w-lg to max-w-3xl and allowed to wrap, so three\nbuttons still sit sensibly on narrow screens.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "acec443eed78e285949166671ac19d6d8f9e5b2f",
      "tree": "5cf92d9d68a40bc7aed5aac6094c8161267c7fb6",
      "parents": [
        "b4c0043664761d26e95f137ce0ad71ccfd621c37"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Sep 09 21:10:57 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 04:10:57 2026 -0700"
      },
      "message": "Add a mailing lists page to the community section (#89)\n\nThe community page and site footer link to Discord, LinkedIn, and\nGitHub, but nothing on the site tells readers that dev@ and commits@\nexist or how to subscribe.\n\nThis adds a Mailing Lists page under /community with the subscribe,\nunsubscribe, and archive addresses for dev@ and commits@, a short\nsection on when to use the lists rather than GitHub issues or Discord,\nand a note on private@. It also adds the matching card to the community\ngrid and a footer link.\n\nCo-authored-by: Justin Mclean \u003cjustinmclean@apache.org\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "b4c0043664761d26e95f137ce0ad71ccfd621c37",
      "tree": "227dcfba4b55b338812308149968805a6db5b121",
      "parents": [
        "4cc0b973392787edb12a72822ba80af6c2ddc29f"
      ],
      "author": {
        "name": "Piotr Gankiewicz",
        "email": "piotr.gankiewicz@gmail.com",
        "time": "Wed Sep 09 10:37:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 01:37:36 2026 -0700"
      },
      "message": "chore(docs): add server tuning \u0026 Linux optimization (#88)\n\nCo-authored-by: hubcio \u003ch.gruszecki@gmail.com\u003e\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "4cc0b973392787edb12a72822ba80af6c2ddc29f",
      "tree": "b9f425e204b278309f038100f8d4d20bb47f633b",
      "parents": [
        "2d30aef71a0898a21fa989276a7caf2aecc4342f"
      ],
      "author": {
        "name": "saie-ch",
        "email": "132209179+saie-ch@users.noreply.github.com",
        "time": "Wed Sep 09 12:41:22 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 09 00:11:22 2026 -0700"
      },
      "message": "fix: clear forced theme on navigation (#87)\n\nFix stale dark theme state when navigating from the homepage to Docs or\nBlogs.\n\nCo-authored-by: Sai Eswar \u003csaieswar@Sais-MacBook-Air.local\u003e"
    },
    {
      "commit": "2d30aef71a0898a21fa989276a7caf2aecc4342f",
      "tree": "942c149cfc34f7ad8f225bb5458b7eb9d760d2e1",
      "parents": [
        "b6da7258cd10fb51bd88543b27033578b830fe03"
      ],
      "author": {
        "name": "Kranti Parisa",
        "email": "kranti@laserdata.com",
        "time": "Tue Sep 08 10:19:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 19:19:05 2026 +0200"
      },
      "message": "powered by structure with initial set of companies leveraging iggy. (#86)\n\nCreate a dynamic structure for the Powered By (/powered-by/) page on\nIggy\u0027s website. allow the community to submit their entries through\ngithub issue using a template. include README, TEMPLATE files and\ninitial set of companies who have shared their usage through public\nforums/discord channels/social posts etc.\n\n---------\n\nCo-authored-by: spetz \u003cpiotr.gankiewicz@gmail.com\u003e"
    },
    {
      "commit": "b6da7258cd10fb51bd88543b27033578b830fe03",
      "tree": "eb3fe2c96c6234efe7e87a832cc78528ad5ffb49",
      "parents": [
        "c7c38eb4d7e1e2549b9f76bce755b23a25f7ca20"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Sep 08 13:14:46 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:14:46 2026 -0700"
      },
      "message": "Fix OG-card (#85)\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "c7c38eb4d7e1e2549b9f76bce755b23a25f7ca20",
      "tree": "e83313590feca0e3e4380c74702d8b3b7935b4ea",
      "parents": [
        "0649604a498b9f3b3956fc7b000db917af3237f7"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Sep 08 13:01:33 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:01:33 2026 -0700"
      },
      "message": "Add announcement bar to home page (#84)\n\ndefault message to to star us on Github"
    },
    {
      "commit": "0649604a498b9f3b3956fc7b000db917af3237f7",
      "tree": "a139bfb9a7688e8af9b63f144c09e6f89c59f11d",
      "parents": [
        "3ebe50e127adcaef8668e9e76251ae38606b67b4"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Mon Sep 07 16:55:31 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 08:55:31 2026 +0200"
      },
      "message": "fix(site): give docs pages a unique document title (#83)"
    },
    {
      "commit": "3ebe50e127adcaef8668e9e76251ae38606b67b4",
      "tree": "f3061aef59ee626bc3646224864cec098637df32",
      "parents": [
        "54cf882ae7b02975345ac0d6f2532f380c331099"
      ],
      "author": {
        "name": "Chengxi Luo",
        "email": "chengxi.luo2004@gmail.com",
        "time": "Thu Sep 03 03:23:25 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 09:23:25 2026 +0200"
      },
      "message": "chore(docs): provide detail for new configuration (#68)"
    },
    {
      "commit": "54cf882ae7b02975345ac0d6f2532f380c331099",
      "tree": "af59443d71d47db1084f19b67cb5716e56c50eed",
      "parents": [
        "0d0db59c9073ccae6642cd66789d243af9f12d7e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 17:15:24 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 00:15:24 2026 -0700"
      },
      "message": "fix(site): serve the site\u0027s own 404 page on iggy.apache.org (#82)\n\n`next build` already emits out/404.html, but the ASF web server never\nuses it: unknown paths get httpd\u0027s bare \"Not Found\" body instead. The\nstatus code is 404 either way, so this only changes what agents and\nhumans read on the way out -- the built page points at /docs,\n/sitemap.xml and /llms.txt, which is the useful part.\n\nAdd a root .htaccess with `ErrorDocument 404 /404.html` and copy it into\nout/ alongside .asf.yaml in both the deploy and stage workflows.\n\nVerify on iggy.staged.apache.org before merging: the .htaccess only\ntakes effect once published, so it cannot be tested from a local build.\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "0d0db59c9073ccae6642cd66789d243af9f12d7e",
      "tree": "89633a903b0292960468dfbd9f3f0af238979c86",
      "parents": [
        "c1b4b806405f65d72a1b798ef11107415428d012"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 17:11:50 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 09:11:50 2026 +0200"
      },
      "message": "feat(site): add sitemap, robots.txt, llms.txt and page metadata (#77)\n\n`/sitemap.xml`, `/robots.txt` and `/llms.txt` all returned 404, and the\nonly metadata in the tree was a title, a description and a favicon.\n\n- `sitemap.ts` — 109 URLs: all docs pages, published posts, and the\nhand-written routes. Those are listed in `src/lib/site.ts`; a static\nexport has nothing to discover them from, so a new page under `(site)/`\nneeds adding there.\n- `robots.ts` — allow all, pointing at the sitemap.\n- `llms.txt/route.ts` — an [llms.txt](https://llmstxt.org) index built\nwith `fumadocs-core`\u0027s `llms()` helper, so it tracks `meta.json` instead\nof duplicating it. It says plainly that Iggy is a server and there\u0027s no\nAPI on this domain to call, which is what tools currently get wrong\nabout us.\n- `layout.tsx` — `metadataBase`, per-route canonical, Open Graph and\nTwitter cards, and `Organization` / `WebSite` / `SoftwareApplication`\nJSON-LD.\n- `not-found.tsx` — recovery links. We already return a real 404; it\njust had nowhere to go but `/docs`.\n- `(home)/page.tsx` — the \"How it works\" steps were `h4` under an `h2`,\nskipping a level. Now `h3`; nothing moves visually.\n\nTested with `npm run build`: checked the three new files, the\ncanonical/`og:*`/JSON-LD in `out/index.html`, and the links in\n`out/404.html`."
    },
    {
      "commit": "c1b4b806405f65d72a1b798ef11107415428d012",
      "tree": "f01d83608fe948fa84984779bee2e227fcfe9248",
      "parents": [
        "0f300d834deb03b501d601d8d167ee2a6a5a4f0e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 17:06:15 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 00:06:15 2026 -0700"
      },
      "message": "ci: add typecheck, docs and licence checks (#76)\n\nAdds a `checks` job that runs alongside the existing build:\n\n- `npm run typecheck` — `tsc --noEmit`. There is no linter and no\ntypecheck script today, so type errors only surface at the end of a full\nstatic export of every page.\n- `npm run check:links` — internal `/docs` links resolve, every page is\nlisted in its `meta.json`, and every local asset referenced from\n`content/` exists under `public/`.\n- `npm run check:headers` — ASF licence headers on source files under\n`src/` and `scripts/`.\n- `.asf.yaml` parses as YAML. A typo there is silently ignored by infra\ntoday.\n\nAll four pass on main as of this branch, so they lock in the current\nstate rather than fixing a broken one. Three files were missing licence\nheaders and now have them: `src/app/error.tsx`,\n`src/components/benchmark-chart.tsx`,\n`src/components/force-dark-theme.tsx`.\n\nSeparately, this makes the GitHub star fetch non-destructive. It now\nsends `GITHUB_TOKEN` when one is available, since the anonymous API\nlimit is per IP and shared runners hit it routinely; and when a fetch\nfails it keeps the previously fetched value instead of overwriting it\nwith a hardcoded fallback that had drifted about 800 stars behind.\n\n---------\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "0f300d834deb03b501d601d8d167ee2a6a5a4f0e",
      "tree": "adb9918f7ba9ab98a2063c3c3ad53105f4a4f03f",
      "parents": [
        "4d91901b5f3128db44a48d28cb6ff0880d3b4db1"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 16:20:08 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:20:08 2026 -0700"
      },
      "message": "docs: add a description to every docs page (#78)\n\nOnly 6 of 76 pages carried a description in frontmatter. Each\ndescription is one line drawn from the page\u0027s own opening, under 130\ncharacters, and says what the page covers rather than restating its\ntitle.\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "4d91901b5f3128db44a48d28cb6ff0880d3b4db1",
      "tree": "119a159999b2920b88233e0c694a85f98a035252",
      "parents": [
        "b788f4e4012c176ba4d95e425b23ec95f02c760b"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 16:17:02 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:17:02 2026 -0700"
      },
      "message": "feat(docs): publish a Markdown copy of every docs page (#79)\n\n\u003e Stacked on #77 as it edits `llms.txt`, so it needs that one merged\nfirst.\n\nAn agent that wants a docs page has to parse the rendered HTML today.\nThis writes a Markdown copy next to each page at build time, so\n`/docs/server/security/` is also available as\n`/docs/server/security.md`.\n\n- `scripts/generate-docs-markdown.mjs` runs in `prebuild` after the\nstars fetch and rewrites the copies from `content/docs` on every build.\nGenerated files are gitignored, like `src/github-stars.json`, so they\ncan\u0027t drift from the source.\n- Each docs page advertises its copy with `\u003clink rel\u003d\"alternate\"\ntype\u003d\"text/markdown\"\u003e`, and `llms.txt` states the convention.\n- The `.md` files aren\u0027t in the sitemap. They\u0027re page alternates, not\npages.\n\n`npm run build`, then: 76 `.md` files in `out/`, the `rel\u003d\"alternate\"`\nand `rel\u003d\"canonical\"` links both present on a docs page, `index.html`\ncount unchanged, and `git status` clean.\n\n---------\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "b788f4e4012c176ba4d95e425b23ec95f02c760b",
      "tree": "f9bd91c4f14469c7db3a4bff3a1c57bf1c4ada46",
      "parents": [
        "998beff29db413bca7ae00c8e73f0fcb0128e8bc"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 16:13:31 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:13:31 2026 -0700"
      },
      "message": "docs: use the latest tag in the About page docker run example (#80)\n\nThe paragraph above this example explains that latest images are the\nstable releases and edge images track master, and the Versioning section\nsays edge builds are not recommended for production use. The example\nthen ran apache/iggy:edge, so copying it gave a new user an unstable\nbuild.\n\nCo-authored-by: Kranti Parisa \u003ckranti@laserdata.com\u003e"
    },
    {
      "commit": "998beff29db413bca7ae00c8e73f0fcb0128e8bc",
      "tree": "6fd823b287620be005859f8333803e3a265bde04",
      "parents": [
        "bf3a3930baeed0fd11c0557a4c335d6bc8932538"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Sep 03 16:08:13 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:08:13 2026 -0700"
      },
      "message": "fix(site): read the homepage benchmark figures from one place (#81)\n\nThe hero advertised \"~1 ms\" labelled \"Avg Write Latency\". The latency\ntable two sections below, on the same page, gives the producer average\nas 0.466 ms and the P99 as 0.976 ms, so the hero was quoting a P99 under\nan average label and understating the measured average by more than\nhalf.\n\nThe numbers were hardcoded twice, in page.tsx and in\nbenchmark-chart.tsx, which is what let them drift apart. They now come\nfrom src/lib/benchmark.ts: the latency table, the stat tiles and the\nhero all read the same values, and the hero renders 0.5 ms from the\nproducer average rather than a literal.\n\nUpdate the figures in one file when a new benchmark run is published."
    },
    {
      "commit": "bf3a3930baeed0fd11c0557a4c335d6bc8932538",
      "tree": "3286f4a8e575f1a891236991b89fb18e918c0385",
      "parents": [
        "a334ca1f2b9c8c195385d0f3bd8b653089b93279"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Tue Sep 01 12:04:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 12:04:39 2026 +0200"
      },
      "message": "docs(community): update committer roster list (#75)"
    },
    {
      "commit": "a334ca1f2b9c8c195385d0f3bd8b653089b93279",
      "tree": "3225ab5dc5a516f01e76b100c527235109d3ff74",
      "parents": [
        "761921dc43de7a59e59dca9a636739ad00f5ec7c"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Sep 01 16:51:10 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 08:51:10 2026 +0200"
      },
      "message": "chore(site): restore Matomo analytics after the Fumadocs migration (#70)"
    },
    {
      "commit": "761921dc43de7a59e59dca9a636739ad00f5ec7c",
      "tree": "5705951f0610efb32050a6cbacf11b8b291225ac",
      "parents": [
        "c9a1499f2c61fb5c2dad7c30202467b067590a4f"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Tue Sep 01 16:42:59 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 08:42:59 2026 +0200"
      },
      "message": "docs: add a CONTRIBUTING guide for the website repo (#69)"
    },
    {
      "commit": "c9a1499f2c61fb5c2dad7c30202467b067590a4f",
      "tree": "22233ec0b75a2ef81a1f5a17990b032bcd5c03be",
      "parents": [
        "ec5682ecf655a3002e1395c9ad1359f92dbae965"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Mon Aug 31 10:54:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 10:54:38 2026 +0200"
      },
      "message": "fix(repo): give the required status check an app slug (#74)"
    },
    {
      "commit": "ec5682ecf655a3002e1395c9ad1359f92dbae965",
      "tree": "547011085188b49d34ba2c293031b316ea4f2e4b",
      "parents": [
        "97ab0154a943d99e258704619fff047dacb16ae7"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Mon Aug 31 10:26:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 10:26:52 2026 +0200"
      },
      "message": "build(repo): move off end-of-life Node 20 to Node 24 (#73)"
    },
    {
      "commit": "97ab0154a943d99e258704619fff047dacb16ae7",
      "tree": "aa13c46b5717ec814936c37b727e1cb6eb941ceb",
      "parents": [
        "28a55cea0e415e1a330a6f830d2f7964ceb5f4f1"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Mon Aug 31 10:16:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 10:16:16 2026 +0200"
      },
      "message": "chore(repo): match apache/iggy merge settings, align deploy with CI (#72)\n\nSquash merges used GitHub\u0027s default message: the title of the only commit or the PR title, followed by every commit message on the branch concatenated. On a PR with a few fixup commits that is noise in the main history. Take the PR title and body instead, and delete the head branch once a PR merges, which is how apache/iggy is set up.\n\nThe deploy workflows ran npm install with a hardcoded Node 20 while the pull request check runs npm ci against .nvmrc. A lockfile drift or Node bump would pass the PR check and then build something else at deploy time. Use the same install and version source in all three workflows so what CI verified is what gets published."
    },
    {
      "commit": "28a55cea0e415e1a330a6f830d2f7964ceb5f4f1",
      "tree": "0b2b874723c2c986538278715ccb794b47218089",
      "parents": [
        "23364c33ca22245a9e07d07ee279506e6d55ee93"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Mon Aug 31 09:53:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 09:53:55 2026 +0200"
      },
      "message": "chore(repo): require a review and a green build before merging to main (#71)\n\nNothing in the branch ruleset required a pull request review or a\npassing build, so anyone with write access could merge their own PR\ninto main with zero approvals, and a broken build was only caught by\nthe deploy job after the fact.\n\nAdd required_pull_request_reviews to the existing Default Branch\nProtection ruleset. One approval rather than the two apache/iggy\nuses on master: the site sees far less traffic and a two-committer\ngate would stall small doc fixes. Stale reviews are dismissed, the\nlast push must be approved, and review threads must be resolved, so\nnothing slips through by merging past it.\n\nAdd a CI workflow that runs npm ci and npm run build on every pull\nrequest and make it a required, strict status check: a PR must be\nup to date with main before it can merge, so the build that passed\nis the build that lands.\n\nnpm ci rather than the npm install the deploy jobs use: it fails\nwhen package-lock.json drifts from package.json instead of quietly\nresolving something else. Node version comes from .nvmrc so there is\none place to bump it."
    },
    {
      "commit": "23364c33ca22245a9e07d07ee279506e6d55ee93",
      "tree": "473efabb255c1f73f753e85ea7ca538711fcbf9d",
      "parents": [
        "f369abf52056f0a96060d4dfb4ef5fc595a7cfe3"
      ],
      "author": {
        "name": "spetz",
        "email": "piotr.gankiewicz@gmail.com",
        "time": "Mon Aug 24 15:23:41 2026 +0200"
      },
      "committer": {
        "name": "spetz",
        "email": "piotr.gankiewicz@gmail.com",
        "time": "Mon Aug 24 15:23:41 2026 +0200"
      },
      "message": "Iggy TLP blog post\n"
    },
    {
      "commit": "f369abf52056f0a96060d4dfb4ef5fc595a7cfe3",
      "tree": "d0f07d0c4d1b589677aec01c15a33439ba39c320",
      "parents": [
        "a9723265f83778f5fbf537c6a5edb5d8e86fc4fc"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Thu Aug 20 14:09:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 14:09:28 2026 +0200"
      },
      "message": "docs(site): rework protocol docs into Binary Protocol section (#67)\n\nThe 857-line schema page sat buried under Server and mixed every\nprotocol concern, the replica-to-replica wire was undocumented, and\nthe storage-engine write-pipeline diagram rendered unreadably while\ncontradicting the code.\n\nSchema content now lives in a top-level Binary Protocol section\nsplit by concern (framing, connection lifecycle, commands, shared\nencodings, message batches), plus a new server-to-server page\nwritten against the consensus code: command registry, frame seals,\nhandshake, replication, view changes, repair, state transfer, and\nsession forwarding. A meta-refresh stub keeps the old\n/docs/server/schema/ URL alive since the static export cannot\nredirect.\n\nThe write-pipeline diagram is redrawn without the back-edge cycle\nand long edge label that scrambled the site\u0027s mermaid renderer, and\nits claims are corrected against the server: stamping happens at\njournal-append time before replication acks, buffering at prepare\ntime, the flush gate is a three-way OR evaluated on commit events,\nand enforce_fsync does fdatasync on both the .log and .index.\nInherited errors fixed along the way: the header-kinds table was\nmissing code 8 (Int128); the server-stamped message time is the\nflat batch base_timestamp, not base_timestamp + timestamp_delta;\nand compression_algorithm is now documented as a placeholder (the\nvalue is stored and reported, but nothing compresses payloads yet -\nthe message-headers examples show the client-side pattern).\n\nTwo rendering fixes ride along. The mermaid component bumped\nfont-size attributes after layout, overflowing node boxes sized for\nthe original metrics and colliding adjacent nodes; it now zooms the\nwhole SVG uniformly instead. And the fumadocs mobile TOC bar\n([data-toc-popover]) is lifted to z-30 with an opaque background:\nit was sticky at z-10 and transparent, so docs content using z-10\npainted over it while scrolling under."
    },
    {
      "commit": "a9723265f83778f5fbf537c6a5edb5d8e86fc4fc",
      "tree": "d4303d8515df69cc43a279b03da0a68a462ab504",
      "parents": [
        "932b5b1f260d6c3803d4c083bb19f88d82f8c522"
      ],
      "author": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Thu Aug 20 02:43:37 2026 -0700"
      },
      "committer": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Thu Aug 20 02:43:37 2026 -0700"
      },
      "message": "Fixes #66, remove incubator related mentions.\n"
    },
    {
      "commit": "932b5b1f260d6c3803d4c083bb19f88d82f8c522",
      "tree": "a38323e83b5a8a106b4da9b8f97537193765e55b",
      "parents": [
        "f205971e98a504bd19c35c6d09359df1f8cef75d"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Wed Aug 19 13:04:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 13:04:54 2026 +0200"
      },
      "message": "chore(deps): update every npm dependency to latest (#65)\n\nThe site was twenty packages behind, carrying seven known\nvulnerabilities (five high) and blocking two Dependabot pull\nrequests that cannot land on their own. npm audit now reports zero.\n\nSix bumps cross a major: TypeScript 5.9 to 7.0, fumadocs-mdx 14 to\n15, lucide-react 0.563 to 1.32, sugar-high 0.9 to 2.0,\nbeautiful-mermaid 0.1 to 1.1, and @types/node 25 to 26. Each was\napplied on its own and gated on a full static export, with the\ngenerated out/ tree diffed against a pre-bump baseline. A green\nbuild says nothing about whether the site still renders the same\nHTML, so the HTML was compared directly.\n\nThree files needed adapting. TypeScript 7 refuses to start with\nbaseUrl set or with a non-relative path in paths, and its\nincremental artifact is now ignored. fumadocs 16.14 added a type\nfield to PageTree.Root, which broke the guard telling a root apart\nfrom a folder in the docs footer. And beautiful-mermaid renamed\nrenderMermaid to renderMermaidSVGAsync.\n\nTwo regressions came with the upgrade and are fixed here rather\nthan shipped. fumadocs-core 16.14 rebuilt structured-data\nextraction on mdast-util-to-markdown, so every search snippet\ndisplayed its markers: 2960 asterisk pairs, 7800 backticks, and\nio_uring split apart by an escape. A stringify option into\nremarkStructure restores plain text, and the rebuilt index matches\nthe pre-bump one on every dimension checked, including token\nvocabulary and posting counts. Separately, Next 16.3 reversed the\norder of the two title tags its built-in 404 page emits, so a real\nnot-found.tsx now replaces that page, leaving a single title and\ndropping an inline white background that fought the dark theme.\n\nTailwind 4.3 also changed its own default font stack, which would\nhave altered body text on Linux and Android, so the previous stacks\nare pinned explicitly. That exposed Geist being preloaded on every\npage since it was added, roughly 141 KB, without anything ever\nmapping --font-sans to it. The package is removed, and the mermaid\nrenderer no longer asks for a family that was never registered."
    },
    {
      "commit": "f205971e98a504bd19c35c6d09359df1f8cef75d",
      "tree": "f3112a1712af9482fdba1e7abd1fbd651587873a",
      "parents": [
        "fbe6173884a14f5966bc4e54912408493b61fb84"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Wed Aug 19 11:07:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 11:07:31 2026 +0200"
      },
      "message": "fix(site): correct stale claims, fix docs layout and navigation (#64)\n\nThe homepage and the docs disagreed with the server they describe.\nThe hero stat said 7 language SDKs while 8 exist, C++ was listed as\ncoming soon although that SDK shipped, and the clustering banner\npointed at a server-ng module that no longer exists. VSR clustering\nis built into the server and enabled through the [cluster] config\nsection. The docs index also implied HTTP speaks the custom binary\nprotocol, when HTTP is REST.\n\nThe docs further contradicted themselves about who picks a\npartition: some pages said the server round-robins and hashes\nmessage keys, the C# pages claimed the broker never routes. The\nbinary SDKs resolve balanced and key partitioning client-side and\nsend an explicit partition id, while the server keeps a live\nadmission fallback that the HTTP API and the Node SDK rely on. Both\nrules are now stated, with the SDK partition-count cache caveat.\n\nThe connector observability page listed the counter metrics with a\ndoubled _total_total suffix, plus a paragraph explaining that the\nencoder appends its own suffix. The runtime is being fixed to\nregister those counters without the literal suffix, so the page now\ndocuments a single _total and drops the explanation. This part only\nbecomes true once that upstream fix ships.\n\nPresentation lagged too. On phones the sticky docs subnav is 80\npercent opaque, so bright hero chips scrolling under it read as\ncontent leaking into the header, and the hero stat row and Why Iggy\ntable kept their desktop column counts, wrapping one word per line\nbelow 430px. Page names such as Introduction repeat across chapters,\nso a bare prev or next card did not say where the arrow led. The\nmobile subnav is now opaque like the desktop header, both grids\ncollapse on small screens, and each card carries the target\u0027s\nnearest parent folder name, for example Server: Introduction."
    },
    {
      "commit": "fbe6173884a14f5966bc4e54912408493b61fb84",
      "tree": "82a88c36391e3621f959223787874ba56681dfa9",
      "parents": [
        "ffcb7cfa29e0355234b7b49ebabd8b6a1cb2e63c"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Tue Aug 18 16:57:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 16:57:13 2026 +0200"
      },
      "message": "fix(docs): correct SDK and connector docs (revamp part 2) (#63)\n\nThe SDK, connectors, AI, and Web UI sections had drifted from the\ncode: quick starts that cannot log in, options that never shipped,\nwrong defaults, and 9 of the 18 connectors undocumented.\n\nEvery page is re-derived from the crate config structs and SDK\nsurfaces rather than the READMEs, which have drifted themselves.\nAdds catalog pages for the 9 missing connectors, a PHP SDK\nsection, and transforms and observability references. An\nadversarial review pass against the server code then corrected\n37 further defects, the worst being install and quick-start\ncommands that resolve to clients unable to reach or authenticate\nagainst a current server.\n\nCo-authored-by: Maxim Levkov \u003cmaxim.levkov@gmail.com\u003e"
    },
    {
      "commit": "ffcb7cfa29e0355234b7b49ebabd8b6a1cb2e63c",
      "tree": "9c0363b0ba018dcf62ec51325caf1e09c3f66fdf",
      "parents": [
        "65ffe27811aaee1913eb8ee6e7decd4d659c5190"
      ],
      "author": {
        "name": "Hubert Gruszecki",
        "email": "h.gruszecki@gmail.com",
        "time": "Tue Aug 18 14:32:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 14:32:24 2026 +0200"
      },
      "message": "fix(docs): correct core docs against the current server (revamp part 1) (#62)\n\nThe docs described a server that no longer ships: the VSR server\npromotion (#3856), the legacy wire format removal (#3904), per-topic\ncreation options (#3880), and generated root credentials broke most\ndocumented entry points. Config samples refused to boot, quickstarts\nfailed to log in, the wire schema was a protocol generation behind,\nand the clustering tutorial targeted deleted binaries.\n\nEvery page was audited against apache/iggy master 18a159a13 with\neach claim verified in source. Part 1 rewrites the server core:\nconfiguration with a relocated-keys migration table plus a per-topic\noptions page, the binary schema in three layers (framing, command\ncatalog, payload encodings), storage engine, clustering split into\nconcepts, deploy, configuration, security and client failover, the\nCLI reference generated from the clap tree, introduction with a\nstable concepts page, Rust and C# SDK pages with samples taken from\nCI-compiled examples, one canonical connection-strings reference,\nand refreshed architecture diagram data.\n\nAlso commits a repo CLAUDE.md with verified build commands and the\nconventions that fail silently when missed (meta.json registration,\nstatic-export limits, license headers, deploy branch topology).\n\nRemaining SDK languages, connectors, MCP, Web UI and FAQ follow in\npart 2."
    },
    {
      "commit": "65ffe27811aaee1913eb8ee6e7decd4d659c5190",
      "tree": "067a13545da5f2ff2e661b57eed78884d7d00c47",
      "parents": [
        "6432a2bd243dfaf018bed0e9f5d8cc1a8eeb0217"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Aug 05 20:57:05 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 03:57:05 2026 -0700"
      },
      "message": "fix(docs): correct the server setup section of Getting Started (#59)"
    },
    {
      "commit": "6432a2bd243dfaf018bed0e9f5d8cc1a8eeb0217",
      "tree": "d402e0be0dd8a6a524e729b149f8477980d2b92e",
      "parents": [
        "8369e30f3ff51b166aeed908e4860d85abab9600"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Wed Aug 05 20:56:06 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 03:56:06 2026 -0700"
      },
      "message": "fix(community): correct graduation checklist claims and invalid markup (#58)"
    },
    {
      "commit": "8369e30f3ff51b166aeed908e4860d85abab9600",
      "tree": "938887dac984dcde31ce912ed8926b03edfd16c0",
      "parents": [
        "f78fd6ed6a7e9f1222cc7576aae70dd10fe4b78e"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:47:24 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:47:24 2026 +0200"
      },
      "message": "fix(docs): make Java SDK examples re-runnable and report the right offset (closes #56) (#57)"
    },
    {
      "commit": "f78fd6ed6a7e9f1222cc7576aae70dd10fe4b78e",
      "tree": "faf4d4c022be2a4e714eababfb39ce1c4fb423ff",
      "parents": [
        "e6920dda02730da54a86ce0454bc6376f44c7188"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:47:08 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:47:08 2026 +0200"
      },
      "message": "fix(docs): make Node SDK quickstart and examples runnable (closes #51) (#52)"
    },
    {
      "commit": "e6920dda02730da54a86ce0454bc6376f44c7188",
      "tree": "59228fab2f52c1d21b1f70802673ed11b1b01f3b",
      "parents": [
        "e105e15b96d7ed8d5b04b48e5441f01e6db2c537"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:46:52 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:46:52 2026 +0200"
      },
      "message": "fix(docs): make Python SDK quickstart and examples runnable (closes #48) (#49)"
    },
    {
      "commit": "e105e15b96d7ed8d5b04b48e5441f01e6db2c537",
      "tree": "74c3fbfc6439d79adb108fafa76bc7c59617cdd9",
      "parents": [
        "b687c90aa668c3187ddfb3d8c3d42b56d84c5de1"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:46:02 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:46:02 2026 +0200"
      },
      "message": "fix(docs): correct Go SDK quickstart and examples to match the SDK API (closes #36) (#47)"
    },
    {
      "commit": "b687c90aa668c3187ddfb3d8c3d42b56d84c5de1",
      "tree": "86358d6278c7ba6473db3801f8267f848d77e6e6",
      "parents": [
        "705c49e512d8c1cabdf5eb09c67e3feb8e1e796d"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:45:13 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:45:13 2026 +0200"
      },
      "message": "fix(docs): make the Rust SDK quickstart compile and run (closes #54) (#55)"
    },
    {
      "commit": "705c49e512d8c1cabdf5eb09c67e3feb8e1e796d",
      "tree": "a3697d50223a69f59ec29d7480a9ba8e4478a93e",
      "parents": [
        "c0a5f3468013ed2a0ee438ad9fae6e92ee0f1174"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 17:43:45 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 09:43:45 2026 +0200"
      },
      "message": "fix(downloads): use closer.lua for release artifact links as ASF policy requires (#44)"
    },
    {
      "commit": "c0a5f3468013ed2a0ee438ad9fae6e92ee0f1174",
      "tree": "8dd6265c356c1ccd605ae89909ddaf4df52841fa",
      "parents": [
        "29175c168f5b8ed6e17c59fcb4e95f6e7905d39d"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "justin@classsoftware.com",
        "time": "Wed Aug 05 12:42:50 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 04 19:42:50 2026 -0700"
      },
      "message": "fix(branding): add TM symbol to first use of Apache Iggy (#45)"
    },
    {
      "commit": "29175c168f5b8ed6e17c59fcb4e95f6e7905d39d",
      "tree": "f0eca5c94ddc1a5290a40a19f2f07ef23e7acf39",
      "parents": [
        "34aac56fbca789389f0f888b9975fcbedf274f7b"
      ],
      "author": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:44:46 2026 -0700"
      },
      "committer": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:44:46 2026 -0700"
      },
      "message": "Resolves #53\n"
    },
    {
      "commit": "34aac56fbca789389f0f888b9975fcbedf274f7b",
      "tree": "521d7217737096cc365d2881aeb979e8e3ca171e",
      "parents": [
        "503e116b54c5d4b8ff9c81d842a87b707811efa0"
      ],
      "author": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:29:02 2026 -0700"
      },
      "committer": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:29:02 2026 -0700"
      },
      "message": "Add PMC selection creteria\n"
    },
    {
      "commit": "503e116b54c5d4b8ff9c81d842a87b707811efa0",
      "tree": "81b205b3233c317cc8a429f8e59069de8b6a029b",
      "parents": [
        "d76449bc9fabe8a4e3103d477895cf7189071bcb"
      ],
      "author": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:02:44 2026 -0700"
      },
      "committer": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 23:02:44 2026 -0700"
      },
      "message": "Gradutation readiness checklist\nResolves #50\n"
    },
    {
      "commit": "d76449bc9fabe8a4e3103d477895cf7189071bcb",
      "tree": "fc7b193d84c652f807cce6039153157c86f9e08d",
      "parents": [
        "b21c2524c90ae9e472ee9abb08926ac29f73c667"
      ],
      "author": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 21:54:21 2026 -0700"
      },
      "committer": {
        "name": "kparisa",
        "email": "kranti@laserdata.com",
        "time": "Fri Jul 31 21:54:21 2026 -0700"
      },
      "message": "Add Community section and sub pages for Team, How to Contribute, Become\na Committer, How to Release, Brand Kit\n"
    }
  ],
  "next": "b21c2524c90ae9e472ee9abb08926ac29f73c667"
}
