)]}'
{
  "log": [
    {
      "commit": "9c2cd9622ed62b0721255b3bf7e109179768e03d",
      "tree": "59133737a4cde013d29c048d46f33250751502ac",
      "parents": [
        "962bf05ebe8c66e67cf5a40d28349f06e906ded7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 20:21:33 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 20:21:33 2026 +0200"
      },
      "message": "(README adjustment)\n"
    },
    {
      "commit": "962bf05ebe8c66e67cf5a40d28349f06e906ded7",
      "tree": "8a7582e39eccf8eccdac37b8b2b8277b38023512",
      "parents": [
        "0c9defb0e46ac288a5c9d4de79527fa24c8e25c7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 20:21:08 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 20:21:08 2026 +0200"
      },
      "message": "Added missing item to version history\n"
    },
    {
      "commit": "0c9defb0e46ac288a5c9d4de79527fa24c8e25c7",
      "tree": "2d028f387bfd7284d7b1c9763a748418445ed081",
      "parents": [
        "e80df26f028fa9444b09e7fa9eaeaa1fdd465a96"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 17:42:17 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 12 17:49:21 2026 +0200"
      },
      "message": "Updated version to 2.3.35, preparing for release\n"
    },
    {
      "commit": "e80df26f028fa9444b09e7fa9eaeaa1fdd465a96",
      "tree": "c87d2fd2986a6695b86712f33304a0f5c8142ac3",
      "parents": [
        "667686bb8c9089bcebcdb90b96152fd63c493dc5"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Aug 09 00:03:17 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Aug 09 01:10:49 2026 +0200"
      },
      "message": "[PR-132] Refinements for feature/hex-integer-literals:\n- Moved out hexadecimal parsing into ArithmeticEngine\n- Test cleanup\n- Manual cleanup and addition to version history\n"
    },
    {
      "commit": "667686bb8c9089bcebcdb90b96152fd63c493dc5",
      "tree": "8c89cad9f742cc48b56697de7515f58e9da9dc83",
      "parents": [
        "9860d1e1e5f1507c8ba6c66e7678b7d2cdaaf7bd",
        "ad8317256efce77c3c1c52d27025fdcf74ec263c"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Aug 09 01:07:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 09 01:07:39 2026 +0200"
      },
      "message": "Merge pull request #132 from gdisirio/feature/hex-integer-literals\n\nAdd hexadecimal integer literals (e.g. 0xFF)"
    },
    {
      "commit": "9860d1e1e5f1507c8ba6c66e7678b7d2cdaaf7bd",
      "tree": "bc573d93f400a78b3755370d8f14c8f158987a80",
      "parents": [
        "5b5a1bb38bee6c5469a730f2c2c69fe482431be7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Aug 08 19:43:57 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Aug 08 19:43:57 2026 +0200"
      },
      "message": "(Manual: Version to 2.3.35)\n"
    },
    {
      "commit": "5b5a1bb38bee6c5469a730f2c2c69fe482431be7",
      "tree": "08afc89985003fa08df6ff32065051ed91446628",
      "parents": [
        "3c868761189bdf766c4fb8812340722b6b197f2b"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Aug 07 01:59:56 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Aug 08 19:37:52 2026 +0200"
      },
      "message": "Added ?lines\n"
    },
    {
      "commit": "3c868761189bdf766c4fb8812340722b6b197f2b",
      "tree": "c26708afd66bdb23de9678dec77061bf534ebe0a",
      "parents": [
        "ed8c28c74b420ade34201b8e8c75ee0468e524b8"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Aug 07 01:56:42 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Aug 07 02:14:20 2026 +0200"
      },
      "message": "Added some AI directories we don\u0027t commit at the moment to rat-excludes\n"
    },
    {
      "commit": "ed8c28c74b420ade34201b8e8c75ee0468e524b8",
      "tree": "1e14bdda28006286c903a979b0dc6d64ec8aa17a",
      "parents": [
        "a71fbc3301a14e677c78e80c28a2547478a33991"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 05 02:10:30 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Aug 07 02:14:20 2026 +0200"
      },
      "message": "[PR-130] Post-merge adjustments:\n- More preciese testing\n- Some rewording/cleanup in the Manual\n"
    },
    {
      "commit": "a71fbc3301a14e677c78e80c28a2547478a33991",
      "tree": "833291fb12bc813d6d49ae38202ff07ff503ced6",
      "parents": [
        "5e60f377fa5cd7cfc8c61575907374b1487654c7",
        "99bcddc620d6fbda27d0d41db567a3e3949bf34c"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Aug 07 02:12:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 02:12:24 2026 +0200"
      },
      "message": "Merge pull request #130 from gdisirio/feature/string-formatting-builtins\n\nAdd string built-ins for multi-line text formatting: ?indent, ?dedent, ?wrap,  ?pad_lines"
    },
    {
      "commit": "99bcddc620d6fbda27d0d41db567a3e3949bf34c",
      "tree": "b24262441e99146af893158e45c554b9efafd530",
      "parents": [
        "621a8ac890b690e5b6aa61ce5a12097bf4dcdba9"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Tue Aug 04 16:11:08 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Tue Aug 04 16:18:21 2026 +0200"
      },
      "message": "Review feedback: ?dedent(prefix) trims too, and parametric indent/dedent tests.\n\n?dedent(prefix) now removes the trailing whitespace of each resulting line,\nwith an optional 2nd boolean argument to switch that off, defaulting to\ntrue, mirroring ?indent. Removing a prefix can leave whitespace behind that\nonly looks like indentation: a line containing whitespace only loses just as\nmuch of it as the prefix is long, so with a 4 character prefix a line of 5\nspaces kept 1 space. That was also asymmetric with ?indent, which trims, so\n?indent(p)?dedent(p) didn\u0027t round-trip for such lines.\n\nAn empty prefix is a no-op for both built-ins, and doesn\u0027t trim either.\nThere\u0027s nothing to add or remove then, so doing nothing is what\u0027s least\nsurprising for something called indent or dedent.\n\n_CoreStringUtilsTest is now split into two nested classes: the indent/dedent\ntests are parametric, running for each line-break type (LF, CRLF, CR) and\nwith and without a line-break at the end of the input, while the wrap tests\nstay plain, as wrap collapses all whitespace including line-breaks and so\ncan\u0027t depend on the line-break type. Test data is written with \"\\n\" and no\ntrailing line-break, and adapted to the parameters. This subsumes the tests\nthat existed only to check a specific line ending or the presence of a\ntrailing line-break, including the one marked \"!!T\".\n\nThat\u0027s 31 test methods over 6 parameter combinations. All pass, so the\nline-break handling was already correct for CR and CRLF; the coverage was\nwhat was missing.\n"
    },
    {
      "commit": "621a8ac890b690e5b6aa61ce5a12097bf4dcdba9",
      "tree": "98a71e41062d051e0351bca5aae18815f5e513fa",
      "parents": [
        "e0f32f00f9138ed786b51f43cfdf5bf3c302e3e9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Aug 04 01:04:29 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Aug 04 11:08:29 2026 +0200"
      },
      "message": "- Code cleanup: Mostly, the refactoring of indent/dedent algorithms to be more readable\n- Javadoc improvements\n- Some rewording/cleanup in the Manual\n"
    },
    {
      "commit": "e0f32f00f9138ed786b51f43cfdf5bf3c302e3e9",
      "tree": "4fab095b363a5c1ada9ce6c6acda6ed88bd4855f",
      "parents": [
        "a633172c73b8fd9a4b746913ed68d403c398c8c0"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Mon Aug 03 19:35:24 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Mon Aug 03 19:35:24 2026 +0200"
      },
      "message": "Review feedback: dedent partial prefixes, indent every line, drop ?right_pad_lines.\n\n?dedent(prefix) now removes from each line the longest prefix of the\nparameter that the line actually starts with, instead of only acting on\nlines that carry the whole prefix. Since ?indent adds the prefix\nunconditionally, the all-or-nothing behavior could leave a line that was\noriginally the least indented as the most indented one.\n\n?indent(prefix) now adds the prefix to every line, including empty ones,\nand then right-trims each resulting line. One rule then gives the wanted\nresult in both cases: with a \"# \" prefix an empty line becomes \"#\" rather\nthan a line with trailing whitespace, and with a whitespace-only prefix it\nbecomes empty, which is what it already did. An optional 2nd boolean\nargument switches the trimming off; it defaults to true, so this isn\u0027t a\nbehavioral change for whitespace indentation.\n\nLines that contain whitespace only are now treated as empty throughout.\nPreviously the no-argument ?dedent ignored them when computing the common\nprefix while ?indent treated them as content, so the family disagreed with\nitself. In generated output such whitespace is an accident of whichever\nloop emitted it, so behavior shouldn\u0027t depend on it. This also matches\ntextwrap.dedent, which normalizes such lines to empty.\n\n?right_pad_lines is removed. Aligning a column of lines is better done by\nsplitting and looping, which keeps all the single-line built-ins available\nand, unlike a whole-block built-in, lets you append something after the\npadding of each line -- which the motivating use case (trailing \"\\\" macro\ncontinuations) requires.\n\nAdded getBooleanMethodArg/getOptBooleanMethodArg to BuiltIn, next to the\nexisting string and number variants.\n"
    },
    {
      "commit": "a633172c73b8fd9a4b746913ed68d403c398c8c0",
      "tree": "3c93de120dc7f559039d93f208f206bc024d17b2",
      "parents": [
        "4ab4d64f8d02a9c9efa22ae33dc15f185182a0b8"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Sun Aug 02 18:27:15 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Sun Aug 02 18:27:15 2026 +0200"
      },
      "message": "Add the missing ASF license header to _CoreStringUtilsTest.java.\n\nWithout it the rat and ratDistSrc tasks fail with \"1 unapproved\nlicense\", so ./gradlew check doesn\u0027t pass.\n"
    },
    {
      "commit": "4ab4d64f8d02a9c9efa22ae33dc15f185182a0b8",
      "tree": "edeb82503a8af278b8776117bdad3dbed1a6eca3",
      "parents": [
        "0b6e6179ffacbe3147362b9c3be58c0cfed57245"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon Jul 27 01:21:48 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Aug 01 22:50:50 2026 +0200"
      },
      "message": "[PR-130] Adjustments:\n- ?dedent() \u003d\u003e ?dedent, and ?dedent() is error\n- ?wrap(width) is now valid (prefix defaults to \"\")\n- Reworked Manual sections, especially for ?wrap\n- Moved string transformation methods from Builtins to _CoreStringUtils\n- Moved most string transformation testing _CoreStringUtilsTest. Add some more test cases.\n - IndentAndWrapBuiltInTest now focues on the FTL interface issues, like number and type of arguments.\n- Adjusted IndentAndWrapBuiltInTest to code use FTL JUnit test conventions in this project\n"
    },
    {
      "commit": "ad8317256efce77c3c1c52d27025fdcf74ec263c",
      "tree": "527166cdbc5bea1f9640c8db1b88705d66d49fd5",
      "parents": [
        "5e60f377fa5cd7cfc8c61575907374b1487654c7"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Wed May 27 10:34:31 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Wed Jul 29 17:35:18 2026 +0200"
      },
      "message": "Add hexadecimal integer literals (e.g. 0xFF)\n\nWhole numbers can now be written in hexadecimal notation, using the\n0x (or 0X) prefix followed by hex digits, e.g. 0xFF for 255. This has\nbeen requested on the mailing list several times over the years (the\nprevious workaround being to expose Integer.decode as a shared\nvariable).\n\nThe change is purely additive and backward compatible: in an\nexpression, a sequence like \"0xFF\" was previously a parse error (a\nnumber immediately followed by an identifier), so no currently-valid\ntemplate can be affected. The new HEX_INTEGER token is only active in\nthe expression lexer states, never in plain template text.\n\nHex literals specify whole numbers only; the sign can be applied as a\nseparate operator (e.g. -0x10). There\u0027s no limit on the number of\ndigits: the value is narrowed to an Integer if it fits into a 32-bit\nsigned integer, to a Long if it fits into a 64-bit signed integer, and\nis kept as a BigInteger otherwise.\n\nAdded JUnit coverage and a note in the Manual\u0027s \"Direct specification\nof values\" section (with @since 2.3.35).\n"
    },
    {
      "commit": "5e60f377fa5cd7cfc8c61575907374b1487654c7",
      "tree": "56d8e61b71097b3d881281026de5c4cc7765a870",
      "parents": [
        "e00d27c735058fa80e07dd16ff36efd8c45d22a5"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 18:19:22 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 18:19:22 2026 +0200"
      },
      "message": "(Fixed Template.java import code style to be consistent with the rest)\n"
    },
    {
      "commit": "e00d27c735058fa80e07dd16ff36efd8c45d22a5",
      "tree": "26b9c80ead7f570ac27b2226dac508aaaf814ae6",
      "parents": [
        "cbcaa8d64f986e0f9d20738d2c35ec7ff2f35f24"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 18:04:00 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 18:04:00 2026 +0200"
      },
      "message": "Updated gradle/actions/setup-gradle version, as\nthe current one was removed from the allowed repos apparently\n"
    },
    {
      "commit": "cbcaa8d64f986e0f9d20738d2c35ec7ff2f35f24",
      "tree": "d1303b34455b8969da62faff515c6f1137815efd",
      "parents": [
        "ef20c37fbb30885acd37488511d891da8c991fab"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 17:34:19 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 14 17:36:08 2026 +0200"
      },
      "message": "Removed freemarker.debug due to concerns of being flagged for using RMI, and because we believe nobody uses it.\n"
    },
    {
      "commit": "0b6e6179ffacbe3147362b9c3be58c0cfed57245",
      "tree": "5d24ec9cbe8a8579df2307a35cec8f49e47d8001",
      "parents": [
        "3abd7f0ad956f592cc514a0a99553a8067712b6b"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 23:13:06 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 23:13:06 2026 +0200"
      },
      "message": "Review feedback: clarify character-width semantics and non-breaking space behaviour\n\nAdds notes in the manual for the new built-ins:\n\n- For ?right_pad_lines: widths are counted in Java chars (UTF-16 code\n  units), not visual display columns — same as ?right_pad / ?left_pad.\n  A tab counts as one character, not as an advance to the next tab\n  stop. Visual alignment for tab-containing input requires expanding\n  tabs first.\n- For ?wrap: same width semantics, plus a note that words are split on\n  Java\u0027s \\s+, which does NOT include U+00A0 (non-breaking space) — so\n  a non-breaking space correctly stays inside a word and is never used\n  as a break point. This is the intended behaviour.\n\nPer review comment by ddekany on PR #130 about tab and non-breaking\nspace handling.\n"
    },
    {
      "commit": "3abd7f0ad956f592cc514a0a99553a8067712b6b",
      "tree": "68790cf1ef1cff9ed23a7f073033053a10d04f9d",
      "parents": [
        "ecfa04465958d81e88f8cb83f915fe4a7852fb83"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 23:02:27 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 23:02:27 2026 +0200"
      },
      "message": "Review feedback: add no-argument ?dedent() form (Python textwrap.dedent-style)\n\nAdds a more robust default behaviour for ?dedent. The no-argument form\nfinds the longest leading whitespace (spaces and tabs only) that is a\ncommon prefix of every non-empty line, and removes that. This handles\nimperfect input (lines with different leading-whitespace amounts)\ngracefully, whereas the original explicit-prefix form leaves any line\nnot starting with the exact prefix unchanged. Semantics match Python\u0027s\ntextwrap.dedent.\n\nEmpty/whitespace-only lines are ignored when computing the common\nprefix and pass through unchanged. A leading tab and a leading space\nare distinct (no implicit collapsing), again matching Python.\n\nThe explicit-prefix form ?dedent(prefix) remains for cases where exact\ncontrol is wanted; it\u0027s not redundant — just less robust by design.\n\n8 new JUnit tests covering uniform indent, mixed indent, blank-line\nhandling, no-common-prefix passthrough, tabs, tabs+spaces distinction,\nempty input, and already-dedented input. Manual section expanded with\nthe new form and a worked example.\n\nPer review comment by ddekany on PR #130.\n"
    },
    {
      "commit": "ecfa04465958d81e88f8cb83f915fe4a7852fb83",
      "tree": "83d1cd7aaae0619634bced0a66b5274ee92a98a5",
      "parents": [
        "097fdcf3cfa072afb264f32ae951561dad91040b"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 22:54:26 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Fri May 29 22:54:26 2026 +0200"
      },
      "message": "Review feedback: rename ?pad_lines to ?right_pad_lines\n\nAligns with ?right_pad / ?left_pad naming. Internal class renamed to\nright_pad_linesBI accordingly. Registration moved to the alphabetical\nposition after right_pad. Tests, manual entry, and index link renamed.\n\nPer review comment by ddekany on PR #130.\n"
    },
    {
      "commit": "097fdcf3cfa072afb264f32ae951561dad91040b",
      "tree": "d46d2b37d09a9d72a78a89bbbe44e094e9e937fd",
      "parents": [
        "ef20c37fbb30885acd37488511d891da8c991fab"
      ],
      "author": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Wed May 27 10:22:39 2026 +0200"
      },
      "committer": {
        "name": "Giovanni Di Sirio",
        "email": "gdisirio@gmail.com",
        "time": "Wed May 27 10:22:39 2026 +0200"
      },
      "message": "Add string built-ins for multi-line text formatting: ?indent, ?dedent, ?wrap, ?pad_lines\n\nThese four built-ins make it easier to format multi-line text, which is\nuseful when generating source code, configuration files, documentation\ncomments, and similar structured output. They all work on the string\nthey\u0027re applied to and have no side effects; none require any new\nconfiguration or language mode.\n\n- ?indent(prefix): prepends prefix to each (non-empty) line.\n- ?dedent(prefix): removes prefix from the start of each line that has\n  it (the inverse of ?indent).\n- ?wrap(width, firstPrefix[, restPrefix]): word-wraps the string to the\n  given column width, with configurable per-line prefixes. Handy for\n  wrapped comment blocks.\n- ?pad_lines(width[, fillChar]): pads each line on the right to the\n  given column. Unlike ?right_pad, which pads the string as a whole,\n  this operates per line, which is useful for aligning multi-line text.\n\nLine breaks (LF, CR, CRLF) are recognized and preserved. Added JUnit\ncoverage and FreeMarker Manual reference entries (with @since 2.3.35).\n"
    },
    {
      "commit": "ef20c37fbb30885acd37488511d891da8c991fab",
      "tree": "456d97269453a01a7fd3cf7819e08472d72fee49",
      "parents": [
        "65c32e0a0a5139443cc435e848c7fa39cff8eb7c"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 23:46:26 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 17 00:37:08 2026 +0200"
      },
      "message": "Moved \"Security Scan Guidance\" from AGENTS.md into SECURITY.md, and extended it. Typo fixes in `AGENTS.md`.\n"
    },
    {
      "commit": "65c32e0a0a5139443cc435e848c7fa39cff8eb7c",
      "tree": "4fbac9855b5bb3870f7440cfc7476296c027f86a",
      "parents": [
        "fa02a17183dcdc65311d1f7468455a76a754cd6f"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 18:19:08 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 18:19:08 2026 +0200"
      },
      "message": "Added AGENTS.md to RAT excludes\n"
    },
    {
      "commit": "fa02a17183dcdc65311d1f7468455a76a754cd6f",
      "tree": "6df948f7f2cc7a562bba7d496a0e8ab9bb8d3321",
      "parents": [
        "b3dea921fb3bf0140584c8be576d3b413eba1212"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 17:52:02 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 18:04:14 2026 +0200"
      },
      "message": "Added AGENTS.md. Also, README typo fixes.\n"
    },
    {
      "commit": "b3dea921fb3bf0140584c8be576d3b413eba1212",
      "tree": "c13bd513af8889df30ba1250607555b4cb839dc7",
      "parents": [
        "70d634de3cfb9051cdf305408aa3a63475b926b9",
        "a12bda2b3909cc89d9d12aad657dc57db0eeeb28"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat May 16 15:30:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 16 15:30:04 2026 +0200"
      },
      "message": "Merge pull request #129 from apache/infrastructure-ruleset-bot/default-branch-protection\n\n[INFRA] Set up default rulesets for default and release branches"
    },
    {
      "commit": "a12bda2b3909cc89d9d12aad657dc57db0eeeb28",
      "tree": "c13bd513af8889df30ba1250607555b4cb839dc7",
      "parents": [
        "70d634de3cfb9051cdf305408aa3a63475b926b9"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 16:04:08 2026 -0500"
      },
      "committer": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 16:04:08 2026 -0500"
      },
      "message": "Set up default protection ruleset for default and release branches"
    },
    {
      "commit": "70d634de3cfb9051cdf305408aa3a63475b926b9",
      "tree": "9030e2e73ee3a429f7c96663b4c25dd005edb768",
      "parents": [
        "1aa0ca92bdc6bf579f32bd1b4dda68d4139f1209"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:43:01 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:43:01 2026 +0200"
      },
      "message": "(GitHub workflow typo)\n"
    },
    {
      "commit": "1aa0ca92bdc6bf579f32bd1b4dda68d4139f1209",
      "tree": "f429a6c63897a3a5ec441deb2676b60dbc5ae700",
      "parents": [
        "0fe3e22c5e63fd1a9f539ee7ea5140a5ae4e3ef9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:13:09 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:13:09 2026 +0200"
      },
      "message": "(GitHub workflow typo)\n"
    },
    {
      "commit": "0fe3e22c5e63fd1a9f539ee7ea5140a5ae4e3ef9",
      "tree": "9592e4fa24c792555c2181920ffc683af3930114",
      "parents": [
        "09d6cfb39f340cc6ad5ba86b48969d0969cd6c78"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:10:00 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 08:10:00 2026 +0200"
      },
      "message": "GitHub CI: Just avoid running GraalVM native test on Windows, which is currently broken. It already runs on Linux, I think that\u0027s enough. The complexity added to make that test work on the Windows (vctools installation, exe suffix) is not worth it.\n"
    },
    {
      "commit": "09d6cfb39f340cc6ad5ba86b48969d0969cd6c78",
      "tree": "39db186e531b750da2a997f68f775aa86f428ac5",
      "parents": [
        "6c2b018dd36acae30d78251a9b924f95fee7fb2a"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 00:54:38 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 00:54:38 2026 +0200"
      },
      "message": "[FREEMARKER-234] Fixed a unit test. Improved Configuration.incompatibleImprovements javadoc.\n"
    },
    {
      "commit": "6c2b018dd36acae30d78251a9b924f95fee7fb2a",
      "tree": "0081462230785b67178b340d2d3c1eb196fff2f0",
      "parents": [
        "7ccb9f2f69f8cc158b67a816d955df51dd4e5104"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 00:05:41 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon May 11 00:05:41 2026 +0200"
      },
      "message": "Trying to fix GitHub CI workflow\n"
    },
    {
      "commit": "7ccb9f2f69f8cc158b67a816d955df51dd4e5104",
      "tree": "94ca8b6c8f2ed39b4e0c179fffa032409f41e80d",
      "parents": [
        "2048f7d91e58794bab918de1bdff2845b0842af0"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 10 23:59:33 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 10 23:59:33 2026 +0200"
      },
      "message": "Trying to fix GitHub CI workflow\n"
    },
    {
      "commit": "2048f7d91e58794bab918de1bdff2845b0842af0",
      "tree": "808ffd150b3de73c1ec64154c5f47fecff4804ad",
      "parents": [
        "0c13d27a356cc18f177ad6d79b3314eb02b5167e"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 10 21:52:03 2026 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 10 23:25:47 2026 +0200"
      },
      "message": "[FREEMARKER-234] PR adjustments\n"
    },
    {
      "commit": "0c13d27a356cc18f177ad6d79b3314eb02b5167e",
      "tree": "8bb4c2a43619d9a97890b7a2b5b67375894f8345",
      "parents": [
        "a6ea90f6e94a5ee68f31414f05665785cf3bc75a",
        "5135b4225f6f7409916ee1458cfe73f3bff2ca35"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun May 10 23:20:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 23:20:55 2026 +0200"
      },
      "message": "Merge pull request #127 from mapeders/FREEMARKER-234-boolean-wrapper-is-getter\n\n[FREEMARKER-234] Expose Boolean isFoo() getters as bean properties"
    },
    {
      "commit": "a6ea90f6e94a5ee68f31414f05665785cf3bc75a",
      "tree": "ae1fae53c81fe0fe470cef623c7a03d8f1a2fedf",
      "parents": [
        "783b5c4a93811c209a23cd1dcff48fe51de730e4",
        "3f361971c29119190befead49e73939ac8239a55"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon Apr 20 13:35:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 13:35:06 2026 +0200"
      },
      "message": "Merge pull request #128 from mapeders/FREEMARKER-116-fix-beanswrapper-doc-mismatch\n\n[FREEMARKER-116] Fix mismatch between example code and explanation in BeansWrapper documentation"
    },
    {
      "commit": "3f361971c29119190befead49e73939ac8239a55",
      "tree": "ae1fae53c81fe0fe470cef623c7a03d8f1a2fedf",
      "parents": [
        "783b5c4a93811c209a23cd1dcff48fe51de730e4"
      ],
      "author": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Mon Apr 20 12:55:23 2026 +0200"
      },
      "committer": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Mon Apr 20 12:55:23 2026 +0200"
      },
      "message": "[FREEMARKER-116] Fix mismatch between example code and explanation in BeansWrapper documentation\n\nThe example retrieves statics of java.io.File, but the following\nparagraph incorrectly referred to java.lang.System. Subsequent\nexamples (File.SEPARATOR, File.listRoots()) confirm java.io.File\nis the intended class.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5135b4225f6f7409916ee1458cfe73f3bff2ca35",
      "tree": "649657beb377b40927639b7d6ead2ba27c28b002",
      "parents": [
        "783b5c4a93811c209a23cd1dcff48fe51de730e4"
      ],
      "author": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Sun Apr 19 23:01:06 2026 +0200"
      },
      "committer": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Sun Apr 19 23:01:06 2026 +0200"
      },
      "message": "[FREEMARKER-234] Expose Boolean isFoo() getters as bean properties\n\nWhen an incompatible_improvements of 2.3.35 or higher is set, isFoo()\nmethods that return java.lang.Boolean (the wrapper class) are now\nexposed as the foo bean property, matching the long-standing behaviour\nfor primitive boolean and the contract promised in the manual.\njava.beans.Introspector follows the strict JavaBeans spec and only\nreports primitive-boolean is-getters, so ClassIntrospector now\nsupplements its result with a targeted scan (mirroring the pattern\nalready used for Java 8 default methods), and _MethodUtil accepts the\nwrapper return type. Static methods, and isFoo() methods with any\nother return type, remain excluded.\n"
    },
    {
      "commit": "783b5c4a93811c209a23cd1dcff48fe51de730e4",
      "tree": "e8f08e17735386db337623abb0ffdf81e6deef53",
      "parents": [
        "2f50940a5667b41d5d3ac4fe4a869d636c47cd45",
        "7f19c62abf2e69ccf48a304e85fb4c669d7ab1a9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Apr 19 18:43:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 18:43:40 2026 +0200"
      },
      "message": "Merge pull request #126 from mapeders/FREEMARKER-209-fix-estabilished-typo\n\n[FREEMARKER-209] Fix \"estabilished\" typo in error message"
    },
    {
      "commit": "7f19c62abf2e69ccf48a304e85fb4c669d7ab1a9",
      "tree": "e8f08e17735386db337623abb0ffdf81e6deef53",
      "parents": [
        "2f50940a5667b41d5d3ac4fe4a869d636c47cd45"
      ],
      "author": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Sun Apr 19 12:51:23 2026 +0200"
      },
      "committer": {
        "name": "madsbredholt",
        "email": "mapeders@gmail.com",
        "time": "Sun Apr 19 12:51:23 2026 +0200"
      },
      "message": "[FREEMARKER-209] Fix \"estabilished\" typo in error message\n\nCorrects spelling in the naming-convention mismatch error message\nemitted by the FTL parser, and in a related code comment in the same\ntoken-manager section.\n"
    },
    {
      "commit": "2f50940a5667b41d5d3ac4fe4a869d636c47cd45",
      "tree": "d2c852a0637bf59ec33820e0861ae20cf8673faf",
      "parents": [
        "b20474eee3583bb4ba8df191e1d882e1117efc78",
        "928bd5ee54dae1ed6422615b66468847458ed726"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 22 16:19:41 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 22 16:19:41 2025 +0100"
      },
      "message": "Merge pull request #116 from hduelme/use-isEmpty-to-check-if-string-is-empty\n\nuse isEmpty to check if string is empty"
    },
    {
      "commit": "b20474eee3583bb4ba8df191e1d882e1117efc78",
      "tree": "5742170bcb1153912af3088c50fd85f9aeb78af4",
      "parents": [
        "9468a0883e171e2612e550fdf56173451f3dc65b",
        "3e695bf03ae8c4f855856329ee63585a09b6c92a"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 22 11:21:38 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 22 11:21:38 2025 +0100"
      },
      "message": "Merge pull request #123 from stevemcleod/fix-error-in-switch-example\n\nFixed error in docs for new switch-on syntax"
    },
    {
      "commit": "3e695bf03ae8c4f855856329ee63585a09b6c92a",
      "tree": "5742170bcb1153912af3088c50fd85f9aeb78af4",
      "parents": [
        "9468a0883e171e2612e550fdf56173451f3dc65b"
      ],
      "author": {
        "name": "Steve McLeod",
        "email": "steve.mcleod@gmail.com",
        "time": "Thu Nov 20 14:24:42 2025 +0100"
      },
      "committer": {
        "name": "Steve McLeod",
        "email": "steve.mcleod@gmail.com",
        "time": "Thu Nov 20 14:24:42 2025 +0100"
      },
      "message": "Corrected the stray usage of switch-with-case in the switch-with-on example.\n"
    },
    {
      "commit": "9468a0883e171e2612e550fdf56173451f3dc65b",
      "tree": "8e336bc6a7724412289e2bcd25412f1899128226",
      "parents": [
        "33d5094b85160c7fcc94ef6c9708c83aca161230"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:27:34 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:27:34 2025 +0100"
      },
      "message": "Improved Logger javadoc.\n"
    },
    {
      "commit": "33d5094b85160c7fcc94ef6c9708c83aca161230",
      "tree": "73faffb67d1d6a7e55651f0fefeb3934906ac46d",
      "parents": [
        "2cce3b5663d96a466904ef4c86cf9f2f19d1de83"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:27:13 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:27:13 2025 +0100"
      },
      "message": "GraalVM native PR followup: Moved documentation from the README into the Manual. Also reworked it.\n"
    },
    {
      "commit": "2cce3b5663d96a466904ef4c86cf9f2f19d1de83",
      "tree": "c82d4bb077c55ed5ccaad5a6bb21c02e13124006",
      "parents": [
        "37cc917eddb0b049f7eec476329690767cb885a4"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:25:44 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 18:25:44 2025 +0100"
      },
      "message": "GraalVM native PR followup: Refactored example project:\n- Better practices in the Gradle build\n- Made java code more trivial, so it\u0027s easier to understand\n- README reworked to be more straightforward. Removed step to build FreeMarker itself (as Gradle will do that automatically anyway)\n- Use flth for HTML generation (more secure)\n"
    },
    {
      "commit": "37cc917eddb0b049f7eec476329690767cb885a4",
      "tree": "b1cd624b6ddbbd0fe28652b88c5f0df88d7fb3a0",
      "parents": [
        "54667e0c7ee0d40d710799517330db2a81d8a5ed",
        "4ad73114dcc54fc32366ba88b29068e39069d6fc"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Nov 13 17:23:37 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 13 17:23:37 2025 +0100"
      },
      "message": "Merge pull request #121 from fugerit-org/1-add-graalvm-support-to-apache-freemarker\n\nAdded GraalVM native support to Apache FreeMarker"
    },
    {
      "commit": "4ad73114dcc54fc32366ba88b29068e39069d6fc",
      "tree": "b1cd624b6ddbbd0fe28652b88c5f0df88d7fb3a0",
      "parents": [
        "d0012c0cd448f766d9360989698b69155f28c77f"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Wed May 14 00:48:10 2025 +0200"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "GraalVM native support guide sample\n"
    },
    {
      "commit": "d0012c0cd448f766d9360989698b69155f28c77f",
      "tree": "d1c9519084f5c274c6add3f52b86f26a4f807aa3",
      "parents": [
        "91a80a72361507a9f294b2b8113f3f684de4a0dd"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Tue May 13 15:01:05 2025 +0200"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "Add GraalVM native support (reflect-config.json)\n\nTo handle LoggerFactory instances handled by reflection\n"
    },
    {
      "commit": "91a80a72361507a9f294b2b8113f3f684de4a0dd",
      "tree": "96e5fd30f02e926ffc5594bd2eb2e29c0411ce1a",
      "parents": [
        "e742a307645b4437fb01441d93b6c7f1f24b8873"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Tue Apr 08 19:22:55 2025 +0200"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "GraalVM support : added usage documentation\n"
    },
    {
      "commit": "e742a307645b4437fb01441d93b6c7f1f24b8873",
      "tree": "6b978410243e6675917695a95d50b17c7294f361",
      "parents": [
        "4634f935fc67230da2ee4cc9491d78be3312177d"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Tue Jan 28 18:44:16 2025 +0100"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "Added \u0027ubuntu-24.04-arm\u0027 os to CI matrix\n"
    },
    {
      "commit": "4634f935fc67230da2ee4cc9491d78be3312177d",
      "tree": "9cc72f4d7269fa805eeaf3244bce09bed24b6de7",
      "parents": [
        "ac935707c19e643dc0795c500d420aa8358a01e8"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Tue Jan 21 22:55:12 2025 +0100"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "Add test project for GraalVM native support + CI updated\n\nSee freemarker-test-native/README.md\n"
    },
    {
      "commit": "ac935707c19e643dc0795c500d420aa8358a01e8",
      "tree": "ae113955bae35e3a6ceacc137a8200ee50c7f711",
      "parents": [
        "54667e0c7ee0d40d710799517330db2a81d8a5ed"
      ],
      "author": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Jan 18 02:15:07 2025 +0100"
      },
      "committer": {
        "name": "Matteo Franci a.k.a. Fugerit",
        "email": "m@fugerit.org",
        "time": "Sat Sep 27 23:46:27 2025 +0200"
      },
      "message": "Add GraalVM native support\n\nnative-image.properties (to handle initialized at runtime)\nresource-config.json (to load configuration files in resources/)\nisAutoDetected() in logger does not skip LIBRARY_SLF4J and LIBRARY_COMMONS when IS_GRAALVM_NATIVE \u003d true (anticipate FreeMarker 2.4)\n\nAdded GraalVM ready badge\n"
    },
    {
      "commit": "54667e0c7ee0d40d710799517330db2a81d8a5ed",
      "tree": "e2a277a27ded47786bd305358c023618858727fb",
      "parents": [
        "04699f0953850705baf2f46448940055ce7a3335"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:58:47 2025 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:58:47 2025 +0200"
      },
      "message": "(Manual: Put ® into superscript)\n"
    },
    {
      "commit": "04699f0953850705baf2f46448940055ce7a3335",
      "tree": "53eb5b0ac96556d649e0d2f0cd5a4b490dc3a02b",
      "parents": [
        "ed77bd4b618209afc22e133bed30dfa97f815fc9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:10:37 2025 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:10:37 2025 +0200"
      },
      "message": "Manual: Added some markers to affect Pagefind weights\n"
    },
    {
      "commit": "ed77bd4b618209afc22e133bed30dfa97f815fc9",
      "tree": "c695e31d397055f7b960bce93e4090b9f00a319c",
      "parents": [
        "ce100025bfc7dd8d3079ca110f599f619e7e2de7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:09:27 2025 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 16:09:27 2025 +0200"
      },
      "message": "(Minor javadoc adjustment)\n"
    },
    {
      "commit": "ce100025bfc7dd8d3079ca110f599f619e7e2de7",
      "tree": "c6ab8b506569fdc9a26e18d63c8da97193933b60",
      "parents": [
        "ce972a09ed3caa65593341c0161e91a72bfcf59b"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 12:14:31 2025 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 12:14:31 2025 +0200"
      },
      "message": "README: Added section about website related build tasks\n"
    },
    {
      "commit": "ce972a09ed3caa65593341c0161e91a72bfcf59b",
      "tree": "b1b8ed08bae9ba31339bc08016bba5760ed3e09c",
      "parents": [
        "a49abc81b7ba52f420f0c655d0206c54d5a05b95"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 00:47:41 2025 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Jun 22 00:49:56 2025 +0200"
      },
      "message": "Manual: Use pagefindBasedSearch\n"
    },
    {
      "commit": "a49abc81b7ba52f420f0c655d0206c54d5a05b95",
      "tree": "9179c2a53ca104a3b1ad914a57ff2af38afcb763",
      "parents": [
        "97bc9b8570b77a7d9fc88239d5093883f3661c7c"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Mar 11 11:31:03 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Mar 11 11:31:03 2025 +0100"
      },
      "message": "(Manual: Updated legal text in the footer.)\n"
    },
    {
      "commit": "97bc9b8570b77a7d9fc88239d5093883f3661c7c",
      "tree": "395f8c00aadd0f2ea185408b91b94a5aadeebe29",
      "parents": [
        "04a57e4e173d3adf33baf7e26444fcfb3b68449e"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon Mar 10 17:39:52 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Mon Mar 10 17:39:52 2025 +0100"
      },
      "message": "(Manual: Added ®)\n"
    },
    {
      "commit": "04a57e4e173d3adf33baf7e26444fcfb3b68449e",
      "tree": "a891f3dbccdb1ad5fc5dd4571ef141c6d0ec3595",
      "parents": [
        "86455dc8fc458876df7389a983e1d650cd8a81b4"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Jan 14 21:14:31 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Jan 14 21:15:41 2025 +0100"
      },
      "message": "Javadoc: (Typo fix)\n"
    },
    {
      "commit": "86455dc8fc458876df7389a983e1d650cd8a81b4",
      "tree": "4bb2e355b50435fdbd47bd7c0e10ecf240e6c88c",
      "parents": [
        "f2b4844edc5b7ceb12d839bff84733ad944139b1"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Jan 14 21:14:13 2025 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Jan 14 21:14:13 2025 +0100"
      },
      "message": "Updated version to 2.3.35-SNAPSHOT\n"
    },
    {
      "commit": "f2b4844edc5b7ceb12d839bff84733ad944139b1",
      "tree": "4e380300cdf4b9fe24ad82baed57d484761ddb10",
      "parents": [
        "6969b89c071593bf15f6ccb432a486a00b730322"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 11:33:57 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 11:33:57 2024 +0100"
      },
      "message": "Javadoc: (Typo fix)\n"
    },
    {
      "commit": "6969b89c071593bf15f6ccb432a486a00b730322",
      "tree": "e1df308f1d19919d144faa76a21a052fccc813af",
      "parents": [
        "0c85748f0b4eee8a002b15ac4642a1f49a066631"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 10:51:16 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 11:27:25 2024 +0100"
      },
      "message": "Javadoc: Improved Configuration documentation\n"
    },
    {
      "commit": "0c85748f0b4eee8a002b15ac4642a1f49a066631",
      "tree": "f4add8f58a1008974ef258473ad61270b07ecb13",
      "parents": [
        "3f4fda52d067ab58afe9e2ffb4e0285d37f3308d"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 10:45:16 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 10:45:16 2024 +0100"
      },
      "message": "Javadoc: Fixed malformed HTML\n"
    },
    {
      "commit": "3f4fda52d067ab58afe9e2ffb4e0285d37f3308d",
      "tree": "48335d778f543f0481b89c51e8514beca521456a",
      "parents": [
        "46343f2b2e2b859af214915eb1c6571fe768fbf7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 09:56:56 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 09:56:56 2024 +0100"
      },
      "message": "Manual: Updated release date, and some more version history adjustments\n"
    },
    {
      "commit": "46343f2b2e2b859af214915eb1c6571fe768fbf7",
      "tree": "3e29971b78674f9c205aefdb6a8db2dea2dafc7a",
      "parents": [
        "e263604781736d182191f4603fad94d1333b0034"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 09:55:57 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Dec 24 09:55:57 2024 +0100"
      },
      "message": "Javadoc: Document the effect of incompatibleImprovements 2.3.34.\n"
    },
    {
      "commit": "e263604781736d182191f4603fad94d1333b0034",
      "tree": "d9c79f22ecc9d69a1dee313cbc7b5cd07e9a0fe8",
      "parents": [
        "55ffb5ef92db6560fe8af9d087660f3e9d4ca75c"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 08 15:15:53 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 08 15:15:53 2024 +0100"
      },
      "message": "Adjusted description in the generated pom.xml\n"
    },
    {
      "commit": "55ffb5ef92db6560fe8af9d087660f3e9d4ca75c",
      "tree": "83a8b17938626e1ffa03028a03a5f63b4cce7ca0",
      "parents": [
        "69cf6165fb8be9e3306acdc74e0867891c2d3d2f"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 08 14:57:57 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 08 14:57:57 2024 +0100"
      },
      "message": "Adjusted last merged PR: incompatibleImprovements 2.3.24 -\u003e 2.3.34. Added more JUnit tests. Updated version history.\n"
    },
    {
      "commit": "69cf6165fb8be9e3306acdc74e0867891c2d3d2f",
      "tree": "ddc87c7f86901f35d2b9fca2989d7de174dd8c84",
      "parents": [
        "aba94c0d7b4ac2fd8b78a33ce06e8c07df6743e9",
        "de37405f8e77eb111396c90298480870d40617d2"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 08 14:02:13 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 08 14:02:13 2024 +0100"
      },
      "message": "Merge pull request #120 from nolaviz/sep-incompatible-improvements\n\nRe-enable bare `\u003csep\u003e` when incompatibleImprovements \u003c 2.3.34."
    },
    {
      "commit": "de37405f8e77eb111396c90298480870d40617d2",
      "tree": "ddc87c7f86901f35d2b9fca2989d7de174dd8c84",
      "parents": [
        "aba94c0d7b4ac2fd8b78a33ce06e8c07df6743e9"
      ],
      "author": {
        "name": "Alon Ziv",
        "email": "nolaviz@google.com",
        "time": "Sun Dec 08 06:32:20 2024 +0000"
      },
      "committer": {
        "name": "Alon Ziv",
        "email": "nolaviz@google.com",
        "time": "Sun Dec 08 06:32:20 2024 +0000"
      },
      "message": "Re-enable bare `\u003csep\u003e` when incompatibleImprovements \u003c 2.3.34.\n"
    },
    {
      "commit": "aba94c0d7b4ac2fd8b78a33ce06e8c07df6743e9",
      "tree": "6e4d606422423c8edff141d64c0f8851b9a5517e",
      "parents": [
        "6579c86aea7b61877b5fed4e3b90b959e1e2e4ca"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 21:52:46 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 21:52:46 2024 +0100"
      },
      "message": "Adjusted description in POM\n"
    },
    {
      "commit": "6579c86aea7b61877b5fed4e3b90b959e1e2e4ca",
      "tree": "c212433991ded43ba9888d90ae091a8bda2f9658",
      "parents": [
        "becc837d3b0a3fa1446d61dc1e4957a194e4f9e6"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 13:52:44 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 13:52:44 2024 +0100"
      },
      "message": "(Manual typo fix)\n"
    },
    {
      "commit": "becc837d3b0a3fa1446d61dc1e4957a194e4f9e6",
      "tree": "95266cdc787e42515895562c42677d03ddfa853b",
      "parents": [
        "19e99c6a145591f71073c0784a03bfcc9f0f6953"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 13:49:07 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 13:49:07 2024 +0100"
      },
      "message": "Comment in gradle.properties about how to avoid modifying it\n"
    },
    {
      "commit": "19e99c6a145591f71073c0784a03bfcc9f0f6953",
      "tree": "8278d9be7efd03b67e5e17fdb5ef8445f424d8e0",
      "parents": [
        "b0d4ffdae2801d2849c98f25dc6095e1915491f8"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 01:34:18 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 01:34:18 2024 +0100"
      },
      "message": "Updated Manual for 2.3.34 release\n"
    },
    {
      "commit": "b0d4ffdae2801d2849c98f25dc6095e1915491f8",
      "tree": "89b7c93807c997990f0fb12638670108d02b5109",
      "parents": [
        "ffd0bf4f69b7b7edd0a5233b9463e1b927312bb7"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 01:14:16 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sun Dec 01 01:14:16 2024 +0100"
      },
      "message": "Updated version number\n"
    },
    {
      "commit": "ffd0bf4f69b7b7edd0a5233b9463e1b927312bb7",
      "tree": "a010059434cbf7e29ae129d9bcb445ae0cf6f081",
      "parents": [
        "fdb3cee850e7b13c275864b8f0f78b5645b9a515"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 20:19:43 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 20:19:43 2024 +0100"
      },
      "message": "Minor code cleanup for #switch/#on\n"
    },
    {
      "commit": "fdb3cee850e7b13c275864b8f0f78b5645b9a515",
      "tree": "9a063fde59388aaffe4f5cf4b049d48d86745ee6",
      "parents": [
        "578106c8792b43254595998de0a8dea6fbbc6b16"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 20:14:21 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 20:19:25 2024 +0100"
      },
      "message": "Manual: Added GitHub PR links to 2.3.34 change log.\n"
    },
    {
      "commit": "578106c8792b43254595998de0a8dea6fbbc6b16",
      "tree": "f2298bedd3c9d7c2b20a8aa8695e3fa095b508c8",
      "parents": [
        "66c94aa7d13794106e76348691e2b9747e83f18f"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 19:55:18 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Sat Nov 30 19:55:18 2024 +0100"
      },
      "message": "Post-merge adjustments for \"Fix sep directive in syntax A breaks templates in syntax B\": Added it to change log. Replaced JUnit test with one that covers more variations.\n"
    },
    {
      "commit": "66c94aa7d13794106e76348691e2b9747e83f18f",
      "tree": "c8a36ad3b1196b7c5b6bd758f9a80ce955d847eb",
      "parents": [
        "5d2022d50a2d9d789bd2cbf3b54a694b217376c5",
        "268f555ddfbb867c6c04d7852c53d8a8713cd7c5"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Nov 29 20:50:59 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 29 20:50:59 2024 +0100"
      },
      "message": "Merge pull request #119 from binokkio/fix-sep\n\nFix sep directive in syntax A breaks templates in syntax B"
    },
    {
      "commit": "268f555ddfbb867c6c04d7852c53d8a8713cd7c5",
      "tree": "c8a36ad3b1196b7c5b6bd758f9a80ce955d847eb",
      "parents": [
        "06490152cb529c57b60ad4222418ce8f2fbbd64f"
      ],
      "author": {
        "name": "Binokkio",
        "email": "binokkio@b.nana.technology",
        "time": "Fri Nov 22 22:19:52 2024 +0100"
      },
      "committer": {
        "name": "Binokkio",
        "email": "binokkio@b.nana.technology",
        "time": "Fri Nov 22 22:19:55 2024 +0100"
      },
      "message": "Fix typo\n"
    },
    {
      "commit": "06490152cb529c57b60ad4222418ce8f2fbbd64f",
      "tree": "bd522726aa7ad99651f9b056997a63ed8763ba9b",
      "parents": [
        "5d2022d50a2d9d789bd2cbf3b54a694b217376c5"
      ],
      "author": {
        "name": "Binokkio",
        "email": "binokkio@b.nana.technology",
        "time": "Fri Nov 22 22:19:45 2024 +0100"
      },
      "committer": {
        "name": "Binokkio",
        "email": "binokkio@b.nana.technology",
        "time": "Fri Nov 22 22:19:45 2024 +0100"
      },
      "message": "Fix sep directive in syntax A breaking templates in syntax B\n"
    },
    {
      "commit": "5d2022d50a2d9d789bd2cbf3b54a694b217376c5",
      "tree": "27253ad308fcf60586ce2c397635c21a1356671c",
      "parents": [
        "ce5d8697e682f57a476eaff163b3b3b486898f16",
        "033136c4686d7436a0db49665c5d771dac33efaa"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Nov 15 20:22:39 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 15 20:22:39 2024 +0100"
      },
      "message": "Merge pull request #118 from Blackman99/patch-1\n\ndocs: wrong `with_args` output"
    },
    {
      "commit": "033136c4686d7436a0db49665c5d771dac33efaa",
      "tree": "27253ad308fcf60586ce2c397635c21a1356671c",
      "parents": [
        "ce5d8697e682f57a476eaff163b3b3b486898f16"
      ],
      "author": {
        "name": "Dongsheng Zhao",
        "email": "41723543+Blackman99@users.noreply.github.com",
        "time": "Fri Nov 15 09:21:57 2024 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 15 09:21:57 2024 +0800"
      },
      "message": "fix: with_args output"
    },
    {
      "commit": "ce5d8697e682f57a476eaff163b3b3b486898f16",
      "tree": "b46f9964efd417fca70898982cccfedb292e8da1",
      "parents": [
        "e46d3bd67e1e8f02745c8badd9922326eb21a2c9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Nov 01 10:52:00 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Fri Nov 01 10:52:00 2024 +0100"
      },
      "message": "Minor cleanups related to ?trimToNull/?emptyToNull/?blankToNull\n"
    },
    {
      "commit": "e46d3bd67e1e8f02745c8badd9922326eb21a2c9",
      "tree": "799a6bcfc7b3ce8f7cf30dc10024d3d51d6214b3",
      "parents": [
        "3cca12652239a79dc465f5e2b28c1ad43967c5bb"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Oct 31 08:28:30 2024 +0100"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Oct 31 08:28:30 2024 +0100"
      },
      "message": "(Manual typo fix)\n"
    },
    {
      "commit": "3cca12652239a79dc465f5e2b28c1ad43967c5bb",
      "tree": "dc82410147a0dba8e96bb557ec325ae29b87a207",
      "parents": [
        "fe671f225e59a2549ac71bfdf6d8962f8426699a"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Sep 19 11:55:47 2024 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Sep 19 11:56:03 2024 +0200"
      },
      "message": "Github actions: Updated even more actions\n"
    },
    {
      "commit": "fe671f225e59a2549ac71bfdf6d8962f8426699a",
      "tree": "964b8c2e8e00047fd7a8367ee004ee67f212a612",
      "parents": [
        "6d73c193401d5df60b560850ecdad81804d0ae61",
        "304ca67ac4c92ef229fff8107e110afd977c9e3d"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Sep 19 11:32:01 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 19 11:32:01 2024 +0200"
      },
      "message": "Merge pull request #117 from Swilvan/2.3-gae\n\nFix typo in docs"
    },
    {
      "commit": "6d73c193401d5df60b560850ecdad81804d0ae61",
      "tree": "891deb13a2e3b1186fbe75e46ec419317d54afeb",
      "parents": [
        "7d9f5e57567d32f755e1e4767d7b922e4ce98169"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Sep 19 11:30:21 2024 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Sep 19 11:30:21 2024 +0200"
      },
      "message": "Github actions: Updated from unsupported actions/upload-artifact version\n"
    },
    {
      "commit": "304ca67ac4c92ef229fff8107e110afd977c9e3d",
      "tree": "5dd5c0433f32a3f87c9dd6b92597b7bce8c70ef7",
      "parents": [
        "7d9f5e57567d32f755e1e4767d7b922e4ce98169"
      ],
      "author": {
        "name": "Silvan van Leeuwen",
        "email": "silvansmeel@gmail.com",
        "time": "Thu Sep 19 07:33:34 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 19 07:33:34 2024 +0200"
      },
      "message": "Fix typo in docs"
    },
    {
      "commit": "928bd5ee54dae1ed6422615b66468847458ed726",
      "tree": "ece3db7e574a0fa77dd22155014fb819098d233d",
      "parents": [
        "30a6e3297a77ebdebef8c896ab5b565f8679e2a2"
      ],
      "author": {
        "name": "hduelme",
        "email": "hduelme@gmx.de",
        "time": "Wed Sep 04 20:46:23 2024 +0200"
      },
      "committer": {
        "name": "hduelme",
        "email": "hduelme@gmx.de",
        "time": "Wed Sep 04 20:46:23 2024 +0200"
      },
      "message": "use isEmpty to check if string is empty\n"
    },
    {
      "commit": "7d9f5e57567d32f755e1e4767d7b922e4ce98169",
      "tree": "73be2b8fe564a7650a683cc82fc799c04da30340",
      "parents": [
        "7a429fe77156a73ed31d09cf2dac09d53f2a4bc9"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 28 19:43:17 2024 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 28 19:43:17 2024 +0200"
      },
      "message": "#switch #on PR post-merge adjustments:\n\n- Reorganized how #case/#on/#default is parsed in JavaCC, mostly to achieve better error messages (also I guess it\u0027s also easier to follow).\n- Reorganized SwitchBlock to branch out for the #switch+#case and the #switch+#on logic earlier (less checks on runtime, also maybe easier to follow).\n- Adjusted error message wording\n- Added much more test cases\n- Manual updates for #on, and added version history entry\n"
    },
    {
      "commit": "7a429fe77156a73ed31d09cf2dac09d53f2a4bc9",
      "tree": "ed37d93e86cbfada877426a89fa01165dd740475",
      "parents": [
        "30a6e3297a77ebdebef8c896ab5b565f8679e2a2",
        "7c802f4757938ae25ec4b53ff838702f35b77468"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 28 19:41:19 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 28 19:41:19 2024 +0200"
      },
      "message": "Merge pull request #114 from scrhartley/switch-on\n\nAdd on directive to switch as an alternative to case"
    },
    {
      "commit": "30a6e3297a77ebdebef8c896ab5b565f8679e2a2",
      "tree": "633471b47056a26d8fa1e3559fdba3e3dd0c0f86",
      "parents": [
        "dda4fafc8340c09d841f5d2f9f4e9a54bb753a99",
        "fb80ca9c2fe84dc0e12b5dbf58a26e874068a427"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Aug 22 00:03:19 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 22 00:03:19 2024 +0200"
      },
      "message": "Merge pull request #112 from timlueg/2.3-gae\n\nAvoid unnecessary Pattern.compile calls in MemberSelector"
    },
    {
      "commit": "dda4fafc8340c09d841f5d2f9f4e9a54bb753a99",
      "tree": "6275222e6d977a9bd5a203c63456b401bf721eab",
      "parents": [
        "e3258943d231ab7afc39761b3c33c23034bbc180",
        "213cba6e4041dd7ca646d9ac18ff463bb858b22a"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Thu Aug 22 00:01:15 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 22 00:01:15 2024 +0200"
      },
      "message": "Merge pull request #108 from hduelme/use-StandardCharsets-instead-of-string\n\nuse StandardCharsets instead of string"
    },
    {
      "commit": "e3258943d231ab7afc39761b3c33c23034bbc180",
      "tree": "4d94e138edf093ecb72421e97c08f2ad1ab4cdce",
      "parents": [
        "943c9b6030dd1e8e70db6a12a9c1a95b46e31e86"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 21 09:25:43 2024 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 21 09:25:43 2024 +0200"
      },
      "message": "Version number fixes/adjustments\n"
    },
    {
      "commit": "943c9b6030dd1e8e70db6a12a9c1a95b46e31e86",
      "tree": "11d7d16500c557ba617e8bd97131d0f53449985a",
      "parents": [
        "be043eccbd0e8c9ddcfb1d66bfa14e96c3f6dde6"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 14 02:17:03 2024 +0200"
      },
      "committer": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Wed Aug 14 02:41:12 2024 +0200"
      },
      "message": "Refinements for blank_to_null, empty_to_null, and trim_to_null built-ins PR:\n- ?blank_to_null now also considers non-breaking whitespace as whitespace\n- Fixed type error messages, and added tests for the same\n- Added tests for type conversions\n- Added tests for parentheses behavior\n- Extended/reworked documentation (also added to version history)\n- Various smaller code cleanup\n"
    },
    {
      "commit": "be043eccbd0e8c9ddcfb1d66bfa14e96c3f6dde6",
      "tree": "2083e70df2021936abb65813fcb3bf7846b6749a",
      "parents": [
        "d03f7f79b0e2ebdfa6586a196c3afc80f0511dec",
        "1836779d8490de345c23cdc305566fed97f57c58"
      ],
      "author": {
        "name": "ddekany",
        "email": "ddekany@apache.org",
        "time": "Tue Aug 13 22:03:08 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 13 22:03:08 2024 +0200"
      },
      "message": "Merge pull request #111 from chrisrueger/add-is_blank-builtin-for-string\n\nAdd blank_to_null, empty_to_null, and trim_to_null built-ins"
    },
    {
      "commit": "1836779d8490de345c23cdc305566fed97f57c58",
      "tree": "2083e70df2021936abb65813fcb3bf7846b6749a",
      "parents": [
        "5708060557a1c813651de0fdb62bda29a5c20fc7",
        "d03f7f79b0e2ebdfa6586a196c3afc80f0511dec"
      ],
      "author": {
        "name": "Christoph Rueger",
        "email": "chrisrueger@gmail.com",
        "time": "Sat Aug 10 20:45:39 2024 +0200"
      },
      "committer": {
        "name": "Christoph Rueger",
        "email": "chrisrueger@gmail.com",
        "time": "Sat Aug 10 20:45:39 2024 +0200"
      },
      "message": "Merge remote-tracking branch \u0027upstream/2.3-gae\u0027 into add-is_blank-builtin-for-string\n"
    }
  ],
  "next": "5708060557a1c813651de0fdb62bda29a5c20fc7"
}
