)]}'
{
  "log": [
    {
      "commit": "8bacebb64a582d71eee5005a2de377fb1027da69",
      "tree": "82d0cb70ae7ca471f2dd268d395a199c91ad80ae",
      "parents": [
        "1e9f79174b3cb0b5983ab321db0c9e34d0f781ce"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 14:26:36 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 14:26:36 2026 +0200"
      },
      "message": "Compute logDice as defined by Rychly, comparable to other tools\n\nlogDice was computed as 14 + log2(2 * O / (w * O1 + O2)), multiplying\nthe node frequency by the window size, while the documentation cites\nRychly (2008), who defines it as 14 + log2(2 * O / (O1 + O2)).\n\nThe window size factor does not belong here. It is correct in the\nexpected frequency E, where w * O1 counts the positions in which a\ncollocate can occur, and the other scores take the window into account\nthrough E alone. The Dice coefficient, however, relates the\nco-occurrence frequency to how often the two words occur at all, so its\ndenominator sums marginal frequencies. Adding w * O1, a count of window\npositions, to O2, a count of word tokens, mixes units, and it makes the\ncoefficient asymmetric: for Grund/triftiger it gave 0.64, for\ntriftiger/Grund 3.96, from the same counts.\n\nThe practical effect was that a frequent node made w * O1 dominate the\ndenominator - for Grund and triftiger in a 5+5 window, O2 contributed\n0.006% of it - so that rare collocates were penalised. triftiger scored\n0.64, below Berlin at 2.03, although Berlin co-occurs with Grund less\noften than chance predicts (pmi -1.74). They are now 3.96 and 3.84.\n\nScores rise by up to log2(w), so up to 3.32 for the default context of\n5 left and 5 right, which makes collocationAnalysis() somewhat more\npermissive when recursing with the default thresholdScore \u003d \"logDice\"\nand threshold \u003d 2. Results computed with a total window size of 1 are\nunaffected, the two formulas being identical there, which is why the\nlight verb construction table in the Readme stays as it is, while the\ncollocationScoreQuery example, which uses the default window, was rerun.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I190fd65d0c53517df74c26c007a6440d974f700c\n"
    },
    {
      "commit": "1e9f79174b3cb0b5983ab321db0c9e34d0f781ce",
      "tree": "e4357bbcc0c0fe7b31b49349c6c37054307b31dd",
      "parents": [
        "81ddc344bdb4f93cfe0b498c35a05f0b70d6a9c9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:23:42 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:49:12 2026 +0200"
      },
      "message": "Doc prompting tests: cover authorization and multi-VC comparison\n\nThe two Readme sections that are hardest to follow were not covered by\nany documentation task: authorization, which readers most often get\nwrong, and the multi-VC collocation comparison, whose section is new and\nwhose columns are easy to misread.\n\nUnlike the other tasks, the code of these two cannot reasonably be\nexecuted in a test: authorization needs a browser flow or a token for\nrestricted data, and a multi-VC collocation analysis runs for minutes.\nOnly the generated code is inspected, which is what these tests are\nabout anyway - whether the Readme can be followed.\n\nThe expectations therefore aim at the parts that are easy to get wrong\nand that the sections explicitly explain: metadataOnly \u003d FALSE for\nreceiving KWIC snippets, a *named* vc vector, since the names become the\nlabels of the comparison columns, reducing the result to one row per\ncollocate, since it holds one per collocate and vc, and taking the\nimputed flag into account, since imputed scores describe presence or\nabsence rather than a measured contrast.\n\nGLM-5.3-Flash solves both from the Readme alone, in the multi-VC case\nincluding filter(label \u003d\u003d ..., !imputed) and arranging by delta_logDice.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I25865ef32bb6c3ee894cfb081f93d51bfb28b915\n"
    },
    {
      "commit": "81ddc344bdb4f93cfe0b498c35a05f0b70d6a9c9",
      "tree": "f08d3677c408a8db5b5c0bdd81f6f68a9df59de4",
      "parents": [
        "efec8634852c4e4d2cf4352fbb063bf425a3312e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:18:53 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:49:12 2026 +0200"
      },
      "message": "Readme: document corpusStats, textMetadata and collocationScoreQuery\n\nThese three are exported, useful and were shown nowhere in the Readme,\nwhich not only leaves readers to find them in the reference\ndocumentation, but effectively hides them from an LLM whose context is\nthe Readme: it cannot use what it has not been shown.\n\ncorpusStats answers how large a (virtual) corpus is, textMetadata\nretrieves everything KorAP knows about a text given its sigle, and\ncollocationScoreQuery scores collocation candidates that are already\nknown, as opposed to collocationAnalysis, which searches for them. The\nlatter also demonstrates passing a vector of collocates, which was added\nin 1.3.0 but not shown anywhere either.\n\nAll examples and their output were run against DeReKo. The three\ndocumentation prompting tasks added cover exactly these\nfunctions, and GLM-5.3-Flash solves all three from the new sections\nalone, including as.df \u003d TRUE and the vector of collocates.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ia760750d10825bb2220c807ef0fc6e25e2cdd821\n"
    },
    {
      "commit": "efec8634852c4e4d2cf4352fbb063bf425a3312e",
      "tree": "a31f620b8fe51a33a045854dfac66e75d8c3da37",
      "parents": [
        "6957ac9ceaf4b0de7ce1e350ed5f10b4bcfca2ce"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:13:37 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:49:12 2026 +0200"
      },
      "message": "Check the Readme against the package on every test run\n\nThe Readme is the entry point for readers, and, since generated code is\ncopied from it verbatim, for LLMs too. Nothing so far noticed when it\ndrifted away from the package: the \"available since RKorAPClient\n0.9.0.9000\" claim named a version that never existed and survived for\nyears, and the code in it is never executed.\n\nFour checks, all offline and in milliseconds, so unlike the\ndocumentation tests they can run on every commit:\n\n* every R code block parses\n* every function called exists, those of this package as exports, the\n  others through the packages the Readme itself loads\n* every named argument exists in the signature of the function it is\n  passed to, which is where a renamed parameter would otherwise turn\n  the Readme into a source of broken code\n* every version mentioned has a NEWS.md section, which is what the\n  0.9.0.9000 claim failed\n\nSignatures are taken from the .local wrapper that setMethod() creates\nfor S4 methods whose arguments differ from the generic, since the\nformals of the method itself are only those of the generic.\n\nAll four were verified to fail on an injected fault of their kind. They\nskip when Readme.md is absent, as it is in the built package, being in\n.Rbuildignore.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ic1aefea5d964956ca46132ec3d97e2318b4fe931\n"
    },
    {
      "commit": "6957ac9ceaf4b0de7ce1e350ed5f10b4bcfca2ce",
      "tree": "2f472382e2dbeb87241e9e6577edec0de530a4c1",
      "parents": [
        "323a4d399c1b52943d8cd72d8a7c31fe2dcddc57"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 12:18:27 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:49:12 2026 +0200"
      },
      "message": "CI: run the doc prompting tests in their own, non-blocking job\n\nThe Readme documentation prompting tests query LLMs, so they are neither\ndeterministic nor free: a model can miss an expectation on one run and\nmeet it on the next, and an empty API account fails them regardless of\nthe state of the package. Letting them decide whether the pipeline is\ngreen means red builds for commits that changed nothing related.\n\nThey therefore move into their own job with allow_failure: true, where a\nfailure is visible as what it is, a hint that the documentation may have\nbecome unclear, without blocking anything. That job runs GLM-5.3-Flash,\nwhich solved all three documentation tasks in every trial run, while\ngemini-3.5-flash-lite still missed an expectation every few runs.\n\nKeeping them out of the main job needs more than a testthat filter,\nsince devtools::check() runs the tests as well, and blanking the API\nkeys in the job would not work either, because project level variables\nset in the GitLab UI take precedence over those in the yml. The model\nlist is used as the switch instead: RKORAP_LLM_MODELS unset means the\ndefault models, set but empty means none at all, so the main job\ngenerates no LLM tests in either of its two steps.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ia1f29f05a0b8401f61307859e97948f4be977565\n"
    },
    {
      "commit": "323a4d399c1b52943d8cd72d8a7c31fe2dcddc57",
      "tree": "72193c6a46d2ead305d9765f85019f6f137b6c07",
      "parents": [
        "37f96075e1fdcab348c358be3ce2820eb5ac0a50"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 12:04:35 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 13:48:31 2026 +0200"
      },
      "message": "Doc prompting tests: run against several current low cost models\n\nThe Readme documentation tests ran against a single hardcoded model,\ngemini-2.5-pro. Since the tasks are simple, and since what is being\ntested is the Readme rather than the model, cheap and fast models are\nthe better fit: if such a model cannot follow the Readme, that is a\nfinding about the Readme. They are also considerably cheaper to run,\nin money and in energy.\n\nThe model is therefore no longer a constant but a list, run one test per\nmodel and task, and overridable via RKORAP_LLM_MODELS. The defaults are\ngemini-3.5-flash-lite, claude-sonnet-5 and GLM-5.3-Flash, the latter via\nthe OpenAI compatible Synthetic API at https://api.synthetic.new/openai/v1,\nauthorized with SYNTHETIC_API_KEY. tidyllm\u0027s openai provider takes no\ncustom base url, so that endpoint is queried directly with httr2, which\nis a hard dependency anyway.\n\nEach model is skipped individually if its API key is missing, so a\npartial set of keys tests whatever it can. Conditions of the account\nrather than of the documentation - rate limits, failed authorization\nand, newly, exhausted credits - lead to a skip instead of a failure.\n\nAlso fixes a problem that was independent of all this: the file called\nlibrary(tidyllm) at top level, although tidyllm is only suggested. Where\nit is not installed, as when checking with _R_CHECK_DEPENDS_ONLY_, that\nmade the whole file fail instead of skip. tidyllm is now qualified at\nits call sites and skipped on when missing.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I8be20b040f7549f39996af1d02afcefa69e63ce2\n"
    },
    {
      "commit": "37f96075e1fdcab348c358be3ce2820eb5ac0a50",
      "tree": "d46205219fa10a6373ca793dbdbefbc8ccf96fc1",
      "parents": [
        "ef5b7c1b03f9e83b0d6ef9a4f10d56d4e1a44c5d"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 07:18:11 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Sep 03 07:18:11 2026 +0200"
      },
      "message": "CA: check the parameters a cacheAs file was created with\n\nUntil now, a cacheAs file was used whenever it existed. Changing a\nparameter and forgetting to delete the file therefore silently returned\nan analysis computed with the old parameters. Inferring the parameters\nfrom the cached data frame would not help much: of the 23 parameters\nthat affect the result, only node, vc, leftContextSize and\nrightContextSize are recoverable from it, which leaves out exactly the\nones that are typically tuned between runs, such as minOccur,\ntopCollocatesLimit, searchHitsSampleLimit, exactFrequencies, stopwords\nand threshold.\n\nThe parameters are therefore recorded when the file is written, and\ncompared on the next call. They are collected from the call frame rather\nthan listed explicitly, so that parameters added later are covered\nwithout having to remember to register them. Also recorded is the API\nURL, since reusing one cache file for two KorAP instances is a mistake\nworth catching, and, for reference only, the index revision: corpus\nupdates should not invalidate an analysis that was deliberately kept.\n\nIf parameters differ, the analysis is recomputed and the file\noverwritten, with a warning naming the differing parameters. That is\npreferred over an error: it never returns results that disagree with the\nrequested parameters, and never breaks a long pipeline. Users who want\nto keep an old analysis can pass a different cacheAs file name.\n\nThe parameters are stored in an attribute, so the file stays a plain\ndata frame for anyone reading it with readRDS(), and the attribute is\nstripped when loading, so the returned value is the same whether it came\nfrom the cache or not. Cache files written by 1.3.0 carry no attribute\nand are used as they are.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Ib21aa93fa3c2bf1cd42dd07dbfcbd2970841a412\n"
    },
    {
      "commit": "ef5b7c1b03f9e83b0d6ef9a4f10d56d4e1a44c5d",
      "tree": "f3ba890b684e12eba03776fe47806facc8667312",
      "parents": [
        "ae4079aee782740315e3c8d7cb6f19dbe1f73df8"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Sep 01 07:24:43 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Sep 01 07:24:43 2026 +0200"
      },
      "message": "Drop the PTXQC dependency and bump to 1.3.0.9000\n\nPTXQC was imported for exactly two small string functions, lcpCount()\nand lcsCount(), both used only by queryStringToLabel(). It brought\nrmzqc, jsonvalidate, seqinr and V8 with it, and V8 was the only\ndependency in the whole tree that required a libv8 installation, which\nmade it by far the most expensive part of installing RKorAPClient on\nLinux. The recursive dependency closure shrinks from 128 to 90 packages.\n\nBoth functions are pure R in PTXQC, so reimplementing them costs no\ncompiled code. The replacements determine the length of the common\nprefix and suffix by binary search over vectorized startsWith() and\nendsWith() calls, instead of comparing character by character (and, for\nthe suffix, reversing every string with strsplit/rev/paste first). That\nmakes them 10 to 65 times faster, depending on the number and length of\nthe strings:\n\n                                      PTXQC      here\n  10 query strings, 37 chars   prefix   183 us    16 us\n                               suffix   127 us    13 us\n  121 vcs, 42 chars            prefix   413 us    29 us\n                               suffix  1029 us    26 us\n  50 strings, 563 chars        prefix  1405 us    64 us\n                               suffix  4362 us    67 us\n\nResults are unchanged: the two functions were compared against their\nPTXQC counterparts over 3020 inputs, and queryStringToLabel() over 8044\ninput/argument combinations, without a single difference. Empty vectors,\nempty strings and the single string case (where a string is its own\nprefix and suffix) behave exactly as before. The only deviation is for\nNA input, where PTXQC\u0027s lcsCount() silently treats NA as the literal\nstring \"NA\"; queryStringToLabel() never reaches it in that case, because\nthe prefix function errors on NA in both implementations.\n\nSince V8 is gone, and keyring no longer needs sodium either, libv8-dev\nand libsodium-dev can be dropped from the Linux installation\ninstructions in the Readme.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: Icad4bc76b773b1586922dd05458b82409d112932\n"
    },
    {
      "commit": "6a16d7d95259a25874f6dd6f37ae709325229a16",
      "tree": "e5fcf010d0c8deb3ba9437a43e4c7ce2676a1576",
      "parents": [
        "6a0bad4e589d158c409b50238f51c4d6868bc230"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 21:36:01 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 21:36:03 2026 +0200"
      },
      "message": "Document KorAPConnection() as a function to fix CRAN Rd NOTE\n\nCRAN\u0027s r-devel-linux-x86_64-debian-gcc and -clang checks report\n\n  Rd files without \\usage:\n    \u0027KorAPConnection-class.Rd\u0027\n  \\arguments should not be documented without \\usage.\n\nbecause the user facing documentation, with one @param per constructor\nargument, was attached to the setClass() call. The object exported under\nthe name KorAPConnection was the class generator, whose formals are just\n`function(...)`, so roxygen2 could not derive a \\usage section from it\nand the documented arguments ended up in an Rd file without one. Adding\na hand written \\usage is not an option either: it contradicts the\ngenerator\u0027s `...` signature and turns the NOTE into a much worse\n\"code/documentation mismatches\" WARNING.\n\nReplace the generator with a real KorAPConnection() function that\nforwards its arguments to new(\"KorAPConnection\", ...) and attach the\ndocumentation to it. roxygen2 now derives \\usage from the actual\nformals, so the manual page states how the constructor is really called,\nand the NOTE is gone.\n\nThe constructor forwards supplied arguments only, so that the defaults\nand the missing() based KORAP_VERBOSE / rkorap.verbose overrides of the\ninitialize method keep working unchanged. Its own defaults merely mirror\nthose of the initialize method in order to document them; the new tests\nasserts that the documented defaults are the ones a connection actually\nends up with, so that the two cannot drift apart silently. The KORAP_URL\ndefault is now shared by both signatures as defaultKorAPUrl().\n\nNAMESPACE is unchanged: KorAPConnection remains both an exported\nfunction and an exported S4 class, and new(\"KorAPConnection\", ...) keeps\nworking.\n\nR CMD check --as-cran: Status OK, and no Rd file in man/ has \\arguments\nwithout \\usage any more.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I789d42c01e1be98a989f8f4d9a5b14865ca48daa\n"
    },
    {
      "commit": "7b7a73b665502e82133329d873d1d9800884a0f6",
      "tree": "100bf8e6c281f489376fd4bf2f0d489441101e56",
      "parents": [
        "bceeb05254bec96f54236e92c7da40a65a09927e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:31:27 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:31:27 2026 +0200"
      },
      "message": "CA: warn when duplicate rows are dropped from multi-VC comparisons\n\nThe pivots in add_multi_vc_comparisons() use values_fn \u003d dplyr::first, so\nrepeated node/collocate/label rows -- as produced when the same collocate is\nfound at several context positions -- were silently reduced to their first\noccurrence. Warn instead, naming mergeDuplicateCollocates() as the way to\ncombine those rows before comparing.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I832ea9a2bc0d28256bba5a37e8b94721809f3a68\n"
    },
    {
      "commit": "bceeb05254bec96f54236e92c7da40a65a09927e",
      "tree": "f6e2248ac6c468716ee5f97abd6b600f1864c801",
      "parents": [
        "ba15cffd49405e1ecf9b56ea6832a670f372b3a3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:30:07 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:30:07 2026 +0200"
      },
      "message": "CA: add tests for the cacheAs parameter\n\ncacheAs shipped without any test coverage. Cover the three behaviours it\npromises: a cache hit returns the stored result before any server contact,\nthe .rds extension is appended when missing and not doubled when present,\nand a cache miss writes a file that the next call reuses.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I5c88ee510815ee13f5cda08a0c4a269871b47df7\n"
    },
    {
      "commit": "424cb78ed98fa885704bba4cdddf52e7d6f7962c",
      "tree": "abaaa79316bdbd2e1a20fdfe966f02349f13902f",
      "parents": [
        "9525334f18cff3af96782cdf92c3f8dc0b84d2ad"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:19:29 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:19:29 2026 +0200"
      },
      "message": "CA: report imputation in multi-VC comparisons when verbose\n\nImputation was silent, so a result whose top max_delta rows are entirely\npresence/absence artifacts looked no different from one built on observed\nscores throughout. Pass the connection\u0027s verbosity into\nadd_multi_vc_comparisons() and report how many node/collocate combinations\nand label cells were imputed, pointing at the `imputed` column and\nqueryMissingScores.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I5159483452595f38d09f06411b64a7327814977f\n"
    },
    {
      "commit": "d7bb5cb7154a01e7493369ccb929aa2a3f237748",
      "tree": "9736188bd65f1107c2223bccc02da677f2bbc516",
      "parents": [
        "3b091c002f69701cfa4b40434dc3a9408d155493"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:18:02 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Aug 31 10:18:02 2026 +0200"
      },
      "message": "CA: flag imputed cells in multi-VC comparisons\n\nWhen a collocate is attested in one virtual corpus but not in another,\nadd_multi_vc_comparisons() imputes the missing scores from a pooled floor.\nThe resulting delta/winner/loser columns then describe presence vs. absence\nrather than a measured contrast, and nothing in the output said so.\n\nRecord the missingness pattern before imputation and expose it as\n`imputed_\u003clabel\u003e` (per label), `n_imputed` (count) and `imputed` (any), so\nthat `filter(!imputed)` keeps only collocates attested in every compared\nvirtual corpus.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nChange-Id: I25fb0196f1b75519c126130fc19bc62d40675e17\n"
    },
    {
      "commit": "3b091c002f69701cfa4b40434dc3a9408d155493",
      "tree": "db54d74d1544c57fa823a652af1922a05c980558",
      "parents": [
        "209b52ca4d0a81acbc761e9ebf759f9fc6f29e11"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 06 15:33:12 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 06 15:33:12 2026 +0200"
      },
      "message": "Make morph pipe-separator test resilient to transient API issues\n\nThe live korap.dnb.de call can occasionally return no morph data for\nthe fetched match (e.g. under concurrent CI matrix load), causing a\nhard test failure unrelated to actual code correctness. Skip instead\nof failing when no morphological data comes back.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nChange-Id: I1694bcd3f1e51d2e33251949715f0d045e91b074\n"
    },
    {
      "commit": "9c53e4171317c646bacdfe8d73b1ab128635700a",
      "tree": "90b09d08c51d63a81248703053fe3c313459c24b",
      "parents": [
        "9db18916673b89e148edd7090480ece1a304c0fa"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 21 12:13:44 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 21 12:15:17 2026 +0200"
      },
      "message": "Make collocationScoreQuery() accept a vector of collocates\n\nChange-Id: I719c7577393f352fcfebe740a13fbf0daf790d3c\n"
    },
    {
      "commit": "c728a351092f81b5ef34256b45a54f537a85f83e",
      "tree": "4810fc3cc69297bf5a6e1bb61880a6cd924b7b7e",
      "parents": [
        "09b1c086fba9f2b0dc7b41caec65b7c2c3010403"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 21 12:07:00 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jun 21 12:07:00 2026 +0200"
      },
      "message": "Fix accessToken in fetch annotations test\n\nChange-Id: I7cf5076ec49b25f2ee3ffbbdfc19bd2ea0cb1fbd\n"
    },
    {
      "commit": "09b1c086fba9f2b0dc7b41caec65b7c2c3010403",
      "tree": "e2a4a13c01e092a7a24dfded5da35b09992f754e",
      "parents": [
        "325a3ab7a5889d700bf002714ae27c28c6339147"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri May 01 14:45:47 2026 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri May 01 15:48:45 2026 +0200"
      },
      "message": "Add winner and loser URLs to multi-VC collocation comparisons\n\nChange-Id: Ia3bea5f400713c6b513e1cc1033c9c5c869d957f\n"
    },
    {
      "commit": "0a29263ffc80e12affaa0de9ef87b5af37d66d0b",
      "tree": "7aafb8e96897645d9789ceafb65f1a46f8a7a13f",
      "parents": [
        "c79155bca7cd0732c0bcb2557c288626f0ca4539"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 14:04:36 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 15:02:21 2025 +0200"
      },
      "message": "CA: Inject focus into to result webUIRequestUrls\n\nif appropriate to improve the immediate visibility of the actual\ncollocations.\n\nChange-Id: I728e61701bf4fc620b40077da54a11506e6e941c\n"
    },
    {
      "commit": "77852b2af68bdb578421aea4efb97ef2fa51320d",
      "tree": "63a2852821497543071202e6e4a65431b0809934",
      "parents": [
        "130a2a29eb3b593878dc2ac410e8a2b716d64e01"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 11:35:34 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 15:02:21 2025 +0200"
      },
      "message": "Remove redundant thresholdScore parameter from add_multi_vc_comparisons function\n\nChange-Id: I3a0077497f52d94e0b63d90bca0812c7e3d0c9d6\n"
    },
    {
      "commit": "130a2a29eb3b593878dc2ac410e8a2b716d64e01",
      "tree": "3a50e5d226336ac30a7011ceec44a0e74e543919",
      "parents": [
        "9894a37ab8a660bca79e94c5480da5428e357e4f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 16:09:23 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 15:02:21 2025 +0200"
      },
      "message": "CA: add percentile ranks and documentation\n\nChange-Id: I3a0c6aab970db5f4685b03164b20e0489e03799f\n"
    },
    {
      "commit": "9894a37ab8a660bca79e94c5480da5428e357e4f",
      "tree": "6ce7350d737c086589cbf2c37d97645896180cec",
      "parents": [
        "28a29845b877fb28ee76196b67f585fd89344877"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 14:51:29 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Oct 19 15:01:19 2025 +0200"
      },
      "message": "CA: replace NA dampening factor with missingScoreQuantile\n\nBetter use distributional priors instead of raw minima.\n\nChange-Id: I85d77a63c1bc06c8f6398ddac75deec52f1ca96a\n"
    },
    {
      "commit": "28a29845b877fb28ee76196b67f585fd89344877",
      "tree": "3e0b032275070a5fe2cfccc40a6ee04da49fa0f2",
      "parents": [
        "b2862d4cd478b6ec38f89cb38472dd4b416b3224"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 12:25:09 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 14:07:27 2025 +0200"
      },
      "message": "CA: add measure based ranks\n\nChange-Id: I84dacfe9f61e9b65268b241bc8adf82c4cc4adc3\n"
    },
    {
      "commit": "b2862d4cd478b6ec38f89cb38472dd4b416b3224",
      "tree": "b89753066c8baaa626421fc1097a19a9e60374b9",
      "parents": [
        "5e35d7a5e7713a91fe8672cf9d30402298a20a72"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 10:17:49 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 10:17:49 2025 +0200"
      },
      "message": "CA: introduce max_delta_\u003cscore\u003e\n\nChange-Id: I4c3ccf374017c46051bec11cf2a836df511ea586\n"
    },
    {
      "commit": "5e35d7a5e7713a91fe8672cf9d30402298a20a72",
      "tree": "c7a905d394c324cc5f7a61c4206e6e0b5ac6e319",
      "parents": [
        "e34a8be915170d1cc1bc61b63369d3e562ab3694"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Oct 17 21:21:22 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Oct 18 09:39:38 2025 +0200"
      },
      "message": "CA: add winner columns\n\nChange-Id: Ia6ec4821d08352f2044e8a7101880d75419d995d\n"
    },
    {
      "commit": "e34a8be915170d1cc1bc61b63369d3e562ab3694",
      "tree": "f17d8a4185aba582c01b0f0b58c9e857707b3e4e",
      "parents": [
        "e31322eb3446a24a30fb091b92ffe8ffd0c06d09"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Oct 17 20:13:42 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Oct 17 20:51:30 2025 +0200"
      },
      "message": "CA: support named vc list and vcLabel parameter to specify labels\n\nChange-Id: I983e589e9231f678141e8798effcfcc652ca63f5\n"
    },
    {
      "commit": "cd4521884fd23558757338fcbbf6e67702f9a780",
      "tree": "db32df9430c4d52b629dbe9368782d8174f8a9b0",
      "parents": [
        "336c85d5c1d3986e1846c2b7e5dee6a4c40192e9"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Oct 09 13:28:41 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Oct 09 14:53:00 2025 +0200"
      },
      "message": "Fix fetchAnnotations getting all morph values\n\nNow using xml2 package to properly parse the query result\n\nresolves #30\n\nChange-Id: I827cae94791f14ce0955352fd64fd7e5683a92e6\n"
    },
    {
      "commit": "39da9dcff91c473fbf9211e18d821ba62ccb1d2c",
      "tree": "923ba6d5b0918ef75661852730dc2770d117ad50",
      "parents": [
        "1a295ad676d3e47ca4098f19af6b0a6ab00bb6f1"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Sep 10 13:54:40 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Sep 10 13:54:40 2025 +0200"
      },
      "message": "Allow overriding verbosity default via env var KORAP_VERBOSE\n\nChange-Id: I8a2e32f24c22f2039b335cd000c610ba5ff3da08\n"
    },
    {
      "commit": "b6b34756d7cde0fbe12f6964ad640afb65fcfcd7",
      "tree": "875330f6111fbf2da2a8d822fef225f7328350f4",
      "parents": [
        "2baf5c53cdb431735ce4006182344d817f6fa4dd"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 05 17:11:06 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 05 17:11:06 2025 +0200"
      },
      "message": "Add test for parse_xml_annotations\n\nChange-Id: Ib34b18aedd3fd0b52dea99141540bb7da2700b00\n"
    },
    {
      "commit": "2baf5c53cdb431735ce4006182344d817f6fa4dd",
      "tree": "f8df273f2ba60514760ae9b3614486c7e334a321",
      "parents": [
        "93787d52e349fae2d6b1a9e2a2ca07bf1ad5dd60"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 05 16:41:11 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Sep 05 16:41:11 2025 +0200"
      },
      "message": "Increase fetchAnnotation test coverage according to codecov\n\nChange-Id: I0c8c0f0e7196082ddb42a37001f62a2958ea13e1\n"
    },
    {
      "commit": "93787d52e349fae2d6b1a9e2a2ca07bf1ad5dd60",
      "tree": "d42eabe0fd2b40c13e21cc31cebae12c301315d4",
      "parents": [
        "560b591ea7e4acefff9892d2a1f10cda0d139340"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Sep 03 13:33:25 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Sep 03 13:33:25 2025 +0200"
      },
      "message": "Add overwrite parameter to fetchAnnotations\n\nChange-Id: I395dbcb44a18e04679232bdc65b4e2912836e4fa\n"
    },
    {
      "commit": "560b591ea7e4acefff9892d2a1f10cda0d139340",
      "tree": "d0516854094348a767048130e087f6f105e6e497",
      "parents": [
        "705b9494b570e9142d2210290286cf0e0e97eb54"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Sep 01 17:36:13 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Sep 01 17:36:13 2025 +0200"
      },
      "message": "Fix annotation parsing in fetchAnnotations\n\nResolves #27\n\nChange-Id: Id0fc0cc99835926f75e2679ce10c407763bf7dc3\n"
    },
    {
      "commit": "7ff770ec53764d305a3691efc87136523cbae27b",
      "tree": "0384d51e335ae5a3410bd63c726c9b3548493c0f",
      "parents": [
        "c643a12688aa6713772dba72e788c7cd22230240"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jul 18 19:07:10 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 21 11:39:30 2025 +0200"
      },
      "message": "Handle multiple morpho annotations\n\nChange-Id: I8afb7acd389639499b9da9d3ffa17ee09f4fe954\n"
    },
    {
      "commit": "a29f3d4e72815d0e896ee9a65b3482fd9c6d08a7",
      "tree": "146be7e57fd831dc030b209f92277b70d7c8faea",
      "parents": [
        "ff712a997522ed17f9a5d4d1dec94873a497ce07"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jul 18 10:14:43 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 21 11:39:30 2025 +0200"
      },
      "message": "Parse annotations into lists of vectors\n\nChange-Id: I9ee3a5c10ff997380b9661dd603f8ec83c6a91a8\n"
    },
    {
      "commit": "2deadd8a2d40689eb599ce2ecef1c7a222943a5e",
      "tree": "015c47992834b4e4cb83caddd6aaeb4b1a49045c",
      "parents": [
        "ef9082852c0580638df6ba1e83e21b8ae76fd5da"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jul 09 08:53:33 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 21 11:39:29 2025 +0200"
      },
      "message": "Use English Wikipedia instance for ca doc test\n\nChange-Id: I811d9d503fdc3dc4c69c4e3f34535c8d1b2d1ef0\n"
    },
    {
      "commit": "c9cb6778e4f113e471d05edc9183a31c66ce5143",
      "tree": "efe3567d5f036ca617d42caf27edf82bedb0dc82",
      "parents": [
        "a28a99ab5775a0b588b86f380a73178f85e00044"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 15:55:00 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jul 21 11:39:11 2025 +0200"
      },
      "message": "Skip llm doc tests if offline or no API key is set\n\nChange-Id: Icbbae2d52985db2303d6651156c70ae8bb622d33\n"
    },
    {
      "commit": "a28a99ab5775a0b588b86f380a73178f85e00044",
      "tree": "3fe3ff5fbd45317094713372897eaccb651051ed",
      "parents": [
        "b8839d3a12d9efd7cf99323759fa67b12f26c225"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 14:52:47 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 14:52:47 2025 +0200"
      },
      "message": "Include tidyllm into package suggestions\n\nChange-Id: I5756c5259f9d0215cd290c092c3d2aa84ad0d7c7\n"
    },
    {
      "commit": "b8839d3a12d9efd7cf99323759fa67b12f26c225",
      "tree": "183dc26c87f0e6ed35d5a2d72dc05dc64437fe31",
      "parents": [
        "c1202d09ebf2b286c9e3cecc50f9510288068723"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 14:42:30 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 14:42:30 2025 +0200"
      },
      "message": "Switch to creationDate in Readme.md and DocPrompt test\n\nChange-Id: I765b7a976680ace8038cac48749063470b688806\n"
    },
    {
      "commit": "c1202d09ebf2b286c9e3cecc50f9510288068723",
      "tree": "b503bbe1046f46cbc5c43f9d79f7e4830f3be5da",
      "parents": [
        "768d833dd5a466552bb0cbfb5f8f99731010e36e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 13:28:51 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 13:28:51 2025 +0200"
      },
      "message": "Default to claude-3-7-sonnet-latest\n\nVery reliable and very fast.\n\nChange-Id: If893575bc7946a7eb77552114ab8c37bf9fa7b4a\n"
    },
    {
      "commit": "768d833dd5a466552bb0cbfb5f8f99731010e36e",
      "tree": "1b11ea127b485af7896e1426aae8c9a71852857d",
      "parents": [
        "345211ae499e8cda057711db328a3fc3fe7cbdaf"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 13:24:21 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 13:24:21 2025 +0200"
      },
      "message": "Add Gemini support\n\nChange-Id: Ic669dd68e170c97e94c4d12bda0b352ffe2d3afe\n"
    },
    {
      "commit": "345211ae499e8cda057711db328a3fc3fe7cbdaf",
      "tree": "a101dee70470a95bc8c64a7507627a136da2e0db",
      "parents": [
        "8e1b77d48c509545f05a94cc76921882d8fda13b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 12:52:24 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jul 06 12:52:24 2025 +0200"
      },
      "message": "Use tidyllm library\n\nChange-Id: Ib5a914632aecbe8a1b1250edac7135d8c2c32d3d\n"
    },
    {
      "commit": "8e1b77d48c509545f05a94cc76921882d8fda13b",
      "tree": "7e3b3bc69c6c1ed347bda2594b2e4db20df1b747",
      "parents": [
        "e759b343fb01b48da838d3754de0a9f4960ec1fb"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 20:21:59 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 20:21:59 2025 +0200"
      },
      "message": "Make LLM model changeable\n\nChange-Id: Iaf9abda64a6cf1a26c3b54fdad73b13ff3f09c51\n"
    },
    {
      "commit": "e759b343fb01b48da838d3754de0a9f4960ec1fb",
      "tree": "089d0f6f1b11b9143d9253e461df8596488eea6c",
      "parents": [
        "10dcfee64b367f46ea24d1440f09e4debde4eec2"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 19:48:20 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 19:48:20 2025 +0200"
      },
      "message": "Actually run the code in in the LLM doc tests\n\nChange-Id: I9293a0346350a7102c62d5904aa5840e1292b500\n"
    },
    {
      "commit": "10dcfee64b367f46ea24d1440f09e4debde4eec2",
      "tree": "f9c07f82404017c0acbf3bb718ac0ca7037d70c4",
      "parents": [
        "06143703ff293f3bdb7161e717ac144b6df9fba6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 19:13:27 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 19:13:27 2025 +0200"
      },
      "message": "DocPrompt test with instance wiki\n\nChange-Id: I36739976798a7aa82be5b4d0598324b2fee1f458\n"
    },
    {
      "commit": "06143703ff293f3bdb7161e717ac144b6df9fba6",
      "tree": "725fbae02767c504d9cae74b2b9a9047e241c42c",
      "parents": [
        "8638dee93bbbef48e1fcea8d7fdaf30715a6f3a4"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 17:49:31 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jul 05 17:49:31 2025 +0200"
      },
      "message": "Add first documentation CI test\n\nChange-Id: I9e045102cae0ce6a3c3823308f41a520a273cdca\n"
    },
    {
      "commit": "3ddd206e66d430e042881a6dd4764ffbbaf9ff71",
      "tree": "dfee28717d6364e10c4c9f44e5a88685ea0dca3e",
      "parents": [
        "bd9796f66998fe285999c54c3d9c3f0ba7ccf9ca"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 17:11:52 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 17:12:16 2025 +0200"
      },
      "message": "Skip tests that require keyring on CRAN\n\nChange-Id: I03d374173455d0977a8dbcc3c70b8efda61cbff8\n"
    },
    {
      "commit": "bd9796f66998fe285999c54c3d9c3f0ba7ccf9ca",
      "tree": "26dbece895af3e31343d22ee45ace7087df0ba14",
      "parents": [
        "5170411a03c08fb33d206418bc1a5c55048521f6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 15:40:08 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 15:40:50 2025 +0200"
      },
      "message": "Tests: setup and check keyring\n\nChange-Id: I9b71d0b3ee486f403dc72abcc67c2104627f9cd4\n"
    },
    {
      "commit": "5170411a03c08fb33d206418bc1a5c55048521f6",
      "tree": "d0b7faee124aa53f2a7d7c5469c44959747c1b39",
      "parents": [
        "e70faf42710491c677e111d427adae1c1e9c0345"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 14:32:16 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 26 15:40:50 2025 +0200"
      },
      "message": "Tests: make sure accessToken is NULL\n\nChange-Id: I9cc4407cdeaf0a10e2b209f7604943f3a4a38bde\n"
    },
    {
      "commit": "e70faf42710491c677e111d427adae1c1e9c0345",
      "tree": "38cd9874a7265df9495cf561e56e58d247855ffa",
      "parents": [
        "a267c4278415adb7a1ee35f7ecd11ca6a24f679e"
      ],
      "author": {
        "name": "Marc K.",
        "email": "morckx@gmail.com",
        "time": "Thu Jun 26 10:55:28 2025 +0200"
      },
      "committer": {
        "name": "Marc K.",
        "email": "morckx@gmail.com",
        "time": "Thu Jun 26 10:55:28 2025 +0200"
      },
      "message": "Make sure accessToken is NULL in corpusStats tests\n"
    },
    {
      "commit": "ea34b815e3fce34e2d98735cc96c9b242f2931c6",
      "tree": "dae510b499c850be9c4a61840316d74b8057071c",
      "parents": [
        "365660ee9a1faef2cecf899c38bc2bbd57c5226c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 15:49:00 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 16:53:18 2025 +0200"
      },
      "message": "Fix ci compatibility and error in as.alternative cospusQuery\n\nChange-Id: I45817afd9bbf57f72bfbcd9c638a9d40b8e79055\n"
    },
    {
      "commit": "365660ee9a1faef2cecf899c38bc2bbd57c5226c",
      "tree": "fc7a47914e203909f7f9b84eb489d09af6359073",
      "parents": [
        "ec1bfc8c8ad417b5a08bb973bf94c1d24760b79b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 15:09:55 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 15:09:55 2025 +0200"
      },
      "message": "Harmonize ETA logging\n\nChange-Id: I64e330f2e80cfdc21699f790877af21fdd23f7f2\n"
    },
    {
      "commit": "24799fdd4200210250c61b448b0b5bd36d6797fc",
      "tree": "5430d65c2dca69a97ef75360c3f1bb199872c46c",
      "parents": [
        "36117de1521c110e084ffa41cccae8daf013806b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 14:15:36 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 25 14:15:36 2025 +0200"
      },
      "message": "Use calculate_eta function in fetchNext\n\nChange-Id: I210a51fc4415cfbd36f721fc0c95585ec0be531c\n"
    },
    {
      "commit": "e8c8e1a59aeb89b5b94c0c00ad6bf2f9c6b546fa",
      "tree": "22a59888762c9d3c20b37d80803a4801bb347940",
      "parents": [
        "4152c84e27ca389a9e46957eb87640513cafe025"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 19 17:37:59 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jun 19 17:37:59 2025 +0200"
      },
      "message": "Centralize ETA logging\n\nChange-Id: If3661c8a9be059325d9cb86ddf4421e05ce72931\n"
    },
    {
      "commit": "ef0e939028bebedb31e86c627c90aee6b5bc4ca9",
      "tree": "ea8b74332acce7844091e5ca80eda0083d98d1e7",
      "parents": [
        "1087dcf9f38e7b5ca1339ecdccbb646e9c824a88"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 18 12:21:49 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 18 15:25:38 2025 +0200"
      },
      "message": "Build fetch API URL using httr2\n\nThis also prevents errors with numbers getting converted to scientific\nnotation via paste0.\n\nResolves #25\n\nChange-Id: I92d94fa27119471d5659ac4db9a34e4571794489\n"
    },
    {
      "commit": "7de5f32dfe344de8e2bc98d50de80803e18fbc92",
      "tree": "43e7d7d7aedef71a850a3d74cb15ae0046d75905",
      "parents": [
        "b1dec01760a046f5ab627301619b8c57097a8164"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:17:22 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:17:22 2025 +0200"
      },
      "message": "Improve test coverage\n\nChange-Id: Ife111b053e20391dcffdc2335de52c41b24649be\n"
    },
    {
      "commit": "b1dec01760a046f5ab627301619b8c57097a8164",
      "tree": "842cbe58c8ab608a4b537c2b4cc25a395ec8eee7",
      "parents": [
        "e9e18bd9d801298b94773367f1f199fb237be325"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:16:57 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:16:57 2025 +0200"
      },
      "message": "Code cleanup\n\nChange-Id: I084eb212ae4a1fdbc563e686ea6c9de55fc75914\n"
    },
    {
      "commit": "319e74659c66d809cf6081c549a8290b6562c8f4",
      "tree": "cddd3cfed1784f1ec500d207e4130cf937508670",
      "parents": [
        "3b3e7cd32955a7bfd0dae03a340620d0b916309e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:14:03 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 17:14:03 2025 +0200"
      },
      "message": "Keep row order constant in ci function\n\nChange-Id: I46f6509a1f4b3defb62ef8c42653f6e1f76e10be\n"
    },
    {
      "commit": "3b3e7cd32955a7bfd0dae03a340620d0b916309e",
      "tree": "16caaba4b1a820349c3a4e688079b227b01adb65",
      "parents": [
        "6dfeed9bd68d0b36be2c47718c1b29a17c8c2d1a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 09:59:53 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jun 04 09:59:53 2025 +0200"
      },
      "message": "Make KorAPConnection timeout test more stable\n\nChange-Id: Ia1c3135bb55a3b326c263e6b16792682c8e2cb5c\n"
    },
    {
      "commit": "6dfeed9bd68d0b36be2c47718c1b29a17c8c2d1a",
      "tree": "ede04b9396f6b33babf58668d041c96b81957b22",
      "parents": [
        "71c30d80c6334c8c7a4b772485ca281e4664a5f3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jun 03 11:58:06 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Jun 03 11:58:06 2025 +0200"
      },
      "message": "Factor out ETA logging\n\nChange-Id: Ic8b1600395018aa79701e29a38c4ec22d598337a\n"
    },
    {
      "commit": "71c30d80c6334c8c7a4b772485ca281e4664a5f3",
      "tree": "10a99ea817464dfe02d4062ba827b8cdaa67f692",
      "parents": [
        "6ef61a8d76c42dd79c4ec0b109330813a62c36a3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat May 31 16:27:53 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat May 31 21:57:43 2025 +0200"
      },
      "message": "Add ETA log to corpusStats\n\nChange-Id: I1f2b511c489e1ab6770e742baf9f76e5300a29f7\n"
    },
    {
      "commit": "6ef61a8d76c42dd79c4ec0b109330813a62c36a3",
      "tree": "4e6a2266544c998623e9f73b08a65a257c944d62",
      "parents": [
        "7638ca4e6534700ae1236b2808ed8d71d32ea251"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu May 29 16:07:03 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri May 30 15:14:47 2025 +0200"
      },
      "message": "Add ETA logging also for corpus/frequency query\n\nChange-Id: I6bc9b65db23c1e35a0764053c2e28faa1f442655\n"
    },
    {
      "commit": "7638ca4e6534700ae1236b2808ed8d71d32ea251",
      "tree": "bf512ac3d61cc4c9c7aa97d341c1ff4a72a01125",
      "parents": [
        "623d7128f89a24954bac5fcf18185af70e3e778c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun May 25 13:18:16 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun May 25 13:32:03 2025 +0200"
      },
      "message": "Round benchmark also in freqQuery log\n\nChange-Id: I3ccc833367e7f29e4fb0948b782ca0a6a49d1916\n"
    },
    {
      "commit": "623d7128f89a24954bac5fcf18185af70e3e778c",
      "tree": "b631b3f510fddec1f595e41a9954d242fe0a5636",
      "parents": [
        "16b54485c1f3941c26325a80baf44d880442f69c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun May 25 12:46:12 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun May 25 13:01:29 2025 +0200"
      },
      "message": "Fix ETA logging in fetchNext\n\nChange-Id: I8fc6047f3b5c53f00c9da61641e0983cbf24f70d\n"
    },
    {
      "commit": "5057f50fb67cdca38c23a04e7fc91f6e0ce2d637",
      "tree": "854afebbde0fa259b3279c14c304a0be9d3a304d",
      "parents": [
        "3b307c240c828eb5025fdd4ddbadd4eaaaded45e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 06 16:55:57 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 06 17:58:49 2025 +0200"
      },
      "message": "CI: fix tests\n\nChange-Id: I48db4254cc47bc781967c76d2527fbfb48d95848\n"
    },
    {
      "commit": "76dee3165bfb43c51e3b6828e1b05b61e3fc8c0d",
      "tree": "3ec683b908a30dffde8e005b866cf902216de02c",
      "parents": [
        "943da99b14d2254d23a292a24571ee5001f50e9e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 06 16:24:47 2025 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Apr 06 17:58:49 2025 +0200"
      },
      "message": "Do not test no longer exported removeWithinSpan\n\nChange-Id: Ia71b5fa53f9bcbdd6e55845bbb0ac255dfe664eb\n"
    },
    {
      "commit": "617266df8d100c6d6d79701291c4565e7e8ef333",
      "tree": "3c91f968c7ca163f924635d4dafb3969e82ca17f",
      "parents": [
        "d5823b00016fd04e6d5f64d850c532f51b3e5c0b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Feb 27 10:43:07 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Feb 27 11:45:23 2025 +0100"
      },
      "message": "♻️💄 simplify KorAPConnection class instantiations to modern syntax\n\nUpdate all class instantiations from `new(\"KorAPConnection\")` to `KorAPConnection()`.\nThis is possible with R \u003e\u003d 4.0.\n\nChange-Id: I01131fb32045e084cafbb9e05cd8ba99f8f20f1b\n"
    },
    {
      "commit": "dbdbb1fb9d0e93412521b8d64db496ae530483c3",
      "tree": "96b1c37b42e639e78fcb080fe0a476cabeaa1e03",
      "parents": [
        "62625dddc01b194ca5a3e9e5d209408cab7a1038"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Feb 19 10:33:06 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Feb 19 10:42:42 2025 +0100"
      },
      "message": "Subtract redundant smoothing constants in mergeDuplicateCollocates\n\nChange-Id: I1b042974735c4b2e9a664e21d1eb87cf0794d5c4\n"
    },
    {
      "commit": "fabc239ec6ae13d6569f81a176948a25f5871be4",
      "tree": "c1b04724ccff43e01f77ad1beab7b3b40ff9021b",
      "parents": [
        "80dc643321625204dd234198596c1efc85a9a0a7"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Feb 07 17:03:06 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Feb 07 17:03:06 2025 +0100"
      },
      "message": "Explicitly set accessToken to NULL in all tests\n\nChange-Id: Id98d918b9668a8ea5720e790835a34604c52b350\n"
    },
    {
      "commit": "80dc643321625204dd234198596c1efc85a9a0a7",
      "tree": "26e9e8bcbc91dbee4e550c647fb808ea0644d4af",
      "parents": [
        "6184c42068ba9b69d1ad166e126498b53778e6a6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Feb 07 16:57:40 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Feb 07 16:57:40 2025 +0100"
      },
      "message": "Always select textSigle in corpus queries\n\nResolves #24\n\nChange-Id: Iba859868b3e21ad3fb3d840f92441e65369a2f86\n"
    },
    {
      "commit": "1b53047e077aed30f0ce0ffa612af2c23d874e81",
      "tree": "d542c0c5cda2318b29c33e3beeb03dd1550f8542",
      "parents": [
        "62b1789aad816ea37777a66508b1713ec756a2c3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Feb 04 10:46:49 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Feb 04 10:48:17 2025 +0100"
      },
      "message": "Make sure http fails are always handled gracefully\n\nhttr2: :req_error does not catch timeouts, and maybe more. So wrap req_perform in tryCatch to be on the safe side.\nChange-Id: I913ea571e5fcbf2aa5adf1a455bfdfed487af05e\n"
    },
    {
      "commit": "307eb4ec135aee2472dffc7505c2ac4ddd46f2b3",
      "tree": "c164fb9dbccea741eeb17cb9f6a24edac375c7ae",
      "parents": [
        "b73ca0f34a5c70bf251ef85574f3c4086c6a9f99"
      ],
      "author": {
        "name": "Teun van den Brand",
        "email": "tahvdbrand@gmail.com",
        "time": "Fri Jan 31 11:27:56 2025 +0100"
      },
      "committer": {
        "name": "Teun van den Brand",
        "email": "tahvdbrand@gmail.com",
        "time": "Fri Jan 31 11:27:56 2025 +0100"
      },
      "message": "adapt test\n"
    },
    {
      "commit": "f91295915e33d4bb40d4d736cbdcbdf3bd90b66a",
      "tree": "e2e64c52acb3450c43ad91b7f7734b5da40dd243",
      "parents": [
        "a4f51d766b1e3abf68aa7e38047bb516659d11f3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jan 26 19:17:54 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jan 27 17:48:27 2025 +0100"
      },
      "message": "Replace httr with httr2\n\nChange-Id: I196d7eed6560a560a74d31cdaba8715c89e4b4cf\n"
    },
    {
      "commit": "16ccf11e4aed1d92a47bbc7236a8b0e40e9dc411",
      "tree": "468256600dba8ac68b9efba8ced6618d874f3965",
      "parents": [
        "8a6df6033e72ccc97a0e462dcb8f50fb939e14b5"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Jan 26 13:25:27 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Jan 27 16:25:33 2025 +0100"
      },
      "message": "Use logging colors and start with green\n\nChange-Id: I98178fd80c782895615f81e61f97119b86a821fa\n"
    },
    {
      "commit": "3b61dd050c7f54156f92fa813ca9cd3bd176d416",
      "tree": "3feee48df8e09cbd151f8b6883e40fca385f1926",
      "parents": [
        "6a02e4c333eb2a90618e5270733041b8e008afe7"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 09 21:49:36 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Jan 09 21:49:57 2025 +0100"
      },
      "message": "Add custom metadata query test on instance KED\n\nChange-Id: If03b188b26c7cf5a218ff53c580237f5339e7905\n"
    },
    {
      "commit": "9707c752e61d2a57fc4c43745ac7f862628911f4",
      "tree": "57563af8f0e7d416f34b4cd571e5af39fcd36175",
      "parents": [
        "0447da0fdb2fe9d770a4c56f182f3fc901b1218b"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:51:35 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:51:35 2025 +0100"
      },
      "message": "Fix typo in test-collocations\n\nChange-Id: I1f55b8eabb14bdd68f07c219878b092d32e87760\n"
    },
    {
      "commit": "0447da0fdb2fe9d770a4c56f182f3fc901b1218b",
      "tree": "d004cb21781141b05d75b9df1c4eccc9cbfdeea0",
      "parents": [
        "3cd2c6c6648552955a94bf635de848ecfff83561"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:51:09 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:51:09 2025 +0100"
      },
      "message": "Fix matchStart and matchEnd for queries with focus\n\nChange-Id: I5de1e983ab78fdeffdf77685d1360a86f063b65a\n"
    },
    {
      "commit": "3cd2c6c6648552955a94bf635de848ecfff83561",
      "tree": "a05d11a2181caa6e372c791d2798aa1cdb8676c8",
      "parents": [
        "fc35f6064f6edbec6688a60543c41c43a1cb04e5"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:35:39 2025 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Jan 08 20:39:28 2025 +0100"
      },
      "message": "Fix token column in corpusQuery results\n\nChange-Id: I439480381684abd0a9dbaa9bf19feff06c62fd2c\n"
    },
    {
      "commit": "f48811229c96fa0dc4288d494dba917e9616437b",
      "tree": "7b00feec712cda9f3c1ff8887fd80f1d3331615e",
      "parents": [
        "e5374f2d084e63309105093994e9b8c83f9d3521"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Dec 17 14:55:39 2024 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 18 15:55:37 2024 +0100"
      },
      "message": "Add matchStart and matchEnd columns to collectedMatches in corpusQuery result\n\nResolves #22\n\nChange-Id: I6af9de503e5911cbe5c566b0fae529cfba7b764c\n"
    },
    {
      "commit": "06e5b97291170b0dc508db678209f3d8cf7a9952",
      "tree": "8e8160c6bdd72246782dc6c2d076e014eabdd2f9",
      "parents": [
        "05664aaf5c2470e992bd36e229d9558f0014d9fe"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 17:22:06 2024 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 17:22:06 2024 +0100"
      },
      "message": "textMetadata: concatenate list values metadata fields (tab separated)\n\nChange-Id: Icd1e39b71d0ab013989a0baad75ab94a608ed32b\n"
    },
    {
      "commit": "3a4ea0b3b3cfe8cfb4e0d9941625d646d80d791a",
      "tree": "b88c5af399cc9589c5218cc66ef1cf8b0d6d08c9",
      "parents": [
        "0b1c64a4a524d90992e6ce158486e39fea382a9a"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 16:08:03 2024 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 16:08:03 2024 +0100"
      },
      "message": "Make test for consumed time more tolerant\n\nChange-Id: Ic5086111cfa7cfd28acbb3cc2d88639dd7c8f192\n"
    },
    {
      "commit": "0b1c64a4a524d90992e6ce158486e39fea382a9a",
      "tree": "103faa11f6a53d604928982e7fee7e6522c24871",
      "parents": [
        "74cb269c3c5fd205a0cce7ef06246a2a37d509c3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 16:03:42 2024 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Dec 07 16:03:42 2024 +0100"
      },
      "message": "Fix field name in corpus query test\n\nChange-Id: I22bdc3c6dd9276bfe0327f5b507365b07b4c622b\n"
    },
    {
      "commit": "e8bd49bcc3df2a6269d2ec47710c7c5a80303131",
      "tree": "10b8718db8af01c8a4834d4ca811347871da9660",
      "parents": [
        "8d8e312baaea485e01701e693a778e1404e1cbe6"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Jun 28 07:24:44 2024 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Jun 29 11:09:17 2024 +0200"
      },
      "message": "In corpusQuery Use fields API result as metadata\n\nResolves #19\n\nChange-Id: I83e4f66efc06d62a2aec10a7719faafaadab15bb\n"
    },
    {
      "commit": "6ddece4714ebf6bd37de267c4c6260059476664d",
      "tree": "2ad94f0072feb934c9208fda6ca43ce94bad99a5",
      "parents": [
        "1c994ee2c2f3670dddaed8cd7863adab7f0da81e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 18 17:02:36 2023 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Dec 18 20:00:17 2023 +0100"
      },
      "message": "Add textMetadata function to retrieve metadata via sigle(s)\n\nChange-Id: I34714bce07635732d0534f83a48865d6d64903da\n"
    },
    {
      "commit": "1c994ee2c2f3670dddaed8cd7863adab7f0da81e",
      "tree": "3c9e333890fe37cf23ce3cf20f92848f0e55659f",
      "parents": [
        "58bffe83717d451201e1a543162dc183fe01a4c1"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Nov 19 11:45:30 2023 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Nov 19 11:46:13 2023 +0100"
      },
      "message": "Fix url encoding of ampersand in corpusStats value\n\nChange-Id: I17e72a979df5ed69f8de2fd762dd33fd121214c9\n"
    },
    {
      "commit": "881c0287091bddb0e0be9022d59fd76e8a20819e",
      "tree": "a8d9af26e56c5409c3c2bd323ab0802511520bd5",
      "parents": [
        "a47d1503038a86d5104e14d7b493e3d19ca904d8"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Apr 18 15:57:44 2023 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Apr 18 16:11:12 2023 +0200"
      },
      "message": "Reduce timeouts in tests to make sure they don\u0027t sum up to over 10s\n\nChange-Id: Id3dd3edf44f94b854e942bf57e9ea139d2984b11\n"
    },
    {
      "commit": "f650629fa69ab10979f2ffe2652da77599caaf70",
      "tree": "e260e09aec02b551822df7bb2fba62ed3857f284",
      "parents": [
        "9cdb4be633e77284406e2e9b5034192ac96b7e43"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Apr 18 07:06:54 2023 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Tue Apr 18 08:02:38 2023 +0200"
      },
      "message": "Explicitely test that Bad Gateway errors result in graceful fails\n\nChange-Id: I267fceca9e5b2ce64e01291842f3d587624bc3ac\n"
    },
    {
      "commit": "9cdb4be633e77284406e2e9b5034192ac96b7e43",
      "tree": "fdf4eb9411f6e69421852a8a550cf05ea805d88f",
      "parents": [
        "e222b53e1341e53f16bc2473baa1b9fbceec6d24"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 17 19:20:09 2023 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Mon Apr 17 19:25:51 2023 +0200"
      },
      "message": "Also expect invalid json when testing graceful tinmeout fails\n\nThe probability is low, but given enough tests....\n\nChange-Id: I15f8a60c70f95aaa3f6c2729027addf584a6eff5\n"
    },
    {
      "commit": "83d0af3c6ac6050f9d996cfd1e33329ceb94478c",
      "tree": "531ee1e2393085c0a011be784f57d05a1944f907",
      "parents": [
        "a4675723b2c65416da37d3bb19975e4586c5c45d"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Feb 24 12:49:28 2022 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Feb 24 19:22:08 2022 +0100"
      },
      "message": "Skip tests that require internet if offline\n\nChange-Id: I679362d9d3595c8212c20d2086d92afcbd58d13f\n"
    },
    {
      "commit": "a4675723b2c65416da37d3bb19975e4586c5c45d",
      "tree": "a4c472002162948974fa24f702f43c3fffd5f79e",
      "parents": [
        "5295e1bd7f0dc9866a5aa17921aaa2af8f0e6042"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Feb 23 23:55:15 2022 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Feb 24 19:18:29 2022 +0100"
      },
      "message": "Make sure to always fail gracefully if server not accessible\n\nSee CRAN policy:\n\nPackages which use Internet resources should fail gracefully with an informative message\nif the resource is not available or has changed (and not give a check warning nor error).\n\nat https://cran.r-project.org/web/packages/policies.html\n\nChange-Id: I0c346c75786b8f5392694337254d6f19f91d7caf\n"
    },
    {
      "commit": "bdb95274826169e9316e76c767dd4a2249496a04",
      "tree": "02fdd0899ae621d5242ce40858bfb1219e57ad95",
      "parents": [
        "cc8c538c434ae4f2c5a95dcbe167ff57a037561e"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 17:42:21 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 17:42:21 2021 +0100"
      },
      "message": "At least touch recursive CA in tests\n\nChange-Id: I8d112d6df4bbde7cfa1f25da3dabd0094273eff5\n"
    },
    {
      "commit": "cc8c538c434ae4f2c5a95dcbe167ff57a037561e",
      "tree": "2cccb945cb9347e7a36c65d1c65c64af393c2d78",
      "parents": [
        "d6314b65c563ffa5cf77bc6b328c05c10e53e8ea"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 17:23:22 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 17:23:22 2021 +0100"
      },
      "message": "Add test for geom_freq_by_year_ci\n\nChange-Id: I108f79cea02d96a832f4b9e57ab4968595f0126d\n"
    },
    {
      "commit": "d6314b65c563ffa5cf77bc6b328c05c10e53e8ea",
      "tree": "28dfaec292d561f33647a14c315ff358863c718b",
      "parents": [
        "dadfd919ae90ff4b13284059dcd6bcd3bce1a20c"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 12:49:09 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Wed Dec 22 12:49:09 2021 +0100"
      },
      "message": "Improve test coverage in CA\n\nChange-Id: I04a18720a4988ade4c964eb7bfc177542b2777c0\n"
    },
    {
      "commit": "581a29bff65254a76be746256a0b756ced6d9dc1",
      "tree": "28ea67e46488d48e2396acce1c1ee99545e9482e",
      "parents": [
        "d07bf197d23200ba05e99ef56dec8e90fc1905e3"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Sep 04 20:51:04 2021 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Sep 04 20:51:04 2021 +0200"
      },
      "message": "CA: warn if no access token present\n\nChange-Id: Iec2e57edc7bb62bfed23672ada549252ba03518e\n"
    },
    {
      "commit": "a3fedbeb2068cdeb5181035163b9213ba87ede28",
      "tree": "b33d59af21304bf7259d13c7c06ca3070a8ff4a7",
      "parents": [
        "b022a4ed8175a250fe476d99c0840a3d38b46483"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Sep 04 20:24:03 2021 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Sep 04 20:24:03 2021 +0200"
      },
      "message": "Run CA tests without access token on CC-licensed data\n\nChange-Id: Ic8cdc479639308e88f55d7427d95bca0939b4c1f\n"
    },
    {
      "commit": "dbd431a9f00425d5514582b069abd5178fd5ed81",
      "tree": "2e1fab70b1f313d282cc39fb6c566a5e7ea97c10",
      "parents": [
        "6dc6146b060857f02a662b31d490e81dd1a16689"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sun Aug 29 12:17:45 2021 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Sat Sep 04 18:09:20 2021 +0200"
      },
      "message": "Add full collocation analysis (client side only implementation)\n\nResolves #2\n\nChange-Id: Ib01d89a72b44ff06816b21532b7ea709a4e837b0\n"
    },
    {
      "commit": "199c8b7c81782c0fa22150bb0a1df8d4362e819f",
      "tree": "279d069fa636d1cb17c5fc8a6e9b29a7fed08ed5",
      "parents": [
        "0bb2152dc1881fc74a8382296c5beeed96fff8cb"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 27 12:12:18 2021 +0200"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Aug 27 12:32:55 2021 +0200"
      },
      "message": "Encode strings to UTF-8 for URLencode\n\nFixes umlaut queries on windows.\n\nResolves #3\n\nChange-Id: Ic2ec22a595b5e167abbf374ce4c8e8375837f0b9\n"
    },
    {
      "commit": "008580843814941bfa0330e3ad44c82ae92988b7",
      "tree": "f2d3b1ec02e978bb9f9c03128c928bc2e8d20321",
      "parents": [
        "65797d5650cb6dd59f5d550b88ffe2456627bac5"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 12 09:27:35 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 12 09:29:05 2021 +0100"
      },
      "message": "Fix calculation of log-dice coefficient\n\nChange-Id: Ie9c7669ad3383d78ca5e8850681f3ecf22fc1411\n"
    },
    {
      "commit": "8cc6fd654db639a4bb3ecab21c849f10a0a7b4ac",
      "tree": "e35999317e44fb331bc22e23781748e1db4ccc7f",
      "parents": [
        "7aa4f1952a5fe86f330d8224f4c28a3603bf2179"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 10:49:48 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 14:14:10 2021 +0100"
      },
      "message": "Add more tests for misc functions\n\nChange-Id: I39210ef2d968eb5d5a671e24cbf3f1e4b9293d50\n"
    },
    {
      "commit": "5fb892e22e9246bc4a32a5c3a62387e9cf1a58cc",
      "tree": "d59591e8c8c66b626cd51c8fa233e042997ad4e9",
      "parents": [
        "10bcc91fdfc243b5e68019538712e6b599689328"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 08:18:25 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 09:34:54 2021 +0100"
      },
      "message": "Drop support for orphaned plotly package\n\nChange-Id: I59e5339c613fc1eef89bb81afc0c260e2f60ed16\n"
    },
    {
      "commit": "5a61f01306e65b032015849638f690cb29022c20",
      "tree": "91dba41153de135d9e3a68bfeabe0f327a5bd1c0",
      "parents": [
        "43ab04f9e04c9da1fcdd7aeb580703b90c51516f"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 04 18:25:27 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 00:42:41 2021 +0100"
      },
      "message": "Skip access token failure tests if access token is not null\n\nChange-Id: I3f14ac87f4c903b24d9c30167b11de51232cdc67\n"
    },
    {
      "commit": "e20383224d88cb02a65cb800e9cf196588d1d3cc",
      "tree": "63c5ebc566db11d91779b18447969cead761359b",
      "parents": [
        "e02fef51e42085feedb8d3f5254c861b9c4721b8"
      ],
      "author": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Thu Mar 04 18:24:02 2021 +0100"
      },
      "committer": {
        "name": "Marc Kupietz",
        "email": "kupietz@ids-mannheim.de",
        "time": "Fri Mar 05 00:42:29 2021 +0100"
      },
      "message": "Association score funtions as parameters to collocationScoreQuery\n\nalso factor out hc_add_onclick_korap_search\n\nChange-Id: I48f93761b9bda4e21669a99517c17c55cf3436ee\n"
    }
  ],
  "next": "06f35969193a4cfc0268916519d8e9eaf387af10"
}
