{
  "testedAt": "2026-10-11",
  "editor": "Patchy",
  "version": "1.08",
  "os": "27.0.1",
  "architecture": "arm64",
  "fixtureRepository": "https://github.com/psd-tools/psd-tools",
  "fixtureCommit": "b58704c1c9c9b2459f961560b1e368dfb102b513",
  "parserVersion": "1.24.0",
  "method": "Official macOS app CLI: --headless --export; text PSD export additionally uses --append-text \" + PhotoCraft Guide\". PNG comparisons use the unedited input; the edited output has a separate render. Outputs parsed with psd-tools; original merged previews extracted with PSDImage.topil(). RGB mean absolute difference on 0–255 values; this is a cached-preview comparison, not a regenerated-render benchmark. Log lines are normalized by trimming trailing whitespace.",
  "limitations": [
    "No Photoshop application available; Photoshop reopen not tested.",
    "Seven small upstream fixtures, not a representative production corpus.",
    "No font-fidelity, linked-asset relinking, smart-object source edit, mask edit, visual-effect edit, performance or browser tests.",
    "A retained PSD record does not prove its editing behavior.",
    "PNG comparisons are 8-bit RGB previews and do not measure high-depth sample-value fidelity."
  ],
  "samples": [
    {
      "id": "2layers",
      "inputSha256": "406ddf7cbf5a1065b992b9c0d2a59be6290a371b90f23b9a04c0e6bbc94beb0c",
      "outputSha256": "56c8727af6bd09967d50f26d8c3e0d9b047400ef39f305465c884e48896e9537",
      "input": {
        "width": 101,
        "height": 55,
        "depth": 8,
        "layers": [
          {
            "name": "Фон",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Слой",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "output": {
        "width": 101,
        "height": 55,
        "depth": 8,
        "layers": [
          {
            "name": "Фон",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Слой",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.0767,
      "textEditVerified": false,
      "logs": [
        "2layers-png-log.txt",
        "2layers-psd-log.txt"
      ]
    },
    {
      "id": "text",
      "inputSha256": "eb40ec54a5f270913463bcc847be65672ce6fff0d0d56288725f58e299e00f1c",
      "outputSha256": "0abf3fac3faffd8d0edd7d74b2db971fdaef31401bab08e22cd09f1838f70d48",
      "input": {
        "width": 400,
        "height": 400,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Line 1 Line 2 Line 3 and text",
            "kind": "type",
            "mask": false,
            "effects": 0,
            "text": "Line 1\rLine 2\rLine 3 and text"
          }
        ]
      },
      "output": {
        "width": 400,
        "height": 400,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Line 1 Line 2 Line 3 and text",
            "kind": "type",
            "mask": false,
            "effects": 0,
            "text": "Line 1\rLine 2\rLine 3 and text + PhotoCraft Guide\r"
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.0,
      "textEditVerified": true,
      "logs": [
        "text-png-log.txt",
        "text-psd-log.txt"
      ]
    },
    {
      "id": "mask",
      "inputSha256": "a6928c0e306022d474876e61f4b1dc5b7c1ed1e1cb422e6e72511da0a6aae90b",
      "outputSha256": "230dbeaf27df4cb9a70190076de38250d2c319be9f49aba8211ff4446ad961a4",
      "input": {
        "width": 100,
        "height": 150,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": true,
            "effects": 0,
            "text": null
          },
          {
            "name": "Shape 1",
            "kind": "shape",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "output": {
        "width": 100,
        "height": 150,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": true,
            "effects": 0,
            "text": null
          },
          {
            "name": "Shape 1",
            "kind": "shape",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.0,
      "textEditVerified": false,
      "logs": [
        "mask-png-log.txt",
        "mask-psd-log.txt"
      ]
    },
    {
      "id": "layer_effects",
      "inputSha256": "6ab41ce6e17b3287c703dc4cf4d898506ffc1bd9babf20d0f1de5ef6df1d2e1e",
      "outputSha256": "26bdd0e69582c7686df40f87d2fdd12b296c476b25444d8ee8483fe06cbdfb0a",
      "input": {
        "width": 800,
        "height": 640,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 1,
            "text": null
          },
          {
            "name": "Bevel",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Bevel"
          },
          {
            "name": "Emboss",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Emboss"
          },
          {
            "name": "Outer Glow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Outer Glow"
          },
          {
            "name": "Inner Glow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Inner Glow"
          },
          {
            "name": "Inner Shadow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Inner Shadow"
          },
          {
            "name": "Color Fill",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Color Overlay"
          },
          {
            "name": "Drop Shadow",
            "kind": "type",
            "mask": false,
            "effects": 2,
            "text": "Drop Shadow"
          },
          {
            "name": "Gradient Overlay",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Gradient Overlay"
          },
          {
            "name": "Pattern Overlay",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Pattern Overlay"
          },
          {
            "name": "Stroke",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Stroke"
          },
          {
            "name": "Satin",
            "kind": "type",
            "mask": false,
            "effects": 2,
            "text": "Satin"
          }
        ]
      },
      "output": {
        "width": 800,
        "height": 640,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 1,
            "text": null
          },
          {
            "name": "Bevel",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Bevel"
          },
          {
            "name": "Emboss",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Emboss"
          },
          {
            "name": "Outer Glow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Outer Glow"
          },
          {
            "name": "Inner Glow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Inner Glow"
          },
          {
            "name": "Inner Shadow",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Inner Shadow"
          },
          {
            "name": "Color Fill",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Color Overlay"
          },
          {
            "name": "Drop Shadow",
            "kind": "type",
            "mask": false,
            "effects": 2,
            "text": "Drop Shadow"
          },
          {
            "name": "Gradient Overlay",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Gradient Overlay"
          },
          {
            "name": "Pattern Overlay",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Pattern Overlay"
          },
          {
            "name": "Stroke",
            "kind": "type",
            "mask": false,
            "effects": 1,
            "text": "Stroke"
          },
          {
            "name": "Satin",
            "kind": "type",
            "mask": false,
            "effects": 2,
            "text": "Satin"
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.5761,
      "textEditVerified": false,
      "logs": [
        "layer_effects-png-log.txt",
        "layer_effects-psd-log.txt"
      ]
    },
    {
      "id": "placedLayer",
      "inputSha256": "69ea01bf88cb85c48d3a78c3bb9e06ae141c9c9fc6a88267eae95c315e16180e",
      "outputSha256": "42a407f80e5b9efc3cc258cafab74fc76f42452822c6d7c1272e798768664d85",
      "input": {
        "width": 256,
        "height": 256,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "linked-png",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "linked-psd",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "embedded-png",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "output": {
        "width": 256,
        "height": 256,
        "depth": 8,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "linked-png",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "linked-psd",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "embedded-png",
            "kind": "smartobject",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.0,
      "textEditVerified": false,
      "logs": [
        "placedLayer-png-log.txt",
        "placedLayer-psd-log.txt"
      ]
    },
    {
      "id": "16bit5x5",
      "inputSha256": "c78689ea7b576f23bbd8b6b4f4993a365266c3ffc9aaa02cc20bef4a36a9d7a0",
      "outputSha256": "aac2d5a42177160a52a4d665db69af2a9129f5108e3d71c9b1aed0b1f96a142d",
      "input": {
        "width": 5,
        "height": 5,
        "depth": 16,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy 2",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "output": {
        "width": 5,
        "height": 5,
        "depth": 16,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy 2",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.0,
      "textEditVerified": false,
      "logs": [
        "16bit5x5-png-log.txt",
        "16bit5x5-psd-log.txt"
      ]
    },
    {
      "id": "32bit5x5",
      "inputSha256": "66a4260e6bb8a60deff94031a66fa502c74870d75a723b4180aef02c35a97d0e",
      "outputSha256": "2e00cfc928312538f03a85d48b1caa4a83b88e116e065bb133388107502f4a23",
      "input": {
        "width": 5,
        "height": 5,
        "depth": 32,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy 2",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "output": {
        "width": 5,
        "height": 5,
        "depth": 32,
        "layers": [
          {
            "name": "Background",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          },
          {
            "name": "Background copy 2",
            "kind": "pixel",
            "mask": false,
            "effects": 0,
            "text": null
          }
        ]
      },
      "structureRetained": true,
      "depthRetained": true,
      "renderMeanAbsoluteDifference": 0.04,
      "textEditVerified": false,
      "logs": [
        "32bit5x5-png-log.txt",
        "32bit5x5-psd-log.txt"
      ]
    }
  ],
  "appDownload": {
    "url": "https://github.com/SethRobinson/Patchy/releases/download/v1.08/PatchyMacOS.dmg",
    "sha256": "eeca1df4f5ca60c6b00fa0ef6439fc851c3a84b336cef14826a3212f401e4e0c",
    "vendorChecksumMatched": true
  }
}
