)]}'
{
  "commit": "99511a961d741e2dc06113cf5f24180bfea2b26b",
  "tree": "e2f122bbb26bef6b69f72baf7901907a1084ed19",
  "parents": [
    "6311227992ba509b5e5e3256504980bf4632742d"
  ],
  "author": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Fri Jul 17 07:16:51 2026 +0200"
  },
  "committer": {
    "name": "Matthias Andreas Benkard",
    "email": "code@mail.matthias.benkard.de",
    "time": "Fri Jul 17 07:16:51 2026 +0200"
  },
  "message": "Classify line breaks geometrically via PDFBox coordinates and support list indentation\n\nReplaces the heuristic character-count full-width check with real geometric\nlayout analysis. FontgroessenFilter collects the right-edge X coordinate of\nthe text runs on each page and classifies line endings against the local\n90th percentile of page margins (using a 20-line sliding window) into soft,\nhard, or unclassified breaks.\n\nTextBereiniger uses this classification to reflow only soft line wraps (WEICH) and\nkeep deliberate ones (HART or UNBEKANNT).\n\nAlso aligns quote normalization and GII-XML flattening to indent continuation\nlines in lists (e.g., hanging definitions in UWG Anhang):\n- BefehlAnwender.normalisiereZitatText applies to single-unit Neufassung and indents\n  continuation lines deeper (4 spaces) than list items (2 spaces).\n- ContentFlattener generates the same structure for sibling \u003cLA\u003e elements inside \u003cDD\u003e.\n\nThis ensures the paragraph parser correctly groups these lines as child lines.\n\nChange-Id: I1fd7039d4933a273cc2dc55f958d34b439e2302c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c8e4d19fb8096b48dc32773dc0e405c924357678",
      "old_mode": 33188,
      "old_path": "FASSUNGEN.txt",
      "new_id": "d3195bb867111f6570f52ada0e4784003d41e02b",
      "new_mode": 33188,
      "new_path": "FASSUNGEN.txt"
    },
    {
      "type": "modify",
      "old_id": "ef6dee77451c1e557879aa54ffc9d27325c2389c",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/FontgroessenFilter.java",
      "new_id": "45ce32a170a088b86a10c61e6ee975d97b17d63f",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/FontgroessenFilter.java"
    },
    {
      "type": "modify",
      "old_id": "d9ecf8aeeac4700cc638d85e60f487a752c42b33",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java",
      "new_id": "1355877b645dd76a31017fa78670fd18137ec5c9",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java"
    },
    {
      "type": "modify",
      "old_id": "68fe2b8c3075bc4b76525d022287f5f8dbefec69",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/anwendung/BefehlAnwender.java",
      "new_id": "c5a4bbb58277738b3e7c2f726127a4b2f105b607",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/anwendung/BefehlAnwender.java"
    },
    {
      "type": "modify",
      "old_id": "00e9ef9b2caa3ae5092345c608face4bea5266bb",
      "old_mode": 33188,
      "old_path": "src/main/java/eu/mulk/aendggner/gesetz/gii/ContentFlattener.java",
      "new_id": "341f8919ed6b13f50262251d0456840946faa612",
      "new_mode": 33188,
      "new_path": "src/main/java/eu/mulk/aendggner/gesetz/gii/ContentFlattener.java"
    }
  ]
}
