)]}'
{
  "commit": "7b455cd43149834ccd2163b4e5d197809bd34a37",
  "tree": "5194dad78446c9631da454a523f122f9de46057c",
  "parents": [
    "5b2e6ef635026a62e23fe5ea6df2c85d839ff78c"
  ],
  "author": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Sun Aug 09 08:33:37 2026 +0200"
  },
  "committer": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Sun Aug 09 08:33:37 2026 +0200"
  },
  "message": "Add a public web front end alongside the CLI\n\nExtracts the CLI pipeline into a reusable Pipeline class and exposes it\nvia a dependency-free JDK HttpServer (upload form, bounded worker pool\nwith 503 on overload, per-request size/time limits, no persisted\nuploads), plus nginx/systemd deploy templates and Impressum/Datenschutz\nplaceholders for public operation.\n\nChange-Id: I6e8e7afa3c4b1082cdf9e82da0fae0b5b49470ad\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "77540fe9f23e3b1dfb0d4c4f26605c3a46005dd2",
      "old_mode": 33188,
      "old_path": "README.adoc",
      "new_id": "b092904368f5cf3a70997ec0970247dae64a8591",
      "new_mode": 33188,
      "new_path": "README.adoc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f87bbb843a091f88c96f29d72fab9838090a7cbe",
      "new_mode": 33188,
      "new_path": "deploy/aendggner-web.service"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f4667fb2abd9a92c2074a86280ae8466799aecfb",
      "new_mode": 33188,
      "new_path": "deploy/nginx-aendggner.conf"
    },
    {
      "type": "modify",
      "old_id": "efa95a96498f99052a0987d5352165d3e272b6f1",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/AendGgner.java",
      "new_id": "5f71e37809067c27904df691f2ee55a4155a03d8",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/AendGgner.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eb8d232f9d7fe3111a958cec0376e4b25778535e",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/Pipeline.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e5a059c320a490aad6002603cee581fa12096d9",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/web/Multipart.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8cdf6e5ecd70806390404ca795e3ddbd5786fd06",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/web/StaticHandler.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8765ac3d45170c5493b1be1fea35feb7261ab106",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/web/UploadHandler.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d715585fb54d16b19a3a1c74e1f66dd8dfe2c02",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/web/WebMain.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65ec0c98d09af4b078c05dd65390670af4ba3c21",
      "new_mode": 33188,
      "new_path": "src/main/resources/eu/mulk/aendggner/web/datenschutz.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "303db8e6c35f27fe1db905fde1e5ecc53deb059a",
      "new_mode": 33188,
      "new_path": "src/main/resources/eu/mulk/aendggner/web/impressum.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec2511a6ac854be019367a9290345ef71ddd4649",
      "new_mode": 33188,
      "new_path": "src/main/resources/eu/mulk/aendggner/web/index.html"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e2ec70c3f21f9c18c0aaa116bce0cb3c06d8310",
      "new_mode": 33188,
      "new_path": "src/main/resources/eu/mulk/aendggner/web/style.css"
    }
  ]
}
