)]}'
{
  "commit": "4a73859c1751a52edb93221a42b9e9e32878e828",
  "tree": "a1fa196b4683bd566b3bcbcaaf2a352803b85acc",
  "parents": [
    "546325064a7f73992a70ff5674d2754beb80e65c"
  ],
  "author": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Wed Jun 10 17:03:37 2026 +0200"
  },
  "committer": {
    "name": "Marc Kupietz",
    "email": "kupietz@ids-mannheim.de",
    "time": "Wed Jun 10 17:03:37 2026 +0200"
  },
  "message": "Support corpora with custom tokenization and annotations\n\nCorpora converted from TEI with their own tokenization and POS/lemma\nannotations ship them inside the base ZIP in a custom foundry folder\n(e.g. cmc/morpho.xml) and have no base/tokens.xml. Two fixes for this:\n\n- Derive the foundry of annotation entries in base ZIPs from the folder\n  name instead of the ZIP file name, so Krill output indexes the\n  annotations (cmc/p, cmc/l, ...) instead of dropping them as \"base\",\n  and CoNLL-U reports the correct \"# foundry \u003d\" comment.\n- Register token spans from morpho.xml in the Krill text data when no\n  base/tokens.xml provides them, with tokenSource set to e.g.\n  \"cmc#morpho\"; previously the Krill token stream was empty for such\n  corpora.\n\nAdditionally, when structure.xml has no sentence (s) spans, sentence\nsegmentation now falls back to other segment-like TEI elements\n(posting, l, seg, u, in this order), so integrated parsers and KorAP\nsentence queries work on such corpora.\n\nTested with a new dck_sample.zip resource, a two-text excerpt from the\nCC BY licensed Dortmunder Chat-Korpus; in one text the s spans are\nremoved to exercise the sentence fallback.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Iacf97fb151edd8c8d2add244e71c3d32282531f1\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46e238d8cd52c4c46d8217f9886f287a9573504a",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "8177feff873df74382a1ed127ef491cb64b9025d",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "6529c9b20027a3dea92b71fff407ce24013293ec",
      "old_mode": 33188,
      "old_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt",
      "new_id": "87c11abf67075c5599d40b77fba127b48b11d8d3",
      "new_mode": 33188,
      "new_path": "app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a62be5545e609aa1eeabe41bf37af4c81c1138",
      "new_mode": 33188,
      "new_path": "app/src/test/kotlin/de/ids_mannheim/korapxmltools/CustomTokenizationTest.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "afccac5ebe0796460657ef08a023fc34c527a91a",
      "new_mode": 33188,
      "new_path": "app/src/test/resources/dck_sample.zip"
    }
  ]
}
