)]}'
{
  "log": [
    {
      "commit": "357e2851d9ba5d7f1edf4b1f4a64cf8326236901",
      "tree": "2c7d7cd8b28ff92916825fc8e24b4958215149ee",
      "parents": [
        "75f69d8845de18e8fd6bebbd16f485acd57f6d81"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Sep 18 14:15:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 14:15:56 2026 +0800"
      },
      "message": "AI Sessionizer 0.4.0 docs: the commit with the Homebrew fix (#932)\n\nThe Install page of the v0.4.0 tag tells a Homebrew user to tap without\ntrusting the tap first, and Homebrew 7 then refuses to load it. The docs\ncommit of 0.4.0 becomes the branch docs/v0.4.0 of the repository, which is\nthe tag with that one page fixed, so the published documentation of 0.4.0\nand of Latest gives commands that work."
    },
    {
      "commit": "75f69d8845de18e8fd6bebbd16f485acd57f6d81",
      "tree": "52e8da43436f90d9295ad9d51bef5708d4067730",
      "parents": [
        "82b05f4609262fc965d80c98d957b0f6a61051f2"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Sep 18 13:46:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 13:46:07 2026 +0800"
      },
      "message": "AI Sessionizer 0.4.0, and a release archive link for each project (#931)\n\n* Apache SkyWalking AI Sessionizer 0.4.0\n\nThe downloads page and the documentation of 0.4.0, the release post, and\nthe apt repository it is the first version of.\n\ndata/projects.yml carries the source package and the six binary archives\nof 0.4.0, linked through the mirror selector, with their signatures and\nchecksums on downloads.apache.org. 0.3.0 is no longer the latest: it keeps\nits documentation, and its files are linked from archive.apache.org, which\nkeeps every released version.\n\nstatic/apt is served at https://skywalking.apache.org/apt. It holds no\npackage: the index of every released version, signed with a key in the\nSkyWalking KEYS file, and a .htaccess that sends apt to the voted .deb on\nthe Apache download sites, through the mirrors for the newest version and\nto archive.apache.org for every older one.\n\n* Link each project\u0027s release archive, and list only the versions we recommend\n\nEvery released version stays on archive.apache.org once it leaves the\ndownload site, so the downloads page need not carry old releases itself.\nEach project with releases gets an archive field, and its card ends with\na plain link to it. skywalking-grafana-plugins has no directory in the\narchive yet, so it has no link.\n\nThe downloads page then lists the versions we recommend: AI Sessionizer\n0.4.0, and OAP 10.x and 11.x. The removed entries are AI Sessionizer\n0.3.0 and OAP 9.4.0 to 9.7.0, whose files and documentation of those\nversions go with them."
    },
    {
      "commit": "82b05f4609262fc965d80c98d957b0f6a61051f2",
      "tree": "bff84017d77d2f5532cbabd484ea6bc0e7a5a145",
      "parents": [
        "1ceaad5b06455f8a125784e05445ce271f58e534"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 17 12:15:37 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 17 12:15:37 2026 +0800"
      },
      "message": "Remove the AI Sessionizer container image from the project list\n\nThe site lists an image only when it is on Docker Hub. The AI Sessionizer\nimage is published to the GitHub container registry only.\n"
    },
    {
      "commit": "1ceaad5b06455f8a125784e05445ce271f58e534",
      "tree": "2a1d1eb48eb6c982d7074f43763d4a4a056cc11f",
      "parents": [
        "90f16aca8068fb8ad440c8991fcfc155e51b3d89"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 17 10:04:21 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 17 10:04:21 2026 +0800"
      },
      "message": "Release Apache SkyWalking AI Sessionizer 0.3.0\n\nAdd the 0.3.0 downloads, v0.3.0 and Latest docs pinned to the tag commit,\nthe ghcr.io container image, and the release post.\n"
    },
    {
      "commit": "90f16aca8068fb8ad440c8991fcfc155e51b3d89",
      "tree": "3254dea4161814374c52d6fde4f311df7e32a662",
      "parents": [
        "0dc4982e0df57af04c5d57eec0a301d1f1dc3ac2"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Sep 15 08:48:39 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Sep 15 08:48:39 2026 +0800"
      },
      "message": "Present AI observability as via Gateway or via AI Sessionizer on the homepage\n\nPoint the AI pillar CTA and the Claude Code card to AI Sessionizer docs\ninstead of the blog, and rename the Agent Router links to Via Gateway.\n"
    },
    {
      "commit": "0dc4982e0df57af04c5d57eec0a301d1f1dc3ac2",
      "tree": "2894010e46034913df726fde7d6d4f7d8e39460a",
      "parents": [
        "919cc586727ddbc5b806a00dff1f5aff1cd0c8b0"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Sep 14 22:36:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 22:36:05 2026 +0800"
      },
      "message": "Fix synced doc titles and rename Envoy AI Gateway to Agent Router (#930)"
    },
    {
      "commit": "919cc586727ddbc5b806a00dff1f5aff1cd0c8b0",
      "tree": "3e04f3f8dbc3e06c6dc916350a096f6336937406",
      "parents": [
        "85afd73cbeec8e4d3ad9670c6f167e7aeefec238"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Sep 14 15:04:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 15:04:58 2026 +0800"
      },
      "message": "Redesign homepage around cloud-native and AI observability (#929)"
    },
    {
      "commit": "85afd73cbeec8e4d3ad9670c6f167e7aeefec238",
      "tree": "d056a15452b2158dfcaced78434fc67008ab19b1",
      "parents": [
        "2788f66e7bcde928c2681d37c6f7e4c5aaa4ad36"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Sep 14 14:21:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 14:21:17 2026 +0800"
      },
      "message": "Redesign project navigation, downloads, events and Get started (#928)"
    },
    {
      "commit": "2788f66e7bcde928c2681d37c6f7e4c5aaa4ad36",
      "tree": "247b61cfc25a3a1a4e52439c48ca309737f6649f",
      "parents": [
        "4f6859b340200b78670ec91646e50cd659928580"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Sep 13 09:36:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 09:36:14 2026 +0800"
      },
      "message": "Add Sheng Wu\u0027s AWS Hero Alliance talk to community calendar (#927)"
    },
    {
      "commit": "4f6859b340200b78670ec91646e50cd659928580",
      "tree": "9588e7e91b434e79e00f91faa0fea0b53f660c89",
      "parents": [
        "a4970a6eaebc8b291e9b6183b6f7748a273afa7b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Sep 12 17:53:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 17:53:30 2026 +0800"
      },
      "message": "Add English and Chinese blogs on Claude Code metrics and change detection (#926)"
    },
    {
      "commit": "a4970a6eaebc8b291e9b6183b6f7748a273afa7b",
      "tree": "d537cd7d6a26b35b648d51e8c4c97f3fe1166d07",
      "parents": [
        "bbf9211f6363ff8abdc10765355b14083c1642eb"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Sep 12 09:00:08 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Sep 12 09:00:08 2026 +0800"
      },
      "message": "Simplify Chinese blog introduction\n"
    },
    {
      "commit": "bbf9211f6363ff8abdc10765355b14083c1642eb",
      "tree": "d5cfb493241763c99fc7c35ac56ee751d4106615",
      "parents": [
        "38d31abd5e04dd006d5b3181b6762bec20ce3489"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 10 15:14:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 15:14:28 2026 +0800"
      },
      "message": "Add Chinese edition of Horizon UI 1.0 GA announcement (#925)"
    },
    {
      "commit": "38d31abd5e04dd006d5b3181b6762bec20ce3489",
      "tree": "4cd838346fa0bf5631f3dabf531fa490905fe3f7",
      "parents": [
        "2c4961cc40d7e3b8110e6f9303354e7569aab5ce"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 10 09:24:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 09:24:37 2026 +0800"
      },
      "message": "Add Horizon UI 1.0 GA announcement (#924)"
    },
    {
      "commit": "2c4961cc40d7e3b8110e6f9303354e7569aab5ce",
      "tree": "2b821a7505341ca8555b2be4c2a6cc460d3e1d87",
      "parents": [
        "266a994792fbb6ad083a6736acea81265d44b240"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 10 08:25:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 08:25:26 2026 +0800"
      },
      "message": "Release Apache SkyWalking GraalVM Distro 0.4.0 (#923)\n\nAdd the 0.4.0 downloads and the release post, demote 0.3.0 to\narchive.apache.org, and point the GraalVM Distro docs at the v0.4.0 tag\ncommit (1e5dfed).\n\nKeep only Next/Latest/0.4.0/0.3.0 in docs.yml and 0.4.0/0.3.0 in\nreleases.yml, each labelled with the upstream OAP version it is built\nfrom: 0.4.0 -\u003e 11.0.0, 0.3.0 -\u003e 10.4.0.\n\nIn docs.yml that label goes in `versionName`, because docs.js uses\n`version` as a URL path segment for the generated sidebar. The 0.3.0\nentry carried the upstream version in `version` itself, so every left-nav\nlink on the v0.3.0 doc pages points at /0.3.0/ and 404s; it is now\n`v0.3.0`, matching its link."
    },
    {
      "commit": "266a994792fbb6ad083a6736acea81265d44b240",
      "tree": "1d7264b4ea2122bfbd028b07ae45cbefc3e7ce66",
      "parents": [
        "9692fcd458f113137338cbe8b5068dc19ffc68c8"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Tue Sep 08 21:09:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 21:09:23 2026 +0800"
      },
      "message": "Add Chinese translation for BanyanDB 0.11.0 release blog (#921)"
    },
    {
      "commit": "9692fcd458f113137338cbe8b5068dc19ffc68c8",
      "tree": "c5047363dbfef3db59ea3a89e2b62a09149d9a6c",
      "parents": [
        "acca8949b98a0e511dc0db026f4441826b2e8533"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Tue Sep 08 12:21:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 12:21:21 2026 +0800"
      },
      "message": "Update news of BanyanDB Helm 0.7.0 (#920)"
    },
    {
      "commit": "acca8949b98a0e511dc0db026f4441826b2e8533",
      "tree": "6856506182cb1f7920eb21912ad34eae10266184",
      "parents": [
        "7f7a275a57e111d8c8bd33b0d617479f0da8fa9a"
      ],
      "author": {
        "name": "Wan Kai",
        "email": "wankai123@foxmail.com",
        "time": "Mon Sep 07 17:16:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 17:16:42 2026 +0800"
      },
      "message": "Add blog for trace tail sampling. (#919)"
    },
    {
      "commit": "7f7a275a57e111d8c8bd33b0d617479f0da8fa9a",
      "tree": "b27fd4f83e273e338dcbd4b3d018804ddf7ba5c9",
      "parents": [
        "826ee6b783a0f4ccaa1738be1d88c989d5801adf"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Mon Sep 07 14:26:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 14:26:14 2026 +0800"
      },
      "message": "Add BanyanDB 0.11.0 release blog (#918)"
    },
    {
      "commit": "826ee6b783a0f4ccaa1738be1d88c989d5801adf",
      "tree": "8199e69b71faebf3e3e463aa525ca6c9f15ebd73",
      "parents": [
        "de24bbe18c63a902156b112398e8398681e0c2b6"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Sep 04 11:04:18 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Sep 04 11:04:18 2026 +0800"
      },
      "message": "Add featured image to AI Sessionizer blog\n"
    },
    {
      "commit": "de24bbe18c63a902156b112398e8398681e0c2b6",
      "tree": "55ebf57a3e85644956ff2061307c9c89676e4023",
      "parents": [
        "dfaa693f6c856d3dabb539ddd8e49ed3a203e7c3"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Sep 04 10:57:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 10:57:03 2026 +0800"
      },
      "message": "Add AI Sessionizer first-look blog (#916)"
    },
    {
      "commit": "dfaa693f6c856d3dabb539ddd8e49ed3a203e7c3",
      "tree": "fd0ff46a096419e083923045bb622478068e751f",
      "parents": [
        "c01c2348609c621525af10df1d338eb737a87f80"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Sep 03 14:05:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 14:05:47 2026 +0800"
      },
      "message": "Docs: add AI Sessionizer, and fold Grafana Plugins into SkyWalking Servers (#915)\n\napache/skywalking-ai-sessionizer already carries docs/ with a menu.yml, so\nits documentation is hosted on the site rather than linked out to GitHub.\nA Next entry only: the repo has no tags and no releases, and pinning a\nversioned entry to a main commit would publish docs for a version that\ndoes not exist.\n\nGrafana Plugins is no longer a top-level section. Its one project moves\ninto SkyWalking Servers, next to the sessionizer. Two consequences of\ndropping the section header:\n\n  - The card is renamed \"Plugin for Service Topology\" -\u003e \"Grafana Plugin\n    for Service Topology\", since without the header the old name no longer\n    said what it plugs into. This changes its anchor from\n    #PluginforServiceTopology to #GrafanaPluginforServiceTopology.\n  - The section\u0027s standalone note card (\"Metrics visualization on Grafana\n    is supported through PromQL...\") had no section left to preface and\n    would have rendered as a stray text tile among project cards, so its\n    substance moves into the entry\u0027s own description, trimmed to fit the\n    card\u0027s three-line clamp.\n\nThe merged section mixes a GitHub-linked entry with website-hosted ones.\nThat is safe and already precedented in five other sections: docs.js\nguards on repoUrl per item, not per section.\n\nVerified with npm run docs — the generation CI runs — plus a full hugo\nbuild. All seven sessionizer pages render, its card resolves Read docs to\nthe hosted page with no versions dropdown, the Grafana card keeps its\nGitHub links and v0.1.0 dropdown, and the page is down to ten sections\nwith no orphan note card.\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "c01c2348609c621525af10df1d338eb737a87f80",
      "tree": "b4dde4647ab181312beefdcb3f4d0253ad796fff",
      "parents": [
        "ef4cd4ddd281dfddc2bbf29404c926c007cc66bc"
      ],
      "author": {
        "name": "kezhenxu94",
        "email": "kezhenxu94@apache.org",
        "time": "Tue Sep 01 20:48:40 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 20:48:40 2026 +0800"
      },
      "message": "feat: add skywalking-eyes 0.9.0 (#914)\n\nAdd the 0.9.0 release event post, and point releases.yml and docs.yml at the 0.9.0 artifacts and the v0.9.0 tag."
    },
    {
      "commit": "ef4cd4ddd281dfddc2bbf29404c926c007cc66bc",
      "tree": "adeaffad8578d4c63364a9ce4be5bfe2bdfc10a8",
      "parents": [
        "8f59edda8902132adc74daa5141131fc6dffc2ed"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Aug 31 21:31:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 21:31:50 2026 +0800"
      },
      "message": "Downloads: link the Helm chart tarball on the Kubernetes Helm card (#913)\n\nskywalking-helm-\u003cversion\u003e.tgz — the packaged chart, and the artifact people\nactually install — is published to the ASF dist but was never linked. The\nKubernetes Helm card carried a Source section alone, offering only the source\ntarball, so the chart was reachable only by browsing the mirror by hand.\n\nAdds a Distribution section with the chart for 5.0.0 (closer.cgi plus\ndownloads.apache.org signatures) and 4.9.0 (archive), labelled \"Helm chart\"\nto match what the SWCK card already shows. All six links verified to return\n200.\n\nThis is a standing omission rather than something 5.0.0 introduced — 4.9.0\nshipped the chart too. It became visible now because SWCK 0.11.0 started\npublishing its own chart in #912, leaving two adjacent cards disagreeing\nabout whether a released chart gets a link."
    },
    {
      "commit": "8f59edda8902132adc74daa5141131fc6dffc2ed",
      "tree": "68453986f0249fb73bec2bb3493b1cc47a5d9c5f",
      "parents": [
        "36d23dc2426f69746b22ceb4f20f733acb09db68"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Aug 31 20:23:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 20:23:52 2026 +0800"
      },
      "message": "Release Apache SkyWalking Helm Chart 5.0.0 and SWCK 0.11.0 (#912)\n\nreleases.yml: add helm 5.0.0 and swck 0.11.0 at the top of their sections,\ndated Sep. 1st, 2026, and demote 4.9.0 and 0.10.0 to archive.apache.org.\nAll 21 links verified to return 200.\n\nSWCK 0.11.0 ships its Helm chart as a signed, voted artifact for the first\ntime (skywalking-swck-0.11.0.tgz, absent from 0.10.0), so it is listed beside\nthe binary tarball using the \"|\" separator pattern the GraalVM distro card\nalready uses. Without it the new artifact would be invisible on the site.\n\nTwo event posts, each in its component\u0027s established style: the Helm one\nkeeps the release\u0027s Breaking changes / Features / Corrections structure, the\nSWCK one the Features / Bugs / Chores shape its earlier posts use. Per the\nrepo\u0027s rules the release-tooling, e2e and dependency-bump entries are left\nout of the SWCK post, which was most of its changelog\u0027s volume.\n\ndocs.yml already points at these versions from #910, so the docs and\ndownloads pages now agree — the gap noted there is closed.\n\nNote the posts are dated 2026-09-01. Hugo does not build future-dated\ncontent and buildFuture is unset, so merging before Sep 1 10:00 UTC leaves\nthe two event pages ungenerated until the next daily scheduled build picks\nthem up. The downloads page updates immediately either way, since its dates\nare plain display strings."
    },
    {
      "commit": "36d23dc2426f69746b22ceb4f20f733acb09db68",
      "tree": "c1b84cea01dfbf973b8fcac39cf859216e15c530",
      "parents": [
        "93dc6054f39188aac4d5fa47e8e3d46be392c71e"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Aug 31 08:04:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 08:04:38 2026 +0800"
      },
      "message": "Close floating dropdowns when clicking outside them (#911)\n\nA native \u003cdetails\u003e stays open until its own summary is clicked again, so the\ndocs \"versions\" picker — and the downloads \"+N more\" and blog topic filter,\nwhich share the pattern — hung over the page after the reader moved on. The\nonly way to dismiss one was to find its summary again.\n\nClose them on an outside click and on Escape, and let opening one close the\nothers so only a single panel is ever up. Clicking inside an open panel keeps\nit open, so the version links stay reachable.\n\nScoped by class to the three floating dropdowns. .dl-archived is deliberately\nexcluded: it is an inline accordion rather than a floating panel, and should\nstay where the reader put it.\n\nWired through a new layouts/partials/hooks/body-end.html, which overrides the\ntheme\u0027s own hook — called from its scripts.html, which every one of our baseof\ntemplates already loads. That covers docs, downloads, blog and zh from one\nfile and leaves the theme unforked, the same way hooks/head-end.html carries\nthe SEO partials. The theme\u0027s body-end only holds an Algolia docsearch\nplaceholder, kept verbatim so the override loses nothing.\n\nVerified by driving a real browser against a local build: opening works,\nan outside click closes, opening a second closes the first, Escape closes\nall, and a click inside the panel leaves it open. Confirmed on all three\ndropdown kinds, and confirmed .dl-archived still stays open."
    },
    {
      "commit": "93dc6054f39188aac4d5fa47e8e3d46be392c71e",
      "tree": "685ebe752f0e51ed067082544d94cbc546279815",
      "parents": [
        "2c859cc08f243939bf6c7eeafc54bd8951a96b69"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Aug 31 07:43:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 07:43:37 2026 +0800"
      },
      "message": "Docs: host Helm and SWCK docs on the website (#910)\n\nBoth repos carry docs/ with a menu.yml, so their docs can be rendered by\nthe site rather than linked out to GitHub.\n\nKubernetes Helm was GitHub-linked with a single v4.9.0 tree link. It is now\nwebsite-hosted with Next / Latest / v5.0.0, Latest and v5.0.0 sharing the\nv5.0.0 tag commit so seo/doc-canonical-map.html points the versioned tree\nat /latest/. The old v4.9.0 entry is dropped rather than kept alongside: a\ncomponent cannot mix hosted and GitHub-linked entries, because docs.js runs\nevery entry through doc.sh once repoUrl is present and an external link dies\nat `cp ./docs/menu.yml` under set -o errexit.\n\nrepo also moves from skywalking-kubernetes to skywalking-helm, matching the\nupstream rename that the old name now only reaches by redirect. That puts\nthe docs at /docs/skywalking-helm/, which breaks nothing since this\ncomponent had no website doc URLs before, and it gives the card a star\ncount — apache/skywalking-kubernetes has no entry in data/stars.yml.\n\nSWCK moves Latest onto the v0.11.0 tag commit, adds a v0.11.0 entry on the\nsame commitId, and drops v0.10.0 so the site recommends 0.11.0 only.\n\nVerified with npm run docs — the same generation CI runs — followed by a\nfull hugo build. Both trees render, the cards read Next / v5.0.0 and\nNext / v0.11.0, the in-page version switchers offer next / latest / the\nrelease, the canonicals resolve to /latest/readme/, and no GitHub tree\nlinks remain on either card.\n\nNote for reviewers: v5.0.0 and v0.11.0 are git tags without published\nrelease artifacts — no GitHub release object, and the ASF dist still\ncarries helm 4.9.0 and swck 0.10.0 — so the docs will run ahead of what\nthe downloads page offers until those releases land. Removing swck v0.10.0\nalso retires 17 currently published pages under that tree."
    },
    {
      "commit": "2c859cc08f243939bf6c7eeafc54bd8951a96b69",
      "tree": "a2f035f18bda16c5a7257857febb0dd629ebec2c",
      "parents": [
        "8994092c725c0d3775af4df51a5749b03a2bbe3d"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Aug 28 20:57:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 20:57:00 2026 +0800"
      },
      "message": "Quickstart: SkyWalking 11.0.0, Horizon UI 1.0.0, BanyanDB 0.11.0 (#909)\n\n* Quickstart: SkyWalking 11.0.0, Horizon UI 1.0.0, BanyanDB 0.11.0\n\nBumps both quickstart scripts to the current releases and switches the UI\nto Horizon, which is what the compose manifest they download now expects.\n\n  SW_VERSION             10.4.0 (sh) / 10.2.0 (ps1) -\u003e 11.0.0\n  SW_HORIZON_UI_VERSION  new                        -\u003e 1.0.0\n  SW_BANYANDB_VERSION    0.8.0 (ps1)                -\u003e 0.11.0\n\nThe UI image had to change, not just its tag. apache/skywalking docker\u0027s\ncompose now defaults UI_IMAGE to the Horizon image; the legacy UI is gone\nand apache/skywalking-ui:11.0.0 does not exist. Note the released Horizon\nimage is on Docker Hub as apache/skywalking-ui:horizon-\u003cversion\u003e — the\nghcr.io/apache/skywalking-horizon-ui path that docker/README.md and .env\npoint at only carries commit-SHA tags and latest, so pinning a release\nagainst it would 404.\n\nBoth scripts now also download horizon.yaml beside the manifest. The ui\nservice bind-mounts ./horizon.yaml relative to the compose file, and the\nimage reads its OAP URLs and login users only from there, so fetching the\nmanifest alone leaves compose failing on a missing mount. The PowerShell\nscript back-fills it when the user reuses an older manifest as well.\n\nDrops two dead lines from the shell script: the perl rewrite of the OAP\nhealth check and the start_period sed. Upstream\u0027s compose already ships\nthe /dev/tcp probe and start_period: 90s, so both matched nothing.\n\nVerified by fetching the real manifest and config into a temp dir exactly\nas the script does: docker compose config resolves all three images, the\nhorizon.yaml mount resolves to a real file, and up --dry-run creates the\ncontainers on both the elasticsearch and banyandb profiles. All three\nimages confirmed pullable. The PowerShell script is reviewed by eye only;\nno pwsh available here.\n\n* Quickstart: host horizon.yaml on the website instead of fetching a branch tip\n\nThe scripts were pulling the Horizon config from apache/skywalking\u0027s master\nbranch, which can change under a released quickstart the same way the image\ntags cannot. Serve our own copy at https://skywalking.apache.org/horizon.yaml\n— content/horizon.yaml, published at the site root the same way\nquickstart-docker.{sh,ps1} already are — and fetch that.\n\nThe config body is identical to the upstream copy; only the header comment\ndiffers, explaining where it is served from and that the service names have\nto match the compose manifest the scripts download.\n\nVerified by building the site, serving it, and running the scripts\u0027 fetch\npath against it: horizon.yaml is published at the root, parses as YAML, and\ncompose up --dry-run creates the containers on the banyandb profile.\n\n* Quickstart: boot with skywalking/skywalking and print it at the end\n\nThe hosted horizon.yaml carried the upstream demo user admin/admin. Use\nskywalking/skywalking instead, and tell the user what it is — the sign-in\ncredentials were nowhere in the output, so a first-time run reached a login\npage with no way past it.\n\nBoth scripts now close with the username and password and a note to change\nthem before exposing the UI beyond localhost.\n\nThe Argon2id hash was generated with the argon2 module inside the Horizon\nimage itself, so it is the same implementation the verifier uses; the\nrotation command is recorded in a comment above it.\n\nVerified against a real container: booted the image with this config and\nPOSTed /api/auth/login. skywalking/skywalking returns 200 with\nroles [\"admin\"] and verbs [\"*\"]; admin/admin and a wrong password both\nreturn 401."
    },
    {
      "commit": "8994092c725c0d3775af4df51a5749b03a2bbe3d",
      "tree": "6f9a6fd49bc0e60a082b83c9dac9d3195b1da9f1",
      "parents": [
        "5b73d13e9e61ede4a68c69a149ef22cbf4aa829a"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Fri Aug 28 10:43:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 10:43:04 2026 +0800"
      },
      "message": "Release Apache SkyWalking BanyanDB 0.11.0 (#908)"
    },
    {
      "commit": "5b73d13e9e61ede4a68c69a149ef22cbf4aa829a",
      "tree": "ec3bc15b785712e85acc74cac4c654fc6e0d1113",
      "parents": [
        "953980ec89f0689dc0ac1738edb6860796089ac5"
      ],
      "author": {
        "name": "Wan Kai",
        "email": "wankai123@foxmail.com",
        "time": "Fri Aug 28 10:30:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 10:30:05 2026 +0800"
      },
      "message": "Release Apache SkyWalking version 11.0.0 (#907)\n\n* Release Apache SkyWalking version 11.0.0\n\n* add announce blog"
    },
    {
      "commit": "953980ec89f0689dc0ac1738edb6860796089ac5",
      "tree": "5f69c8c62c975b7557f99d49f2b8f8164215e79d",
      "parents": [
        "da184acb724887097541afdb8af047c9b628cfaa"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Aug 28 10:17:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 10:17:23 2026 +0800"
      },
      "message": "Release Apache SkyWalking Horizon UI 1.0.0 (#906)\n\n* Release Apache SkyWalking Horizon UI 1.0.0\n\nreleases.yml: add 1.0.0 at the top of source and distribution, dated\nAug. 28th, 2026, and demote 0.7.0\u0027s links from closer.cgi/downloads to\narchive.apache.org. 0.6.0 is kept.\n\ndocs.yml: move Latest onto 19ca126d9bd931b51af86e31086bf615dad3decd, the\nv1.0.0 tag commit, and add a v1.0.0 entry carrying the same commitId so\nseo/doc-canonical-map.html points the versioned tree at /latest/ rather\nthan letting the two compete.\n\nEvent post condensed from docs/changelog/1.0.0.md at the tag, in the\nsection style the 0.6.0 and 0.7.0 posts use.\n\nVerified against a local build: doc.sh checks the commitId out cleanly at\n\"Prepare release 1.0.0\" and generates the sidebar and doc tree; the built\nv1.0.0 doc page emits rel\u003dcanonical to /latest/readme/; the downloads page\nshows 1.0.0 as latest with 0.7.0 and 0.6.0 on archive, and all six archive\nlinks for those two answer 200.\n\nThe 1.0.0 artifacts are committed to dist/release/skywalking/horizon-ui/\nin SVN, but downloads.apache.org had not mirrored them at the time of\nwriting, so the .asc and .sha512 links 404 until it syncs. The URLs match\nthe filenames in SVN exactly.\n\n* Horizon UI: drop the pre-1.0 versions from the downloads and docs pages\n\nWith 1.0.0 out, 0.7.0 and 0.6.0 come off both pages. releases.yml keeps\nonly the 1.0.0 source and distribution rows, so the card loses its\n\"+N more\" dropdown; docs.yml keeps Next, Latest and v1.0.0.\n\nThe release event posts for 0.5.0, 0.6.0 and 0.7.0 stay where they are —\nthose are the historical announcements, and the artifacts remain on\narchive.apache.org for anyone who needs them."
    },
    {
      "commit": "da184acb724887097541afdb8af047c9b628cfaa",
      "tree": "5dcd53f34e163ad4c1e68d19b99eeff97d4f46e1",
      "parents": [
        "3dff8e46a8abb31f325d40cebb92a2e5930ce217"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Aug 26 18:41:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 18:41:25 2026 +0800"
      },
      "message": "Team: give every member a shareable permalink and a GitHub link (#905)"
    },
    {
      "commit": "3dff8e46a8abb31f325d40cebb92a2e5930ce217",
      "tree": "cd3065b246ab620a3226d8f49c07140686ed60f0",
      "parents": [
        "fb0cc4f20e5965bc3405faab5dfaae71e6a6f000"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Aug 25 22:53:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 22:53:26 2026 +0800"
      },
      "message": "Align card titles with their icons, and fix two ISO-format release dates (#904)\n\nThe theme sets `h1..h6 { padding-top: 1.1rem }` globally. Both card titles\nare `\u003ch5\u003e` and reset only `margin`, never `padding`, so that 17.6px sat\ninside the flex item — `align-items: center` centered the padded box and\ndropped the visible name ~9px below the icon on every project card, on\nboth /downloads and /docs.\n\nReset `padding` on `.dl-card-title`, `.docs-card-title`, and the Docker\ncard\u0027s `h5` (same page, same inherited padding). With the padding gone a\nwrapped 2-line docs title is 36.25px, which overflowed `.docs-card-head`\u0027s\n30px min-height and would have pushed that card\u0027s description below its\nneighbours\u0027, so raise it to 37px. `.dl-card-head`\u0027s 44px already covers\nthe new, shorter content.\n\nAlso normalize two release dates that were still in ISO form —\nNodeJS Agent 0.9.0 and Python Agent 1.2.0 — to the site\u0027s\n`Mon. DDth, YYYY` format."
    },
    {
      "commit": "fb0cc4f20e5965bc3405faab5dfaae71e6a6f000",
      "tree": "1bf4bdd3ac4722499ce2fd5682a49d08430357dd",
      "parents": [
        "3e7fb3859c7d144e393147d9951094197171c6ec"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Aug 21 10:26:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 10:26:55 2026 +0800"
      },
      "message": "Home: show both ways of investigating with AI (#903)"
    },
    {
      "commit": "3e7fb3859c7d144e393147d9951094197171c6ec",
      "tree": "a897d7b39ff7749c200a03447a710581eaeca533",
      "parents": [
        "34fe3bb600eb8af319cb7c4d78fadf7934b331a8"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Aug 21 08:48:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 08:48:25 2026 +0800"
      },
      "message": "Polish the Chinese wording of the AI Assistant post (#902)\n\nA pass over the translation, replacing borrowed English with the Chinese a\nreader would expect: live data 实时数据, zoom/filter 缩放和过滤, component\n组件, investigation 排查, and \"一堵文字墙\" with \"一整屏文字\". Four section\nheadings are reworded the same way.\n\nProduct and protocol nouns stay in English where the UI and the docs use\nthem, including the widget names the assistant chooses between — line charts,\nsingle-value cards, top-N lists, tables and record lists — and MQE, OAP,\nlayer, scope, topology and trace.\n\nProse only: every link, both figures, the video shortcode and the front\nmatter keys are unchanged."
    },
    {
      "commit": "34fe3bb600eb8af319cb7c4d78fadf7934b331a8",
      "tree": "6c8184edd52690f27a70f89c9fbc6ffbed7967b9",
      "parents": [
        "37b223b324f538831b34c0ae1b07e65785bb4d96"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Aug 19 10:35:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 10:35:34 2026 +0800"
      },
      "message": "Blog: paginate the post indexes, and give the Chinese posts working label filtering (#901)\n\n* Blog: paginate the English and Chinese post indexes\n\n/blog/ carried all 101 posts and /zh/ all 112, in one document each. Both now\npage at 24 posts, five pages apiece, using the same paginated-year-groups\nshape layouts/events/list.html already uses and the .blog-pagination markup\nand styles the tag pages already ship.\n\nYear headings come from the current pager page, so a year can appear on two\nconsecutive pages. The topic-filter counts still read the full post set, not\nthe current page.\n\nFeeds, the sitemap and per-post canonicals are untouched: the feed comes from\nlayouts/_default/list.rss.xml, which does not paginate, and Hugo keeps pager\npages out of the sitemap.\n\n* Blog: give the Chinese posts their own label filtering\n\nClicking a topic on /zh/ went to /tags/\u003cterm\u003e/, which filters to Section\n\"blog\" — so a label counted as 12 Chinese posts opened a page of 15 English\nones, with a \"back\" link to the English blog. Chinese readers had no way to\nfilter their own posts.\n\n/zh/ posts share the global `tags` taxonomy with /blog/, and one URL can only\nrender one list, so the Chinese terms cannot live at /tags/\u003cterm\u003e/. They are\ncontent stubs under content/zh/tags/\u003cslug\u003e/ instead, one per canonical topic\nin data/blog_topics.yml, carrying the topic name in front matter and rendered\nby layouts/zh/tagterm.html — filter the Chinese posts first, then page at 12,\nexactly as the English term page does.\n\nThe topic menu, the card labels on /zh/ and the labels on Chinese posts all\npoint at the new routes, so the counts in the menu now match what opens.\n\nAlso adds layouts/tags/list.html. /tags/ had a term layout but no list layout,\nso the English topic directory rendered as a blank page; it now mirrors the\nChinese one at /zh/tags/."
    },
    {
      "commit": "37b223b324f538831b34c0ae1b07e65785bb4d96",
      "tree": "24e5fd97da5a2fbc7c9cbbfb2133c415022b4988",
      "parents": [
        "a9cbb25b2ffdbee720a7dd8ea90d710367cb514b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Aug 16 13:09:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 13:09:59 2026 +0800"
      },
      "message": "Downloads: restore the archive links, fold archived releases to the bottom (#900)\n\n* Restore the archive links the redesign dropped from Archived Releases\n\n#431 added \"- type: Archive\" to releases.yml purely so the section got a nav\nchip, and put the actual content in a hardcoded container-archived block in\ndownloads-block.html: a note that older releases are unmaintained but still\ndownloadable, plus links to the ASF archive and the incubator archive.\n\nThe redesign (#844) rewrote downloads-block.html and dropped that block, but\nleft the now-renamed \"Archived Releases\" entry in releases.yml behind. Since\nthat entry has never had a list, the chip and the \u003ch2\u003e have rendered above an\nempty grid ever since.\n\nRestores the text as the category description so it is data-driven rather than\nhardcoded, and renders any category description under its heading. Every other\ncategory has a null description, so nothing else changes.\n\n* Fold archived releases and move them below the Docker images\n\nMost people on the downloads page are looking for something current, so an\narchived category no longer sits in the middle of the page: it renders last,\nafter the Docker images, as a \u003cdetails\u003e that is shut by default and shows\nonly its title and a component count until opened.\n\nCategories opt in with `archived: true` in releases.yml, so this is a\nproperty of the data rather than a special case for one hard-coded section.\nThe chip strip and the \"Latest releases\" aside follow the same flag — chips\nfor archived categories move after the Docker chip, and archived components\nno longer compete for a slot in the aside.\n\nThe card grid moves to partials/downloads-cards.html so the live and folded\npaths render identical markup.\n\nAnchors keep working: a \u003cdetails\u003e holding the target of location.hash is\nopened on load and on hashchange, so /downloads/#BanyanDBJavaClient and the\nArchived Releases chip both land on an expanded section."
    },
    {
      "commit": "a9cbb25b2ffdbee720a7dd8ea90d710367cb514b",
      "tree": "f93a7178d8c1fc2c5eeacf668fac1f6e444ef9b8",
      "parents": [
        "f3bfb8de8865c7c228ff1778b833099d2cf74d55"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Aug 16 10:31:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 10:31:44 2026 +0800"
      },
      "message": "Archive the BanyanDB Java Client (#899)\n\nThe client is deprecated: BanyanDB clients, including the OAP server, use\nthe BanyanDB Client Proto directly, so there is nothing left to release\nhere.\n\n- docs.yml: move it out of Database into Archived Repositories, as\n  \"(Archived) BanyanDB Java Client\", dropping the README doc links so the\n  card matches the other archived repositories.\n- releases.yml: move v0.9.1 into Archived Releases and repoint src/asc/sha512\n  at archive.apache.org, since downloads.apache.org only carries current\n  releases and this component will not have another one. The Maven\n  coordinates are unchanged. Also fixes the \"Oct 15th , 2025\" date to the\n  \"Mon. DDth, YYYY\" form used everywhere else.\n\nThis is also why the Archived Releases section looked broken. It was added\nas a bare \"- type:\" with no list, so the chip and the \u003ch2\u003e rendered but the\ngrid below them was empty — the section existed with nothing in it. It now\nhas its first entry.\n\nThe card keeps its BanyanDBJavaClient id, so existing links to\n/downloads/#BanyanDBJavaClient still resolve."
    },
    {
      "commit": "f3bfb8de8865c7c228ff1778b833099d2cf74d55",
      "tree": "c267bf4989acdba819c3795abd9a902112b62421",
      "parents": [
        "6c38cb4faf02a01717b80e7e945b3ba4a2f6ab2c"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Aug 16 08:22:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 08:22:27 2026 +0800"
      },
      "message": "Host the NodeJS Agent docs on the website (#898)\n\nskywalking-nodejs moved its user documentation into docs/ with a menu.yml\n(apache/skywalking-nodejs#145), so the agent can render on the site like\nevery other Hugo-hosted component instead of linking out to a GitHub tree.\n\nAdds repoUrl and the Next/Latest/v0.9.0 entries. Next tracks master\n(0.10.0-dev). Latest and v0.9.0 both pin bf5dc68 on the 0.9.0-docs branch,\nwhich is the v0.9.0 tag commit plus the docs move; a follow-up commit there\nremoves what landed after the release, so the snapshot documents the agent\nusers actually run. Sharing one commitId between Latest and v0.9.0 also lets\nseo/doc-canonical-map.html point the tagged tree at /latest/.\n\nThe old GitHub-tree entry could not be kept alongside these: repoUrl is\nitem-level, so docs.js runs every entry through doc.sh, and an external link\nhas no docs/menu.yml to copy. The version switcher likewise builds its target\nby substituting the slug into /docs/\u003crepo\u003e/\u003cversion\u003e/, so it cannot reach\ngithub.com. Nothing is lost — at v0.9.0 docs/ held only How-to-release.md,\nand the docs card already links to the repository.\n\nVerified with a full npm run docs \u0026\u0026 hugo: 5421 pages, all three trees\nrendered, runtime-metrics present only under next."
    },
    {
      "commit": "6c38cb4faf02a01717b80e7e945b3ba4a2f6ab2c",
      "tree": "debcf4456fa89cc88a1cfbbb4300f0a8b4acaa69",
      "parents": [
        "6ea24039073fb01793c79ecb2f587e59a1d9a6e5"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Aug 15 19:25:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 19:25:22 2026 +0800"
      },
      "message": "Fix the Python 1.3.0 release metadata leaked by the release automation (#897)\n\nThe 1.3.0 release commit (#896) was generated with un-interpolated GitHub\nActions template syntax, which broke the site build and published wrong\nmetadata:\n\n- data/docs.yml carried `commitId: ${{ steps.release.outputs.commit-id }}`\n  verbatim. docs.js shells that value into `./doc.sh`, so /bin/sh reported\n  \"Bad substitution\" and the scheduled Build site workflow has failed on\n  every run since the merge. Both entries now point at 1bd4692, the v1.3.0\n  tag commit.\n- The v1.2.0 docs entry had been overwritten rather than a v1.3.0 entry\n  inserted, leaving version `1.3.0` (no v prefix) linked to the v1.2.0\n  path. Restore v1.2.0 and add a proper v1.3.0 entry.\n- data/releases.yml replaced the 1.2.0 download links instead of demoting\n  them to archive.apache.org, so 1.2.0 was no longer downloadable. Demote\n  1.2.0 and keep v1.3.0 on closer.cgi/downloads.apache.org.\n- The event post rendered as \"Release Apache SkyWalking Python \" with an\n  empty version everywhere, including a broken PyPI link\n  (apache-skywalking//), and listed no changes. Rewrite it with the 1.3.0\n  release notes, and rename the directory to the dashed slug convention\n  used by every other release post."
    },
    {
      "commit": "6ea24039073fb01793c79ecb2f587e59a1d9a6e5",
      "tree": "954e1e007f59c97b7b3ad6b7aa3af3c44bcffcc4",
      "parents": [
        "1fcff0a53d28d182d01bc7993dc6bb65d056b361"
      ],
      "author": {
        "name": "kezhenxu94",
        "email": "kezhenxu94@apache.org",
        "time": "Fri Aug 14 23:57:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 23:57:15 2026 +0800"
      },
      "message": "Release Apache SkyWalking Python 1.3.0 (#896)"
    },
    {
      "commit": "1fcff0a53d28d182d01bc7993dc6bb65d056b361",
      "tree": "a156c4af2b9038d61bf586c4a3acadcd95570a59",
      "parents": [
        "290fb370ccbc4b17329357bd5337c4fb9a86eb23"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Aug 14 13:27:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 13:27:24 2026 +0800"
      },
      "message": "Release Apache SkyWalking Java Agent 9.7.0 (#895)\n\nAdd the 9.7.0 release event post, list 9.7.0 in releases.yml (demoting the\n9.6.0 links to archive.apache.org), and point docs.yml Latest plus a new\nv9.7.0 entry at the v9.7.0 tag commit.\n\nAlso fix the 9.6.0 post\u0027s milestone link, which pointed at\nskywalking-java/milestone/10 (the 9.0.0 milestone) instead of the\nJava - 9.6.0 milestone its CHANGES.md references."
    },
    {
      "commit": "290fb370ccbc4b17329357bd5337c4fb9a86eb23",
      "tree": "a36220bd5bfe3ce5052f69e687a4601c7bb0c070",
      "parents": [
        "6d9f94136ad86d8163b72bc58df9161609163ecc"
      ],
      "author": {
        "name": "mrproliu",
        "email": "741550557@qq.com",
        "time": "Fri Aug 07 09:46:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 06 18:46:18 2026 -0700"
      },
      "message": "Release SkyWalking Go 0.7.0 (#893)"
    },
    {
      "commit": "6d9f94136ad86d8163b72bc58df9161609163ecc",
      "tree": "a52a0b2fe78d61a40106d19da864b90213f4a47c",
      "parents": [
        "36c4a98b9b7dcdf6638736e59b6fafc2464ec3f8"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Aug 06 11:58:56 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 02:58:56 2026 +0800"
      },
      "message": "Feeds: per-language RSS, and an iCalendar feed for the community calendar (#892)\n\nThe site had one feed, /feed.xml, carrying blog posts only. Nothing linked\nit and no page declared autodiscovery, so a reader given a page URL could\nnot find it — and the path is feed.xml rather than the conventional\nindex.xml, so it could not be guessed either.\n\nFeeds now:\n\n  /blog/feed.xml               English blog          en-US\n  /zh/feed.xml                 中文博客               zh-CN\n  /events/feed.xml             releases and events   en-US\n  /feed.xml                    blog + events         en-US\n  /events/calendar/index.ics   community calendar\n\nChinese and English are separate feeds with correct \u003clanguage\u003e. content/zh\nis a section rather than a Hugo language, so that cannot come from\n.Site.LanguageCode and is derived from the section.\n\nEach feed carries 20 items instead of 50, and item summaries instead of\nfull post bodies. The theme emitted .Content per item, which is why the\nlive feed was 1.1 MB; it is now ~16 KB.\n\nRSS is opt-in per section via `outputs` in each _index.md rather than\n[outputs] section in config.toml, which would also build a feed for docs.\n\nAutodiscovery is added through the existing seo hook. docsy\u0027s head.html\nalready links a page\u0027s own feed, so the partial only fills the gaps: the\nsection feed on posts and on the calendar, the site-wide feed everywhere\nbut the home page. No page emits a duplicate.\n\nThe calendar gets iCalendar rather than RSS, because RSS announces an item\nwhen it is published while a calendar places it on the day it happens. It\nis generated from the same data/talks.yml the page renders, and the page\noffers a webcal:// link to subscribe alongside a plain .ics download.\n\nNote that /feed.xml previously carried blog only and now also carries\nreleases."
    },
    {
      "commit": "36c4a98b9b7dcdf6638736e59b6fafc2464ec3f8",
      "tree": "ff25dc54f8fd00a4e1f80919f8b0ff24f2602a5a",
      "parents": [
        "e809237f8181caf6c1942fdae3c1d8df237b003a"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Jul 31 20:58:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 20:58:07 2026 +0800"
      },
      "message": "Events: add AWS Community Day Shenzhen to the community calendar (#891)\n\nThe 3D cloud-native topology session was accepted by 2026 亚马逊云科技\nCommunity Day · 深圳 (Oct 17), a week before the Hong Kong edition\n(Oct 24). Same talk, delivered in Chinese rather than English.\n\nAdds an optional `lang` field so one session appearing at two events in\ndifferent languages is distinguishable, rendered as a small chip next to\nthe speaker. Only shown where a talk sets it, so every existing entry is\nunaffected.\n\nThe Shenzhen agenda is not published yet, so the title carries the\nEnglish one the session is already listed under, with a note in the data\nfile to swap in the Chinese title once the agenda lands."
    },
    {
      "commit": "e809237f8181caf6c1942fdae3c1d8df237b003a",
      "tree": "3a70ca182b2ce8ab8440fa8ad1ba9d878d072e47",
      "parents": [
        "bfbb98d2a7712418d20e5a01e6e6985b71822f3b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Jul 31 20:04:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 20:04:56 2026 +0800"
      },
      "message": "Events: add a Community Calendar tab for conference talks (#890)\n\nThe /events/ page only tracked releases. This adds a second tab at\n/events/calendar/ listing conferences, meetups and summits where\nSkyWalking committers and community speakers appear.\n\nThe release timeline is unchanged apart from the shared tab bar; the\ncalendar reads data/talks.yml and never touches content/events/.\n\n- data/talks.yml           18 events, 59 talks, 2020-2026, with a\n                           documented schema at the top of the file\n- events/calendar.html     upcoming/past split computed at build time\n                           from the event end date, so an event moves\n                           itself once it is over; year pager over the\n                           past section, deep-linkable as #YYYY\n- partials/events-tabs.html  tab bar shared by both views\n- validation               required fields and date format are asserted\n                           at build time, so a malformed entry fails the\n                           PR check instead of rendering a blank card\n- README                   how to add or update a talk\n\nSpeaker names follow the source. Chinese names carry their pinyin;\nEnglish-only names stay English, since romanisation does not reverse."
    },
    {
      "commit": "bfbb98d2a7712418d20e5a01e6e6985b71822f3b",
      "tree": "05106ea3787f8ed55f976baa2c39a9850f74a327",
      "parents": [
        "684b649a6a34b56741b9973a20e97ad2b642e8e5"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Jul 31 08:31:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 08:31:29 2026 +0800"
      },
      "message": "SEO foundations, plus surface the AI story on the home page (#889)"
    },
    {
      "commit": "684b649a6a34b56741b9973a20e97ad2b642e8e5",
      "tree": "982b1622d1bd32875b2ea027e0e5ba1015fa0a2e",
      "parents": [
        "06fb96063778870241bf4609ad1889dc77fe3765"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jul 06 15:25:11 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jul 06 15:25:11 2026 +0800"
      },
      "message": "remove\n"
    },
    {
      "commit": "06fb96063778870241bf4609ad1889dc77fe3765",
      "tree": "936a90805977a80b33eda1a4382a4c7b9a33cb09",
      "parents": [
        "77d2eea10abf4529f1901d751e3c5a5c79ec0754"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jul 06 12:50:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 12:50:26 2026 +0800"
      },
      "message": "Update index.md"
    },
    {
      "commit": "77d2eea10abf4529f1901d751e3c5a5c79ec0754",
      "tree": "e161a9c86263194eec2d13858ff7e27a3c2689cf",
      "parents": [
        "9bce9fb48fe61be572735374f1222e21ad3ca5c3"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jul 06 12:49:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 12:49:42 2026 +0800"
      },
      "message": "Update index.md"
    },
    {
      "commit": "9bce9fb48fe61be572735374f1222e21ad3ca5c3",
      "tree": "1dba6873bf288729f99606e74b0dd8efb49342dc",
      "parents": [
        "2dac0054f4c0d9c915ea886e6de80f03c701df4e"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jul 06 12:35:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 12:35:30 2026 +0800"
      },
      "message": "Blog + homepage: Meet Horizon UI — The AI Assistant (EN + CN) (#886)"
    },
    {
      "commit": "2dac0054f4c0d9c915ea886e6de80f03c701df4e",
      "tree": "3eee02d22ca7ba705ca0f5d62914fecf20fed0d7",
      "parents": [
        "fa38d0b7c7ac98b6c924068a1cc92e07a70925f2"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 15:06:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 15:06:29 2026 +0800"
      },
      "message": "docs(blog): correct Horizon UI image coordinates in post 17 (Docker Hub, not GHCR) (#885)\n\nThe user-facing release image is published to Docker Hub as apache/skywalking-ui (shared with the previous UI), with Horizon releases tagged horizon-\u003cversion\u003e and latest — per the repo\u0027s publish-image.yaml mirror step. GHCR (ghcr.io/apache/skywalking-horizon-ui) holds the per-commit CI/SHA builds, not the release image, so it\u0027s the wrong coordinate for a getting-started guide. Updated the prose, the docker run example, and the pin advice in both EN and CN."
    },
    {
      "commit": "fa38d0b7c7ac98b6c924068a1cc92e07a70925f2",
      "tree": "612e15ef8880108c38f5ed86f017d9af1edfec33",
      "parents": [
        "2a1919eb5cf58e5c2cf63841cae3ff82238c3cf0"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 14:59:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 14:59:16 2026 +0800"
      },
      "message": "docs(blog): polish the Meet Horizon UI series — navigation links, P4 docs, phrasing (#884)\n\nPost-publication consistency pass over all 17 posts (EN + CN):\n\n- Navigation: hyperlink the \u0027Next up\u0027 teaser to the next post across the whole series in both languages (it was applied inconsistently — never in EN, partially in CN); P17 is the finale with no next link. Also link the one previous-post reference in P16 CN.\n- P4 (Deployment \u0026 BanyanDB): add the doc handoff to the BanyanDB dashboards doc — it was the only post missing one.\n- P1: drop the \u0027releasing soon\u0027 time-pin on the OAP 11.0 reference (EN + CN) so it doesn\u0027t age.\n- Minor phrasing: P11 CN (按带→按), P17 EN (read-only fallback clause)."
    },
    {
      "commit": "2a1919eb5cf58e5c2cf63841cae3ff82238c3cf0",
      "tree": "df48281f041715c55ce87b39c76730983bf9a303",
      "parents": [
        "0cc2f9e409dc46be9803df2a65a85a9309a74828"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 14:33:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 14:33:21 2026 +0800"
      },
      "message": "docs(blog): add Meet Horizon UI 15-17 (final three) (#883)\n\n* docs(blog): add Meet Horizon UI 15-17 (final three) — Customization, Localization, Getting Started\n\nCloses out the Meet Horizon UI series (Act 5 — make it yours \u0026 adopt):\n\n- 15/17 Customization: Config-Driven Layer Templates — the local-draft → preview → publish model, the widget canvas, add-a-layer, and export/import portability (4 figures).\n- 16/17 Localization in Eight Languages — server-side per-locale overlays, click-to-translate, the 8-language locale chip, and a localized dashboard (3 figures).\n- 17/17 Getting Started \u0026 Migration — single env-driven container, the OAP 10.x vs 11 compatibility matrix, and drop-in migration from an existing UI (code blocks + table, no figures).\n\n* docs(blog): add Chinese versions of Meet Horizon UI 15-17\n\nChinese translations for the final three posts (Customization, Localization, Getting Started \u0026 Migration), under content/zh/ with the same slugs and figures as the English originals."
    },
    {
      "commit": "0cc2f9e409dc46be9803df2a65a85a9309a74828",
      "tree": "877b11247f5bedead04a355c759698215777f789",
      "parents": [
        "0418647b270beac8fda2c2b2c6c631c10f722163"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 12:36:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 12:36:17 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 14/17 — Access Control \u0026 Security (EN \u0026 CN) (#882)"
    },
    {
      "commit": "0418647b270beac8fda2c2b2c6c631c10f722163",
      "tree": "c8cb26bd040d31ad6029c5e107a726f500c6149f",
      "parents": [
        "6af3c97f7e5ff82a0524ab40142c92f73d4bd530"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 11:41:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 11:41:39 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 13/17 — Platform \u0026 Cluster Introspection (EN \u0026 CN) (#881)\n\nPart 13 of the Meet Horizon UI series, closing Act 3 (operate). Three\nread-only introspection surfaces under Platform monitoring: Cluster Status\n(the two-port + Zipkin health view with live admin-module probes), OAP\nConfiguration (the effective runtime-config dump, grouped and masked,\nread-only), and Data Retention (per-class TTLs — a single number on a flat\nbackend like Elasticsearch, hot/warm/cold lifecycle bars on BanyanDB). The\nversion split: query-port surfaces work on any OAP, admin-host surfaces need\nOAP 11. English and Chinese posts, 3 shared figures (WebP)."
    },
    {
      "commit": "6af3c97f7e5ff82a0524ab40142c92f73d4bd530",
      "tree": "c0660e828ff35704b4b587c340fbc87569604ecd",
      "parents": [
        "d2dbf621aa90d7594c7159b3c357a6a460624f21"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 30 08:56:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 08:56:15 2026 +0800"
      },
      "message": "Blog: refresh P11 LAL figure and add the record-detail popout (#880)\n\nThe LAL matrix screenshot is updated to show the extractor adding\nstatus.code to each abnormal record (with the diff view), and a new\nfigure shows the \"show complete data\" popout — a record\u0027s full raw\npayload with the Compare-with selector. EN and CN posts both adopt it."
    },
    {
      "commit": "d2dbf621aa90d7594c7159b3c357a6a460624f21",
      "tree": "f3d0bb2fe372ef06dfa290c6ff4bfcb71d80b482",
      "parents": [
        "cb186f0e22177b1a17ebee38d70320f01bc9235b"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 20:56:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 20:56:25 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 12/17 — Inspect: Cross-Layer Query Power-Tools (#879)\n\n* Blog: Meet Horizon UI 12/17 — Inspect: Cross-Layer Query Power-Tools\n\nPart 12 of the Meet Horizon UI series, continuing Act 3 (operate). The\nInspect family under Operate: Metrics inspect (a catalog of every metric\nOAP computes, grouped by the OAL/MAL rule that defines it, plus an MQE\nboard), and the layer-less Trace inspect and Log inspect that query\nacross the whole deployment without picking a layer first (Log inspect\nfolds raw service logs, browser errors, and K8s pod logs into one tool).\nAll share inspect:read; Metrics inspect needs OAP 11\u0027s admin host + inspect\nmodule, while Trace/Log inspect ride the always-on query protocol (10.x ok).\n\n4 figures (WebP): metrics catalog, metrics board, trace inspect, log sources.\n\n* docs(blog): add Chinese Horizon UI inspect translation\n\n* Fix mobile nav drawer always highlighting Blog\n\nThe mobile slide-out drawer (sidebar-skywalking.html) hardcoded the Blog\nlink with router-link-active, so on phone-width browsers (e.g. iOS Safari)\nBlog showed selected on every page. Compute the active class per page\nsection instead, matching the desktop top navbar."
    },
    {
      "commit": "cb186f0e22177b1a17ebee38d70320f01bc9235b",
      "tree": "dacddbe907979326ccb4b0c48e509e063bc39b23",
      "parents": [
        "5e233ea506209c85ee7602146177bbfbd8e5d0cc"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 18:51:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 18:51:09 2026 +0800"
      },
      "message": "docs(blog): add Chinese Horizon UI runtime rules translation (#878)"
    },
    {
      "commit": "5e233ea506209c85ee7602146177bbfbd8e5d0cc",
      "tree": "b900b4dad69230d5beb262a86f3b4efd8d7ef376",
      "parents": [
        "dcccec016714b1f0e17ede389b1a4910f55d2a39"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 17:59:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 17:59:44 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 11/17 — Runtime Rules \u0026 Live Debugging (#877)"
    },
    {
      "commit": "dcccec016714b1f0e17ede389b1a4910f55d2a39",
      "tree": "85cd07e299232fd0d30549c25af87567bc06d0cf",
      "parents": [
        "3f12cf83e82755c56b77883b115450b679f160f0"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 15:11:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 15:11:20 2026 +0800"
      },
      "message": "docs(blog): add Chinese Horizon UI alarms translation (#876)"
    },
    {
      "commit": "3f12cf83e82755c56b77883b115450b679f160f0",
      "tree": "34c77391bd5a695ca73ef8f34d94717b68c5a53c",
      "parents": [
        "7a054a5cc5d21a4b579abb823acb7f369dc94145"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 14:37:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 14:37:07 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 10/17 — Alarms \u0026 Incident Triage (#875)\n\nPart 10 of the Meet Horizon UI series, opening Act 3 (operate). Covers the\nincident-centric active-alarms surface: raw firings merged by (entity, rule)\ninto one incident with firing/recovered/unstable states, the MQE snapshot\nreplayed to show why a rule fired, the per-incident history + timeline brush,\nand the same incident model carried across the topbar badge, dashboard widget,\nand 3D map. Read-only mirror of OAP\u0027s evaluation state; alarms:read to view.\n\n4 figures (WebP): incident list, snapshot replay (hero), incident history,\nalarms across the console."
    },
    {
      "commit": "7a054a5cc5d21a4b579abb823acb7f369dc94145",
      "tree": "1133393b86b676961495e64b734d24a306a87b9d",
      "parents": [
        "8badf78edc68e04b0798d90a0a7d007965575b51"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 13:55:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 13:55:46 2026 +0800"
      },
      "message": "docs(blog): add Chinese Horizon UI profiling translation (#874)"
    },
    {
      "commit": "8badf78edc68e04b0798d90a0a7d007965575b51",
      "tree": "7b2f80b3d7bd5b5908799c05a124bae3efab1ee0",
      "parents": [
        "be1c12bc6b09b14515a60a2d9dc7eec7e35d6cb9"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 11:42:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 11:42:56 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 9/17 — Five Profilers, One Flame Graph (#873)\n\nPart 9 of the Meet Horizon UI series on profiling: trace, async (JVM),\neBPF, Go pprof, and network. Four pour into one shared flame-graph /\nstack-tree engine; network renders a process honeycomb instead. Covers\nthe per-profiler task models, the create-vs-read permission split\n(profile:enable / profile:read), and per-layer availability.\n\n4 figures (WebP): flame + tree (same result, two views), the pprof tab\u0027s\none-event-per-task model, and the network honeycomb."
    },
    {
      "commit": "be1c12bc6b09b14515a60a2d9dc7eec7e35d6cb9",
      "tree": "03c3a8867a62f1921d8d1677c226b4c3bd2857a1",
      "parents": [
        "5b163a75ece22b4864fb9964ae39b39463354195"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 10:07:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 10:07:30 2026 +0800"
      },
      "message": "docs(blog): refine Horizon UI Chinese translations (#872)"
    },
    {
      "commit": "5b163a75ece22b4864fb9964ae39b39463354195",
      "tree": "4eae2bbbe00d59111a34de1105c5f6a3e736dc3d",
      "parents": [
        "c1956bae48f196eb7fd72d9d4232bb6c55733221"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 29 08:50:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 08:50:49 2026 +0800"
      },
      "message": "docs(blog): add Chinese Horizon UI translations for post 1-8 (#871)"
    },
    {
      "commit": "c1956bae48f196eb7fd72d9d4232bb6c55733221",
      "tree": "a4c0cb813cd82355c6193c687d4384f42fc1894d",
      "parents": [
        "08f8bb11c362c2ab6fa2f9c2fa9006aa299705e8"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri Jun 26 08:53:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 08:53:36 2026 +0800"
      },
      "message": "Release Apache SkyWalking NodeJS 0.9.0 (#870)\n\nAdd the 0.9.0 release event; bump the NodeJS Agent download block in\ndata/releases.yml (source v0.9.0 + date) and the docs pointer in data/docs.yml\n(tree/v0.9.0, commit 1524588c)."
    },
    {
      "commit": "08f8bb11c362c2ab6fa2f9c2fa9006aa299705e8",
      "tree": "209bc55e70e2f219d5e6f79b70749f888643d3d1",
      "parents": [
        "de0452f4395e9adf8fcc55dbe67306af271ba336"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Jun 25 09:43:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 09:43:54 2026 +0800"
      },
      "message": "Release Apache SkyWalking Horizon UI 0.7.0 (#869)\n\n* Release Apache SkyWalking Horizon UI 0.7.0\n\n- data/releases.yml: add v0.7.0 (src+bin) as the latest entry (closer.cgi\n  download, downloads.apache.org asc/sha512); demote v0.6.0 links to\n  archive.apache.org.\n- data/docs.yml: point Latest at the v0.7.0 commit (9fc54aa) and add a\n  v0.7.0 docs entry.\n- content/events: add the 0.7.0 release announcement.\n\n* Remove Horizon UI 0.5.0 from downloads and docs\n\nDrop the v0.5.0 entries from data/releases.yml (source + distribution)\nand data/docs.yml, keeping the two most recent versions (0.7.0, 0.6.0)."
    },
    {
      "commit": "de0452f4395e9adf8fcc55dbe67306af271ba336",
      "tree": "c514ba685dc857800e97db2d54b36d17693b8909",
      "parents": [
        "6ef355f080159a0a7e3edefb9ca401f70ab31c98"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Wed Jun 24 20:36:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 20:36:28 2026 +0800"
      },
      "message": "docs(blog): re-title the Meet Horizon UI series N/16 → N/17 (#868)\n\nThe series gains a dedicated post — Inspect: Cross-Layer Query Power-Tools (Metrics + Trace + Log inspect), split out from the Runtime Rules post — so the planned total is now 17. Re-title the eight published posts\u0027 frontmatter from N/16 to N/17 to keep the series count consistent."
    },
    {
      "commit": "6ef355f080159a0a7e3edefb9ca401f70ab31c98",
      "tree": "995d22b9d32febaca1d1adac1d116332adfa4332",
      "parents": [
        "04c8ccf9b886a1de942cdf8df93628ba1e93e875"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 23 11:03:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 11:03:56 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 8/16 — Browser Errors \u0026 Source Maps (#867)"
    },
    {
      "commit": "04c8ccf9b886a1de942cdf8df93628ba1e93e875",
      "tree": "b0cc577c574143658aaa3dae7acd6ee97535d60d",
      "parents": [
        "29b956741b2a800eaef3dd34a66acafb4e9ec208"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Tue Jun 23 09:50:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 09:50:54 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 7/16 — The Log Explorer (#866)\n\n* Blog: Meet Horizon UI 7/16 — The Log Explorer\n\nPart 7 of the Meet Horizon UI series: two log surfaces — the stored, indexed, trace-correlated Logs stream (level histogram, Levels filter, format-aware payload popout, no log query language) and the on-demand Pod Logs live tail read from the Kubernetes API server (Window/Interval, Include/Exclude regex, never persisted, disabled-by-default on OAP). 3 WebP figures. Render-verified against apps/ui/src/layer/{logs,pod-logs} + docs/operate/logs.md. Tags: Logging, Cloud Native.\n\n* docs(blog): P7 — explain why browser JS errors are a separate stream; drop placeholder link"
    },
    {
      "commit": "29b956741b2a800eaef3dd34a66acafb4e9ec208",
      "tree": "eed039d42e1bbc045f19c77b27e2309f9d391978",
      "parents": [
        "9cd56eebbe9c1ab62b2d38de8e93896a8f875439"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 23:48:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 23:48:27 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 6/16 — The Trace Explorer (#865)\n\nPart 6 of the Meet Horizon UI series: the per-layer Traces tab — a triage-first, run-on-demand trace explorer with structured conditions (no TraceQL), a duration-Distribution chart you box-select, three lenses (Default waterfall / Tree / Statistics), the span detail panel, and a Zipkin tab beside the native one. 5 WebP figures (explorer, waterfall, tree, Zipkin tab, Zipkin span). Render-verified against apps/ui/src/layer/traces + docs/operate/traces.md. Tags: Tracing, Cloud Native."
    },
    {
      "commit": "9cd56eebbe9c1ab62b2d38de8e93896a8f875439",
      "tree": "b13c2e93d9222440a58fd9363aa8910f03f6a21f",
      "parents": [
        "3d6bc823b57b0fab45aa1a9e068ddabd6fa558ff"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 20:45:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 20:45:19 2026 +0800"
      },
      "message": "docs(blog): point Horizon UI posts\u0027 doc handoffs at real doc pages (#864)\n\nP1/P2/P3 linked the generic https://skywalking.apache.org/docs/ root as a placeholder. Point each at its real Horizon UI doc page: intro -\u003e readme, dashboards -\u003e components/dashboard-widgets + components/charts, topology -\u003e customization/layer-templates."
    },
    {
      "commit": "3d6bc823b57b0fab45aa1a9e068ddabd6fa558ff",
      "tree": "032d902ed6eaf55b9edc790061ff1d0edba8ff67",
      "parents": [
        "1a396491aed79c05eeb3f49c88f1319cfeae7a84"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 20:15:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 20:15:03 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 5/16 — The 3D Infrastructure Map (#863)\n\n* Blog: Meet Horizon UI 5/16 — The 3D Infrastructure Map\n\nPart 5 of the Meet Horizon UI series: the WebGL /3d/map view — every layer\u0027s services as cubes stacked on four configurable tiers, with live traffic pills, firing-alarm beacons + Beacon mode, in-layer/cross-layer/hierarchy edges, the loading pipeline, and the structured /admin/3d-map config. Centerpiece is the live map3d embed; 4 WebP figures (overview, beacon mode, selected-service hierarchy, config editor). Tags: Cloud Native, Engineering.\n\n* docs(blog): P5 — point the docs handoff at the real 3D-map doc path"
    },
    {
      "commit": "1a396491aed79c05eeb3f49c88f1319cfeae7a84",
      "tree": "d143b8180d5b5ec94d1c456b4f9c988bd3f3b7fb",
      "parents": [
        "f27f31f11d088a9883725b524ba08530b0ed90f7"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 15:54:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 15:54:43 2026 +0800"
      },
      "message": "Blog index: 3 posts per row via a topic dropdown filter (#862)\n\n* feat(blog): full-width 3-up post grid with a topic dropdown filter\n\nThe 300px right \u0027Browse topics\u0027 sidebar forced the post grid to 2 columns. Move the topics into a compact dropdown above the grid (native \u003cdetails\u003e, no JS), so the cards take the full content width: 3-up on desktop, 2-up \u003c\u003d992px, 1-up \u003c\u003d600px. Applied to both the English (/blog/) and Chinese (/zh/) listings; topic rows still link to their /tags/ pages, plus an \u0027All posts\u0027 row. Drops the now-unused .blog-layout / .blog-sidebar / .album-* rules.\n\n* feat(blog): keep topic descriptions in the dropdown, two-column layout\n\nRestore each topic\u0027s one-line description (\u0027the words\u0027) in the Browse-topics dropdown and lay the topics out in two columns: a full-width \u0027All posts\u0027 row, then a 2-col grid of cards (pill + count + description), bound to intro / intro_zh.\n\nHardening from an adversarial review pass:\n- a11y: add a keyboard :focus-visible ring on the dropdown links/button (the Docsy reboot\u0027s \u0027a { outline: none }\u0027 otherwise leaves no focus state); darken the count pill to meet AA contrast.\n- keep the words: 3-line description clamp so the longest intro_zh isn\u0027t ellipsised.\n- robustness: no-shrink guard on the card head for a future 12th topic; collapse to one full-width column at \u003c\u003d760px so the tablet band isn\u0027t a near-full-bleed 2-col panel.\n- cleanup: drop the dead $allTags/$blogTags template vars and the unused data-label on the card anchor; refresh stale \u0027sidebar\u0027 comments to \u0027dropdown\u0027.\n\n* fix(mobile): restore content gutter on landing pages + consistent drawer menu fonts\n\nTwo mobile-only style fixes:\n\n1. Left/right gutter. The theme\u0027s _styles_project.scss zeroes .container padding globally; pages with a Bootstrap .col still get ~15px from the column, but the custom landing pages (home, docs, events, downloads, team, users) drop content straight into a bare .container, so on phones it sat flush against the viewport edge. Add a 20px gutter at \u003c\u003d991.98px, page-scoped so it outranks the theme rule without editing the theme. Blog/article pages keep their .col gutter unchanged.\n\n2. Drawer menu font consistency. In the slide-in mobile drawer the dropdown groups (中文资料 / Links) rendered as tiny gray uppercase headers while the other items were dark 15px/600 .nav-link. Make .sidebar .dropdown-title match .nav-link. Scoped to .sidebar, so the desktop navbar is untouched.\n\n* fix(mobile): drawer uses the site font stack (drop stale Lato fallback)\n\nThe mobile drawer\u0027s .nav-item carried the theme\u0027s font-family: Lato, sans-serif, but Lato is no longer loaded (Google Fonts were dropped), so the whole drawer fell back to generic sans-serif instead of the site\u0027s -apple-system stack. Add font-family: inherit so the drawer matches the rest of the UI. Completes the drawer font-consistency fix."
    },
    {
      "commit": "f27f31f11d088a9883725b524ba08530b0ed90f7",
      "tree": "4a9329c0355a6f7254aec14b2eb76c14a20cdec6",
      "parents": [
        "c5928423d99c6f359c5f6335d2bed62fb94f3264"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 10:06:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 10:06:54 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 4/16 — The Deployment Tab \u0026 BanyanDB Self-Observability (#860)"
    },
    {
      "commit": "c5928423d99c6f359c5f6335d2bed62fb94f3264",
      "tree": "d1183a6e8fbaa34fa72cc99c709b844715aff128",
      "parents": [
        "b7c204e8714146838848e39348f51757c099121c"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 22 10:06:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 10:06:33 2026 +0800"
      },
      "message": "docs(blog): convert Meet Horizon UI part 1-3 screenshots to WebP (q88) (#861)\n\nReplaces the 19 PNG screenshots in parts 1-3 (8.3 MB) with q88 WebP (1.9 MB, ~78% smaller) and updates the posts\u0027 image references, to cut page weight and speed loading. WebP is universally supported; the shots render at well under a third of their native pixel size, so q88 is visually lossless here. The home-page map3d poster (/images/home/) is left untouched."
    },
    {
      "commit": "b7c204e8714146838848e39348f51757c099121c",
      "tree": "817e53e1e5fad8b4eadb640acf7a24b3677eb811",
      "parents": [
        "5805cd1e0774fb07a0c7ffb0f79599c76ca15cf1"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Jun 21 22:48:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 22:48:25 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI 3/16 — Topology \u0026 Service Dependency (#859)\n\n* docs(blog): add Horizon UI topology \u0026 service dependency post (Meet Horizon UI series, part 3)\n\nPart 3 of the Meet Horizon UI series: one template-driven topology engine (per-layer service map with hexagonal health-ring nodes, RPM-chipped edges, component icons), the by-layer filter and group-aware selector, instance-map drill-down, the endpoint API-dependency graph, and the Smartscape cross-layer overlay. Seven figures captured from the demo."
    },
    {
      "commit": "5805cd1e0774fb07a0c7ffb0f79599c76ca15cf1",
      "tree": "1dd0f3b5cb2e31c77ba14e89ec3ac66602710086",
      "parents": [
        "81c4e732f0bfef4044f397b919db3d2d6f97c07c"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Jun 21 21:01:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 21:01:41 2026 +0800"
      },
      "message": "docs(blog): pin \u0026 compare entities is official — add Figure 7 (cross-service compare) (#858)\n\nDrops the now-obsolete \u0027(preview)\u0027 framing and the feature-flag instructions for multi-entity lock \u0026 compare (the gate is being removed and it ships as an official feature), and adds Figure 7 showing two instances from different services compared inline."
    },
    {
      "commit": "81c4e732f0bfef4044f397b919db3d2d6f97c07c",
      "tree": "095ad3ec4fed8cc509e251f6999835487284f4c5",
      "parents": [
        "ecea76d042baaee8ff329746ba8969267d8d2c14"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Jun 21 20:25:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 20:25:00 2026 +0800"
      },
      "message": "Blog: Meet Horizon UI series — part 2 (Dashboards \u0026 MQE) + part-1 title alignment (#856)\n\n* docs(blog): add Horizon UI dashboards \u0026 MQE post (Horizon UI series, part 2)\n\nSecond post of the Horizon UI series: how dashboards are built from MQE expressions, hide widgets that don\u0027t apply to the selected entity (skipping their queries server-side), render coded and raw-byte values readably (enum / duration / SI suffixes), tie every chart on the page to one synced crosshair, and jump from a slow-statement record straight into its trace. Six figures captured from the demo deployment."
    },
    {
      "commit": "ecea76d042baaee8ff329746ba8969267d8d2c14",
      "tree": "3e237dde8511978991053b03d4977f6ea95e8c2b",
      "parents": [
        "0082d5bbc775a1d8883f62bd1b4855b4a0229e51"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun Jun 21 17:23:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 17:23:51 2026 +0800"
      },
      "message": "docs(blog): add \u0027Meet Horizon UI\u0027 introduction (Horizon UI series, part 1) (#855)\n\nFirst post of a multi-part series introducing Apache SkyWalking Horizon UI, the next-generation web console. Covers the OAP-driven sidebar, honest empty states, the new Fastify BFF tier, a live interactive 3D infrastructure-map embed, and backend compatibility: full observability plus governance run on OAP 10.x today, while the operate tooling (DSL management, Live Debugger, Inspect) lands with OAP 11.0."
    },
    {
      "commit": "0082d5bbc775a1d8883f62bd1b4855b4a0229e51",
      "tree": "092f9dbd9985dc2970d7cc2845d1b8f20092844a",
      "parents": [
        "dd72494d7af2ef8861716ba5366eb8d617827f2f"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sat Jun 20 21:39:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 20 21:39:30 2026 +0800"
      },
      "message": "chore(fonts): self-host/system fonts only; drop Google Fonts + unused Font Awesome (#854)\n\n- remove Space Grotesk (Google Fonts) hook; unify hero/seal/pill text on\n  the theme\u0027s $font-family-base system stack\n- delete unused Font Awesome vendor + static/webfonts (~52.6 MB, never\n  loaded: SCSS imports were commented and nothing linked it)\n- tidy the now-dangling commented FA @imports and fa-font-path\n- remove stale topo_ui.png preload (fixes a 404 + \"preloaded but not used\"\n  console warning on every page)\n\nEvery font the site serves is now a system font (no download) or a\nself-hosted woff2 (iconfont, plus the 3D-map demo\u0027s bundled Inter/JetBrains\nMono). No fonts.googleapis.com / fonts.gstatic.com requests from our code."
    },
    {
      "commit": "dd72494d7af2ef8861716ba5366eb8d617827f2f",
      "tree": "02917a3a2587655f8dc42c1a1a7dba09c8678175",
      "parents": [
        "5930c9cd75be9841ab01095c9106be33ff5374a1"
      ],
      "author": {
        "name": "Huang Youliang",
        "email": "butterbright0504@gmail.com",
        "time": "Sat Jun 20 11:41:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 20 11:41:03 2026 +0800"
      },
      "message": "Release Apache SkyWalking BanyanDB 0.10.3 (#853)"
    },
    {
      "commit": "5930c9cd75be9841ab01095c9106be33ff5374a1",
      "tree": "1df4c611de9197bf040e1cc51097a5c1359cfc26",
      "parents": [
        "5ff2c76661fd0a4d9d1fb48aee44ae5d67f66e7f"
      ],
      "author": {
        "name": "kezhenxu94",
        "email": "kezhenxu94@apache.org",
        "time": "Mon Jun 08 20:35:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 20:35:47 2026 +0800"
      },
      "message": "Release swck 0.10.0 (#852)"
    },
    {
      "commit": "5ff2c76661fd0a4d9d1fb48aee44ae5d67f66e7f",
      "tree": "eb33ebb768e023bfe2eb5963648497b976a76261",
      "parents": [
        "0e19af2811471ca3be835cb6333955c473fc4ca0"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Jun 04 09:34:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 09:34:07 2026 +0800"
      },
      "message": "feat(home): 3D infrastructure map demo + /#demo deep-link; release Horizon UI 0.6.0 (#851)"
    },
    {
      "commit": "0e19af2811471ca3be835cb6333955c473fc4ca0",
      "tree": "a2540a52c0d7ef371682e236760f48da9e53563b",
      "parents": [
        "833ce2530bc899b7043df8af09c34a9cc23a32b6"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon Jun 01 23:54:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 23:54:32 2026 +0800"
      },
      "message": "feat(home): add interactive 3D infrastructure map demo (#850)"
    },
    {
      "commit": "833ce2530bc899b7043df8af09c34a9cc23a32b6",
      "tree": "1a19e90f77847b45204eb6b5aa001962d17d54da",
      "parents": [
        "17b3b71ddf16ad3ac56fd5b4a6952cff02649dce"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon May 25 15:36:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 15:36:55 2026 +0800"
      },
      "message": "feat(blog): data-driven topics, sidebar, inline pills, taxonomy term pages (#849)\n\nTopics (name + EN/CN intro + label colors) now live in a single source of\ntruth: data/blog_topics.yml. The sidebar topic cards, inline post pills,\ngenerated .blog-label[data-label] color rules and /tags/\u003cterm\u003e/ pages are\nall driven from that file — adding a 12th topic is one edit, no\ntemplate/SCSS changes required.\n\nBlog index (EN + CN)\n- Hero + right \u0027Browse topics\u0027 sidebar showing one card per topic with\n  its description (data file), post count, and link to /tags/\u003cterm\u003e/.\n- Main column lists all posts grouped by year (pagination removed; the\n  per-tag pages paginate at 12).\n- Sidebar collapses above the grid as a horizontal scroll-snap row at\n  \u003c\u003d992px.\n\nBlog detail page\n- Shadowed themes/docsy/layouts/blog/content.html: \u0027Tags | …\u0027 link list\n  replaced with inline colored .blog-label pills, each linking to its\n  /tags/\u003cterm\u003e/ page.\n- Right sidebar shows only the TOC (tags moved inline); column widths\n  rebalanced to col-xl-9 + col-xl-3 and the awkward .td-toc border-left\n  removed so the natural prose/TOC gap doesn\u0027t read as a blank strip.\n- Polished .td-toc styling under .td-blog (uppercase label, brand-blue\n  active item, left-border accent on hovered items, +1 nesting depth).\n- Hidden the empty Docsy .td-page-meta that was leaving a gap above the\n  TOC.\n\nTag taxonomy pages (new)\n- layouts/tags/baseof.html + layouts/tags/term.html render /tags/\u003cterm\u003e/\n  styled like the blog list, filtered to Section\u003d\u003dblog (so docs frontmatter\n  tags can\u0027t bleed in), 12 cards per page with pagination.\n\nBlog content remap\n- Every blog post frontmatter (EN: 82 files, CN: 31 of 94) rewritten to\n  use only the canonical 11 labels (Release, AI, Tracing, Metrics,\n  Logging, Profiling, Storage, Agents, Cloud Native, Engineering,\n  Community), max 3 tags per post, deduped."
    },
    {
      "commit": "17b3b71ddf16ad3ac56fd5b4a6952cff02649dce",
      "tree": "4293df668f889a4561288218581b1023764a706b",
      "parents": [
        "0789ef9d1ebcbf61e9fce3af577a9acae1379f4c"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 14:26:52 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 14:26:52 2026 +0800"
      },
      "message": "fix(ci): authenticate team.js GitHub API calls with GITHUB_TOKEN\n\nscripts/team.js was making anonymous GitHub API calls and hitting the\n60-req/hr-per-IP unauthenticated rate limit (403). CI exposes\nGITHUB_TOKEN but only stars.js was reading it; team.js was left out.\nMirroring the auth header lifts the cap to 5000/hr.\n"
    },
    {
      "commit": "0789ef9d1ebcbf61e9fce3af577a9acae1379f4c",
      "tree": "4dc72ac6116d149e75606e02982492bcfea43ee2",
      "parents": [
        "e2d4785efdf5ab7f91d04765ee36c9d23e2bc498"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 14:07:24 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 14:07:24 2026 +0800"
      },
      "message": "feat(home/docs): surface total GitHub stars (build-time sum across all repos)\n\nscripts/stars.js already sums every (user/repo) in data/docs.yml into\ndata/stars.yml\u0027s totals.stars at build time; this just renders it:\n- new {{\u003c stars-total \u003e}} shortcode (compact form, e.g. \u002734.3K+\u0027)\n- 4th hero-stat on the home page linking to apache org repos search\n- extended /docs/ eyebrow with the same total + repo count\n"
    },
    {
      "commit": "e2d4785efdf5ab7f91d04765ee36c9d23e2bc498",
      "tree": "1424f0880032b64d7632f985cee2c630d7a67dbc",
      "parents": [
        "cf76243d4e9166089a34374567f5edfd1d546b6f"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 13:59:50 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 13:59:50 2026 +0800"
      },
      "message": "fix(ui): lift project cards above siblings while their dropdown is open\n\nThe \u0027versions\u0027 (docs) and \u0027+N more\u0027 (downloads) \u003cdetails\u003e dropdowns\nextend below the card; an adjacent card\u0027s stacking context could paint\nits own controls over the open list. Give .docs-card / .dl-card a\nbaseline z-index and raise the open card via :has(details[open]) so the\ndropdown always renders above its neighbors.\n"
    },
    {
      "commit": "cf76243d4e9166089a34374567f5edfd1d546b6f",
      "tree": "eaca5e398791c4aab73890410e502db176f3e225",
      "parents": [
        "0d047d8994d8288c6f551e905004c986ecf37002"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Sun May 24 08:54:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 08:54:50 2026 +0800"
      },
      "message": "release: Apache SkyWalking Horizon UI 0.5.0 (#848)\n\n- Add release event post.\n- Add source + distribution download blocks (releases.yml).\n- Add Latest and v0.5.0 docs entries pinned to the release commit (docs.yml)."
    },
    {
      "commit": "0d047d8994d8288c6f551e905004c986ecf37002",
      "tree": "f4ab1df390091c9d9aaa09f7c38748e2c3a7e72a",
      "parents": [
        "2d339cfa1e7e2162c6f58b284994d306782d44b4"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Fri May 22 09:15:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 09:15:41 2026 +0800"
      },
      "message": "feat(docs/downloads): card permalink hooks, date-sorted latest releases, content cleanup (#847)\n\n- Add clickable permalink hook + selectable :target highlight to docs and\n  download project cards; clicking copies the deep link, clicking the box\n  selects it and updates the URL hash.\n- Downloads \u0027Latest releases\u0027 now sorts projects by actual release date\n  (parsing both \u0027Mon. DDth, YYYY\u0027 and ISO dates) and shows the 5 newest with\n  dates; dropped the GPG/SHA-512/mirrors tag row.\n- Horizon UI: drop the inaccurate \u0027Included in the main repo release\u0027 note\n  (still on voting, not released).\n- docs.yml: remove the SkyWalking Servers and Database descriptionItem notes;\n  move SourceMarker to Ecosystem Retired Projects."
    },
    {
      "commit": "2d339cfa1e7e2162c6f58b284994d306782d44b4",
      "tree": "72636110c43df4d7395f34d97d9fbb875405d2b9",
      "parents": [
        "5825a77a93da38a8e29d749bca607b6019c91bc5"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu May 21 11:39:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 11:39:07 2026 +0800"
      },
      "message": "fix(ui): polish mobile navbar + slide-out drawer (light theme); hide desktop right-group below lg (#846)"
    },
    {
      "commit": "5825a77a93da38a8e29d749bca607b6019c91bc5",
      "tree": "d004a222c6a64e5b24f5cfc5d633bd6603a35b7e",
      "parents": [
        "eefba3ac67c53d72f2149784642db06f6536a7c4"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu May 21 11:14:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 11:14:24 2026 +0800"
      },
      "message": "Website redesign: unified light theme, polished docs, data-driven pages (#844)\n\nWebsite redesign: unified light theme, polished docs, data-driven pages\n\nA full light-theme redesign of the public site — every page now shares one\nvisual language (brand blue #3788D0, rounded cards, consistent hero / sticky\nnav / footer).\n\nPages\n- Home: fixed Horizon \"canyon\" backdrop (parallax, fades into content), ASF\n  oak-leaf seal stamp, display-font stats (contributors / 100B+ / 10+ yrs),\n  product-shot widget row (trace/logs/metrics/RBAC), capability cards with\n  aligned CTAs, richer ecosystem cards, polished get-started + community\n  cards. Quick-start CTAs jump to the docs Get-started section.\n- Docs landing: hero + category chips + project card grid with build-time\n  GitHub stars; a Get-started block with two OS-tabbed quickstarts (Run the\n  Showcase vs Run SkyWalking; bash / PowerShell; line-numbered, soft-wrapping\n  code); de-duplicated read-docs/versions control.\n- Generated docs reading view: prose scale, dark code blocks with copy +\n  language label, callouts, themed version selector, polished \"On this page\".\n- Events: year-grouped timeline cards + detail page with all-events sidebar.\n- Blog (EN + 中文): card grid with color-coded labels and preview.\n- Downloads: compact 4-up cards, latest source/distribution + older in a\n  dropdown, restyled Docker images and verify section.\n- Team: PMC/Committer roster moved to data/committee.yml (auto-built grids),\n  project-level contributor grid + search + modal.\n- Users: auto-scrolling logo marquee (grayscale → color).\n- Contributors: light Project/Contributions/Ranking table (search preserved).\n- Navbar: section-based active highlight, Apache dropdown with the new ASF\n  oak-leaf logo; redesigned announcement popup.\n\nData-driven content\n- data/quickstart.yml — homepage/docs quickstarts (mirror backend-docker + showcase).\n- data/committee.yml — PMC \u0026 Committer roster (one-line edits to add a member).\n- data/stars.yml + scripts/stars.js — build-time GitHub stars (token-aware,\n  retry, cached fallback); replaces the runtime github-buttons widget.\n  Build command signatures unchanged, so CI is unaffected.\n\nBlog labels\n- Consolidated ~90 ad-hoc tags into 11 clear labels (Release, Tracing,\n  Metrics, Logging, Profiling, Storage, Agents, Cloud Native, AI, Community,\n  Engineering); all 84 EN posts re-tagged (≤3 each).\n\nNotes\n- Existing data shapes (releases.yml, docs.yml, users.yml, generated team.yml)\n  preserved; release/docs/team flows unaffected. JS hooks (search/modals,\n  version switcher, event popup, lazy-load) kept intact."
    },
    {
      "commit": "eefba3ac67c53d72f2149784642db06f6536a7c4",
      "tree": "271f85cb31f2d0abeb8b0bf58531636cf3d01c53",
      "parents": [
        "c8b39b80d34a85043b86198d20817a89c694fc26"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon May 18 22:04:25 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon May 18 22:04:25 2026 +0800"
      },
      "message": "docs(ui): add Next docs entry for Horizon UI\n"
    },
    {
      "commit": "c8b39b80d34a85043b86198d20817a89c694fc26",
      "tree": "ba6d76c810d9413819dedc32713f0e96c8c3824d",
      "parents": [
        "d4d8d04a8a1498832c2536aa50f27633e3384b24"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon May 18 16:30:05 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Mon May 18 16:30:05 2026 +0800"
      },
      "message": "docs(ui): add Horizon UI and archive Booster UI\n\nAdd apache/skywalking-horizon-ui as the next-generation UI (natively\nsupports SkyWalking since v11, and partially v10). Move Booster UI\nfrom the active server list to Archived Repositories.\n"
    },
    {
      "commit": "d4d8d04a8a1498832c2536aa50f27633e3384b24",
      "tree": "0b972e4a2f2c65300a19e1fa2355aa1c309adfc3",
      "parents": [
        "b712dfe00de32caa06e76efc515096efc1cf2ce3"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Wed May 06 23:14:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 23:14:08 2026 +0800"
      },
      "message": "docs(team): move Youliang Huang from Committer to PMC (#842)"
    },
    {
      "commit": "b712dfe00de32caa06e76efc515096efc1cf2ce3",
      "tree": "de3dfa013e9e4de1e77e5fd76485f8221aad5198",
      "parents": [
        "51156eb8cc795dc3d1b1d5e1d8f3bc6264c22713"
      ],
      "author": {
        "name": "mrproliu",
        "email": "741550557@qq.com",
        "time": "Wed May 06 18:46:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 18:46:20 2026 +0800"
      },
      "message": "Release SkyWalking Helm 4.9.0 (#841)"
    },
    {
      "commit": "51156eb8cc795dc3d1b1d5e1d8f3bc6264c22713",
      "tree": "6407b75505febf92d8f430dd22208ca8649757b0",
      "parents": [
        "1007705a25b3e0a48ce572aaf9684be5277a439c"
      ],
      "author": {
        "name": "Gao Hongtao",
        "email": "hanahmily@gmail.com",
        "time": "Wed May 06 11:45:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 11:45:26 2026 +0800"
      },
      "message": "Release Apache SkyWalking BanyanDB 0.10.2 (#840)"
    },
    {
      "commit": "1007705a25b3e0a48ce572aaf9684be5277a439c",
      "tree": "f33b9a37f74d97534806dbc07a4961effa8e3d7b",
      "parents": [
        "a95e92f00f23b4338018390408dde0b5980cc6de"
      ],
      "author": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Apr 30 22:01:01 2026 +0800"
      },
      "committer": {
        "name": "Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Apr 30 22:01:01 2026 +0800"
      },
      "message": "Fix and push event.\n"
    },
    {
      "commit": "a95e92f00f23b4338018390408dde0b5980cc6de",
      "tree": "37cf107b54d291b414696afc462a3b9c74f7d9c0",
      "parents": [
        "028f4177c77d6ed90107c190fa640181fb4af2d5"
      ],
      "author": {
        "name": "吴晟 Wu Sheng",
        "email": "wu.sheng@foxmail.com",
        "time": "Thu Apr 30 21:48:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 21:48:46 2026 +0800"
      },
      "message": "Add mini-program monitoring blog (WeChat / Alipay) (#839)"
    }
  ],
  "next": "028f4177c77d6ed90107c190fa640181fb4af2d5"
}
