)]}'
{
  "log": [
    {
      "commit": "eabe4140277aea95adda75d4aed5ef734b87c559",
      "tree": "08db0c3ac0d5776125098bee14080bc92b202458",
      "parents": [
        "849affd74ba15691ab4cd90ba46a44e172a1c85f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 07 15:42:51 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 07 16:07:21 2026 +0200"
      },
      "message": "Stabilize large word2vec exports\n\nBound streaming entry work globally across open ZIPs and release output claims when each ZIP closes, preventing corpus-sized scheduler state and per-ZIP backlog multiplication.\n\nSeparate ZIP-reader parallelism from entry-worker parallelism, avoid redundant annotation ZIP processing for surface output, and keep irrelevant late layers from restoring released document state.\n\nPreserve caller ZIP order by default and add --largest-first as an explicit throughput-oriented option. Also make custom CoNLL-U foundry selection independent of concurrent base-entry completion order.\n\nChange-Id: I1ca15de53bf2f500ee748d2478939b99a3ee77e4\n"
    },
    {
      "commit": "849affd74ba15691ab4cd90ba46a44e172a1c85f",
      "tree": "e60d76cf696af880741fa958873f89309a21284e",
      "parents": [
        "e784b031514ad5756f0bd28dcf8cdeae4982a492"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jul 21 16:44:00 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jul 21 16:44:00 2026 +0200"
      },
      "message": "Add missing rei_sample annotation-foundry test fixtures\n\nrei_sample.tree_tagger.zip, rei_sample.malt.zip and rei_sample.opennlp.zip\nwere used by KrillTarMergeTest but had never been added to git (they were\nuntracked local leftovers), so the test build failed on any other checkout\nwith \"Resource ... not found\".\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I833a502d9799805823e6e9e282586921b63ac2b8\n"
    },
    {
      "commit": "e784b031514ad5756f0bd28dcf8cdeae4982a492",
      "tree": "97dcd24f42c2cb3dcb2a5cdfece129143ac7e838",
      "parents": [
        "394c54404a1ea6e9edb5e82d374100a047de5674"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 11 12:01:54 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 11 12:01:54 2026 +0200"
      },
      "message": "Add Krill tar merge mode: update existing tars from ZIPs and stand-off metadata\n\nAllow an existing Krill tar as input with -t krill (\"merge mode\"), updated\nfrom the remaining inputs into a new tar (\u003cname\u003e.updated.krill.tar or -o).\nThis covers two scenarios: adding/fixing metadata when the source KorAP-XML\nZIPs are no longer available, and replacing single annotation foundries\n(e.g. an improved wiki-taxonomy topic-domain classification) without a full\nre-export.\n\n- KrillTarMerger streams the input tar; unaffected texts are copied through\n  byte-identically without being decompressed, affected texts are patched\n  and recompressed in parallel with bounded memory. The input tar is never\n  modified.\n- KrillJsonPatcher patches documents surgically at the lexical JSON level:\n  metadata fields replace same-key fields (aware of the legacy/corrected\n  name pairs textClass/dmozDomain, textDomain/idsColumn) or are appended;\n  a supplied annotation foundry replaces its stream annotations, sentence\n  spans/counts and layerInfos/foundries entries entirely. Token offsets are\n  taken from the existing stream, so the base ZIP is not needed.\n- Annotation strings are built by the same code as full generation (helpers\n  extracted from KrillJsonGenerator, behavior-neutral), so patched texts are\n  byte-identical to a full re-export with the same inputs.\n- creationDate/pubDate are only replaced when a new text-level header is\n  supplied, so corpus/doc-level headers cannot clobber per-text dates.\n- Texts present in the new inputs but missing from the tar are ignored with\n  a warning; data/tokens/structure entries (base tokenization) are ignored\n  as well. Tars produced by korapxml2krill (Perl) and LZ4-compressed tars\n  are supported. The regular Krill export path is unchanged.\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I3850b877eb0fc2eb5bc122ed13a2f60029b03ecf\n"
    },
    {
      "commit": "394c54404a1ea6e9edb5e82d374100a047de5674",
      "tree": "531741724340d8d0da7e84234a78987e0288dd51",
      "parents": [
        "81528a8ed0c3e8877a1d6c94d1b2316ddf5a4358"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:27:05 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:39:02 2026 +0200"
      },
      "message": "Bump version to v4.1.0\n\nAdds the I5 xenoData passthrough to Krill (#54) and the creatDate ISO\nnormalisation from this cycle, plus the dependency updates imported from\nDependabot: opennlp-tools 2.5.8 -\u003e 2.5.9, kotlinx-coroutines-core\n1.10.2 -\u003e 1.11.0 and Kotlin 2.3.21 -\u003e 2.4.0.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I2917a2740c5ad3680a0b7cae6aab666c9acd761b\n"
    },
    {
      "commit": "81528a8ed0c3e8877a1d6c94d1b2316ddf5a4358",
      "tree": "1b4beada742b364016898e81533ac65818d44ec0",
      "parents": [
        "0c14fa037187f5873bfdfcd58eccba94ed10e15f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:27:05 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:39:02 2026 +0200"
      },
      "message": "Drop redundant safe calls on smart-cast morphoData in Krill layer scan\n\nInside `if (hasExtra)` the compiler already smart-casts `morphoData` to\nnon-null (hasExtra can only be true when `morphoData?.any{}` returned true),\nso the per-attribute `morphoData?.any{ } \u003d\u003d true` checks raised \"unnecessary\nsafe call on a non-null receiver\" warnings. Use the non-null form.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ib5247e8b3ad04c9235f62a51b52949ce698151f8\n"
    },
    {
      "commit": "7ab5a47942e6362036ea4b745d7aeefab106ddd1",
      "tree": "28023cc051594f4f76494473963ad231a03483dd",
      "parents": [
        "c28c01b5034eb361ce3dd9e1a054afd9427dea00"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 16:36:10 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:39:02 2026 +0200"
      },
      "message": "Normalise free-text creatDate to ISO for Krill type:date fields\n\nKrill type:date fields expect an ISO date (YYYY[-MM[-DD]]), but creatDate\narrives in several free-text shapes. The previous naive \u0027.\u0027-\u003e\u0027-\u0027 replacement\nonly worked for the canonical year-first form (1932.03.03) and mangled the\nday-first forms found e.g. in RPK, optionally preceded by a weekday name:\n\"Donnerstag, 04.10.2018\" became \"Donnerstag, 04-10-2018\".\n\nAdd normalizeKrillDate(), which extracts an ISO date from such values:\nday-first DD.MM.YYYY (with optional leading weekday/comma) and year-first\nYYYY.MM.DD both become YYYY-MM-DD; already-ISO values and the partial\nYYYY.MM / YYYY forms pass through; for a date range the first date wins.\nWired into both creatDate -\u003e creationDate and the plain \u003cdate\u003e -\u003e pubDate\nfallback; the structured \u003cpubDate type\u003dyear|month|day\u003e path is untouched.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ie546909f1a17e78d12a3139c8120bff12e1ea3a6\n"
    },
    {
      "commit": "c28c01b5034eb361ce3dd9e1a054afd9427dea00",
      "tree": "b4380666259c55230a0ba105c3e4fcb2589aaea1",
      "parents": [
        "41637c307ff042e668182e4d89aaa1f0ed608655"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 16:24:08 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 19 19:37:27 2026 +0200"
      },
      "message": "Pass I5 xenoData metadata blocks to Krill output (issue #54)\n\nI5 \u003cxenoData\u003e blocks carry corpus-provided metadata (e.g. the RPK\ndenomination) that previously never reached Krill, so it was neither\ndisplayed nor searchable. Mirror KorAP-XML-Krill\u0027s KorAP::XML::Meta::I5\nhandling (commit 24ad3c0): parse each \u003cmeta\u003e into a typed Krill field,\nmapping the meta type to the field type (string/keyword/text/date -\u003e\ntype:string/keywords/text/date; attachment/uri -\u003e type:attachement) and\nderiving the key as \u003cproject\u003e.\u003cname\u003e. For doc/corpus headers the name is\nlevel-prefixed (docRcpnt/corpusRcpnt) so the same meta stays distinct per\nlevel; repeated keywords accumulate, repeated scalars keep the last value.\n\nFields are collected per level and inherited corpus -\u003e doc -\u003e text, then\nattached to each text\u0027s Krill stand-off fields (Krill-only by construction).\n\nTests: parseXenoData unit coverage for the type/key mapping and edge cases\n(text/date metas, empty/unknown-type skipping, doc/corpus prefixing), plus\na full-pipeline test over a new ked_sample.zip fixture (packaged from\nKorAP-XML-Krill t/real/corpus/KED) that mirrors the Perl ked.t assertions.\n\nResolves #54\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I2d895bbc05cfe203a6e47ad4932c9ea1eb6fd0a2\n"
    },
    {
      "commit": "41637c307ff042e668182e4d89aaa1f0ed608655",
      "tree": "615c8205b89ee691a4cac4d8415f739a58681fdd",
      "parents": [
        "9aa5e084974e8f88d6d4e19002b865c253c45064"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 16:44:54 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 22:16:02 2026 +0200"
      },
      "message": "Bump version to v4.0.0\n\nMajor release. Krill metadata field names were corrected by default in\nthis cycle (textClass -\u003e dmozDomain, textDomain -\u003e idsColumn), which\nchanges the emitted index field names unless --legacy-field-names is\npassed; hence the major version bump. Also includes the Krill empty-text\ndrop (#46), the tokenSource stand-off fix (#48), externalLink derivation\nfor Wikipedia/DGD/Süddeutsche/Genios (#47), and the custom-tokenization\nand sentence-segmentation fallbacks for TEI-converted corpora.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I242758abdaa37a3dd76f4ed826c3e05006bdd12c\n"
    },
    {
      "commit": "9aa5e084974e8f88d6d4e19002b865c253c45064",
      "tree": "68a36ae9b771f15522436c3ec4faf1508192ad5c",
      "parents": [
        "92349f00c5b6fb1a9268c2268d1d116755819fe9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 22:16:02 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 22:16:02 2026 +0200"
      },
      "message": "Always emit Krill availability, inherited corpus-\u003edoc-\u003etext, default unknown\n\nThe availability (licence) field is legally required for a KorAP instance to\nserve a text, so every Krill document must carry it. resolveHeaderMetadata\nalready inherits metadata corpus -\u003e doc -\u003e text (a lower level overriding a\nhigher one); this makes availability follow the same path and, when no value\nis present at any level, defaults it to \"unknown\" so the field is never\nmissing. Each defaulted text is logged at FINE and counted, and a single\nsummary warning reports the affected text count at the end of Krill output.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ia588c27f8cfeccb320841c8876de29c83193018c\n"
    },
    {
      "commit": "92349f00c5b6fb1a9268c2268d1d116755819fe9",
      "tree": "46e244694acccc296c7e559cd354229cdb2e680c",
      "parents": [
        "29f2384de8494b59572b3ef13ab70ed01474ba37"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 21:47:09 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 21:58:37 2026 +0200"
      },
      "message": "Keep tagger foundry when annotating corpora with custom inline foundries\n\nExternal/Docker taggers (treetagger, spacy) and --annotate-with commands\nroute their output through parseAndWriteAnnotatedConllu, which adopted the\n\"# foundry \u003d\" comment found in the tool\u0027s CoNLL-U output. For corpora that\nship their own inline annotations in a custom foundry folder (e.g.\ngingko/morpho.xml, with no base/tokens.xml), the CoNLL-U sent to the tool\ncarries \"# foundry \u003d gingko\" and the tool echoes it back, so the annotation\nwas written under — and overwrote — the corpus\u0027s own foundry, and the output\nZIP was misnamed (mtz13.gingko.zip instead of mtz13.tree_tagger.zip).\n\nThe annotation task already carries the tool\u0027s foundry; let that win. The\nechoed comment is only used as a fallback when the tool is unrecognized and\nthe foundry is the generic \"annotated\" placeholder. Integrated taggers\n(marmot, opennlp, corenlp) were unaffected as they never went through this\npath.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I684d15ea7476e096d3fb48abcb1e23cd4bd64e7e\n"
    },
    {
      "commit": "29f2384de8494b59572b3ef13ab70ed01474ba37",
      "tree": "7e54118a21a34c2ed73d9fcf7fa5ac48e26ad25a",
      "parents": [
        "2cb3acb1fcc911409862f4f23114b30c47c640c3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 21:25:48 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 14 21:57:14 2026 +0200"
      },
      "message": "Index extra inline w-attributes (norm, orig, phon, trans) as Krill layers\n\nTEI-derived corpora can carry inline \u003cw\u003e-level annotations beyond pos and\nlemma. Read norm, orig, phon and trans from the correspondingly named \u003cf\u003e\nfeatures in morpho.xml and emit each as its own Krill token layer\n(foundry/\u003cname\u003e\u003dtokens with foundry/\u003cname\u003e:\u003cvalue\u003e terms, original casing\npreserved), grouped under the morpho foundry — just like pos (p) and lemma\n(l). The set is intentionally restricted to these four names, and the\nlayer-detection scan is gated behind a single short-circuiting check, so\ncorpora without them pay at most one extra pass. The layers are Krill-only\nand do not affect CoNLL-U output.\n\nThe four new MorphoSpan fields also had to be carried through the\nfield-selective copy/merge in collectKrillMorphoData{,Direct}, which\notherwise silently drops them from Krill while CoNLL-U still works.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I2695acd47f33de782045f4cee50799538e6a3c4b\n"
    },
    {
      "commit": "2cb3acb1fcc911409862f4f23114b30c47c640c3",
      "tree": "efe1481898dd22edc03f95387f07a8e5b2221c2a",
      "parents": [
        "63341e11ca916e211635dc9c6637c0ddb66da44a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 16:44:54 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 16:44:54 2026 +0200"
      },
      "message": "Remove redundant out-projection in resolveHeaderMetadata\n\nMap is already declared covariant in its value type (Map\u003cK, out V\u003e), so\nthe explicit `out` on the corpusMetadata/docMetadata value type was\nredundant and triggered two Kotlin compiler warnings. Drop it; callers\npassing Map\u003cString, MutableMap\u003cString, Any\u003e\u003e remain compatible.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I72baff558a4a327be6220e5ea920a9df92002309\n"
    },
    {
      "commit": "63341e11ca916e211635dc9c6637c0ddb66da44a",
      "tree": "4401312d16830a1b0164b8740e43a87de46c05ca",
      "parents": [
        "698db68fad04d9169dce4441ecde128e304fc422"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 16:34:30 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 16:34:30 2026 +0200"
      },
      "message": "Derive externalLink for Krill when not explicitly encoded (#47)\n\nIn some KorAP-XML corpora the full-text link is not encoded as a\nref[@type\u003dpage_url]/link element. ExternalLinkResolver now derives it,\nmirroring the predecessor tool (KorAP-XML-Krill, KorAP::XML::Meta::I5):\n\n  - Wikipedia (wpd17/wdd17): the article URL only appears in the\n    reference[type\u003dcomplete] text; extracted with title \"Wikipedia\".\n    This is the bug reported in #47.\n  - DGD/AGD/FOLK: DGD access link built from the transcript title\n    (trailing _DF_\u003cn\u003e stripped), title \"DGD\".\n  - Süddeutsche Zeitung (U\u003cyy\u003e sigles): szarchiv link from the biblNote\n    \"ID:\", title \"Süddeutsche Zeitung\".\n  - Genios newspapers: genios.de link from the corpus sigle (mapped to\n    an orikuerzel via the generated GeniosKuerzelMap) plus the biblNote\n    \"ID:\", title \"GENIOS\". Genios detection requires a well-formed\n    [A-Z]{1,3}[0-9]{2} sigle so arbitrary sigles cannot trigger a link.\n\nThe rules are pure functions applied in priority order; explicitly\nencoded links still take precedence. The link title is carried to the\nKrill renderer via a new, non-emitted externalLinkTitle helper field.\n\nAdds ExternalLinkResolverTest (unit tests for all four rules and\nprecedence) and two KrillJsonGeneratorTest cases: Wikipedia extraction\nfrom wdd17sample.zip and the Genios wiring on a W24 header.\n\nResolves #47\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I181254fc5367773701bb3502e55c8531f52c1258\n"
    },
    {
      "commit": "698db68fad04d9169dce4441ecde128e304fc422",
      "tree": "2262e2f288984d3ff2f652267b2864b6ffc831eb",
      "parents": [
        "a84b5b482b5f5155e2f96f5d62139243bd684051"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 12:07:16 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 12 14:50:17 2026 +0200"
      },
      "message": "Fix tokenSource resolving to standoff annotation foundry\n\nRestrict token source identification and token map updates to base\narchive processing. This prevents standoff annotation foundries from\noverwriting the base tokenization spans and stealing the tokenSource in\nKrill JSON output.\n\nResolves #48\n\nChange-Id: I87dc59dcbf039a4a4ab907e680a5fc1b7c7b9738\n"
    },
    {
      "commit": "a84b5b482b5f5155e2f96f5d62139243bd684051",
      "tree": "dbd22e6cb3556bdcf39996e031cbdd4c259daa61",
      "parents": [
        "a9adcb22851e8cfa29cfc3f29b3915c7f46f5dd2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 11 14:25:42 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 11 14:27:48 2026 +0200"
      },
      "message": "Drop empty texts (0 tokens) from Krill output (#46)\n\nKrill should not index a text without at least one token, so emitting\nsuch a text only produces an empty, unusable document. Texts with no\ntokens are now skipped with a per-text warning and a summary count at\nthe end of the run; texts with at least one token are kept.\n\nThe check is applied at the single chokepoint every Krill text passes\nthrough before being written (enqueueKrillCompression), with a defensive\nguard on the direct-write fallback (outputKrillText). A new\ndropKrillText helper removes the text from all tracking structures so\nthe finalization pass skips it too.\n\nAdds m21_empty_sample.zip regression fixture (one empty text, one\nsingle-token text) and a test asserting the empty text is dropped while\nthe single-token text is kept.\n\nResolves ä46\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I2786557463249b105a4418d20dfbb736bfadc942\n"
    },
    {
      "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"
    },
    {
      "commit": "546325064a7f73992a70ff5674d2754beb80e65c",
      "tree": "f11dccc396049f3a22b2f9682d2e88ac814fd8d3",
      "parents": [
        "7348ee092fe3030c9373af179e30dad8cb271844"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jun 09 19:59:39 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jun 09 19:59:39 2026 +0200"
      },
      "message": "Rename misleading Krill metadata fields textClass/textDomain\n\nEmit the corrected metadata field names by default: textClass becomes\ndmozDomain (DMOZ-based topic-domain classification) and textDomain becomes\nidsColumn (normalised newspaper column / Ressort). The rename happens at\nemission only; internal extraction/inheritance keys and the field types\n(dmozDomain: keywords, idsColumn: string) are unchanged.\n\nAdd --legacy-field-names to keep the historical names for indices whose\nquery layer does not yet alias the old names to the new ones.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ie177fe2ec88412860add8ae86715707a30b28699\n"
    },
    {
      "commit": "7348ee092fe3030c9373af179e30dad8cb271844",
      "tree": "161026ebe1c5076c1fc28978f85a788ba50e5674",
      "parents": [
        "c53ae287cd1fe1f6bc80588241e8cf160fd720e9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jun 08 08:20:56 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jun 08 14:30:35 2026 +0200"
      },
      "message": "Bump version to v3.4.0\n\nRelease the stand-off metadata feature for Krill output.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ib381133798349eaafab4aed5340dbd2503abb1c8\n"
    },
    {
      "commit": "c53ae287cd1fe1f6bc80588241e8cf160fd720e9",
      "tree": "f814ec2bed1d78ffd886f260191d608fa42f558a",
      "parents": [
        "8c784fe7c0c668d99b19cbb3eb228aeef873b96d"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jun 08 10:08:38 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jun 08 14:09:36 2026 +0200"
      },
      "message": "Rename stand-off metadata field wikidomain to wikiDomain\n\nUse camelCase for the Wikipedia topic-domain classification field key, to\nmatch the casing of all other Krill metadata fields (textClass, pubDate,\ncorpusSigle, ...). The key derives from the metadataLayer xml:id, so this\nrenames the layer id in the test fixture; the taxonomy xml:id (wikitaxonomy)\nand catRef/@scheme are unchanged.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I519efddc2bb72d44a2a8edffab05b2a946b0e9e0\n"
    },
    {
      "commit": "6ec4b38f2702bef2b41fb0397cc1201c92b9818e",
      "tree": "a7639fa7f76bc31cd50135c9cfa5b223ebd71dfc",
      "parents": [
        "345547058f9d7e0cb2f5968582aace578885b80f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 07 15:22:01 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 07 15:22:01 2026 +0200"
      },
      "message": "Add rei_sample.zip test resource for stand-off metadata test\n\nThe standoffMetadataAddsClassificationKeywords test (added in the previous\ncommit) needs the rei_sample.zip base corpus, which pairs with the already\ncommitted rei_sample.domains.meta.xml fixture. Without it the test fails in\nCI at loadResource (resource not found).\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: I3ee5556f769216abcadb8625f45f911fe2716f3f\n"
    },
    {
      "commit": "345547058f9d7e0cb2f5968582aace578885b80f",
      "tree": "5557c50ac746a0fafb6c521576f48f367f42ee89",
      "parents": [
        "517ff4b6e333c2ef5671339760ffc9a1ea2aa0f2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 07 10:56:50 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 07 10:56:50 2026 +0200"
      },
      "message": "Add stand-off metadata support for Krill output\n\nCollect text-level metadata from stand-off XML files (one file per corpus,\nin the \u003cstandOff\u003e form produced e.g. by the wiki-taxonomy classifier) and\nemit it as Krill metadata fields, joined to texts by raw_text/@docid.\n\n- StandoffMetadata: auto-detects inputs by content (root element \u003cstandOff\u003e),\n  so no CLI option is needed; filenames are cosmetic. Classification layers\n  become type:keywords fields named after the layer xml:id; links layers\n  become type:attachement (KorAP-link encoding).\n- By default ingest everything in the file (the annotation tool already\n  applied its own top-k/threshold). The top-n/min-cert knobs are kept as\n  constants/params for a future --standoff-select option.\n- KrillJsonGenerator: new StandoffField type and KrillTextData.standoffFields,\n  rendered after header fields; never clobbers an existing header field key.\n- KorapXmlTool: detects and strips stand-off XML inputs from the ZIP list,\n  parses them (krill only; warns otherwise), and injects per text.\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n\nChange-Id: Ibd50d9393c052ab8172d1e41759b19ce47380e2c\n"
    },
    {
      "commit": "517ff4b6e333c2ef5671339760ffc9a1ea2aa0f2",
      "tree": "9e507e8b3eb4b391a28a12a26f24370effa8d06c",
      "parents": [
        "9ba6985f2fb13d4130ec765031f77831c2a5b786"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 04 20:32:17 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 04 20:32:17 2026 +0200"
      },
      "message": "Bump version to v3.3.3\n\nChange-Id: Iac40459cacb499f3229a7ab9d2827fb819da6a97\n"
    },
    {
      "commit": "3ff81756675b795f86c72dcccd0b291c471cc111",
      "tree": "49df088b6568f939052d28642479359465d2e0c0",
      "parents": [
        "893f6c5c5e5060ace28b2c45afb20dd355f5b713"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 04 20:04:46 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 04 20:04:46 2026 +0200"
      },
      "message": "Add support for some basic standard P5 elements\n\nChange-Id: I70fcc2c2d6222d75c9baa59c1eb3311c171d6ed6\n"
    },
    {
      "commit": "893f6c5c5e5060ace28b2c45afb20dd355f5b713",
      "tree": "0fc008f31a39c06571cf5b3f4ed3f4f12efa6113",
      "parents": [
        "f5ad1f2a9fb2306d71d1f1a32f7b2959ddc7accc"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 10 18:08:13 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Apr 10 18:08:13 2026 +0200"
      },
      "message": "Fix scheduler for external annotators\n\nChange-Id: I5b98620ea87be8b53cb7204d18aec8989ea3709a\n"
    },
    {
      "commit": "f5ad1f2a9fb2306d71d1f1a32f7b2959ddc7accc",
      "tree": "b7f8ed171258120acf562359d76f8ad4ef9c11e8",
      "parents": [
        "6c55ae7161225f44fe954a4d3374200b79ee547a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Apr 09 18:13:57 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Apr 09 18:13:57 2026 +0200"
      },
      "message": "Make sure that pubDate and creationDate are inherited if necessary\n\nChange-Id: I8a2cdeee31b115532b6a82c960dd9284f2c1393e\n"
    },
    {
      "commit": "6c55ae7161225f44fe954a4d3374200b79ee547a",
      "tree": "084d2d2ccdcd535feae47efdb7b8068fdbe0a954",
      "parents": [
        "c58c11270ee4c06c1739fc7531b9fad6bbbb1a79"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 06 11:23:40 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 06 11:23:40 2026 +0200"
      },
      "message": "Bump version to 3.3.2\n\nChange-Id: I9d63b4cc49d590153888a03e94d0121327c17073\n"
    },
    {
      "commit": "c58c11270ee4c06c1739fc7531b9fad6bbbb1a79",
      "tree": "42f379a42640a779edb50fa07dcf2b7ca5212a54",
      "parents": [
        "8f31f5c823d462217af07798f08f8f5fa2b8f54a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 06 11:12:10 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 06 11:12:10 2026 +0200"
      },
      "message": "Write pupDate to krill json also when incomplete\n\nResolves #39\n\nChange-Id: I49a03a3a9e9caf450af77b8c468db666d5ab7aec\n"
    },
    {
      "commit": "88e6e1f697e84c00800fea68c6520583670ad1c1",
      "tree": "724b8cab3aba8cc22348d076443d052a553d83ed",
      "parents": [
        "f7deb221f980d5ede75671c968847fa96444ea8f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 19:48:41 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 20:15:16 2026 +0200"
      },
      "message": "Bump version to v3.3.1\n\nChange-Id: Ia0f3aa3783bf85893ae35c17f9005043a005a5f0\n"
    },
    {
      "commit": "1c51e78fba1f20420f9f10385b59e0968a0aa1d7",
      "tree": "747a47711b54d218dc96813e3bf96b0930775e2d",
      "parents": [
        "feae6fc18478bbf78c6372a41912775554687f83"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 20:04:40 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 20:15:16 2026 +0200"
      },
      "message": "Fix build warnings\n\nChange-Id: I3380441ab6f0b799eb696a7dac3153fabb703932\n"
    },
    {
      "commit": "8a1b2a90dfb7c96a56e2c0fb01eb56a71dfe7c05",
      "tree": "8e2fae9205b25255c3b53f045e0d4e080716aa27",
      "parents": [
        "a2dd177c8879f51c0e7f53b3a32b778607000174"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 19:42:54 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 19:42:54 2026 +0200"
      },
      "message": "Let CoreNLP use the base tokenization\n\nChange-Id: I383a8b12a96f7a33d6a76a603bd919f6f732c4ba\n"
    },
    {
      "commit": "a2dd177c8879f51c0e7f53b3a32b778607000174",
      "tree": "3ca1ce03e5d120726c2428d258f97bb0d93c86fe",
      "parents": [
        "dd3c12afe06919e4551364df67eb6b9b590ba4ca"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 16:03:19 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 16:03:19 2026 +0200"
      },
      "message": "Use archive-order plain streaming mode also for base zip conllu  output\n\nChange-Id: Ibbde7155a06e5467af8fd0c058e839ac256fe5c4\n"
    },
    {
      "commit": "dd3c12afe06919e4551364df67eb6b9b590ba4ca",
      "tree": "9a3307eb07dc36bf3803a0f5e00983bac47ef5fa",
      "parents": [
        "49b007bfec02bdd7d5d01d3f8c5951b5fa24efcb"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 13:37:36 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 13:37:36 2026 +0200"
      },
      "message": "Use archive-order plain streaming mode also for w2v output\n\nChange-Id: I42a03c401c16b17922277024cb1663f655a692f6\n"
    },
    {
      "commit": "49b007bfec02bdd7d5d01d3f8c5951b5fa24efcb",
      "tree": "03334dcf12d7ba7131db323e86b714ab9a22d842",
      "parents": [
        "128da278316c294559bd7a5c5e05f55319ad287e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 13:21:06 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 05 13:23:07 2026 +0200"
      },
      "message": "Use standard java zip for now format output\n\nChange-Id: I1fae09e271df2a7503ec00db4374e3ab7193bdb8\n"
    },
    {
      "commit": "128da278316c294559bd7a5c5e05f55319ad287e",
      "tree": "55bfb2104a5e92d4fb6568aea53ef079c54f96da",
      "parents": [
        "8d5f84a7ca4e5187bf4c902bdbbcc44cb68c6448"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 22:48:15 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 22:48:15 2026 +0200"
      },
      "message": "Add open --stax-text\n\nChange-Id: I67f02b7207804f96ba075ae3638b3aa195d8236f\n"
    },
    {
      "commit": "8d5f84a7ca4e5187bf4c902bdbbcc44cb68c6448",
      "tree": "f7c4c614e2b6585700b4cdd84c7dd4d580bd4358",
      "parents": [
        "4bfb4f6f85626103ae7b2f7764206069d3aee14c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 21:26:11 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 21:26:11 2026 +0200"
      },
      "message": "Do not sort texts in now output mode\n\nChange-Id: I0c0a16b05bd1287586822f3cb999c63e442e6bef\n"
    },
    {
      "commit": "4bfb4f6f85626103ae7b2f7764206069d3aee14c",
      "tree": "510fa858e967c76241195bf5b0f7d4f00568aba6",
      "parents": [
        "4e286a708c5c224c436024bfcef5ce10b63a84d9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 16:57:45 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Apr 04 16:57:45 2026 +0200"
      },
      "message": "Fix output MB calculation in now mode\n\nChange-Id: Ic6887b50d0c7db3abbab194e9aaa0ff864d6ba6f\n"
    },
    {
      "commit": "4e286a708c5c224c436024bfcef5ce10b63a84d9",
      "tree": "0a436a0f5e19daad59a016f21f9523eea097658e",
      "parents": [
        "e19607838800dcc8ad81c76e92c6885dccf20935"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 07:13:34 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Reduce noisy missing-text warning\n\nChange-Id: I2c349c86d81ffa32ec060062c2c9068185335195\n"
    },
    {
      "commit": "e19607838800dcc8ad81c76e92c6885dccf20935",
      "tree": "269561ad923ae5267e5f17ed95547a0b4b5bf6d3",
      "parents": [
        "fb70f578f6dfc17bb026c029b84c0b11958d995f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 07:01:00 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Stream Krill tail output\n\nChange-Id: I15a971b891004ad3df124946f515d3fd76c2d368\n"
    },
    {
      "commit": "fb70f578f6dfc17bb026c029b84c0b11958d995f",
      "tree": "ce28d99e916019ecf2e8c5ac3f2b981a17870b79",
      "parents": [
        "0f18a785f7f6c9b1dd6d7ffa01372c0a10b69efa"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 25 19:35:14 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Log stalled pending Krill texts\n\nChange-Id: I8dbba5ad96e6b2592eae291bca4051fe844986d0\n"
    },
    {
      "commit": "0f18a785f7f6c9b1dd6d7ffa01372c0a10b69efa",
      "tree": "572e4387e21e420b4ccdd2e936b877c2f49f86b5",
      "parents": [
        "e922b48121c5c3f3a53eea029f72f134983f3a62"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 25 19:35:03 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Optimize Krill stream generation\n\nChange-Id: If696d898d966e00e1dc9ba7289ecd897d2f3051b\n"
    },
    {
      "commit": "e922b48121c5c3f3a53eea029f72f134983f3a62",
      "tree": "5528025106a5fba648e56b8696857cc95d2d19d4",
      "parents": [
        "9995883d0c15c70b52988ed650301f2d3af5d968"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 24 13:27:19 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Fix 2nd Krill output route for UTF8 buffer overflows\n\nShould fix exceptions like:\n\ndnb24.krill.log:java.lang.NegativeArraySizeException: -1394181943\ndnb24.krill.log-\tat\njava.base/java.lang.String.encodeUTF8_UTF16(String.java:1326)\ndnb24.krill.log-\tat\njava.base/java.lang.String.encodeUTF8(String.java:1299)\ndnb24.krill.log-\tat java.base/java.lang.String.encode(String.java:867)\ndnb24.krill.log-\tat\njava.base/java.lang.String.getBytes(String.java:1818)\ndnb24.krill.log-\tat\nde.ids_mannheim.korapxmltools.KorapXmlTool.compressKrillText(KorapXmlTool.kt:5531)\ndnb24.krill.log-\tat\nde.ids_mannheim.korapxmltools.KorapXmlTool.enqueueKrillCompression$lambda$0(KorapXmlTool.kt:5570)\ndnb24.krill.log-\tat\njava.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)\ndnb24.krill.log-\tat\njava.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)\ndnb24.krill.log-\tat\njava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)\ndnb24.krill.log-\tat\njava.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n\nChange-Id: I0a4029d9c8df3cbe2ceff4e7c250f1482fde3fe8\n"
    },
    {
      "commit": "9995883d0c15c70b52988ed650301f2d3af5d968",
      "tree": "c1b9cab2739cceb625f1efe7fab76bd38050f5c5",
      "parents": [
        "6c764a6ed7b709c647a5c2e5ff5ad5da59188c44"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 24 12:39:57 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:52 2026 +0100"
      },
      "message": "Don\u0027t shut down the compression executor too early\n\nChange-Id: I5a24ae05abb7ce6625704c259c28f4cd5cbcdfb0\n"
    },
    {
      "commit": "6c764a6ed7b709c647a5c2e5ff5ad5da59188c44",
      "tree": "51dd16affeba4301078ff9865c488447383dedc7",
      "parents": [
        "b479e0b21c10553096cf32fa6ef046e73261823a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 19:26:56 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 26 18:39:48 2026 +0100"
      },
      "message": "Prepare for v3.3.0\n\nChange-Id: Idca4f005a485529673a2e33992cfe65e4b802a2e\n"
    },
    {
      "commit": "b479e0b21c10553096cf32fa6ef046e73261823a",
      "tree": "bf88ac9eaa565ee5cfbe06468fb3ca033a706d1a",
      "parents": [
        "649a56c7c50a5ce018dcc28b23969be11510f49f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 13:08:13 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 13:55:22 2026 +0100"
      },
      "message": "Stabilize Krill scheduling and compression backpressure\n\nChange-Id: I267f9c4f079769fd486646c1da7381de92c6fd5b\n"
    },
    {
      "commit": "649a56c7c50a5ce018dcc28b23969be11510f49f",
      "tree": "d08681c323202dddf3136316d1ffba9c03acd3d8",
      "parents": [
        "705034d643febf07ccd88a707d62f435653f7849"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 12:40:59 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 13:55:22 2026 +0100"
      },
      "message": "Fix task scheduler imbalance for krill output\n\nChange-Id: I4d59235b3d5602d67ed325f1f5335b967468852c\n"
    },
    {
      "commit": "705034d643febf07ccd88a707d62f435653f7849",
      "tree": "2c68c166f335e759bf6a906a33459766e016088e",
      "parents": [
        "ad9395ce8985027321ce75e56c00593965205448"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 12:09:21 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 22 13:55:22 2026 +0100"
      },
      "message": "Fix late expunging of complete texts\n\nChange-Id: Ibdec0a0c2e840279fe48dd172c7061761d4a13fe\n"
    },
    {
      "commit": "ad9395ce8985027321ce75e56c00593965205448",
      "tree": "2c963e1c0e89e975bf9d26586331a81c98a22bc5",
      "parents": [
        "769e13003d51da25520f21ff4d7839662f5fdcb0"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 20 17:21:01 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 20 17:21:01 2026 +0100"
      },
      "message": "Fix invocation summary log destination\n\nChange-Id: I856b2123e49972b4cc0c6071f353e237c1403be6\n"
    },
    {
      "commit": "769e13003d51da25520f21ff4d7839662f5fdcb0",
      "tree": "d8f3fc47e0a99e9c3c73a31eb6422228035dd8ff",
      "parents": [
        "050342458687b0493a4c81427ba68e44824834a9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 18 11:29:46 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 18 17:01:46 2026 +0100"
      },
      "message": "Make annotation zip out more robust against tagger crashes\n\nChange-Id: I9bbfdfb84a32a7303191acc2126efc3235779d2b\n"
    },
    {
      "commit": "050342458687b0493a4c81427ba68e44824834a9",
      "tree": "c20c94bd92b380ac11618adc806e7dcffbe41a1e",
      "parents": [
        "6a55bf345970569b245ca0556ce1a9ca3b40f485"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 18 11:11:30 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 18 11:35:44 2026 +0100"
      },
      "message": "Log info call parameters and environment\n\nChange-Id: Ica46a27abd93dcf4ef5d5dc81639ef029af4e8d6\n"
    },
    {
      "commit": "f1255f30f08988bc0e443386ff50834ea627615a",
      "tree": "1e8e9fd4050a2a223880c91d873eac0c16a126a6",
      "parents": [
        "47ba66cb5ed1743faab5c6d43dbc24e42c739c6a"
      ],
      "author": {
        "name": "Codex",
        "email": "codex@openai.com",
        "time": "Tue Mar 17 19:33:23 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Mar 18 07:17:33 2026 +0100"
      },
      "message": "Balance annotation worker backpressure\n\nChange-Id: I93db9fcd7840c633c76d808cc241eccf12e63324\n"
    },
    {
      "commit": "47ba66cb5ed1743faab5c6d43dbc24e42c739c6a",
      "tree": "c78122695576b342e317b6e5b0a46a7118bdc376",
      "parents": [
        "61fdf38cd3e08ca761914a9447d48632f607f81f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 17 10:26:14 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 17 10:26:14 2026 +0100"
      },
      "message": "Bump version to v3.2.1\n\nChange-Id: Iae2bff2ed3c3384c029427d647d6c07849165a8e\n"
    },
    {
      "commit": "61fdf38cd3e08ca761914a9447d48632f607f81f",
      "tree": "539fbb0940a6cdac098776026a0da1c7d804e62f",
      "parents": [
        "2c3fcfa90b81953018ca489b6a946ecbf5c81c6a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 17 10:02:54 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Mar 17 10:04:22 2026 +0100"
      },
      "message": "Fixed OutOfMemoryError when annotating very long texts\n\n(multi-volume novels) by streaming XML directly to output instead of\nmaterializing as String\n\nChange-Id: I78ae5de59443203310744aa6af5cdc2f95acfcd3\n"
    },
    {
      "commit": "405dd63fde242d37268fec9a0b6c4aa1787c77fb",
      "tree": "d489bb101325be20c18c8e93848a85291e3ba10f",
      "parents": [
        "db44b4a80d12c43018a1aeb1d370570b912cead2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 15 17:23:45 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Mar 15 17:29:41 2026 +0100"
      },
      "message": "Don\u0027t show full path in progress bar\n\nResolves #17\n\nChange-Id: Iacd22aaa85d471a2d021a4f82d54e205070b5813\n"
    },
    {
      "commit": "30bd654bf3cd8d2b9116db9f40d457ea47632aa9",
      "tree": "30a263b586eed456e0582cf9ec6e3d0ad11da9b7",
      "parents": [
        "78133811813497b8637f51dd472723843bd4785a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Mar 14 16:10:09 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Mar 14 16:10:09 2026 +0100"
      },
      "message": "Bump version to v3.2.0\n\nChange-Id: Icf1435b88c7f9d9a7dffec549bd9fb7311576d3d\n"
    },
    {
      "commit": "78133811813497b8637f51dd472723843bd4785a",
      "tree": "7889d98bcad96c2f261b4bfb73da8ef59a2d6ab1",
      "parents": [
        "040d52a4b55907aa110c9f2b496dbc2bb4baa0a5"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Mar 14 16:00:26 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Mar 14 16:00:26 2026 +0100"
      },
      "message": "For krill output and morpho.xml files, bypass XMLCommentFilterReader\n\nChange-Id: I2ee10cb5e798b7e07fcda43d2538cc09a351c416\n"
    },
    {
      "commit": "81d53cae939c23dc85a1f887262b1e09a90fe9a5",
      "tree": "04c4545321ffc769514e3a1a53a9149169f5928b",
      "parents": [
        "b5f0b39c09c13b07ca1cd317dec0befa10af7bd6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 05 12:07:15 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 05 12:07:15 2026 +0100"
      },
      "message": "Fix heap issues with 2krill conversion\n\nChange-Id: Idc0a28e1f23762abc8fef5c8b48b127449deb1a5\n"
    },
    {
      "commit": "b5f0b39c09c13b07ca1cd317dec0befa10af7bd6",
      "tree": "e8a9b9cb0bb402cc4edae79a8333229b54663d86",
      "parents": [
        "8c87ecbb6517b74806bb365eb3c8748322ef5a1b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 05 11:39:35 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 05 11:39:35 2026 +0100"
      },
      "message": "Mark non-word tokens for index\n\nNecessary for distance operator compatibility with COSMAS II.\n\nChange-Id: Ie5b3ffdf9058011859142c917572523b266a0624\n"
    },
    {
      "commit": "8c87ecbb6517b74806bb365eb3c8748322ef5a1b",
      "tree": "26cc18cf435c01840b424d8a3c8c12a52446645a",
      "parents": [
        "563242f8e6096516a4690b70577be7b3630e37fd"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 17:49:30 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 17:51:29 2026 +0100"
      },
      "message": "Bump version to v3.1.3\n\nChange-Id: Iace5f24d2a24f2eee45279ad1b33b59b6fa994e1\n"
    },
    {
      "commit": "563242f8e6096516a4690b70577be7b3630e37fd",
      "tree": "0cc4c906ac90d93ad8b082bb2320bcecf81080c2",
      "parents": [
        "223fc6cbddf77abe330a206047489041e2df6be3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 15:43:17 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 15:43:17 2026 +0100"
      },
      "message": "Fetch external link titles from rend attribute – if available\n\nResolves #27\n\nChange-Id: I547886a3300e5f1c00453ea64b1bab61e21568b4\n"
    },
    {
      "commit": "223fc6cbddf77abe330a206047489041e2df6be3",
      "tree": "5c49d6ef627b54cc43c16801b45ad58131857a79",
      "parents": [
        "45347dbcc845cbf25f5bf099e288fc77770832a3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 11:18:11 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 15 11:18:11 2026 +0100"
      },
      "message": "Fix textExternalLink(s) typo\n\nResolves #26\n\nChange-Id: Ieb95039dce7154b80e082978aecc7be589de2b95\n"
    },
    {
      "commit": "45347dbcc845cbf25f5bf099e288fc77770832a3",
      "tree": "fdaf1ef0b9f70357208107290974ab38d53799ca",
      "parents": [
        "b2c3e43a612e085079ac65a7dd6df318ccd672e3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jan 06 20:01:21 2026 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jan 06 20:01:21 2026 +0100"
      },
      "message": "Fixed `-L` option being ignored when using internal taggers\n\nChange-Id: Ia927468662cc232acb9bb9615fb56420cff73b11\n"
    },
    {
      "commit": "21e9fb675b2ae23aa30e557100095f53726a06bd",
      "tree": "9e5913d6e1b5922f4a3262a6a26d159f9500d818",
      "parents": [
        "fbde7ed7b86fabffb22c7a2d00e1d654fc3c8d3e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Dec 23 16:58:14 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Dec 23 16:58:14 2025 +0100"
      },
      "message": "Add -L|--log-dir option\n\nChange-Id: Id259b3b4d970e48ada27859b47457da8547f94a9\n"
    },
    {
      "commit": "fbde7ed7b86fabffb22c7a2d00e1d654fc3c8d3e",
      "tree": "f63eacc1480252285360a5454dd46729e8863d7e",
      "parents": [
        "a22faa68aed357c36ce235c41aadfec47a5199b8"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 18 18:32:42 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 18 18:32:42 2025 +0100"
      },
      "message": "Bump version to v3.1.2\n\nChange-Id: I7d0dbd5567103c293305284715ea59c2bedb8f60\n"
    },
    {
      "commit": "a22faa68aed357c36ce235c41aadfec47a5199b8",
      "tree": "44a50b18d3f35f99eab49888c49617ca6a574eb4",
      "parents": [
        "0eefedb3251bee8af9a957716a3c8a3502dc6592"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 18 10:56:05 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 18 16:07:46 2025 +0100"
      },
      "message": "Fixed sparse annotations being assigned to wrong tokens\n\nResolves #23\n\nChange-Id: I1019a22ce2b09a74d3a9ac809866dd616015f5fc\n"
    },
    {
      "commit": "ce15b40a6fcdb7c45dfbc9e17ef26e8ddb2b3ff4",
      "tree": "55df0e4cb9af51b2dc18bb91e6c12ce3786c8f59",
      "parents": [
        "7eabcddb77135185588a984b19120e89ba0aa5dc"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:23:42 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:23:42 2025 +0100"
      },
      "message": "Bump to v3.1.1\n\nChange-Id: Ic5a1a572e550a8ae1924a4afd1d44932bb56fe49\n"
    },
    {
      "commit": "7eabcddb77135185588a984b19120e89ba0aa5dc",
      "tree": "c2f3a708476a9c449c67569f85308816f77bc45a",
      "parents": [
        "e260f9140866f5f7cef64e42eea6d546b49c36fb"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:11:24 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:11:24 2025 +0100"
      },
      "message": "Fix compiler warnings\n\nChange-Id: I48b8d7d82d4e9df9cc296a69bc11c5f13337e0d2\n"
    },
    {
      "commit": "e260f9140866f5f7cef64e42eea6d546b49c36fb",
      "tree": "57f25691a2df0a9d8c7e5aee8b2255e673e7a53d",
      "parents": [
        "06511f111e36d3ec4b69ad6f4881033a7ad5611b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 18:40:01 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:06:15 2025 +0100"
      },
      "message": "Fix missing metadata inherited from corpus and document\n\nResolves #22\n\nChange-Id: I4cca99133caaba95daf60a73183697f97d3444ed\n"
    },
    {
      "commit": "06511f111e36d3ec4b69ad6f4881033a7ad5611b",
      "tree": "e236fad9152956f341f35bc88c451ac7fe94230c",
      "parents": [
        "9eeaa91a0a45b29e851be1cb2306b938135481b2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 18:44:38 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 17 20:05:06 2025 +0100"
      },
      "message": "Fix missing paragraph spans\n\nResolves #21\n\nChange-Id: If60c4ac4132f5a43a3aec5af3390761af8f51922\n"
    },
    {
      "commit": "9eeaa91a0a45b29e851be1cb2306b938135481b2",
      "tree": "bd84308415acbfdae7472fa8c4ace688bba3bafc",
      "parents": [
        "93ae6582709fb85785bdf0c3a481c187d5dff27e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 13 11:07:34 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 13 11:07:34 2025 +0100"
      },
      "message": "Fix duplicate log files\n\nChange-Id: I46c3aaf2352c46bd86b02ce19d5196f4c8cd3811\n"
    },
    {
      "commit": "93ae6582709fb85785bdf0c3a481c187d5dff27e",
      "tree": "f93da374403f84115bddc2c3b8364346aa981671",
      "parents": [
        "4b8e6d68d865d61639e81f3c84f169b941805d23"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 12 13:03:52 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 12 13:03:52 2025 +0100"
      },
      "message": "Always log to log files\n\nResolves #18\n\nChange-Id: I7f4ea44cdc2cd3fa1386b18f08571f648f8e1199\n"
    },
    {
      "commit": "4b8e6d68d865d61639e81f3c84f169b941805d23",
      "tree": "5db57029e1053838771e781c61f5f7a0b80fc169",
      "parents": [
        "62ee57a3f785097c02f918b200bc96ec8b24726c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 12 12:21:00 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Dec 12 12:21:00 2025 +0100"
      },
      "message": "Fix -o fail with relative paths\n\nResolves #16\n\nChange-Id: I3deb804a04e5cae6b349313a9f0ec708d3ec9834\n"
    },
    {
      "commit": "62ee57a3f785097c02f918b200bc96ec8b24726c",
      "tree": "cc0b32ecb6d98386573760331998d5ffbdd1c3e8",
      "parents": [
        "3118eb2ec92b2d45d5466557058c635e4b05217b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 21:29:07 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 21:29:07 2025 +0100"
      },
      "message": "Bump version to v3.1.0\n\nChange-Id: Id6df65a1048375919a347f0af3af5f3bdbda22b7\n"
    },
    {
      "commit": "3118eb2ec92b2d45d5466557058c635e4b05217b",
      "tree": "b19f186521194b480d186732a4263f61843e7c0c",
      "parents": [
        "2fc76c7987b955e5cb9107ae6a531520d8131fd6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 21:00:16 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 21:00:16 2025 +0100"
      },
      "message": "Skip docker tagging tests also in GH Actions\n\nChange-Id: I7ff8186b69da5c72fda450cad1206b2c7cd25d70\n"
    },
    {
      "commit": "2fc76c7987b955e5cb9107ae6a531520d8131fd6",
      "tree": "cb57a16dedf55edc8411ae6f648c7e53a7b8d20f",
      "parents": [
        "abbf409ffe93bd6794290a7761606124f0482250"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 20:43:19 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 20:43:19 2025 +0100"
      },
      "message": "Fix -F -T option combination\n\nChange-Id: I1dd87e6b12118db44cac5c209d737a0d4fee63e1\n"
    },
    {
      "commit": "abbf409ffe93bd6794290a7761606124f0482250",
      "tree": "ea8783539cc86be64c981a9ebbecaac289227978",
      "parents": [
        "741a55e83c51a87b08cf398b8e9ca3c295eec53a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 18:26:04 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 18:26:04 2025 +0100"
      },
      "message": "Fix ci workflow again\n\nChange-Id: I2c6377adf3935b5ff088c4be4c5688409b55b0d2\n"
    },
    {
      "commit": "741a55e83c51a87b08cf398b8e9ca3c295eec53a",
      "tree": "0e9a1152f01b8b2ec318dabb75b57d367d17384e",
      "parents": [
        "20adf42a6f81babbc12ea5539bb584daf547a24d"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 16:48:44 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 16:48:44 2025 +0100"
      },
      "message": "Fox -o option for -T with docker taggers\n\nChange-Id: Ia6dbbe506ea5cae8debaa9216b9fa11e1ff233ec\n"
    },
    {
      "commit": "20adf42a6f81babbc12ea5539bb584daf547a24d",
      "tree": "79922a4e09057920c09982d4d41ebd2d4493a0db",
      "parents": [
        "ec7c2aec171132a766474753e563c662242c2778"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 12:51:37 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 12:51:37 2025 +0100"
      },
      "message": "Run docker requiring tests only when available\n\nChange-Id: I016feeeffb9ee72d51ce4c3f7974b52efc5e1fb6\n"
    },
    {
      "commit": "ec7c2aec171132a766474753e563c662242c2778",
      "tree": "ef3483ecf0f30b046a214d6ac76d95fd4d016130",
      "parents": [
        "fc47eb43ce418319d386622af2833ed50fb4c7dc"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 10:09:45 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Dec 04 12:46:31 2025 +0100"
      },
      "message": "Fix gitlab ci timeout: do not run dockers inside docker\n\nChange-Id: Ic8db923424f920ece37df71c063efca1339c25e1\n"
    },
    {
      "commit": "fc47eb43ce418319d386622af2833ed50fb4c7dc",
      "tree": "7ab87d43eeb206ee236144dc894b69f180dc63ea",
      "parents": [
        "994a23250d89b0baed6ff85486d27b4249677637"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 20:47:14 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 20:47:14 2025 +0100"
      },
      "message": "fix missing newline in text output formats\n\nChange-Id: I1c15ba79a5623ba252d781929258c970aef9f4b2\n"
    },
    {
      "commit": "994a23250d89b0baed6ff85486d27b4249677637",
      "tree": "40d8da5825309a245e438be9193915b69f0bc0d8",
      "parents": [
        "390bf47d45d1ee4aae76898cad0b28b0f4518303"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 20:45:50 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 20:46:55 2025 +0100"
      },
      "message": "automatically gzip output for now, w2v, conllu target formats if -o ends with `.gz`\n\nChange-Id: I2e9b90a51bd183bf02e6d18df65dcf40b4ef6b05\n"
    },
    {
      "commit": "390bf47d45d1ee4aae76898cad0b28b0f4518303",
      "tree": "6c375eb61a3487d173e093df58d297e83999e14c",
      "parents": [
        "c4401fa18fbc6dfbef7dd128fc07f81f4b2fa5f2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 09:21:19 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 03 17:12:54 2025 +0100"
      },
      "message": "Fix progressbar for w2v/now output with -o and without -q\n\nResolves #15\n\nChange-Id: Iaa558b157b52660d062c8fb555ea283ef79f4401\n"
    },
    {
      "commit": "c4401fa18fbc6dfbef7dd128fc07f81f4b2fa5f2",
      "tree": "27a417294498b841b8950aa18902badf77fa151a",
      "parents": [
        "ea46d618845392e98a495a3a61ad204b80d8246a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Dec 02 12:40:54 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Dec 02 19:03:57 2025 +0100"
      },
      "message": "Fix foundry overwrite option\n\nResolves #14\n\nChange-Id: Iaaeaf499ec3dad1b8c5b33a28ff60e8703217486\n"
    },
    {
      "commit": "ea46d618845392e98a495a3a61ad204b80d8246a",
      "tree": "f3ec8b91679e2dce885af5761633d02a18ea1aaa",
      "parents": [
        "4d7dace64724efd521ca641b40aaab6343db77f0"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 21:19:32 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 21:19:32 2025 +0100"
      },
      "message": "Bump version to v3.1.0-rc1\n\nChange-Id: I7dca20ef063f6347b04c071575bb01f87955f9c1\n"
    },
    {
      "commit": "4d7dace64724efd521ca641b40aaab6343db77f0",
      "tree": "ddb09e219b59261832076f0739399358c5d1869e",
      "parents": [
        "85f957adceadb4bb33d0da41ede4fd37c488b7c4"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 20:59:52 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 20:59:52 2025 +0100"
      },
      "message": "Fix too many lines in tagger/parser conllu\n\nChange-Id: I63775dc794a83675dd47ec01e3be66539a21d0a1\n"
    },
    {
      "commit": "85f957adceadb4bb33d0da41ede4fd37c488b7c4",
      "tree": "6fe6c038ec806bf006bbb72a620fb857e5eca7be",
      "parents": [
        "9d2dc81803ca560d7a1180a4776c01f4c3f53b6e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 15:47:14 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 01 16:27:48 2025 +0100"
      },
      "message": "Add native spaCy support\n\nChange-Id: Ibd3d660d2fc27a142e8d5e013b8bbb400bff5b9c\n"
    },
    {
      "commit": "9d2dc81803ca560d7a1180a4776c01f4c3f53b6e",
      "tree": "5e2989b4ffdcf8a410b014b990742d3c3dd68864",
      "parents": [
        "ca40b8f2163bc4e3bfa5446cc6a4e1b081f84d74"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Nov 27 22:18:37 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Nov 30 21:26:49 2025 +0100"
      },
      "message": "Add native treetagger support\n\nChange-Id: I155da3c0d6b185bb718d9c685d45a3862fd9cc49\n"
    },
    {
      "commit": "f05937909f7c9d03dd75ef346415a99a26ec9601",
      "tree": "464f67d5086d9b195257386627203c9ba92dc090",
      "parents": [
        "1c79273a362504642fbcc4c5ccc4156aa0e4408e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 28 15:06:59 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Nov 30 21:26:49 2025 +0100"
      },
      "message": "Fix -o option for conllu output\n\nChange-Id: I74339433c7234b89dbcb0be6c5a077294725230e\n"
    },
    {
      "commit": "1c79273a362504642fbcc4c5ccc4156aa0e4408e",
      "tree": "0cebd3afce6f9d10670d71f51f34f99adab8c4e9",
      "parents": [
        "76ae8f35abb3a2567b69ccb3ded4a3adc6fde5a6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 28 14:45:55 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Nov 30 21:26:49 2025 +0100"
      },
      "message": "Don\u0027t warn on missing zip entries when writing text\n\nChange-Id: I171f95257e024faa603e5fa1efb9cec741a99729\n"
    },
    {
      "commit": "e082596357ab104ea2d0960a475b3cbfe51a4f9d",
      "tree": "2b53352285b54ba4533b6ef0a40136a5a1a74ad7",
      "parents": [
        "198208957197def0be3b574bd8bf1d2175e3108e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Nov 27 11:42:32 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Nov 27 13:36:00 2025 +0100"
      },
      "message": "Bump version to v3.0.0\n\nChange-Id: I01287a1c7a025b65d4bc988beff495b3b227a858\n"
    },
    {
      "commit": "85ed41680b73bdc0b5f322cd3e0e2e6d6969ba9e",
      "tree": "e962fe3ce0ed9de55b7a9d88dd94c29fc71061ff",
      "parents": [
        "192500c96f926a8293020e1974b790a522634e08"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Nov 26 17:37:56 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Nov 26 18:34:51 2025 +0100"
      },
      "message": "Make -o option more consistent\n\nResolves #12\n\nChange-Id: I3ee65a4d50a56cabc866b287355be51660cf618a\n"
    },
    {
      "commit": "192500c96f926a8293020e1974b790a522634e08",
      "tree": "0f3f1a7254aedd0974e648fedff750c09fea2e68",
      "parents": [
        "56153d5910ffa8b10705b0196acb0789a798097b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Nov 25 17:02:30 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Nov 26 17:34:51 2025 +0100"
      },
      "message": "Sort multiple XPOS/Lemma annotations by descending probability\n\nChange-Id: I749e00b3343193f64099343bb985d73e40f09df7\n"
    },
    {
      "commit": "56153d5910ffa8b10705b0196acb0789a798097b",
      "tree": "5ff19c6ebd185701cf920f14eda9017c902f50ba",
      "parents": [
        "3886deecdb8b9cdfb48983f1181d70036eb54d84"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 22 13:29:35 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 22 13:29:35 2025 +0100"
      },
      "message": "Bump version to v3.00-rc3\n\nChange-Id: Icea8ef9644c52415361169b52560bb84c601df8f\n"
    },
    {
      "commit": "512ff62c3cbbad0510eb10f6902320b620ea3e81",
      "tree": "d14f61ae5a4a0e2a94560a2f571c4b91e9ff7c2a",
      "parents": [
        "b8deaa350ff949d53b3b727d7c0b68595e9f5c60"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 22 12:13:17 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Nov 22 12:53:14 2025 +0100"
      },
      "message": "Fix: Support multiple token/POS interpretations\n\nResolves #9\n\nConNLL-U:\n\n3 aber  aber|aber  _   ADV|KON _   _    _    _   0.784759|0.215241\n\nKorAP-XML:\n\n \u003cspan id\u003d\"t_115\" from\u003d\"627\" to\u003d\"631\"\u003e\n   \u003cfs type\u003d\"lex\" xmlns\u003d\"http://www.tei-c.org/ns/1.0\"\u003e\n    \u003cf name\u003d\"lex\"\u003e\n     \u003cfs\u003e\n      \u003cf name\u003d\"lemma\"\u003eaber\u003c/f\u003e\n      \u003cf name\u003d\"certainty\"\u003e0.784759\u003c/f\u003e\n      \u003cf name\u003d\"ctag\"\u003eADV\u003c/f\u003e\n     \u003c/fs\u003e\n    \u003c/f\u003e\n    \u003cf name\u003d\"lex\"\u003e\n     \u003cfs\u003e\n      \u003cf name\u003d\"lemma\"\u003eaber\u003c/f\u003e\n      \u003cf name\u003d\"certainty\"\u003e0.215241\u003c/f\u003e\n      \u003cf name\u003d\"ctag\"\u003eKON\u003c/f\u003e\n     \u003c/fs\u003e\n    \u003c/f\u003e\n   \u003c/fs\u003e\n  \u003c/span\u003e\n\nKrill:\n      [\n        \"_115$\u003ci\u003e627\u003ci\u003e631\",\n        \"i:aber\",\n        \"s:aber\",\n        \"tt/l:aber\",\n        \"tt/p:ADV$\u003cb\u003e129\u003cb\u003e200\",\n        \"tt/p:KON$\u003cb\u003e129\u003cb\u003e54\"\n      ],\n\nChange-Id: I73e21926074030ea137e6a2ee4e4fc73c8264fce\n"
    },
    {
      "commit": "b8deaa350ff949d53b3b727d7c0b68595e9f5c60",
      "tree": "b74acfd3857c149d0f65127c966916bb89c25325",
      "parents": [
        "63ab802503969bb477a12b149a8981feb4886215"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 18:15:13 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 18:15:13 2025 +0100"
      },
      "message": "Bump version to 3.00-rc2\n\nChange-Id: Ib6d79f20bb354cc30f6e3417937b6a8bf387d421\n"
    },
    {
      "commit": "63ab802503969bb477a12b149a8981feb4886215",
      "tree": "738cf6a9fbba444c693a9ffcc47fb22dbfa99f77",
      "parents": [
        "9d93073623696903486c503e6f852a1cde17c6e8"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 18:04:53 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 18:04:53 2025 +0100"
      },
      "message": "Add missing cmc.conllu file\n\nChange-Id: Iac863a51784c30463ce192dea34f308dbed95b35\n"
    },
    {
      "commit": "9d93073623696903486c503e6f852a1cde17c6e8",
      "tree": "e6986b7740f7ae01d8d2e0409b25c37b28d55598",
      "parents": [
        "5fe9ca6ef8b1a09d81eb2c463ec1d70d5a7d7231"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 17:55:10 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 17:55:10 2025 +0100"
      },
      "message": "Remove gunzip dependency from tests\n\nChange-Id: I411ccdd0368878cd486e14b16646d95d823e2787\n"
    },
    {
      "commit": "5fe9ca6ef8b1a09d81eb2c463ec1d70d5a7d7231",
      "tree": "68bca92cf7f0369cb4fca41df8147811e90c5c2c",
      "parents": [
        "6717ee0e04ce827d71c6234126d781c90094c2c0"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 17:47:58 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 17:48:19 2025 +0100"
      },
      "message": "Make sure the foundry is picked up from external annotators (-A)\n\nResolves #8\n\nChange-Id: I29a284ef24b90c01ada84eee7bfb8fedf7169d7f\n"
    },
    {
      "commit": "6717ee0e04ce827d71c6234126d781c90094c2c0",
      "tree": "b1091a4940288035f3406b70ad69d16e609f25c5",
      "parents": [
        "8d334063f99d1d99136ce0d1de6059440c5c5797"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 15:24:59 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 17:48:13 2025 +0100"
      },
      "message": "Support non-BMP tokens (emojis, …) in krill output\n\nResolves #7\n\nChange-Id: I6045053b7e6f7497287c538df8bf1116fab1afc5\n"
    },
    {
      "commit": "8d334063f99d1d99136ce0d1de6059440c5c5797",
      "tree": "aef2c41c01da08534903fec5eb9523c160c134ac",
      "parents": [
        "bb92300f9495143e65d149c0a934b0235decea2a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 15:21:13 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 15:21:13 2025 +0100"
      },
      "message": "Warn on missing text content\n\nChange-Id: I40c1a50d596e043bfe67303ec08c5e55d8382cf9\n"
    },
    {
      "commit": "6b1af775b8a256864db100fbfb78f1489c1e8540",
      "tree": "d140946fceafc55a6bc44f3d33b56f5f986e44b8",
      "parents": [
        "6ca3c80890bbc8b3b46ef595b596d7ba9f0be45f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 11:49:37 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Nov 21 11:49:37 2025 +0100"
      },
      "message": "Add missing wud24_sample.marmot-malt.conllu resource\n\nChange-Id: Ib359830ef62ae719bd3ca90aeebf497f55584a7f\n"
    }
  ],
  "next": "6ca3c80890bbc8b3b46ef595b596d7ba9f0be45f"
}
