{
  "title": "Documentation version diff",
  "human_url": "https://happytails.ai/en/text-tools/documentation-version-diff/",
  "agent_url": "https://happytails.ai/agents/en/text-tools/documentation-version-diff/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/text-tools/documentation-version-diff.md",
  "content": "Documentation version diff\nCompare two versions of a Markdown documentation set section by section and see which sections were added, removed, moved or rewritten, with a word diff for each change.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Documentation version diff\nPaste the earlier files with paths that start with before/, such as ==> before/guide.md <==.\nPaste the later files with paths that start with after/, such as ==> after/guide.md <==.\nRun the comparison and read the summary of added, removed, moved and changed sections.\nDownload the Markdown summary or the JSON report with word level changes.\nUseful next steps\nCompare text\nMarkdown Anchor Checker\nMarkdown Lint Fixer\nWhat it does\nThe diff splits every Markdown file at its headings and gives each section a key made of the file path and the trail of headings above it, such as guide.md > Setup > Install. Sections with the same key in both versions are compared, and the rest are reported as added or removed.\nHow changes are detected\nA changed section gets a word diff from the diff package, with counts of added and removed words and up to 20 changed passages. A removed section whose text appears unchanged under a new key, for example after a heading rename or a move to another file, is reported as moved. Whitespace only changes still count as changes because the section text differs.\nLimits\nWord diffs stop after 300 word edits in one section. A section rewritten beyond that is still marked changed, with diffTooLarge set and no word counts. Moved detection needs identical text. Content before the first heading forms its own section. Files under node_modules, .git, dist, build and other build folders are skipped unless you turn that off, and you can add your own exclude patterns in gitignore syntax.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Compare text",
      "url": "https://happytails.ai/en/text-tools/compare-text/"
    },
    {
      "name": "Markdown Anchor Checker",
      "url": "https://happytails.ai/en/text-tools/markdown-anchor-checker/"
    },
    {
      "name": "Markdown Lint Fixer",
      "url": "https://happytails.ai/en/text-tools/markdown-lint-fixer/"
    }
  ],
  "tool": {
    "id": "documentation-version-diff",
    "category": "text-tools",
    "built": true,
    "requirements": "Up to 2,000 files and 1,000,000 characters for both versions together, and word diffs of up to 300 edits per section. Everything runs in your browser and nothing is uploaded. Downloads: Markdown summary and JSON report.",
    "implementation": {
      "fields": [
        {
          "key": "defaultExcludes",
          "label": "Skip node_modules, .git, dist and other build folders",
          "value": true,
          "type": "checkbox"
        },
        {
          "key": "exclude",
          "label": "Extra exclude patterns",
          "value": "",
          "type": "textarea",
          "help": "Optional. Paths to leave out, one gitignore pattern per line, such as drafts/ or *.draft.md. Up to 20,000 characters.",
          "maxLength": 20000
        }
      ],
      "registrationFamily": "project-snapshot-docs",
      "inputMaxLength": 1000000,
      "inputErrorCode": "PROJECT_SNAPSHOT_DOCS_TOO_LONG_DOCUMENTATION_VERSION_DIFF",
      "note": "Both versions are compared on your device and nothing is uploaded. Up to 2,000 files and 1,000,000 characters in total.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Both documentation versions",
        "placeholder": "==> before/guide.md <==\n# Guide\n...\n==> after/guide.md <==\n# Guide\n...",
        "help": "Put each earlier file under before/ and each later file under after/, using header lines such as ==> before/guide.md <==. Up to 1,000,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Documentation version diff\n\n- Human page: https://happytails.ai/en/text-tools/documentation-version-diff/\n- Markdown: https://happytails.ai/en/text-tools/documentation-version-diff.md\n- Structured JSON: https://happytails.ai/agents/en/text-tools/documentation-version-diff/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `documentation-version-diff` |\n| Category | text-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nBoth versions are compared on your device and nothing is uploaded. Up to 2,000 files and 1,000,000 characters in total.\n\n### Inputs and settings\n\nText input: Both documentation versions.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n==> before/guide.md <==\n# Guide\n...\n==> after/guide.md <==\n# Guide\n...\n```\n\nPut each earlier file under before/ and each later file under after/, using header lines such as ==> before/guide.md <==. Up to 1,000,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `defaultExcludes` | Skip node_modules, .git, dist and other build folders | checkbox | true |  |\n| `exclude` | Extra exclude patterns | textarea | \"\" |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUp to 2,000 files and 1,000,000 characters for both versions together, and word diffs of up to 300 edits per section. Everything runs in your browser and nothing is uploaded. Downloads: Markdown summary and JSON report.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"documentation-version-diff\",\n  \"category\": \"text-tools\",\n  \"built\": true,\n  \"requirements\": \"Up to 2,000 files and 1,000,000 characters for both versions together, and word diffs of up to 300 edits per section. Everything runs in your browser and nothing is uploaded. Downloads: Markdown summary and JSON report.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"defaultExcludes\",\n        \"label\": \"Skip node_modules, .git, dist and other build folders\",\n        \"value\": true,\n        \"type\": \"checkbox\"\n      },\n      {\n        \"key\": \"exclude\",\n        \"label\": \"Extra exclude patterns\",\n        \"value\": \"\",\n        \"type\": \"textarea\",\n        \"help\": \"Optional. Paths to leave out, one gitignore pattern per line, such as drafts/ or *.draft.md. Up to 20,000 characters.\",\n        \"maxLength\": 20000\n      }\n    ],\n    \"registrationFamily\": \"project-snapshot-docs\",\n    \"inputMaxLength\": 1000000,\n    \"inputErrorCode\": \"PROJECT_SNAPSHOT_DOCS_TOO_LONG_DOCUMENTATION_VERSION_DIFF\",\n    \"note\": \"Both versions are compared on your device and nothing is uploaded. Up to 2,000 files and 1,000,000 characters in total.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Both documentation versions\",\n      \"placeholder\": \"==> before/guide.md <==\\n# Guide\\n...\\n==> after/guide.md <==\\n# Guide\\n...\",\n      \"help\": \"Put each earlier file under before/ and each later file under after/, using header lines such as ==> before/guide.md <==. Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCompare two versions of a Markdown documentation set section by section and see which sections were added, removed, moved or rewritten, with a word diff for each change.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Documentation version diff\n\n1. Paste the earlier files with paths that start with before/, such as ==> before/guide.md <==.\n2. Paste the later files with paths that start with after/, such as ==> after/guide.md <==.\n3. Run the comparison and read the summary of added, removed, moved and changed sections.\n4. Download the Markdown summary or the JSON report with word level changes.\n\n## Useful next steps\n\n- [Compare text](https://happytails.ai/en/text-tools/compare-text/) ([Markdown](https://happytails.ai/en/text-tools/compare-text.md))\n\n- [Markdown Anchor Checker](https://happytails.ai/en/text-tools/markdown-anchor-checker/) ([Markdown](https://happytails.ai/en/text-tools/markdown-anchor-checker.md))\n\n- [Markdown Lint Fixer](https://happytails.ai/en/text-tools/markdown-lint-fixer/) ([Markdown](https://happytails.ai/en/text-tools/markdown-lint-fixer.md))\n\n## What it does\n\nThe diff splits every Markdown file at its headings and gives each section a key made of the file path and the trail of headings above it, such as guide.md > Setup > Install. Sections with the same key in both versions are compared, and the rest are reported as added or removed.\n\n### How changes are detected\n\nA changed section gets a word diff from the diff package, with counts of added and removed words and up to 20 changed passages. A removed section whose text appears unchanged under a new key, for example after a heading rename or a move to another file, is reported as moved. Whitespace only changes still count as changes because the section text differs.\n\n### Limits\n\nWord diffs stop after 300 word edits in one section. A section rewritten beyond that is still marked changed, with diffTooLarge set and no word counts. Moved detection needs identical text. Content before the first heading forms its own section. Files under node\\_modules, .git, dist, build and other build folders are skipped unless you turn that off, and you can add your own exclude patterns in gitignore syntax.\n"
}