)]}'
{
  "log": [
    {
      "commit": "fc7463577ef3436880b0e880085a3aee6a64cb10",
      "tree": "f15ec364133ebeeaaf90cb863a35306076a71c8c",
      "parents": [
        "85dd0ffb31259f451056aea3b73e40620ecdfbd0",
        "c3e8ea17e478f270fa21fe6aa308997af4da5189"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 22:43:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 22:43:06 2026 +0200"
      },
      "message": "Merge pull request #86 from potiuk/feat/skill-family-mcp-from-metadata\n\nfeat: read skill families \u0026 MCP flag from metadata; add pairing card + drift guard"
    },
    {
      "commit": "c3e8ea17e478f270fa21fe6aa308997af4da5189",
      "tree": "f15ec364133ebeeaaf90cb863a35306076a71c8c",
      "parents": [
        "cb3d967429fe1a8981e15bb0e47ba972906814dc"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 22:38:53 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 22:38:53 2026 +0200"
      },
      "message": "feat(landing): add pairing skill-family card + guard against family drift\n\nThe landing hero\u0027s SKILL_FAMILIES list is hand-maintained (each card carries\neditorial copy — icon, modes, cta, desc — that isn\u0027t in the metadata), while\nthe per-family counts are data-driven from skill-counts.json. That split let\nthe `pairing` family (2 skills) ship upstream and appear in the counts while\nthe landing silently omitted its card: 9 cards for 10 metadata families.\n\n- Add the missing `pairing` card (developer-side pre-flight review family).\n- Add scripts/check-landing-families.py: compares the family set in\n  skill-counts.json (metadata source of truth) against the SKILL_FAMILIES\n  cards and fails if either side is missing one. Mirrors\n  check-landing-education.py.\n- Wire the guard into sync-docs.sh right after gen-skill-counts regenerates\n  the counts, so a newly-added upstream family fails the sync (and the build)\n  until its landing card is added.\n"
    },
    {
      "commit": "cb3d967429fe1a8981e15bb0e47ba972906814dc",
      "tree": "a2afffdac6677773bf17389c45cf7a3a73f4333f",
      "parents": [
        "85dd0ffb31259f451056aea3b73e40620ecdfbd0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 22:29:16 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 22:29:16 2026 +0200"
      },
      "message": "feat(data): read skill families and MCP flag from apache/magpie metadata\n\napache/magpie now declares skill-family membership as a `family:` frontmatter\nkey on every skill (#826, #827) and the \"wraps an MCP\" flag as a per-tool\n`**MCP:**` README marker (#802). Source both from that metadata instead of the\nheuristics the generators used before.\n\ngen-skill-counts.mjs\n- Drop the OVERRIDES map and the name-prefix heuristic; read `family:` from\n  each SKILL.md frontmatter (mirrors read_family() in the upstream\n  setup-status collector). A prefix heuristic cannot express families that\n  span prefixes (contributor-growth, repo-health) and silently mis-classified\n  skills whenever upstream added one.\n\ngen-tools.mjs\n- Drop the labels-and-capabilities MCP-table fallback; the flag now comes\n  solely from the per-tool `**MCP:**` marker, which every MCP-wrapper tool\n  now carries.\n\nRegenerated skill-counts.json: uncategorized 6 -\u003e 0, and the drifted counts\ncorrected (mentoring 2-\u003e4, pr-management 5-\u003e8, repo-health 6-\u003e7). tools.json is\nbyte-identical — the markers already reproduced the fallback\u0027s classification.\n"
    },
    {
      "commit": "85dd0ffb31259f451056aea3b73e40620ecdfbd0",
      "tree": "20dd6052684157fb7dfeca6c339d8814abdd8233",
      "parents": [
        "aada6155d18ab287296bb84fd5e10401981857bf",
        "6bfabbee2c4148d1a7e23d9139a9fef144e4d877"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 18:28:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 18:28:16 2026 +0200"
      },
      "message": "Merge pull request #85 from apache/chore/sync-education-content\n\nchore(data): sync generated skill/tool data from apache/magpie main"
    },
    {
      "commit": "6bfabbee2c4148d1a7e23d9139a9fef144e4d877",
      "tree": "20dd6052684157fb7dfeca6c339d8814abdd8233",
      "parents": [
        "aada6155d18ab287296bb84fd5e10401981857bf"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 18:24:34 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 11 18:24:34 2026 +0200"
      },
      "message": "chore(data): sync generated skill/tool data from apache/magpie main\n\nRegenerated src/data/{skill-counts,tools}.json via the sync-docs build\nstep, picking up the latest educational content from apache/magpie main:\n\n- New skill dependency-license-audit (capability-pure / agnostic):\n  totals 69 → 70 across both files.\n- One skill\u0027s contractsUsed gained contract:tracker.\n- Cosmetic MCP server label reformat (\"… MCP (org)\" → \"… — org\") for\n  apache-projects, Gmail, PonyMail.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "aada6155d18ab287296bb84fd5e10401981857bf",
      "tree": "8c44fddbcb2816c25dc4fe31bb9c11dfc2140674",
      "parents": [
        "9852221f6c3188d9373071986d92715e816cd934",
        "76981ddc04a56bf1de7238a0d72ad3801d728c1b"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 16:39:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 16:39:27 2026 +0200"
      },
      "message": "Merge pull request #84 from potiuk/chore/finish-magpie-adoption\n\nchore(magpie): finish apache-magpie adoption"
    },
    {
      "commit": "76981ddc04a56bf1de7238a0d72ad3801d728c1b",
      "tree": "8c44fddbcb2816c25dc4fe31bb9c11dfc2140674",
      "parents": [
        "9852221f6c3188d9373071986d92715e816cd934"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 16:35:32 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 16:35:32 2026 +0200"
      },
      "message": "chore(magpie): finish apache-magpie adoption\n\nComplete the finish-bootstrap left by the manual snapshot recipe:\n\n- pin the project in committed .apache-magpie.lock (git-branch,\n  apache/magpie@main) and record the local fetch fingerprint\n- wire the always-on setup-* and list-* skill families as canonical\n  symlinks in .agents/skills/ plus .claude/ and .github/ relays\n  (no opt-in families installed)\n- scaffold .apache-magpie-overrides/ and install the worktree-aware\n  post-checkout hook\n- add adoption sections to README.md and AGENTS.md\n- gitignore the trusted-external-source snapshot + per-machine lock\n- drop a stray self-referential symlink the recipe left inside\n  the committed magpie-setup skill\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "9852221f6c3188d9373071986d92715e816cd934",
      "tree": "6a1b4e296161d9474541c634ba78cb34ec07be6b",
      "parents": [
        "449eccdc307818832a7f1147c5b1a213f98b609a",
        "cf709e1067e82a37c598e7fc4ee273026cb65822"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 15:16:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 15:16:58 2026 +0200"
      },
      "message": "Merge pull request #83 from potiuk/feature/mcp-marker-from-readme\n\nfeat(tools): source the \"wraps an MCP\" flag from the tool README marker"
    },
    {
      "commit": "cf709e1067e82a37c598e7fc4ee273026cb65822",
      "tree": "6a1b4e296161d9474541c634ba78cb34ec07be6b",
      "parents": [
        "449eccdc307818832a7f1147c5b1a213f98b609a"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 15:09:18 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 15:09:18 2026 +0200"
      },
      "message": "feat(tools): source the \"wraps an MCP\" flag from the tool README marker\n\ngen-tools.mjs now reads each tool\u0027s `**MCP:** \u003cserver\u003e (mcp__prefix__*)`\nREADME marker as the source of truth for the Tools page \"Wraps an MCP\"\nfilter, falling back to the labels-and-capabilities MCP table for any tool\nnot yet carrying the marker.\n\nDepends on the apache/magpie `**MCP:**` markers (added separately); the\ngenerated tools.json is unchanged until those markers land in main, since\nthe fallback reproduces today\u0027s classification exactly.\n"
    },
    {
      "commit": "449eccdc307818832a7f1147c5b1a213f98b609a",
      "tree": "176ca2a0f903c2238f6166a72e536606c7acb327",
      "parents": [
        "8ebbca77a31a013c88af91c91a31095339a5d465",
        "7f031eeabd7d4f64d06d97e76d15de8f0609a2ef"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 14:32:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 14:32:05 2026 +0200"
      },
      "message": "Merge pull request #82 from potiuk/feat/footer-foundation-two-col\n\nrefactor(footer): compact Foundation column, no-wrap links, docs open in new tab"
    },
    {
      "commit": "7f031eeabd7d4f64d06d97e76d15de8f0609a2ef",
      "tree": "176ca2a0f903c2238f6166a72e536606c7acb327",
      "parents": [
        "8ebbca77a31a013c88af91c91a31095339a5d465"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 14:28:18 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 14:28:18 2026 +0200"
      },
      "message": "refactor(footer): compact Foundation column, no-wrap links, docs open in new tab\n\n- Foundation\u0027s 7 links now render two-per-row (content-sized grid) to\n  save vertical space.\n- All footer links get whitespace-nowrap so labels like \u0027Apache Home\u0027\n  never wrap mid-phrase.\n- Documentation / Architecture / Tools now open in a new tab with the ↗\n  arrow, consistent with the other new-tab links.\n- Rename the link primitives to SameTabLink / NewTabLink and the model\n  flag to `newTab`, since the distinction is \u0027opens in a new tab\u0027, not\n  internal-vs-external.\n"
    },
    {
      "commit": "8ebbca77a31a013c88af91c91a31095339a5d465",
      "tree": "e4aed03c63492e986b3daeda8080bf5253938485",
      "parents": [
        "972b362c1a7fa72fec1749a781c42332f27f6b24",
        "40cd265168aac3ec8ec17ee623b84c414554ed94"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 13:39:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 13:39:26 2026 +0200"
      },
      "message": "Merge pull request #81 from potiuk/feat/shared-footer\n\nrefactor(footer): single shared footer with consistent new-tab arrows"
    },
    {
      "commit": "40cd265168aac3ec8ec17ee623b84c414554ed94",
      "tree": "e4aed03c63492e986b3daeda8080bf5253938485",
      "parents": [
        "972b362c1a7fa72fec1749a781c42332f27f6b24"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 13:04:58 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 13:04:58 2026 +0200"
      },
      "message": "refactor(footer): single shared footer, consistent new-tab arrows\n\nThe landing page carried its own copy of the footer markup, which had\nalready drifted from the shared SiteFooter. Extract the footer to one\nplace and render it everywhere so the two can\u0027t diverge again.\n\n- ImmersiveGradientHero now renders \u003cSiteFooter /\u003e instead of an inline\n  duplicate (removes ~80 lines and the now-unused Twitter glyph).\n- SiteFooter is data-driven with InternalLink / ExternalLink primitives\n  that enforce \u0027opens in a new tab \u003d\u003e trailing arrow\u0027 by construction:\n  internal site routes open in place with no arrow; every external link\n  opens in a new tab with an ArrowUpRight.\n- Split navigation into a dedicated \u0027Documentation\u0027 column (Documentation,\n  Architecture, Tools) present on every page, with Downloads / Brand\n  assets / Roadmap / Changelog under \u0027Project\u0027.\n\nFooter markup is now byte-identical across all pages.\n"
    },
    {
      "commit": "972b362c1a7fa72fec1749a781c42332f27f6b24",
      "tree": "d8aa36f8908b3d278603ea2970bf1b447c6a69b5",
      "parents": [
        "e88b506be37f27aceeac37af9836aa5c3f131795",
        "a12d25f7daa77b6f3f86bab69df6a4c9ef465362"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:53:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 12:53:06 2026 +0200"
      },
      "message": "Merge pull request #80 from potiuk/chore/enable-astro-check\n\nchore: make astro check runnable and green in CI"
    },
    {
      "commit": "a12d25f7daa77b6f3f86bab69df6a4c9ef465362",
      "tree": "bd38c0806a5effc87f2bd0c7e54fc8799731716a",
      "parents": [
        "a3bc1d3924a4603e0d7561d75a332bc3b3f36357"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:48:22 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:48:22 2026 +0200"
      },
      "message": "chore: make `astro check` runnable and green in CI\n\nThe CI \u0027Type check\u0027 step runs `npx astro check` but neither `@astrojs/check`\nnor `typescript` was installed, so it errored out with a package-missing\nmessage and never actually type-checked (the step is continue-on-error, so\nthis went unnoticed).\n\n- Add devDeps: @astrojs/check, typescript, @types/node.\n- Enabling the check surfaced pre-existing type errors; fix all of them\n  (type-only, no runtime change):\n  - @types/node resolves `process` (astro.config.mjs) and `NodeJS.Timeout`\n    (particles.tsx).\n  - Add the internal `_order?: number` field to the DocsNavTree `TreeNode`\n    interface (set during DocsLayout\u0027s finalize pass).\n  - Gate the tools vendor badge on `t.vendor` being present, narrowing the\n    `string | null` tool vendor to the `string` VendorIcon requires.\n\n`astro check` now reports 0 errors.\n"
    },
    {
      "commit": "e88b506be37f27aceeac37af9836aa5c3f131795",
      "tree": "82ad3788f548806896b550e7a2838cfc4d94453c",
      "parents": [
        "a3bc1d3924a4603e0d7561d75a332bc3b3f36357",
        "5af0c9541f8266b3f397ae56ec6af6811a75e424"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:29:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 12:29:10 2026 +0200"
      },
      "message": "Merge pull request #79 from potiuk/feat/social-cards-and-brand-book\n\nfeat(brand): social-share cards, social kit \u0026 brand book"
    },
    {
      "commit": "5af0c9541f8266b3f397ae56ec6af6811a75e424",
      "tree": "82ad3788f548806896b550e7a2838cfc4d94453c",
      "parents": [
        "a3bc1d3924a4603e0d7561d75a332bc3b3f36357"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:21:31 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 12:21:31 2026 +0200"
      },
      "message": "feat(brand): social-share cards, social kit \u0026 brand book\n\nLinks unfurled on social media fell back to the framework default icon\nbecause BaseLayout emitted no Open Graph / Twitter meta tags. Add a full\nset of share tags to every page, defaulting to a new branded 1200x630\ncard, plus a /brand brand book and a ready-to-upload social-media kit.\n\n- BaseLayout: og:*/twitter:* tags + canonical; summary_large_image with\n  the 1200x630 card (public/og-image.png); per-page image override prop.\n- public/brand: avatars (400, 1000) and banners for X, LinkedIn,\n  Fosstodon/Mastodon and Bluesky at each platform\u0027s recommended size.\n- New /brand page: logo \u0026 mark, color palette (from theme.css),\n  typography (all OFL-1.1), the social kit, and naming/trademark usage.\n- Footer (both the shared SiteFooter and the landing footer): add a\n  \u0027Brand assets\u0027 link under Project.\n\nArtwork is rendered from the existing mark.svg and the project\u0027s own\nself-hosted OFL-1.1 fonts (Jost/Inter); only flat PNGs ship.\n"
    },
    {
      "commit": "a3bc1d3924a4603e0d7561d75a332bc3b3f36357",
      "tree": "a60cc233af44a4235001963a412daef048cf2f99",
      "parents": [
        "bb1a7b5e38ca1da585ce4cb963feca87f35c14fc",
        "3de8b462501dc5d2ba865a8023bbaea7cb7412e9"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 10 11:20:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 11:20:38 2026 +0200"
      },
      "message": "Merge pull request #78 from apache/dependabot/npm_and_yarn/npm-dependencies-1eda90caf3\n\nchore(deps): bump the npm-dependencies group with 2 updates"
    },
    {
      "commit": "3de8b462501dc5d2ba865a8023bbaea7cb7412e9",
      "tree": "a60cc233af44a4235001963a412daef048cf2f99",
      "parents": [
        "bb1a7b5e38ca1da585ce4cb963feca87f35c14fc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Jul 10 01:34:44 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 01:34:44 2026 +0000"
      },
      "message": "chore(deps): bump the npm-dependencies group with 2 updates\n\nBumps the npm-dependencies group with 2 updates: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) and [@astrojs/react](https://github.com/withastro/astro/tree/HEAD/packages/integrations/react).\n\n\nUpdates `astro` from 7.0.5 to 7.0.6\n- [Release notes](https://github.com/withastro/astro/releases)\n- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)\n- [Commits](https://github.com/withastro/astro/commits/astro@7.0.6/packages/astro)\n\nUpdates `@astrojs/react` from 6.0.0 to 6.0.1\n- [Release notes](https://github.com/withastro/astro/releases)\n- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/react/CHANGELOG.md)\n- [Commits](https://github.com/withastro/astro/commits/@astrojs/react@6.0.1/packages/integrations/react)\n\n---\nupdated-dependencies:\n- dependency-name: astro\n  dependency-version: 7.0.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: \"@astrojs/react\"\n  dependency-version: 6.0.1\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "bb1a7b5e38ca1da585ce4cb963feca87f35c14fc",
      "tree": "211056da44c566f4230f7601dd4facb89032f8e3",
      "parents": [
        "22c7257797d96cd9a08a80bd9c747dc2072cdc2e",
        "0b605d889f98fa5689775b2acb8f46164bd724f2"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:39:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 23:39:25 2026 +0200"
      },
      "message": "Merge pull request #77 from potiuk/fix/per-contract-dedupe-vendor-badges\n\nfix(architecture): dedupe vendor badges in the per-contract score"
    },
    {
      "commit": "0b605d889f98fa5689775b2acb8f46164bd724f2",
      "tree": "211056da44c566f4230f7601dd4facb89032f8e3",
      "parents": [
        "22c7257797d96cd9a08a80bd9c747dc2072cdc2e"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:37:55 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:37:55 2026 +0200"
      },
      "message": "fix(architecture): dedupe vendor badges in the per-contract score\n\nThe per-contract score cards rendered one vendor badge per implementing tool,\nso a vendor shipping several tools showed duplicate badges (e.g. GitHub ×3 on\ncontract:tracker, Atlassian ×2 on contract:change-request) — inconsistent with\nthe \"N backend vendors: …\" line that already lists distinct vendors.\n\nAdd a vendorsOf() helper that groups implementations by vendor and renders one\nbadge per distinct vendor (sorted to match the basis line); the badge tooltip\nnow aggregates all of that vendor\u0027s tools.\n"
    },
    {
      "commit": "22c7257797d96cd9a08a80bd9c747dc2072cdc2e",
      "tree": "b90172284a5eaf5e4dee832eb93a5f5ba62b4f37",
      "parents": [
        "b32d53ba20fab1c3d4d83892681dfa29fc9b8600",
        "6a8575b0e6bfb4c7cb7a6e5abd5910d69ddded2a"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:24:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 23:24:15 2026 +0200"
      },
      "message": "Merge pull request #76 from potiuk/feat/tools-filter-vendor-icons-nav-polish\n\nfeat(tools,architecture): sticky dropdown filters, vendor icons, nav polish"
    },
    {
      "commit": "6a8575b0e6bfb4c7cb7a6e5abd5910d69ddded2a",
      "tree": "b90172284a5eaf5e4dee832eb93a5f5ba62b4f37",
      "parents": [
        "b32d53ba20fab1c3d4d83892681dfa29fc9b8600"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:22:26 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 23:22:26 2026 +0200"
      },
      "message": "feat(tools,architecture): sticky dropdown filters, vendor icons, nav polish\n\nTools page (/tools):\n- Replace the flat filter pills with a sticky dropdown filter toolbar: one\n  labelled dropdown per dimension (Contract / Substrate / Organization /\n  Vendor) of multi-select checkboxes, plus a \"Wraps an MCP\" toggle, a Clear\n  button, and the live \"Showing X of Y\" status. Each dropdown shows an\n  active-count badge; the bar stays pinned to the top of the viewport on scroll.\n  One dropdown open at a time; closes on outside-click / Escape.\n\nVendor icons everywhere:\n- New VendorIcon component renders the bundled brand SVG when one exists and a\n  monogram badge (the vendor\u0027s initial) otherwise, so every vendor shows an icon\n  (CVE.org, Fossil, SourceHut, Vulnogram, Maildir, email previously had none).\n  Used on the tools filter + cards and the architecture per-contract lists.\n\nArchitecture page:\n- Give the \"Extending\" section a proper h2 header (was a smaller \"Go deeper\").\n- Left-nav: clicking an item highlights it immediately and keeps it highlighted;\n  the last section (Extending) stays highlighted at the bottom of the page,\n  where the scroll-spy\u0027s active band can\u0027t otherwise reach it.\n\nSite-wide: rename the \"← Back to home\" links to \"← Back to Magpie\".\n"
    },
    {
      "commit": "b32d53ba20fab1c3d4d83892681dfa29fc9b8600",
      "tree": "aca86d90e66c4392444989e817c41e71690df48d",
      "parents": [
        "d0046340865a49ead2ad9802e329c1f5e03b850c",
        "057ef26e496e0e2bc61e67a37d8ceb8d08d17c49"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 21:06:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 21:06:42 2026 +0200"
      },
      "message": "Merge pull request #75 from potiuk/feat/collapsible-docs-nav-and-tools-page\n\nfeat(nav,tools): collapsible docs tree, Architecture sidebar, dedicated Tools page"
    },
    {
      "commit": "057ef26e496e0e2bc61e67a37d8ceb8d08d17c49",
      "tree": "aca86d90e66c4392444989e817c41e71690df48d",
      "parents": [
        "d0046340865a49ead2ad9802e329c1f5e03b850c"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 21:03:34 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 21:03:34 2026 +0200"
      },
      "message": "feat(nav,tools): collapsible docs tree, sidebar for Architecture, dedicated Tools page\n\nDocs sidebar (DocsLayout + new DocsNavTree.astro):\n- Replace the flat two-level list with a recursive, collapsible tree (native\n  \u003cdetails\u003e, no JS) that goes as deep as the content. Sections are grouped under\n  four super-categories (Start here / Learn / Maintainer workflows /\n  Extend \u0026 reference); the 45 tools are bucketed by kind (Contracts/Substrates).\n- On load, only the branch leading to the current page is unfolded; the two top\n  levels (super-categories + sections) stay open so the menu always shows two\n  levels. Every node is user-toggleable.\n- Add a pinned, sticky \"Documentation\" header above the scrolling nav.\n\nArchitecture page:\n- Turn the horizontal \"On this page\" bar into a docs-style sticky left sidebar\n  with an \"Architecture\" header and an IntersectionObserver scroll-spy.\n- Give Vendor neutrality three nav sub-sections (Per-contract score, Skills by\n  neutrality, LLM \u0026 agent neutrality), anchored to their headings.\n\nTools moved to its own page (/tools):\n- Extract the filterable tool browser (was the Architecture \"tools\" section) into\n  src/pages/tools.astro. Share all tool/org/vendor derivations via the new\n  src/lib/tools-view.ts so the two pages can\u0027t drift.\n- Drop the stale /tools -\u003e /architecture back-compat redirect (now a real page).\n- Architecture keeps its \"Tool capabilities\" summary + a \"Browse all N tools\"\n  link to /tools.\n\nLanding page: add Tools links in the top nav (desktop + mobile), the footer, and\npoint the \"Browse the tools\" CTA at /tools.\n"
    },
    {
      "commit": "d0046340865a49ead2ad9802e329c1f5e03b850c",
      "tree": "f8b4fe8102272e81cb5a73c644b7063227321d7e",
      "parents": [
        "e6a0e4764a869b0bbc59f5156406daad7fdc0e96",
        "c3eb58b28beed87025b5008626f15e95d429e099"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:48:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 11:48:03 2026 +0200"
      },
      "message": "Merge pull request #73 from apache/dependabot/npm_and_yarn/npm-dependencies-2a7aa1de17\n\nchore(deps): bump the npm-dependencies group with 2 updates"
    },
    {
      "commit": "e6a0e4764a869b0bbc59f5156406daad7fdc0e96",
      "tree": "8f637baa9cedb8db76f36da67858ffae08abdb8b",
      "parents": [
        "c7879416e25dcf25747ec5cf26d0deb6d6a9a933",
        "f44be691fe737ea45d378bf9e2e8fa06da9d0547"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:47:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 11:47:49 2026 +0200"
      },
      "message": "Merge pull request #74 from potiuk/fix/education-training-section-and-landing-link\n\nfix(docs,landing): split Training into its own docs section; add landing link"
    },
    {
      "commit": "f44be691fe737ea45d378bf9e2e8fa06da9d0547",
      "tree": "8f637baa9cedb8db76f36da67858ffae08abdb8b",
      "parents": [
        "e76a98e860bf045f40e3c1f3d72ae65f56897ae2"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:38:55 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:38:55 2026 +0200"
      },
      "message": "refactor(check): run landing-education check from the docs sync, not prek\n\nThe education chapters are pulled from apache/magpie and gitignored, so the\nprek lint job never saw them and the hook could only skip. Move the check to\nthe end of scripts/sync-docs.sh, right after the docs land — the one place the\nchapters are guaranteed present (locally on `npm run sync-docs`, and in CI\u0027s\nbuild job). A missing/dangling link now fails the sync (set -e), and therefore\nthe build. Drop the redundant landing-education-sync prek hook.\n"
    },
    {
      "commit": "e76a98e860bf045f40e3c1f3d72ae65f56897ae2",
      "tree": "903d4295adafe6db2c52bc1636cbfd93773fc74b",
      "parents": [
        "d82c8a38621d872ee7a452b7b4691f18d22e756d"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:34:29 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:34:29 2026 +0200"
      },
      "message": "fix(hook): skip landing-education check when docs are not synced\n\nsrc/content/docs/ is synced from apache/magpie and gitignored, so it is\nabsent in the CI lint job (prek runs without a build). The hook errored\n\u0027education docs directory not found\u0027 and failed. Skip cleanly (exit 0)\nwhen the education dir is missing; the check still runs wherever docs are\npresent (locally after npm run sync-docs, or any build context).\n"
    },
    {
      "commit": "d82c8a38621d872ee7a452b7b4691f18d22e756d",
      "tree": "327aff22a3b7f8ee09e58182c3c65f190db8badf",
      "parents": [
        "c7879416e25dcf25747ec5cf26d0deb6d6a9a933"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:31:18 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 11:31:18 2026 +0200"
      },
      "message": "fix(docs,landing): split Training into its own docs section; add landing link\n\nThe education/training module lives under src/content/docs/education/training/\nbut the docs sidebar grouped it into \"Education\" and labelled its README\ngenerically, so Education showed two \"Overview\" links (its own + training\u0027s)\nand the five training lessons fell into the Education list.\n\nPromote education/training to its own sidebar/index section:\n\n- DocsLayout.astro \u0026 docs/index.astro: a NESTED_GROUPS set surfaces\n  education/training under its own heading (\"Training\"); group-overview\n  detection now keys on the README\u0027s directory rather than path depth, so a\n  section\u0027s README is recognised at any nesting level (tools/\u003cname\u003e/readme\n  stays a per-tool page, not a group overview).\n- Education now has a single Overview + its chapters; Training has its own\n  Overview + lessons 01–05, ordered by the module README.\n\nLanding page:\n\n- Add a \"Run it as a training course\" CTA (→ /docs/education/training/readme)\n  next to \"Explore the education stream\".\n- Add a deterministic, stdlib-only Python prek hook\n  (scripts/check-landing-education.py) that fails if any education chapter\n  under src/content/docs/education/*.md (except README; training/ excluded)\n  is not linked from the landing hero, or if the hero links a page that no\n  longer exists. Wired as landing-education-sync, scoped to the relevant files.\n"
    },
    {
      "commit": "c3eb58b28beed87025b5008626f15e95d429e099",
      "tree": "5fb23ba221350e65e0ef0940411022cc8b62f7d1",
      "parents": [
        "c7879416e25dcf25747ec5cf26d0deb6d6a9a933"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jul 09 01:34:32 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 01:34:32 2026 +0000"
      },
      "message": "chore(deps): bump the npm-dependencies group with 2 updates\n\nBumps the npm-dependencies group with 2 updates: [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) and [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react).\n\n\nUpdates `astro` from 7.0.4 to 7.0.5\n- [Release notes](https://github.com/withastro/astro/releases)\n- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)\n- [Commits](https://github.com/withastro/astro/commits/astro@7.0.5/packages/astro)\n\nUpdates `lucide-react` from 1.22.0 to 1.23.0\n- [Release notes](https://github.com/lucide-icons/lucide/releases)\n- [Commits](https://github.com/lucide-icons/lucide/commits/1.23.0/packages/lucide-react)\n\n---\nupdated-dependencies:\n- dependency-name: astro\n  dependency-version: 7.0.5\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: lucide-react\n  dependency-version: 1.23.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n  dependency-group: npm-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c7879416e25dcf25747ec5cf26d0deb6d6a9a933",
      "tree": "3cf11ff5489f93205cfea389e9ae6dba8ae0ad5e",
      "parents": [
        "558d61f93015cc3dae1089532783f4770943be97",
        "e402b8d9d27645bd3b5d6a71aefd372df8db183f"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 00:15:56 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 00:15:56 2026 +0200"
      },
      "message": "Merge pull request #72 from potiuk/feat/asf-download-page\n\nfeat(downloads): ASF-compliant download page ready for 0.1.0"
    },
    {
      "commit": "e402b8d9d27645bd3b5d6a71aefd372df8db183f",
      "tree": "48109ba4057f055a7fcf4e61161b1d3b2f1ce4d7",
      "parents": [
        "96512555cec3b36aed85a6e07c6c5f5e465fca44"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 00:08:55 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Thu Jul 09 00:08:55 2026 +0200"
      },
      "message": "feat(downloads): link to install recipes from the released view\n\nThe published Latest-release view offered the official source release but\nno pointer to the other ways to bootstrap Magpie into a repo. Add a small\n\u0027Other installation methods\u0027 section linking to the install recipes\n(released zip / git tag / main branch).\n"
    },
    {
      "commit": "96512555cec3b36aed85a6e07c6c5f5e465fca44",
      "tree": "3ac41b8ce6d1640df9b6f738380652323808f932",
      "parents": [
        "42ff919479596e1e7c7df29ba1a1a5f18e5e36a1"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 23:58:56 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 23:58:56 2026 +0200"
      },
      "message": "feat(downloads): ASF-compliant download page ready for 0.1.0 (#46)\n\nRework the downloads page into an ASF Release Distribution Policy\ncompliant download-release page, driven by a small release-config block\nand pointing at the upcoming 0.1.0 release.\n\nWhen a release is published, set `published: true` and fill in `date`;\nthe page then renders a compliant \u0027Latest release\u0027 section wired to the\nApache distribution system:\n  - the source artifact (apache-magpie-\u003cversion\u003e-source-release.zip) is\n    fetched through the mirror system (dyn/closer.lua);\n  - the detached PGP signature (.asc), the SHA-512 checksum and the KEYS\n    file are linked only from the canonical downloads.apache.org, never\n    mirrored, and are what you verify the download against;\n  - copy-paste verification steps (KEYS import, gpg --verify, sha512sum)\n    plus a link to the ASF verification guide;\n  - older releases point at archive.apache.org.\n\nUntil 0.1.0 is published the flag stays false: the page names 0.1.0 as\nthe upcoming release, keeps the pre-release install guidance, and never\nadvertises a download link that would 404.\n\nArtifact naming and dist path follow apache/magpie\u0027s own install recipe\n(docs/setup/install-recipes.md).\n"
    },
    {
      "commit": "558d61f93015cc3dae1089532783f4770943be97",
      "tree": "cbb7276f72e32002de92db59c061bfc1ad282e0b",
      "parents": [
        "42ff919479596e1e7c7df29ba1a1a5f18e5e36a1",
        "5899444807f0d1f0786d9f378d71e84d163b81b7"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 23:52:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 23:52:44 2026 +0200"
      },
      "message": "Merge pull request #71 from potiuk/chore/refresh-magpie-and-telemetry-flag\n\nchore: refresh from magpie main, harden astro build/sync, hide empty orgs"
    },
    {
      "commit": "5899444807f0d1f0786d9f378d71e84d163b81b7",
      "tree": "cbb7276f72e32002de92db59c061bfc1ad282e0b",
      "parents": [
        "55c6c5f413095b3d850bf474ca563072be605e87"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:46:15 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:46:15 2026 +0200"
      },
      "message": "feat(architecture): hide fully-empty organizations\n\nAn org with zero skills, zero org-specific tools, and zero skill families\n(currently \u0027independent\u0027) carried no information but still rendered an\nempty card and inflated the org count. Filter to orgs with any presence\nbefore rendering the count and the cards. The filter chips already skipped\nit (they derive from tools that declare an organization; an empty org\nlabels none).\n"
    },
    {
      "commit": "55c6c5f413095b3d850bf474ca563072be605e87",
      "tree": "cb6f4b0381f1ce2c7d1f3520a2afabaf088af34a",
      "parents": [
        "bf492bd7a515d2d4119544ed42de48101953bae0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:21:21 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:21:21 2026 +0200"
      },
      "message": "fix(sync): disable credential helper for the public magpie clone\n\nThe system-level credential.helper\u003dosxkeychain fires twice on both the\nclone and the partial-clone lazy fetch (sparse-checkout set), printing\n\u0027fatal: failed to store: -60008\u0027 when the keychain is unwritable in\nsandboxed/CI environments. The source repo is public and needs no\ncredentials, so clone with --config credential.helper\u003d (persisted into\nthe repo config so the lazy fetch inherits it). Content is unchanged.\n"
    },
    {
      "commit": "bf492bd7a515d2d4119544ed42de48101953bae0",
      "tree": "e1523947ef19bb6a03abe9eae92e8e45a01bb2e1",
      "parents": [
        "9dd4324246ab8d7cff007f03339df462373883c9"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:10:19 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:10:19 2026 +0200"
      },
      "message": "build: always disable Astro telemetry in astro npm scripts\n\nastro build/preview/astro passthrough tried to write telemetry config\nto ~/Library/Preferences/astro and failed with EPERM in sandboxed\nenvironments (the dev script already guarded against this via\nscripts/dev.sh). Prefix the astro-invoking scripts with\nASTRO_TELEMETRY_DISABLED\u003d1 so npm run build works everywhere without a\nmanual env var.\n"
    },
    {
      "commit": "9dd4324246ab8d7cff007f03339df462373883c9",
      "tree": "c8e26da25100af5c3bb90c2cb999e98db75d7911",
      "parents": [
        "42ff919479596e1e7c7df29ba1a1a5f18e5e36a1"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:10:19 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 20:10:19 2026 +0200"
      },
      "message": "chore(data): refresh tools.json from apache/magpie main\n\nRe-syncs the generated Tools \u0026 Capabilities summary from the current\napache/magpie main: adds the Kiro harness across substrate tools and\nreclassifies agent-isolation as harness-agnostic. Vendor-neutrality\nholds at 10/10.\n"
    },
    {
      "commit": "42ff919479596e1e7c7df29ba1a1a5f18e5e36a1",
      "tree": "d8ec20896c77f2638bf8370dee84466534ecc773",
      "parents": [
        "ebded3f7e971c421fdeedd9be1492bd99aa56d95",
        "85fa435079af04bbfee1dbbe26d924e65e21ee6f"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 08 12:50:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 12:50:29 2026 +0200"
      },
      "message": "Merge pull request #70 from apache/dependabot/npm_and_yarn/npm-dependencies-d0cf4ff651\n\nchore(deps): bump the npm-dependencies group across 1 directory with 6 updates"
    },
    {
      "commit": "85fa435079af04bbfee1dbbe26d924e65e21ee6f",
      "tree": "d8ec20896c77f2638bf8370dee84466534ecc773",
      "parents": [
        "ebded3f7e971c421fdeedd9be1492bd99aa56d95"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jul 08 01:35:20 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 01:35:20 2026 +0000"
      },
      "message": "chore(deps): bump the npm-dependencies group across 1 directory with 6 updates\n\nBumps the npm-dependencies group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) | `7.0.3` | `7.0.4` |\n| [motion](https://github.com/motiondivision/motion) | `12.42.0` | `12.42.2` |\n| [radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui) | `1.6.0` | `1.6.1` |\n| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.3.1` | `4.3.2` |\n| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `1.21.0` | `1.22.0` |\n\n\n\nUpdates `astro` from 7.0.3 to 7.0.4\n- [Release notes](https://github.com/withastro/astro/releases)\n- [Changelog](https://github.com/withastro/astro/blob/main/packages/astro/CHANGELOG.md)\n- [Commits](https://github.com/withastro/astro/commits/astro@7.0.4/packages/astro)\n\nUpdates `motion` from 12.42.0 to 12.42.2\n- [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/motiondivision/motion/compare/v12.42.0...v12.42.2)\n\nUpdates `radix-ui` from 1.6.0 to 1.6.1\n- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radix-ui/CHANGELOG.md)\n- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radix-ui)\n\nUpdates `@tailwindcss/vite` from 4.3.1 to 4.3.2\n- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)\n- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/@tailwindcss-vite)\n\nUpdates `lucide-react` from 1.21.0 to 1.22.0\n- [Release notes](https://github.com/lucide-icons/lucide/releases)\n- [Commits](https://github.com/lucide-icons/lucide/commits/1.22.0/packages/lucide-react)\n\nUpdates `tailwindcss` from 4.3.1 to 4.3.2\n- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)\n- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/tailwindcss)\n\n---\nupdated-dependencies:\n- dependency-name: astro\n  dependency-version: 7.0.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: motion\n  dependency-version: 12.42.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: radix-ui\n  dependency-version: 1.6.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: \"@tailwindcss/vite\"\n  dependency-version: 4.3.2\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n- dependency-name: lucide-react\n  dependency-version: 1.22.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n  dependency-group: npm-dependencies\n- dependency-name: tailwindcss\n  dependency-version: 4.3.2\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n  dependency-group: npm-dependencies\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ebded3f7e971c421fdeedd9be1492bd99aa56d95",
      "tree": "c0b495f41f0b7469893d74e81a33e70101915dda",
      "parents": [
        "c6b41aa13ed012beec670752510ea8c758135ade",
        "535d6d515a43a5594dbbed073d4b7410ce951bb4"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jul 07 02:43:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 02:43:31 2026 +0200"
      },
      "message": "Merge pull request #68 from potiuk/feat/education-three-groups\n\nfeat(landing): regroup education section into three streams"
    },
    {
      "commit": "535d6d515a43a5594dbbed073d4b7410ce951bb4",
      "tree": "c0b495f41f0b7469893d74e81a33e70101915dda",
      "parents": [
        "c6b41aa13ed012beec670752510ea8c758135ade"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jul 07 02:42:13 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jul 07 02:42:13 2026 +0200"
      },
      "message": "feat(landing): regroup education section into three streams\n\nRework the \"New to agents?\" section from the nine-node progression snake\ninto the three grouped streams from the design proposal, matching the\nrefreshed magpie/main education stream (now eleven pages):\n\n- Working with agents — What agents are, Working with agents, Choosing models\n- Authoring skills — Your first skill, Writing safe skills, Debugging a skill,\n  Writing portable skills, Eval-driven development\n- Going further — Agentic \u0026 autonomous work, English as a programming\n  language, Contributing back\n\nThe two hands-on references (Pattern catalogue, Tutorials) move into a shared\ndashed \"References — use alongside any group\" box. Each card row links to its\ndocs page; the \"Explore the education stream\" button is unchanged.\n\nPicks up two new education pages synced from magpie/main\n(debugging-skills, portable-skills) and drops the now-unused ArrowLeft import.\n"
    },
    {
      "commit": "c6b41aa13ed012beec670752510ea8c758135ade",
      "tree": "f9d3da1c4949aac3cac3bdb4fa98ec82fa6b6e17",
      "parents": [
        "5f1b321d8f0ebd6e030c03639af32e22cb211e83",
        "0bf375d76fda020099444aa478e97ebac1148172"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:55:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 01:55:10 2026 +0200"
      },
      "message": "Merge pull request #66 from potiuk/fix/adopt-a-magpie-title\n\nfeat(landing): rename badge footer heading to \"Adopt a Magpie\""
    },
    {
      "commit": "0bf375d76fda020099444aa478e97ebac1148172",
      "tree": "f9d3da1c4949aac3cac3bdb4fa98ec82fa6b6e17",
      "parents": [
        "5f1b321d8f0ebd6e030c03639af32e22cb211e83"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:54:09 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:54:09 2026 +0200"
      },
      "message": "feat(landing): rename badge footer heading to \"Adopt a Magpie\"\n\nRenames the Why-Magpie badge footer heading from \"Get a badge\" to\n\"Adopt a Magpie\". Text only; the badge render and copy snippet are unchanged.\n"
    },
    {
      "commit": "5f1b321d8f0ebd6e030c03639af32e22cb211e83",
      "tree": "a74f32a9c9de496e47679054b287fde3a8e02fe2",
      "parents": [
        "5f6380f2c1988107e701d32f396802729b43b750",
        "fd7a2d22b1488243c3fce634e444e10b9036f65f"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:39:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 01:39:37 2026 +0200"
      },
      "message": "Merge pull request #65 from potiuk/feat/education-snake-docs-order-badge\n\nfeat(landing/docs): education snake, Get-a-badge, README-ordered docs \u0026 asset sync"
    },
    {
      "commit": "fd7a2d22b1488243c3fce634e444e10b9036f65f",
      "tree": "6f43867675d343aa1ee802942bd9203d83721fc1",
      "parents": [
        "67ed69cff9992abcf371de2844f59d4263eb4e0d"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "message": "chore(data): refresh generated skill/tool data from magpie main\n\nRe-sync bumps the counts to the current framework (69 skills; five new\nskills not yet mapped to a family) and regenerates the tools summary.\n"
    },
    {
      "commit": "67ed69cff9992abcf371de2844f59d4263eb4e0d",
      "tree": "e1876c24779fa4be1c3c0f38ccc4b0d86e7eb98c",
      "parents": [
        "1294465e425d05e012775fe6b0f9efaabf495e06"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "message": "fix(sync): also sync framework assets/ (image move + badge.json)\n\nThe framework moved its doc images from images/ to assets/ and added\nassets/badge.json. Sparse-checkout and copy both images/ and assets/, and\nrewrite ../../assets and ../assets image links to /docs-assets so synced\ndocs keep resolving.\n"
    },
    {
      "commit": "1294465e425d05e012775fe6b0f9efaabf495e06",
      "tree": "4e36ebbfae17257b6269651f0da41ca23c9cde84",
      "parents": [
        "8ec36d2529c6aa5e4c674603eb22e3da46bb182a"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "message": "feat(docs): order each section\u0027s pages by its README table of contents\n\nBoth the /docs index and the sidebar now order a section\u0027s pages by the\norder that section\u0027s README/overview links them (falling back to the curated\nlist, then alphabetical), so the listing tracks the doc\u0027s own contents —\ne.g. the education stream reads 1→9 then its references.\n"
    },
    {
      "commit": "8ec36d2529c6aa5e4c674603eb22e3da46bb182a",
      "tree": "d1aee754d5dc41a9209ac8fb7b4cc99f8c84c577",
      "parents": [
        "cde8359420e67ad4f8f76e488d9b72f09f4c7923"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Mon Jul 06 01:35:21 2026 +0200"
      },
      "message": "feat(landing): education progression snake + \"Get a badge\" footer\n\nRework the education section into a 3×3 boustrophedon \"snake\" of the nine\nordered learning-stream steps (left→right, U-turn, right→left, U-turn,\nleft→right), with Pattern catalogue and Tutorials as reference boxes in the\nrow gaps. Add a \"Get a badge\" footer to the Why-Magpie section: the badge is\nrendered locally (the Magpie mark masked on the brand pill, no third-party\nrequest on load), with a copy-able shields.io snippet for adopters\u0027 READMEs.\n"
    },
    {
      "commit": "5f6380f2c1988107e701d32f396802729b43b750",
      "tree": "a5e0e737afa44b1aec80f3e11864266b5dbb32b1",
      "parents": [
        "cde8359420e67ad4f8f76e488d9b72f09f4c7923",
        "c09972ef224e284bb13063081ecf314eda61be9d"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 01:32:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 01:32:14 2026 +0200"
      },
      "message": "Merge pull request #64 from potiuk/feat/legacy-route-redirects\n\nfeat: redirect legacy /skills and /tools routes to /docs and /architecture"
    },
    {
      "commit": "c09972ef224e284bb13063081ecf314eda61be9d",
      "tree": "a5e0e737afa44b1aec80f3e11864266b5dbb32b1",
      "parents": [
        "cde8359420e67ad4f8f76e488d9b72f09f4c7923"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 01:31:42 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 01:31:42 2026 +0200"
      },
      "message": "feat: redirect legacy /skills and /tools routes to /docs and /architecture\n\nFollow-up to #63 (which renamed /skills → /docs and /tools →\n/architecture). Adds back-compat redirects so old bookmarks/inbound\nlinks don\u0027t 404.\n\nUses Astro\u0027s redirects config, emitting static meta-refresh HTML pages\n(canonical + noindex) — portable for ASF\u0027s static publish-branch host:\n  /skills            → /docs\n  /skills/[...slug]  → /docs/[...slug]   (reuses the /docs route\u0027s\n                       getStaticPaths, so per-tool pages at\n                       /skills/tools/\u003cname\u003e redirect too)\n  /tools             → /architecture\n\n/tools had no sub-paths (old tool docs were under /skills/tools/*, covered\nby the skills rule), so no /tools/* rule is needed.\n"
    },
    {
      "commit": "cde8359420e67ad4f8f76e488d9b72f09f4c7923",
      "tree": "9a11a12e18ac0fa651c8aa173427a7888b5a8b83",
      "parents": [
        "9fc511ee792313942d0b9942529e7164df75db8b",
        "857f9331bab94701946fc707500703999ac6cdfd"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 00:44:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 00:44:50 2026 +0200"
      },
      "message": "Merge pull request #63 from potiuk/feat/docs-architecture-rename-education\n\nfeat(landing): add education section; rename skills→docs, tools→architecture"
    },
    {
      "commit": "857f9331bab94701946fc707500703999ac6cdfd",
      "tree": "9a11a12e18ac0fa651c8aa173427a7888b5a8b83",
      "parents": [
        "9fc511ee792313942d0b9942529e7164df75db8b"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 00:43:00 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sun Jul 05 00:43:00 2026 +0200"
      },
      "message": "feat(landing): add education section; rename skills→docs, tools→architecture\n\nRoute renames (site-wide, names + links):\n- /skills (the Documentation site) → /docs; per-tool READMEs now at\n  /docs/tools/\u003cname\u003e, so every tool\u0027s docs live under the docs section.\n- /tools (\"How Magpie is built\") → /architecture; page title and\n  breadcrumb relabelled, the tools/capabilities domain model unchanged.\n\nLanding page:\n- New \"New to building with agents?\" education section summarising the\n  maintainer-education stream (PRINCIPLE 18) with cards linking into the\n  docs at /docs/education/*, plus a scroll-nav \"Education\" entry.\n- Nav pills renamed Skills→Docs and Tools→Architecture; header\n  \"Get Started\" and footer links repointed.\n\nSync scripts:\n- rewrite-doc-links.mjs emits /docs/* for synced markdown, and now also\n  rewrites non-.md repo-relative links (e.g. ../../skills/, ../../MISSION.md)\n  to GitHub source — fixing links the route rename would otherwise 404.\n- gen-tools.mjs comment updated to reference the /architecture page.\n\nLayouts/pages: DocsLayout, docs index, downloads repointed to /docs and\ngiven an Education group. Generated src/data/*.json left untouched (CI\nprebuild regenerates them).\n"
    },
    {
      "commit": "9fc511ee792313942d0b9942529e7164df75db8b",
      "tree": "9a8d85fc766c1af1363ea2c90cb2e6e45c423efd",
      "parents": [
        "a925e71ea97cf4d7c0448fb096df3540571d4f33",
        "c907415440b1a5c0535493a3cefa206164f3d996"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Sat Jul 04 15:33:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 04 15:33:50 2026 +0200"
      },
      "message": "Merge pull request #62 from apache/dependabot/pre_commit/pre-commit-hooks-4e1051a6f2\n\nchore(deps): bump https://github.com/woodruffw/zizmor-pre-commit from v1.25.2 to 1.26.1 in the pre-commit-hooks group"
    },
    {
      "commit": "c907415440b1a5c0535493a3cefa206164f3d996",
      "tree": "9a8d85fc766c1af1363ea2c90cb2e6e45c423efd",
      "parents": [
        "a925e71ea97cf4d7c0448fb096df3540571d4f33"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 04 01:32:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 04 01:32:46 2026 +0000"
      },
      "message": "chore(deps): bump https://github.com/woodruffw/zizmor-pre-commit\n\nBumps the pre-commit-hooks group with 1 update: [https://github.com/woodruffw/zizmor-pre-commit](https://github.com/woodruffw/zizmor-pre-commit).\n\n\nUpdates `https://github.com/woodruffw/zizmor-pre-commit` from v1.25.2 to 1.26.1\n- [Release notes](https://github.com/woodruffw/zizmor-pre-commit/releases)\n- [Commits](https://github.com/woodruffw/zizmor-pre-commit/compare/9257c6050c0261b8c57e712f632dc4a8010109a9...e3eebf65325ccc992422292cb7a4baee967cf815)\n\n---\nupdated-dependencies:\n- dependency-name: https://github.com/woodruffw/zizmor-pre-commit\n  dependency-version: 1.26.1\n  dependency-type: direct:production\n  dependency-group: pre-commit-hooks\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a925e71ea97cf4d7c0448fb096df3540571d4f33",
      "tree": "d95af13fb24365b70132fb3ee011b79fe94091b4",
      "parents": [
        "87284984dc9e0a2c6587780c4f522975d8b2ee28",
        "26b44ca0f6d09fd0c34483bafceb2dda7b7b4cdd"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 22:36:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 22:36:36 2026 +0200"
      },
      "message": "Merge pull request #61 from potiuk/feat/link-authoring-skill-source\n\nfeat(docs-links): link \"Authoring an external skill source\" from landing + tools"
    },
    {
      "commit": "26b44ca0f6d09fd0c34483bafceb2dda7b7b4cdd",
      "tree": "d95af13fb24365b70132fb3ee011b79fe94091b4",
      "parents": [
        "87284984dc9e0a2c6587780c4f522975d8b2ee28"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 22:34:03 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 22:34:03 2026 +0200"
      },
      "message": "feat(docs-links): link \"Authoring an external skill source\" from landing + tools\n\nSurface the skill-sources authoring guide\n(/skills/skill-sources/authoring-a-source) from two entry points:\n\n- Landing page \"All organisations are welcome\" section — a new pill in\n  the bottom link row, next to Extending Magpie and Organizations/tools.\n- Tools page \"Go deeper\" section — a matching link alongside Extending\n  Magpie and the adapter registry.\n\nRFC-AI-0006 (the skill-source design/trust/threat model) is already\nlinked throughout the synced docs and auto-listed in the docs sidebar\nnav, so no change is needed here; the docs tree is regenerated from\napache/magpie on every build.\n"
    },
    {
      "commit": "87284984dc9e0a2c6587780c4f522975d8b2ee28",
      "tree": "567b633fc23707760a1ee22dab39c9a2753d6b70",
      "parents": [
        "84f111ade59440ae7f62e36c3fd174d04a29bb82",
        "29df819f0732db3e251dd8296ca676e49f60ef73"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 22:19:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 22:19:57 2026 +0200"
      },
      "message": "Merge pull request #60 from potiuk/refresh-tools-skill-metadata\n\nRefresh Tools \u0026 Capabilities metadata (src/data/tools.json) from apache/magpie main"
    },
    {
      "commit": "29df819f0732db3e251dd8296ca676e49f60ef73",
      "tree": "567b633fc23707760a1ee22dab39c9a2753d6b70",
      "parents": [
        "84f111ade59440ae7f62e36c3fd174d04a29bb82"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 20:42:43 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 20:42:43 2026 +0200"
      },
      "message": "chore(data): refresh Tools \u0026 Capabilities metadata from apache/magpie main\n\nRegenerated src/data/tools.json via the build\u0027s sync-docs step against the current apache/magpie main.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "84f111ade59440ae7f62e36c3fd174d04a29bb82",
      "tree": "ea410d23fbef956b52b0d2a480ff892f26266cfa",
      "parents": [
        "13a2b39f701720ac085885817147deb58d3b047d",
        "fdec6a707ba4ceb06b23c4b8a12b937922f89384"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 04:54:52 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 04:54:52 2026 +0200"
      },
      "message": "Merge pull request #59 from potiuk/feat/vendor-neutrality-tools-page\n\nfeat(tools): vendor-neutrality on the /tools page + landing summary"
    },
    {
      "commit": "fdec6a707ba4ceb06b23c4b8a12b937922f89384",
      "tree": "ea410d23fbef956b52b0d2a480ff892f26266cfa",
      "parents": [
        "03585bdff711ffaac8df92e209c89dbf10242ee1"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 04:42:16 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 04:51:49 2026 +0200"
      },
      "message": "feat(hero): drop the \"Aspirationally\" vendor-neutrality asterisk\n\nVendor neutrality is now measured and reads 100% (contracts 10/10,\nagent-harness 20/20) — see /tools#vendor-neutrality — so the claim is no\nlonger aspirational. Removes the superscript \"*\" on \"All organisations\nare welcome\" and its \"* Aspirationally…\" footnote. Answers Sebb\u0027s\nmagpie-site#17.\n"
    },
    {
      "commit": "03585bdff711ffaac8df92e209c89dbf10242ee1",
      "tree": "cdcdd641bcdb15b9c63515acdbb7b3d9ef3d5d56",
      "parents": [
        "13a2b39f701720ac085885817147deb58d3b047d"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 04:19:42 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Fri Jul 03 04:19:42 2026 +0200"
      },
      "message": "feat(tools): vendor-neutrality on the /tools page + landing summary\n\nSurface Apache Magpie\u0027s deterministic vendor-neutrality assessment on the site,\ngenerated from apache/magpie (scripts/gen-tools.mjs -\u003e src/data/tools.json):\n\n- /tools \"Vendor neutrality\" section: overall capability-contract score\n  (10/10, 100%), per-contract table with backend vendors + logos, and the\n  per-skill neutrality buckets (capability-pure / portable / vendor-coupled).\n- Vendor + interface markers and a backend-vendor filter dimension on the\n  tool cards.\n- \"LLM \u0026 agent-integration neutrality\": the agent-harness matrix (which harness\n  supports each substrate tool, 20/20) plus the approved-LLM model registry\n  from privacy-llm.\n- Landing \"Vendor neutral\" section summarises the three headline scores\n  (contracts, skills, harness) as live figures; drop the aspirational asterisk\n  now that the numbers back the claim.\n\ngen-tools.mjs derives the contract set from the taxonomy doc (so a rename like\nmail-draft -\u003e mail-create is picked up automatically) and re-ports the Python\nscorer\u0027s harness + LLM logic. ASF is shown as its oak-leaf mark, never the\nApache feather.\n"
    },
    {
      "commit": "13a2b39f701720ac085885817147deb58d3b047d",
      "tree": "601bbc33cc5ffe2e53d16ce6b38d7a0c1260ed8d",
      "parents": [
        "f26e9079a5f44fb78d843c89cdf218f8941f5a21",
        "8fa308dfaf58d8347f83db384563deef28169720"
      ],
      "author": {
        "name": "Justin Mclean",
        "email": "jmclean@apache.org",
        "time": "Thu Jul 02 10:56:55 2026 +1000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 02 10:56:55 2026 +1000"
      },
      "message": "Merge pull request #57 from sebbASF/patch-2\n\nMake \u0027Vendor neutral\u0027 a clickable link"
    },
    {
      "commit": "8fa308dfaf58d8347f83db384563deef28169720",
      "tree": "601bbc33cc5ffe2e53d16ce6b38d7a0c1260ed8d",
      "parents": [
        "f26e9079a5f44fb78d843c89cdf218f8941f5a21"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Wed Jul 01 21:59:21 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 21:59:21 2026 +0100"
      },
      "message": "Make \u0027Vendor neutral\u0027 a clickable link"
    },
    {
      "commit": "f26e9079a5f44fb78d843c89cdf218f8941f5a21",
      "tree": "1a74bf12e99a54784b2e0954af8648d698f9da34",
      "parents": [
        "dd68f2265140ba1eba51269bccca709c6a97e01b",
        "eb899cb2ff927769275a11a7369cb68c0c19c0ea"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 18:32:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 18:32:49 2026 +0200"
      },
      "message": "Merge pull request #55 from sebbASF/patch-1\n\nRefine Apache Magpie description re AI"
    },
    {
      "commit": "eb899cb2ff927769275a11a7369cb68c0c19c0ea",
      "tree": "1a74bf12e99a54784b2e0954af8648d698f9da34",
      "parents": [
        "7a81121392b4fae399fd56ceef0c277375019f33"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Wed Jul 01 13:35:37 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:35:37 2026 +0100"
      },
      "message": "Trailing space"
    },
    {
      "commit": "7a81121392b4fae399fd56ceef0c277375019f33",
      "tree": "f2ba85e757be0d41bab8cd7cf56d976af76f1719",
      "parents": [
        "a7d9c29d4b43e39fd1c58b348edf998f3a71b3f1"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Wed Jul 01 13:29:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:29:06 2026 +0100"
      },
      "message": "Drop spurious change"
    },
    {
      "commit": "a7d9c29d4b43e39fd1c58b348edf998f3a71b3f1",
      "tree": "d78d672a01d2d0e1dcf7003772efd647b7406517",
      "parents": [
        "dd68f2265140ba1eba51269bccca709c6a97e01b"
      ],
      "author": {
        "name": "Sebb",
        "email": "sebbASF@users.noreply.github.com",
        "time": "Wed Jul 01 13:24:55 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 13:24:55 2026 +0100"
      },
      "message": "Refine Apache Magpie description re AI\n\nUpdated description of Apache Magpie to clarify that it uses AI"
    },
    {
      "commit": "dd68f2265140ba1eba51269bccca709c6a97e01b",
      "tree": "a78273ed6d59a5da7e0eda0264aad371fe89e56e",
      "parents": [
        "c682d3e06ddf9ad0199bcb292f3acd73a3971c21",
        "748e83b33a218fcdd41dc3aafc87bdb0052861f1"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:26:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 03:26:29 2026 +0200"
      },
      "message": "Merge pull request #54 from potiuk/feat/move-org-cta-to-sections\n\nfeat: move \"Add your organization\" CTA to landing + tools org sections"
    },
    {
      "commit": "748e83b33a218fcdd41dc3aafc87bdb0052861f1",
      "tree": "a78273ed6d59a5da7e0eda0264aad371fe89e56e",
      "parents": [
        "c682d3e06ddf9ad0199bcb292f3acd73a3971c21"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:22:52 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:25:05 2026 +0200"
      },
      "message": "feat: move \"Add your organization\" CTA to landing + tools org sections\n\nPer review, the CTA belongs with the organization content, not the site\nheader. Remove it from SiteHeader (keeping the icon-only GitHub button)\nand add an \"Add your organization → email the dev list\" callout in:\n- the landing page Organisations section, and\n- the tools page, below the list of organizations.\n\nBoth link to mailto:dev@magpie.apache.org.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "c682d3e06ddf9ad0199bcb292f3acd73a3971c21",
      "tree": "f67c9bfe81d2fe115108b29ff2eab1bb103105ec",
      "parents": [
        "8715675be4cf74bbb7efbbdd962f8e04ee85fe22",
        "23c05c8bb7b92b2e05a9dcc7f44f1a4132dee29c"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:13:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 03:13:33 2026 +0200"
      },
      "message": "Merge pull request #53 from potiuk/feat/siteheader-github-icon-org-cta\n\nfeat: icon GitHub button + \"Add your organization\" CTA in site header"
    },
    {
      "commit": "23c05c8bb7b92b2e05a9dcc7f44f1a4132dee29c",
      "tree": "f67c9bfe81d2fe115108b29ff2eab1bb103105ec",
      "parents": [
        "8715675be4cf74bbb7efbbdd962f8e04ee85fe22"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:12:11 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:12:11 2026 +0200"
      },
      "message": "feat: icon GitHub button + \"Add your organization\" CTA in site header\n\nUpdate the shared SiteHeader (tools, skills/docs, downloads pages):\n- \"Star on GitHub\" text button becomes an icon-only GitHub button,\n  matching the landing nav and freeing space.\n- Add an \"Add your organization\" call-to-action that emails the dev\n  list (mailto:dev@magpie.apache.org) so adopters can ask to have their\n  organization supported.\n- Drop the unused tone/ghBtnClass (no caller passed tone).\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "8715675be4cf74bbb7efbbdd962f8e04ee85fe22",
      "tree": "00ff5e599390f7120675424f385e20c135b92b1b",
      "parents": [
        "6764f3af797e09b364332de928d37841689f91cf",
        "4fa88b3f4ea56e7a5c5968d0c5e8a3bcc9e78e3c"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 03:00:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 03:00:39 2026 +0200"
      },
      "message": "Merge pull request #52 from potiuk/chore/resync-magpie-latest\n\nchore: resync tools.json from latest apache/magpie"
    },
    {
      "commit": "4fa88b3f4ea56e7a5c5968d0c5e8a3bcc9e78e3c",
      "tree": "00ff5e599390f7120675424f385e20c135b92b1b",
      "parents": [
        "6764f3af797e09b364332de928d37841689f91cf"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:59:17 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:59:17 2026 +0200"
      },
      "message": "chore: resync tools.json from latest apache/magpie\n\nRegenerate the committed Tools \u0026 Capabilities summary from the latest\napache/magpie main. Adds the new pilot-report-validator tool (32→33\ntools, 15→16 implemented), plus label/description updates on existing\ntools (source-control on the tracker tool, mail-archive on the mail\ntool, analytics label, mail-archive contract wording).\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "6764f3af797e09b364332de928d37841689f91cf",
      "tree": "f7fbcece06b27bf51149c676eecca3b52daab71f",
      "parents": [
        "59ae499a7606a9143fe63df76088b25ecd198b12",
        "8b64505de2022ee1f22db0e3691b6a3acadf9d03"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:13:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 02:13:57 2026 +0200"
      },
      "message": "Merge pull request #51 from potiuk/feat/alternating-section-backgrounds\n\nfix: alternate the Community section background"
    },
    {
      "commit": "8b64505de2022ee1f22db0e3691b6a3acadf9d03",
      "tree": "f7fbcece06b27bf51149c676eecca3b52daab71f",
      "parents": [
        "59ae499a7606a9143fe63df76088b25ecd198b12"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:12:40 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:12:40 2026 +0200"
      },
      "message": "fix: alternate the Community section background\n\nLanding sections alternate white / cream, but Community was white right\nafter Organisations (also white) — three white bands in a row with the\nfooter. Switch Community to bg-warning-50 so all eight sections alternate.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "59ae499a7606a9143fe63df76088b25ecd198b12",
      "tree": "3f0570320340bc2bf39bde828971bc0b1921c65f",
      "parents": [
        "c2940e2a5777b8b5aa205adc7d27c207a2cc0f2f",
        "88ca9ac72cef9b45393a34f990808a66f1bea0ff"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:09:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 02:09:17 2026 +0200"
      },
      "message": "Merge pull request #50 from potiuk/fix/docs-link-underline-hover-issue-36\n\nfix: underline docs links only on hover (#36)"
    },
    {
      "commit": "88ca9ac72cef9b45393a34f990808a66f1bea0ff",
      "tree": "3f0570320340bc2bf39bde828971bc0b1921c65f",
      "parents": [
        "c2940e2a5777b8b5aa205adc7d27c207a2cc0f2f"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:08:06 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:08:06 2026 +0200"
      },
      "message": "fix: underline docs links only on hover (#36)\n\nDocs prose links were underlined by default, which the issue found\ndistracting. Drop the default underline and add it on :hover instead —\nlinks stay coloured (brand-600) so they remain discoverable.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "c2940e2a5777b8b5aa205adc7d27c207a2cc0f2f",
      "tree": "ee3e8e8f47c19b7d641e043090a205733247e22b",
      "parents": [
        "db062b1c2b3a30c362d87b5fc735d69b0b5f7107",
        "cc1f617ee928a0d0b5c08f62740dd22473ab842f"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:03:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 02:03:27 2026 +0200"
      },
      "message": "Merge pull request #49 from potiuk/fix/remove-eyebrow-badges-issue-37\n\nfix: remove redundant eyebrow badges above section headings (#37)"
    },
    {
      "commit": "cc1f617ee928a0d0b5c08f62740dd22473ab842f",
      "tree": "ee3e8e8f47c19b7d641e043090a205733247e22b",
      "parents": [
        "db062b1c2b3a30c362d87b5fc735d69b0b5f7107"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:02:52 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 02:02:52 2026 +0200"
      },
      "message": "fix: remove redundant eyebrow badges above section headings (#37)\n\nThe landing-page sections each carried a decorative eyebrow pill badge\nabove the heading. They were distracting and largely redundant — e.g.\n\"Maintainers first\" duplicated its heading, and \"5 Agentic Operation\nModes\" restated a count the reader can already see. Remove all eight so\nthe sections stay consistent; each now leads with its heading.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "db062b1c2b3a30c362d87b5fc735d69b0b5f7107",
      "tree": "ea56e70cb0d505339b71602ee0034ecd273195cd",
      "parents": [
        "dcb1e8a74658b3f0e2bb80ccc42cc25ed67dd503",
        "27e6afe7f36b79a9fb1c3f54fda0582fd2c7504c"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:37:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 00:37:22 2026 +0200"
      },
      "message": "Merge pull request #48 from potiuk/feat/downloads-page\n\nfeat: add Downloads page with labelled install methods"
    },
    {
      "commit": "27e6afe7f36b79a9fb1c3f54fda0582fd2c7504c",
      "tree": "21acd347f6e876ba4a3153d9008f965fb27c8eb5",
      "parents": [
        "4772cd954b8af68cd5d11f928880bd6c1c83d0fa"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:35:51 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:35:51 2026 +0200"
      },
      "message": "fix: add {\" \"} spacer to satisfy astro-whitespace hook on Downloads\n\nThe reorder left \"…method and is\" on one line with \u003cstrong\u003eComing\u003c/strong\u003e\non the next, which the astro-whitespace prek hook flags as a\ncollapse risk. Append {\" \"} to keep the space.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "4772cd954b8af68cd5d11f928880bd6c1c83d0fa",
      "tree": "d2a4e8888429fb6afa021a61e5a7978854b6f5e0",
      "parents": [
        "d47726f74666c5de0d706ff7860b0061ea063fde"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:33:00 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:33:00 2026 +0200"
      },
      "message": "docs: list the SVN/Apache-release install method first on Downloads\n\nReorder the install-method cards so the official signed release from the\nApache distribution (SVN) leads, followed by the GitHub `main` (Ready)\nand git-tag methods. Reword the intro to lead with the recommended\nApache-release method. Labels (Ready/Coming) unchanged.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "d47726f74666c5de0d706ff7860b0061ea063fde",
      "tree": "edf4dd5adf3e205d413b3924b5cd3bc5cbd64ffe",
      "parents": [
        "1e987ed277ea0d84ed6c32da436838494d3567f0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:30:07 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:30:07 2026 +0200"
      },
      "message": "feat: add Downloads page with labelled install methods\n\nAdd a /downloads page and an icon-based link to it from the landing nav,\nthe SiteHeader (docs/tools pages), the mobile hamburger menu, and the\nfooter.\n\nUntil Magpie\u0027s first official Apache release, the page explains that the\nonly supported install path is direct from GitHub, and that a signed\nrelease from the Apache distribution (SVN) is coming. It lists the three\ninstall-recipe methods, each linked to its doc anchor and labelled\nReady / Coming:\n- Track `main` from GitHub — Ready\n- Pin a git tag — Coming\n- Signed release zip from the Apache distribution (SVN) — Coming\n\nThe page notes it will conform to the ASF Release Distribution Policy\n(release-policy.html#publication) once releases are published.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "dcb1e8a74658b3f0e2bb80ccc42cc25ed67dd503",
      "tree": "f978786f84d5c852c3257227ccb52639c9686425",
      "parents": [
        "1e987ed277ea0d84ed6c32da436838494d3567f0",
        "a3fcb62da3481b04fe816d3b4860d053fd809c79"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:21:41 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 00:21:41 2026 +0200"
      },
      "message": "Merge pull request #47 from potiuk/fix/hero-flow-hide-badges-narrow\n\nfix: hide hero flow-card status badges on very narrow screens"
    },
    {
      "commit": "a3fcb62da3481b04fe816d3b4860d053fd809c79",
      "tree": "f978786f84d5c852c3257227ccb52639c9686425",
      "parents": [
        "1e987ed277ea0d84ed6c32da436838494d3567f0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:17:40 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Wed Jul 01 00:17:40 2026 +0200"
      },
      "message": "fix: hide hero flow-card status badges on very narrow screens\n\nOn narrow phones (~390px) the \"Experimental\" badge in the \"Mentor\nSuggestions\" step overflowed its row — the step\u0027s text column is\nshrink-0 and the badge does not shrink.\n\n- Add an `xnarrow` variant (@media (max-width: 480px)) in theme.css.\n- Hide the five flow-card status badges below 480px via xnarrow:hidden.\n  Badges stay on wider screens; the matching badges in the modes section\n  are untouched.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "1e987ed277ea0d84ed6c32da436838494d3567f0",
      "tree": "2e748bb149466fa45aacaad8e60b50802159d072",
      "parents": [
        "504f9515edbfa0b157ea06b09bb99a3397effbe9",
        "005d3aed16857b28ae1a6cdcab1564ec34f41637"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 23:43:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 23:43:36 2026 +0200"
      },
      "message": "Merge pull request #45 from potiuk/fix/hero-flow-narrower-clickable-issue-35\n\nfix: narrow the hero flow card and make its steps clickable (#35)"
    },
    {
      "commit": "005d3aed16857b28ae1a6cdcab1564ec34f41637",
      "tree": "2e748bb149466fa45aacaad8e60b50802159d072",
      "parents": [
        "504f9515edbfa0b157ea06b09bb99a3397effbe9"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 23:41:51 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 23:41:51 2026 +0200"
      },
      "message": "fix: narrow the hero flow card and make its steps clickable (#35)\n\nThe \"PR Submitted → Autonomous\" flow card was too wide — it grew to fill\nthe hero column (min-w-[380px], grow) leaving wide empty padding around\nthe 360px steps.\n\n- Narrow it: min-w-[300px] max-w-[400px], tighter px-6, steps max-w-[340px].\n- Make each step a link to the matching docs, with a hover lift:\n  PR Submitted → /skills/modes, Triages → #triage, Mentor → #mentoring,\n  Draft Review → #drafting, Autonomous → #auto-merge.\n- Add a styled \"Explore the agentic modes\" link at the bottom, matching\n  the pill-link style used elsewhere on the page.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "504f9515edbfa0b157ea06b09bb99a3397effbe9",
      "tree": "a69b74927a5a01cea76a85226e13fd5144d25bc4",
      "parents": [
        "7eda6287b405fc321f6f6f0744c6b3bc4fd26b5e",
        "75f569bd6da264b86b6e66bd1d75e46826a4b707"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:43:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 22:43:37 2026 +0200"
      },
      "message": "Merge pull request #43 from potiuk/fix/responsive-navbar-issue-34\n\nfix: make landing navbar fit small screens (#34)"
    },
    {
      "commit": "7eda6287b405fc321f6f6f0744c6b3bc4fd26b5e",
      "tree": "5606c24a25d0be8cb0bad8d7b4d75f1e6951f910",
      "parents": [
        "573afb3d3d281ebf8e95521f6436a14756f0fea0",
        "2679dd5d0222cde28be693f8c8f4fd8606758b25"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:30:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 22:30:51 2026 +0200"
      },
      "message": "Merge pull request #44 from potiuk/feat/matomo-analytics\n\nfeat: add ASF Matomo analytics (site id 89)"
    },
    {
      "commit": "2679dd5d0222cde28be693f8c8f4fd8606758b25",
      "tree": "5606c24a25d0be8cb0bad8d7b4d75f1e6951f910",
      "parents": [
        "573afb3d3d281ebf8e95521f6436a14756f0fea0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:28:56 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:28:56 2026 +0200"
      },
      "message": "feat: add ASF Matomo analytics (site id 89)\n\nAdd the Matomo tracking code issued by the ASF Privacy team\n(privacy@apache.org) for https://magpie.apache.org to BaseLayout\u0027s\n\u003chead\u003e, so it loads on every page (landing, tools, and all docs route\nthrough BaseLayout). Cookieless and Do-Not-Track-respecting per ASF\npolicy; the tracker is self-hosted at analytics.apache.org. Rendered\nverbatim via is:inline and placed immediately before \u003c/head\u003e as\nrecommended.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "75f569bd6da264b86b6e66bd1d75e46826a4b707",
      "tree": "8dd16161b3f3f7df127a50e34f9cc10f2ad0323f",
      "parents": [
        "0b7a638daeabe91d05dec91422f2d70035e39e86"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:25:05 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:25:05 2026 +0200"
      },
      "message": "fix: restore inline section menu when hamburger is hidden (#34)\n\nPer review feedback: the bar should never show neither the hamburger nor\na top-level menu. Bring the horizontal section menu back at 2xl+ (where\nall eight labels fit), and keep the hamburger below 2xl, so one of the\ntwo is always present. The floating scroll-spy nav now covers the\nlg–2xl band and hides at 2xl where the inline menu takes over.\n\nThe inline menu is compact (caption-size, tight gaps, no wrap) so it\nfits on one row without re-introducing the overflow.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "0b7a638daeabe91d05dec91422f2d70035e39e86",
      "tree": "812978ce2ef28a5981650ee7574f4306f53f9af3",
      "parents": [
        "573afb3d3d281ebf8e95521f6436a14756f0fea0"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:08:12 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 22:08:12 2026 +0200"
      },
      "message": "fix: make landing navbar fit small screens (#34)\n\nThe top navbar packed eight in-page section anchors plus Skills/Tools\nbuttons, \"Star on GitHub\", and \"Get Started\" on one row, overflowing\nbetween ~768px and ~1300px. The mobile hamburger also had no handler\n(and a white-on-white icon), so narrow screens had no working nav.\n\n- Slim the top bar to logo + Skills/Tools links (lg+) + GitHub + Get\n  Started; the eight section anchors move out of the bar.\n- Convert \"Star on GitHub\" to an icon-only button.\n- Add a floating scroll-spy SectionNav (lg+) that tracks the section in\n  view via IntersectionObserver and lets users jump between sections.\n- Make the hamburger work: below lg it toggles a labelled menu with the\n  section links plus Skills/Tools.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "573afb3d3d281ebf8e95521f6436a14756f0fea0",
      "tree": "91cc229ad109bb6791af84e0191716e08a787994",
      "parents": [
        "bc0f7640936541c940afb74781fe1e5e22d0ff7e",
        "683748e081d3b12710749f7f6176d59545c2763b"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 21:12:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 21:12:21 2026 +0200"
      },
      "message": "Merge pull request #42 from potiuk/feat/dev-server-disable-telemetry\n\nchore: always start dev server with telemetry disabled"
    },
    {
      "commit": "683748e081d3b12710749f7f6176d59545c2763b",
      "tree": "91cc229ad109bb6791af84e0191716e08a787994",
      "parents": [
        "bc0f7640936541c940afb74781fe1e5e22d0ff7e"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 21:04:00 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 21:04:00 2026 +0200"
      },
      "message": "chore: start dev server with telemetry disabled via scripts/dev.sh\n\n`astro dev` writes to its telemetry config dir (e.g.\n~/Library/Preferences/astro) on startup; that write fails in sandboxed\nenvironments and aborts the dev server. Wrap it in scripts/dev.sh, which\nexports ASTRO_TELEMETRY_DISABLED\u003d1 and forwards args, and point\n`npm run dev` at it so the disable always applies. Document the\nconvention in AGENTS.md and the README.\n\nGenerated-by: Claude Code (Opus 4.8)\n"
    },
    {
      "commit": "bc0f7640936541c940afb74781fe1e5e22d0ff7e",
      "tree": "bb62e9df1d4c18f0e92c713bb03b98024ee79e95",
      "parents": [
        "c468d3ee6a12af7330c98a86c4062eaf40679196",
        "0ed940ce60eb509524d7ab067523bd8b385bef53"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 14:54:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 14:54:38 2026 +0200"
      },
      "message": "Merge pull request #39 from potiuk/feat/vendor-neutral-org-aspirational-footnote\n\nfeat: aspirational footnote on vendor-neutral \u0026 organisation landing sections"
    },
    {
      "commit": "c468d3ee6a12af7330c98a86c4062eaf40679196",
      "tree": "b9d0676a01beee1304ce97ddc4a68d0de7be7adf",
      "parents": [
        "8432b898872a8519fdcda73ac38042bbd49afe8d",
        "b67ea4658f5d1bda24200ede02c2056a6031e285"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 14:53:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 14:53:39 2026 +0200"
      },
      "message": "Merge pull request #33 from johnslavik/fix/safari-agentic-mode-fonts\n\nFix fonts in the landing page"
    },
    {
      "commit": "0ed940ce60eb509524d7ab067523bd8b385bef53",
      "tree": "fe2df14777f5d0d00c05193286639ef097f7eef7",
      "parents": [
        "8432b898872a8519fdcda73ac38042bbd49afe8d"
      ],
      "author": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 14:51:30 2026 +0200"
      },
      "committer": {
        "name": "Jarek Potiuk",
        "email": "jarek@potiuk.com",
        "time": "Tue Jun 30 14:51:30 2026 +0200"
      },
      "message": "feat: add aspirational footnote to vendor-neutral \u0026 organisation sections\n\nMark the \"Vendor neutral\" and \"All organisations are welcome\" landing\nheaders with a superscript asterisk and add a footnote clarifying that\ntruly vendor-neutral / organisation-agnostic operation is aspirational —\nthe architecture and design already support it, and work is ongoing to\nland multiple tool implementations and multi-organisation support.\n\nAlso drops \"Truly\" from the vendor-neutral section header.\n\nGenerated-by: Claude Opus 4.8 (1M context)\n"
    },
    {
      "commit": "b67ea4658f5d1bda24200ede02c2056a6031e285",
      "tree": "b9d0676a01beee1304ce97ddc4a68d0de7be7adf",
      "parents": [
        "231bff0554ceabd1ba8d9fbf6393779b5fabf07d"
      ],
      "author": {
        "name": "johnslavik",
        "email": "bartosz@slawecki.dev",
        "time": "Tue Jun 30 13:34:54 2026 +0200"
      },
      "committer": {
        "name": "johnslavik",
        "email": "bartosz@slawecki.dev",
        "time": "Tue Jun 30 13:34:54 2026 +0200"
      },
      "message": "fix: use loaded heading font tokens\n\nGenerated-by: GPT-5.5 via OpenCode\n"
    }
  ],
  "next": "231bff0554ceabd1ba8d9fbf6393779b5fabf07d"
}
