)]}'
{
  "log": [
    {
      "commit": "68e2fe759c56df7ee14cb957b409a571a2a67a5d",
      "tree": "06df01fd10221b44dd6684a0a19fbfd52fd67265",
      "parents": [
        "0f200c46f7ec03bd678ec9f3f857047821581a69"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Fri Oct 23 19:52:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:52:56 2026 +0800"
      },
      "message": "fix(website): resolve cross-page style pollution (#1259)\n\nScope the `table { display: table }` style on the team page to prevent it from affecting table styles on the annotation page."
    },
    {
      "commit": "0f200c46f7ec03bd678ec9f3f857047821581a69",
      "tree": "326334c63f9bfc29c8ecbed47912ccb9d629009a",
      "parents": [
        "f33ab5f81f09d83fa5e2222a81fb3cddce8c85e0"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Fri Oct 23 13:55:11 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 18:55:11 2026 +0800"
      },
      "message": "build: bump spotless and shorten qualified types (#1247)\n\n* build: bump spotless and shorten qualified types\n\n* style: import fully qualified types\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "f33ab5f81f09d83fa5e2222a81fb3cddce8c85e0",
      "tree": "d2ae181c445eaa781371202ffb4145c57e43ced1",
      "parents": [
        "60925676547571a97fcb5c6812036be361cea1c6"
      ],
      "author": {
        "name": "Shuxin Pan",
        "email": "psxjoy@apache.org",
        "time": "Fri Oct 23 11:24:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 11:24:15 2026 +0800"
      },
      "message": "docs: add security model page (#1253)\n\n* docs: add security model page describing trust boundaries and password scope\n\nAdd a dedicated Security Model page covering the trust boundaries,\ntemporary-file and cache handling, password-protection limits, resource\nisolation, and reporting responsibilities. Both the English and zh-cn\npages are added and registered in the community sidebar.\n\nThe page states explicitly that password protection covers completed\nXLSX output only, that intermediate plaintext may remain in temporary\nfiles and process memory, that the URL image fetch policy is\nprocess-wide and denies remote fetching by default, and that replacing\nthe XML parser factory changes the hardening that is applied.\n\nCross-link the page from the Security page and from the password\ndocument, and correct the password notes, which previously implied\nfull-content encryption for every format.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n* docs: clarify temporary file cleanup scope\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "60925676547571a97fcb5c6812036be361cea1c6",
      "tree": "7c30314267610f02e87500e574f9a689af00bed3",
      "parents": [
        "7a69d06affa36ed970b7154cede505a8b55e0aa9"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Thu Oct 22 14:07:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 14:07:24 2026 +0800"
      },
      "message": "docs: use the real release version in install snippets (#1257)\n\nBoth READMEs told users to write \u003cversion\u003eversion\u003c/version\u003e, which is not a\nplaceholder Maven understands - it is a literal version string. Copying the\nsnippet fails with \"Could not find artifact\norg.apache.fesod:fesod-sheet:jar:version\".\n\nThe same snippet was reported in #645. The issue was closed after the\nartifactId was corrected from fesod to fesod-sheet, but the version was left\nas \"version\", so the snippet still does not work.\n\nUse 2.1.0-incubating, the current release, and point at Maven Central so the\nnext version bump is easy to notice."
    },
    {
      "commit": "7a69d06affa36ed970b7154cede505a8b55e0aa9",
      "tree": "39db534da2ab1cc96115b6223d5b72679ebf78ab",
      "parents": [
        "a1a064588c967bb9283c7312a70184127803ee0a"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Wed Oct 21 18:15:38 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 17:15:38 2026 +0800"
      },
      "message": "fix: preserve cached formula error values when reading XLS (#1093)\n\n* fix: preserve cached formula error values when reading XLS\n\n* test: improve cached formula error diagnostics\n\n* style: format assertion context\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "a1a064588c967bb9283c7312a70184127803ee0a",
      "tree": "ca344abcd5700cdba0fc25a54cc2e7d4dd1b3f09",
      "parents": [
        "6c6b71e2b62ddbf2a862d3c4daa8f2c13cf3c089"
      ],
      "author": {
        "name": "56wj",
        "email": "88013475+56wj@users.noreply.github.com",
        "time": "Wed Oct 21 12:30:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 12:30:48 2026 +0800"
      },
      "message": "feat: support Instant string conversion (#1089)\n\n* feat: support Instant string conversion\n\n* fix: reject non-UTC offsets in Instant converter\n\n* refactor: compare Instant offset with UTC\n\n---------\n\nSigned-off-by: 56wj \u003c88013475+56wj@users.noreply.github.com\u003e\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "6c6b71e2b62ddbf2a862d3c4daa8f2c13cf3c089",
      "tree": "08c80448f463fc44760d2d46b5640ddbf8f7689d",
      "parents": [
        "0045070c1556d824e45851327e719867ec89a9d6"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Tue Oct 20 14:21:10 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:21:10 2026 +0800"
      },
      "message": "fix: keep hyperlink URL when it has a fragment (#1139)\n\n* fix: keep hyperlink URL when it has a fragment\n\n* docs: clarify hyperlink location comments\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "0045070c1556d824e45851327e719867ec89a9d6",
      "tree": "60e8e177000adfa8c839286e349b19812b2cb401",
      "parents": [
        "3ebe1db74161674ebd199e8a4af995ecd6930bb0"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Tue Oct 20 12:11:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:11:05 2026 +0800"
      },
      "message": "docs(release): point the download link to the real page (#1241)"
    },
    {
      "commit": "3ebe1db74161674ebd199e8a4af995ecd6930bb0",
      "tree": "53ed1bc995965d755f3d024c1c178f4d4b7dedff",
      "parents": [
        "29340dd1f7a11b1e2e924c1d3668d07108930090"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Tue Oct 20 10:29:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 10:29:23 2026 +0800"
      },
      "message": "docs(zh): fix the misspelled issue tracker link (#1240)"
    },
    {
      "commit": "29340dd1f7a11b1e2e924c1d3668d07108930090",
      "tree": "7e5c6d79b467f4c334b05e85960614f3d208a116",
      "parents": [
        "567b67d213f021baead32c834e0285bc961e9d41"
      ],
      "author": {
        "name": "PJ Fanning",
        "email": "pjfanning@users.noreply.github.com",
        "time": "Mon Oct 19 14:29:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 21:29:39 2026 +0800"
      },
      "message": "test: check DataFormatter against text computed by Excel (#1231)\n\n* test: check DataFormatter against text computed by Excel\n\nAdds DataFormatterAgainstExcelTest, a port of POI\u0027s TestDataFormatterAgainstExcel\n(apache/poi#1398). The TEXT(value, format) results cached in Excel-saved sample\nworkbooks from POI\u0027s test data are compared with what Fesod\u0027s DataFormatter\nproduces. Chinese date/time and [DBNum] cases from POI\u0027s TestDataFormatter\n(apache/poi#1400) are also included.\n\nCases that do not match are listed, grouped by cause, and asserted to still\ndiffer, so the lists document current behaviour and give regression coverage\nfor changes to the formatter, such as switching to POI\u0027s DataFormatter.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n* test: drop cases fixed by #1232 from the known failures\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "567b67d213f021baead32c834e0285bc961e9d41",
      "tree": "09b4d2ac15b9e9fd1c231a807a4bdb9436f02bd6",
      "parents": [
        "bfca74025ef2ed1958d6d0c63ddeec15c4bfaeb3"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Mon Oct 19 13:34:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:34:29 2026 +0800"
      },
      "message": "docs(zh): translate remaining English page titles (#1238)\n\nThree Chinese pages still had an English title in their frontmatter\nwhile the body heading was already translated:\n\n  read/csv.md    CSV   -\u003e 读取 CSV 文件\n  write/csv.md   CSV   -\u003e 写入 CSV 文件\n  read/sheet.md  Sheet -\u003e Sheet 页\n\nThe title feeds both the page \u003ctitle\u003e and the sidebar label, so the\nChinese site showed English entries in the navigation.\n\n\"Sheet\" is kept as-is: it is the established term in the Chinese docs\n(412 occurrences, versus 6 for 工作表), and the heading already reads\n\"Sheet 页\". Only the missing translation is added."
    },
    {
      "commit": "bfca74025ef2ed1958d6d0c63ddeec15c4bfaeb3",
      "tree": "0b5b18e56337eaf48124c016a33c9c9d9b8ad3db",
      "parents": [
        "0b00460de5466c20f1fda93fa6f825e9418daa87"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Mon Oct 19 12:45:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 12:45:34 2026 +0800"
      },
      "message": "docs(release): correct the project description in the announcement (#1236)\n\nThe announcement template described Apache Fesod as a \"distributed\ntransaction solution\", which is copy-pasted from another Apache project.\nRelease managers copy this block verbatim into the announcement mail, so\nthe wrong description would be sent to announce@apache.org and every\nmirror.\n\nUse the project description from README.md verbatim, so the announcement\nand the README stay consistent. \"Spreadsheet files\" also covers XLS, XLSX\nand CSV, unlike the narrower \"Excel files\".\n\nBoth the English file and the Chinese translation are updated; the\nsentence stays in English in the Chinese file because it is part of the\nmail template."
    },
    {
      "commit": "0b00460de5466c20f1fda93fa6f825e9418daa87",
      "tree": "fb3da6b6fd5c4d706fb4c0eaaa98d62c87fbf990",
      "parents": [
        "6f5221bfe3be42c7be9d4343550777a036750b2a"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Mon Oct 19 11:51:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 11:51:57 2026 +0800"
      },
      "message": "docs: fix stale @see references in HeaderMergeStrategy (#1237)\n\nBoth tags point at org.apache.fesod.excel.*, a package that no longer\nexists after the rename to org.apache.fesod.sheet. javadoc fails with\n\"reference not found\" on lines 30 and 31, which blocks generating the\n-javadoc.jar during a release.\n\nThe first tag also referenced getHeaderMergeStrategy(), a getter\ngenerated by Lombok @Getter and therefore invisible to javadoc when it\nparses sources. Point it at the field instead."
    },
    {
      "commit": "6f5221bfe3be42c7be9d4343550777a036750b2a",
      "tree": "1ea7b703ac294b23aa9c75a0d768905bcfca1d2d",
      "parents": [
        "877164c60c1c0e9934cef7d1ce7d520d28c2ec70"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Mon Oct 19 11:08:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 11:08:55 2026 +0800"
      },
      "message": "docs: move copilot instructions to root AGENTS.md (#1227)\n\nMove .github/copilot-instructions.md to the repository root as\nAGENTS.md, following the convention used by Apache Flink: a single\ntool-agnostic agent instructions file at the root that any AI coding\nagent picks up automatically. Retitle it accordingly and add a short\nintro line; body content is otherwise unchanged.\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "877164c60c1c0e9934cef7d1ce7d520d28c2ec70",
      "tree": "9f96dca35ba9e80969cf2095eeca50015075d4fe",
      "parents": [
        "9a0705ac56f4d3d32448309296815960c9152546"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Oct 17 22:44:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 22:44:27 2026 +0800"
      },
      "message": "build: bump org.codehaus.mojo:exec-maven-plugin from 3.1.0 to 3.1.1 (#1224)"
    },
    {
      "commit": "9a0705ac56f4d3d32448309296815960c9152546",
      "tree": "67fd0947f62ca24351a08242c0c891d7df30bd67",
      "parents": [
        "edd89c7aff4cbb25590fdc442af1084c9f1788c5"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Sat Oct 17 23:43:21 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 22:43:21 2026 +0800"
      },
      "message": "chore: fix missing Spring and OW2 attributions in shaded JAR (#1176)\n\n* fix: add missing shaded dependency attributions\n\n* fix: complete ASM attribution in distribution license\n\n* fix: align shaded attribution with upstream notices\n\n* fix: retain Spring project attribution in notice"
    },
    {
      "commit": "edd89c7aff4cbb25590fdc442af1084c9f1788c5",
      "tree": "ba8ec742be04ff621c36b4a199a31e69951a4ae2",
      "parents": [
        "4750b46a047a695e5b475de0d32e65870f4f4223"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Sat Oct 17 22:23:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 22:23:23 2026 +0800"
      },
      "message": "ci: replace Chinese schedule comment with English in CodeQL workflow (#1233)\n\nGitHub Actions cron triggers run in UTC; state that explicitly and drop\nthe only non-English comment in the CI workflows.\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "4750b46a047a695e5b475de0d32e65870f4f4223",
      "tree": "a36d1191aa0ee4e0dfecab1dc28dec6f9b71f5d6",
      "parents": [
        "50dc2c931ab46038dc22680f0cc898f96557ab77"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Sat Oct 17 21:45:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 21:45:53 2026 +0800"
      },
      "message": "chore: run tests by default in Maven builds (#1228)\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "50dc2c931ab46038dc22680f0cc898f96557ab77",
      "tree": "211506c11c9a633038822d9a2339278edcc12a0c",
      "parents": [
        "56e8327de2b3a67831de0314e1b96795c3c8cc57"
      ],
      "author": {
        "name": "PJ Fanning",
        "email": "pjfanning@users.noreply.github.com",
        "time": "Sat Oct 17 12:57:25 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 19:57:25 2026 +0800"
      },
      "message": "fix: DataFormatter trailing-comma scaling and literals between digits (#1232)\n\n* fix: DataFormatter trailing-comma scaling and literals between digits\n\nPort of apache/poi#1396.\n\n- Trailing commas scaled by an extra power of ten for each character between\n  the decimal point and the comma (the issue #2319 workaround), e.g. \"0,\"\n  showed 1234567 as \"124\" instead of \"1235\". Remove that and divide exactly,\n  so formats such as \"#,##0.0,\" keep their decimal places.\n- Excel treats \u0027!\u0027 as an escape like \u0027\\\u0027; rewrite it as \u0027\\\u0027 outside quotes,\n  brackets and \u0027_\u0027/\u0027*\u0027 operands.\n- Number formats with quoted or escaped text between digit placeholders, e.g.\n  \"0\\.0,\" (issue #2319: shows 9234 as \"0.9\"), cannot be expressed with\n  DecimalFormat, so they are now formatted by CellFormat.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n* fix: format literal text after trailing commas with CellFormat\n\nFormats with quoted or escaped text after trailing scaling commas, such as\n0.0,\"万\" or #,##0,,\"M\", fell back to the raw value because the stripped\npattern is not valid for DecimalFormat, and a quoted comma in #,##0.0,\",\"\nwas taken as an extra scaling comma. Route these to CellFormat too.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "56e8327de2b3a67831de0314e1b96795c3c8cc57",
      "tree": "858ad2b3bafa5235531d019bc5c56084d59ff925",
      "parents": [
        "8bb56741c5c0f0e4ada9790cf57646b5a5db2376"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Fri Oct 16 20:07:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 20:07:16 2026 +0800"
      },
      "message": "docs: fix wrong artifactId in Spring integration guide (#1230)\n\norg.apache.fesod:fesod has never been published to Maven Central,\nso the dependency snippet in the Spring guide could not resolve.\nPoint it at the published artifact fesod-sheet, in both the\nEnglish and zh-cn pages. The version placeholder is intentionally\nleft unchanged.\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "8bb56741c5c0f0e4ada9790cf57646b5a5db2376",
      "tree": "26b6501984ea960f29646b14aefd02fce6aa1a7c",
      "parents": [
        "2e606a5745f56028b5d1fb15aa03fc1cbb8f4f76"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Fri Oct 16 19:25:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 19:25:57 2026 +0800"
      },
      "message": "build: skip Maven deploy for fesod-benchmark (#1229)\n\nfesod-benchmark is an internal JMH module and not a published artifact.\nSince it was added to the reactor (PR #575), the release command\n\u0027mvn clean deploy -Papache-release\u0027 would upload it to the ASF staging\nrepository: a thin jar plus the shade-rewritten dependency-reduced pom\nwith all compile/runtime dependencies stripped, which would publish a\nbroken artifact to Maven Central.\n\nSet maven.deploy.skip\u003dtrue so the module still builds and installs\nlocally (benchmark CI unaffected) but is excluded from deployment.\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "2e606a5745f56028b5d1fb15aa03fc1cbb8f4f76",
      "tree": "e3935593adb2f652e77fd85beb6f035b2b6904d7",
      "parents": [
        "afc959b202d49a670e6f6cd6251428cffacc08ad"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Thu Oct 15 16:15:48 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 21:15:48 2026 +0800"
      },
      "message": " fix: render negative date serials as numbers  (#1117)\n\n* test: cover DataFormatter formatting paths\n\n* fix: render negative date serials as numbers\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "afc959b202d49a670e6f6cd6251428cffacc08ad",
      "tree": "498f0bf39be01d6040efae35f5d65badc87780fc",
      "parents": [
        "b0a9cabf442277459d472c4d7714f95df9a10d65"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Thu Oct 15 14:54:35 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 19:54:35 2026 +0800"
      },
      "message": "fix: treat escaped percent as a literal (#1115)\n\n* test: cover DataFormatter formatting paths\n\n* fix: treat escaped percent as a literal\n\n* refactor: use replace directly\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "b0a9cabf442277459d472c4d7714f95df9a10d65",
      "tree": "1c32e17dbadd08ffe4b4108f8679a377d85d4af8",
      "parents": [
        "99237fb678695671a19183ce3d68c38e6699631a"
      ],
      "author": {
        "name": "zhanghuang090",
        "email": "78581375+zhanghuang090@users.noreply.github.com",
        "time": "Thu Oct 15 18:07:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 18:07:22 2026 +0800"
      },
      "message": "feat: add UUID string converter (#1017) (#1088)\n\n* feat: add UUID string converter (#1017)\n\n* test: address UUID converter review feedback\n\n* fix: align UUID converter naming and handle blank input\n\n* test: separate UUID unit and round-trip coverage\n\n* test: align UUID naming and reuse converter lookup\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "99237fb678695671a19183ce3d68c38e6699631a",
      "tree": "d565319c993b75b3c0988932d04ec2ef8e542871",
      "parents": [
        "d4547f9798e53d1258894dd6c843c30888e1e2eb"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Wed Oct 14 22:19:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 22:19:26 2026 +0800"
      },
      "message": "docs: add CVE-2026-107460 security advisory (#1221)\n\n* docs(website): add CVE-2026-107460 security advisory\n\n* docs: add new references"
    },
    {
      "commit": "d4547f9798e53d1258894dd6c843c30888e1e2eb",
      "tree": "28c40c9ddde10fbcbc967e41a38d23044f38419b",
      "parents": [
        "10320442dc35c56defd7de457200dbde14efedbf"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Wed Oct 14 19:47:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 19:47:27 2026 +0800"
      },
      "message": "feat: add JMH benchmark module (Fesod core suite + Fesod vs POI comparison) (#575)\n\n* feat(benchmark): add JMH benchmark module\n\nAdds a fesod-benchmark module with JMH benchmarks for Fesod, kept to\npure JMH classes per review feedback: no CI integration, no report or\nanalysis code. Closes #572.\n\nSuites (org.apache.fesod.sheet.benchmark):\n- FesodBenchmark: read/write x XLSX/CSV x 1K/10K/100K rows (average\n  time, 3 forks, fixed 1g G1 heap, stable execution contract)\n- FesodVsPoiBenchmark: Fesod vs Apache POI on identical data (write,\n  DOM read, batched streaming read; XLSX + XLS)\n- deterministic data generation (fixed seed + fixed date anchor) and\n  unit tests for the generator and file utilities\n\nBenchmarks run manually via the shaded benchmarks.jar; see\nfesod-benchmark/benchmark.md.\n\n* refactor(benchmark): use Lombok for the benchmark data model\n\nReplace the hand-written accessors in BenchmarkData with @Data and\n@NoArgsConstructor (283 -\u003e 92 lines), per review feedback. Lombok is\ninjected globally by the root pom (provided scope); the module\u0027s\nannotationProcessorPaths overrides the root compiler config for the\nJMH processor, so Lombok is re-added there alongside it.\n\nEnd-to-end verified: full build and test suite pass, and the\nread/write/streaming benchmarks produce the same numbers as with the\nhand-written accessors (Lombok emits identical bytecode).\n\n* refactor(benchmark): adopt Lombok across the remaining support classes\n\nModule-wide pass over the benchmark sources for Lombok-replaceable\nboilerplate:\n\n- DataGenerator and BenchmarkFileUtil: hand-written SLF4J loggers\n  replaced with @Slf4j (field renamed to the conventional log)\n- BenchmarkConfiguration: enum accessors replaced with @Getter\n\nThe JMH suite classes and tests have no replaceable boilerplate (no\nloggers, no accessors; @Param fields are JMH-managed).\n\n* refactor(benchmark): use 3 forks for the comparison suites too\n\nAlign the fork count of FesodVsPoiBenchmark and StreamingBenchmark with\nFesodBenchmark so every suite exposes cross-fork JVM/JIT variability in\nits error bars and the suites are comparable with each other. The\noriginal single fork on the comparison suites was only a wall-clock\nconvenience for manual runs, not a measurement choice. Also document\nthe deliberate heap difference (core suite 1g/G1GC vs comparison 2g)\nunder the contracts table."
    },
    {
      "commit": "10320442dc35c56defd7de457200dbde14efedbf",
      "tree": "1e29d865d4396f0d6a86bc3130a0bc9be99c6015",
      "parents": [
        "bf9bf92332aedcb7d88bf90cd12c2c092b3d56f0"
      ],
      "author": {
        "name": "Sean-Walker0",
        "email": "jast_zsh@foxmail.com",
        "time": "Mon Oct 12 19:56:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 19:56:15 2026 +0800"
      },
      "message": "fix(sheet): skip the trailing endSheet when no XLS sheet matched (#1201)\n\nXlsSaxAnalyser.execute() ends with an unconditional endSheet call that\ncovers sheet substreams lacking the EOF terminator. When the requested\nsheetNo or sheetName matches nothing in the workbook, no sheet was\never started and readSheetHolder() is still null, so the call throws a\nNullPointerException from DefaultAnalysisEventProcessor.endSheet and\nthe whole read fails. The xlsx and csv readers guard the equivalent\ncall and return an empty read for the same request.\n\nGuard the trailing call with a readSheetHolder null check, matching\nthe xlsx reader: an unmatched sheet reads as empty.\n\nVerified with NoMatchSheetReadTest (the two xls cases throw NPE before\nthe change and pass after; the xlsx case pins the expected behavior on\nboth sides) plus the full fesod-sheet suite (951 tests) and\nspotless:check.\n\nCo-authored-by: Sean-Walker0 \u003c309789691+Sean-Walker0@users.noreply.github.com\u003e"
    },
    {
      "commit": "bf9bf92332aedcb7d88bf90cd12c2c092b3d56f0",
      "tree": "fd72d2b53b24db7a3520e0b6bbaa3a01c278e158",
      "parents": [
        "ae338fd51478099c4328b9eb0c8a4924c03d574f"
      ],
      "author": {
        "name": "BigDataDZ",
        "email": "76271875+BigDataDZ@users.noreply.github.com",
        "time": "Sat Oct 10 20:07:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 20:07:56 2026 +0800"
      },
      "message": "feat: add Character and Year converters (#1017) (#1087)\n\n* feat: add Character and Year converters (#1017)\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* refactor: address review comments on Character and Year converters\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* refactor: align default year format field naming\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* test: cover YearStringConverter and DateUtils year scenarios\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* fix: register the Year converter under the wildcard write key\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* test: cover Character field round trip through FesodSheet\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* test: move converter field round trips to a dedicated integration test\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\n\n* docs: cover the read-path converter lookup in the round trip test javadoc\n\nThe previous javadoc described only the write-path lookup keys. On the\nread path, xlsx/xls resolve converters by the concrete cell type key\n(type, CellDataType), not the wildcard (type, null) key, so describe\nboth directions.\n\n---------\n\nSigned-off-by: BigDataDZ \u003c76271875+BigDataDZ@users.noreply.github.com\u003e\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "ae338fd51478099c4328b9eb0c8a4924c03d574f",
      "tree": "e18bad3dbf0a807e660eb5697cd10ae2b3a0f045",
      "parents": [
        "d079374c73e43b55104680ce0e37494275ae0708"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Sat Oct 10 17:37:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 17:37:01 2026 +0800"
      },
      "message": "chore: forbid static and wildcard imports via checkstyle (#1207)\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "d079374c73e43b55104680ce0e37494275ae0708",
      "tree": "3e35681c17603cb9d02ae4264f989d8ab5ff39da",
      "parents": [
        "9b37494213dd430e3cb66288f9ff59d0709aed68"
      ],
      "author": {
        "name": "Lance",
        "email": "li6151770@126.com",
        "time": "Sat Oct 10 09:47:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 09:47:01 2026 +0800"
      },
      "message": "refactor: add ReadCache no-op defaults and unit tests (#1063)\n\n* add ReadCache no-op defaults and unit tests\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\n\n* add ReadCache no-op defaults and unit tests\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\n\n* add ReadCache no-op defaults and unit tests\n\nSigned-off-by: lance \u003cli6151770@126.com\u003e\n\n---------\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\nSigned-off-by: lance \u003cli6151770@126.com\u003e\nCo-authored-by: ian zhang \u003cian.zhangzhe@gmail.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "9b37494213dd430e3cb66288f9ff59d0709aed68",
      "tree": "ff87b94f3784599f31f3da8cc262d4c7c4e5d48e",
      "parents": [
        "bc7cc3626323cb7a92ce21a0fb3cd5717862fd61"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Fri Oct 09 18:46:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 09:46:46 2026 +0800"
      },
      "message": "fix: prevent CSV multi-sheet data loss (#1148) (#1158)\n\nSigned-off-by: liuhy \u003cliuhongyu@apache.org\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "bc7cc3626323cb7a92ce21a0fb3cd5717862fd61",
      "tree": "c83c2e0a2055573990c8e4d4956d6e503726623e",
      "parents": [
        "2c1e4b22f622fd3b8eaf17185f51dc100cb1303d"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Sat Oct 10 04:46:18 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 10 09:46:18 2026 +0800"
      },
      "message": "test: cover DataFormatter formatting paths (#1110)\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "2c1e4b22f622fd3b8eaf17185f51dc100cb1303d",
      "tree": "0e45748776a392c2ace7d42c978b4940f7eb9073",
      "parents": [
        "2c15cbfa7f0a7fe3788f172dde23ee92bfc24e7b"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Fri Oct 09 17:09:39 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 22:09:39 2026 +0800"
      },
      "message": "fix: keep the first failure and suppress later ones (#1198)\n\n* fix: add later failures as suppressed\n\n* style: pass throwable in the first catch\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "2c15cbfa7f0a7fe3788f172dde23ee92bfc24e7b",
      "tree": "7885f72273e83d9197031cfe249c36c822a9450b",
      "parents": [
        "f11886bd94e69045f7331ee8a5f8aa8c2604a877"
      ],
      "author": {
        "name": "SummerC0zyR0ck",
        "email": "98086622+SummerC0zyR0ck@users.noreply.github.com",
        "time": "Fri Oct 09 19:32:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 19:32:01 2026 +0800"
      },
      "message": "feat: add java.sql.Time converter support (#1092)\n\n* feat: add java.sql.Time converter support\n\n* style: add missing license headers\n\n* style: fix license header format in SqlTimeConverterTest\n\n* test: verify locale-specific SQL time formatting\n\n* fix: handle invalid Excel serial in SqlTimeNumberConverter\n\n* feat: add java.sql.Time converter support\n\n* style: add missing license headers\n\n* style: fix license header format in SqlTimeConverterTest\n\n* test: verify locale-specific SQL time formatting\n\n* fix: handle invalid Excel serial in SqlTimeNumberConverter\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "f11886bd94e69045f7331ee8a5f8aa8c2604a877",
      "tree": "5ec6a97b5a0b310535ef23eadd3982a4099f5c18",
      "parents": [
        "a559aa1a8509093b0b3d3500e5d88a0a5b799425"
      ],
      "author": {
        "name": "gongzhongqiang",
        "email": "gongzhongqiang@apache.org",
        "time": "Fri Oct 09 15:59:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 15:59:37 2026 +0800"
      },
      "message": "ci: fix gh-pages deploy race and align docs workflows with Apache practice (#1206)\n\nThe docs deploy workflow ran on every push to main and each run takes\nabout 30 minutes (full-history checkout plus Docusaurus build), so\nbursts of merges race their final \u0027git push --force gh-pages\u0027. On\n2026-10-08 the deploy triggered by the Java-only commit a559aa1a\nfailed with \"cannot lock ref \u0027refs/heads/gh-pages\u0027\" because a\nconcurrent deploy recreated the branch seconds earlier (run\n37812706645).\n\n- deploy-docs.yml: trigger only on website/** and .asf.yaml changes so\n  Java-only merges no longer deploy; queue deploys through a\n  non-cancelling concurrency group instead of racing; add\n  workflow_dispatch for manual redeploys; cache the pnpm store.\n- ci-docs/preview-docs/deploy-docs: least-privilege permissions\n  (write only where needed), persist-credentials: false on checkout,\n  each workflow file added to its own path filter, and unified\n  \u0027Docs \u003crole\u003e\u0027 naming, following common Apache practice (iceberg,\n  superset).\n\nSigned-off-by: gongzhongqiang \u003cgongzhongqiang@apache.org\u003e"
    },
    {
      "commit": "a559aa1a8509093b0b3d3500e5d88a0a5b799425",
      "tree": "71716fe3fdbb4d790850775c6f1bb8ccadee27af",
      "parents": [
        "08d13a6db7916361ad06facdce284f272f740332"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Thu Oct 08 09:56:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:56:28 2026 +0800"
      },
      "message": "fix: compare BigDecimal boolean values by magnitude (#1150) (#1160)\n\nSigned-off-by: liuhy \u003cliuhongyu@apache.org\u003e"
    },
    {
      "commit": "08d13a6db7916361ad06facdce284f272f740332",
      "tree": "19f27c3c039953c7d06f936ef5b1d9216829d171",
      "parents": [
        "3791c708e55f24c71c81e76d8d48bc7bef2d51bb"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Fri Oct 09 01:52:30 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:52:30 2026 +0800"
      },
      "message": "docs: correct global converter write examples (#1091)"
    },
    {
      "commit": "3791c708e55f24c71c81e76d8d48bc7bef2d51bb",
      "tree": "493c74ed923a993382ee258bdef6560752861a18",
      "parents": [
        "c3d5eb59d683017f04ffd53284de2b2ac0890f1d"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Thu Oct 08 09:43:54 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:43:54 2026 +0800"
      },
      "message": "fix: recognize slash-separated dates (#1154) (#1164)\n\nSigned-off-by: liuhy \u003cliuhongyu@apache.org\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "c3d5eb59d683017f04ffd53284de2b2ac0890f1d",
      "tree": "8090b6d8a5254c173a785ae4aebf640998a89b67",
      "parents": [
        "8583d451862aa37567b50f6b978350ea98a77612"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Thu Oct 08 19:32:22 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:32:22 2026 +0800"
      },
      "message": "fix: detect fractional-second AM/PM date formats (#1119)\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "8583d451862aa37567b50f6b978350ea98a77612",
      "tree": "924a5330559cf2e2a8995de2fff427ed51d2ca02",
      "parents": [
        "9f98054e9b9a43d08d44de891b5b734f05058062"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Fri Oct 09 01:32:01 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:32:01 2026 +0800"
      },
      "message": "fix: default null scientific format option to false (#1078)\n\n* fix: default null scientific format option to false\n\n* test: parameterize scientific format constructor cases\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "9f98054e9b9a43d08d44de891b5b734f05058062",
      "tree": "abb4fc757c25f02b7419ba80b8f4fafcd70ac51a",
      "parents": [
        "77e781bd42ede9c7112df176e29bd2b686f5080b"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Thu Oct 08 19:16:45 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 00:16:45 2026 +0800"
      },
      "message": " fix: reject out-of-range integral cell values  (#1101)\n\n* fix: reject out-of-range integral cell values\n\n* refactor: parse integral types via parseBigDecimal\n\n* chore: remove unnecessary comment\n\n---------\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "77e781bd42ede9c7112df176e29bd2b686f5080b",
      "tree": "35f55c86597b3bd475adcbba23c492712dc3fafb",
      "parents": [
        "022d29275143ddc996c61677dde4d0f569e57765"
      ],
      "author": {
        "name": "Mikkey-f",
        "email": "1647228132@qq.com",
        "time": "Thu Oct 08 23:36:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:36:50 2026 +0800"
      },
      "message": "feat: add java.time.OffsetDateTime converters (#1017) (#1033)\n\n* feat: add OffsetDateTime converter family (#1017)\n\nAdd OffsetDateTimeStringConverter, OffsetDateTimeNumberConverter and\nOffsetDateTimeDateConverter, following the existing LocalDateTime and\nZonedDateTime converter patterns:\n- String conversion preserves the offset in ISO-8601 text by default,\n  with a configurable pattern, falling back to local wall-clock time\n  when the offset is missing.\n- Number and date conversions drop the offset while preserving the\n  local wall-clock time, consistent with the ZonedDateTime converters.\n\n* fix: harden OffsetDateTime converters after review (#1017)\n\n- Read fallback now routes through DateUtils.parseLocalDateTime so the\n  default space-separated format written by other date converters is\n  accepted, and text that does not match a configured pattern is rejected.\n- Return null instead of NPE for invalid Excel serials, matching the\n  LocalDateTime family.\n- Null-safe use1904windowing resolution and default-locale fallback.\n\n* fix: null-safe global use1904windowing default in OffsetDateTime converters (#1017)\n\n* fix: normalize empty date format and cache formatters (#1017)\n\nAddress review comments:\n- OffsetDateTimeDateConverter: an empty @DateTimeFormat value bypassed\n  WorkBookUtil.fillDataFormat\u0027s default format (only null falls back),\n  writing an empty/General number format instead of yyyy-MM-dd HH:mm:ss.\n  Normalize empty formats to null; regression test added.\n- OffsetDateTimeStringConverter: cache DateTimeFormatter instances per\n  pattern and locale in a thread-local map instead of rebuilding them on\n  every cell conversion in the hot path.\n\n* fix: remove EasyExcel-derived license header from new OffsetDateTime converters (#1017)\n\n* refactor: reuse shared DateUtils.isDate1904 in OffsetDateTimeNumberConverter (#1017)\n\n* refactor: replace static Assertions imports with fully-qualified calls in OffsetDateTimeConverterTest (#1017)\n\n* refactor: delegate OffsetDateTime string conversion to DateUtils helpers (#1017)\n\nAddresses second-round review comments on OffsetDateTimeStringConverter.\n\nDateUtils now provides parseOffsetDateTime(String, String, Locale) and a\nformat(OffsetDateTime, String, Locale) overload. Both reuse the bounded\nDATE_TIME_FORMATTER_THREAD_LOCAL cache, which is cleared by\nremoveThreadLocalCache() at the end of each read/write context, instead of a\nconverter-local ThreadLocal that has no cleanup hook. An empty format falls\nback to ISO_OFFSET_DATE_TIME.\n\nOffset-less STRING reads now fail fast with DateTimeParseException instead of\nsilently re-interpreting the text in ZoneId.systemDefault(), which mapped the\nsame text to different instants depending on the server timezone.\n\nTests: the two ZoneId.systemDefault fallback cases now assert failure, the\nconfigured-pattern rejection test uses an offset-bearing pattern, and a\nround-trip case for a configured offset pattern was added.\n\n* test: cover locale handling and DateUtils helper tests per review (#1017)\n\n---------\n\nCo-authored-by: Mikkey-f \u003c178465103+Mikkey-f@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "022d29275143ddc996c61677dde4d0f569e57765",
      "tree": "08e4b6e9e527066bcaab7e4fe0ddb38567fc499a",
      "parents": [
        "f78295e40e1c959c834b55647d24fc29c6f59d43"
      ],
      "author": {
        "name": "aias00",
        "email": "liuhongyu@apache.org",
        "time": "Thu Oct 08 08:32:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:32:02 2026 +0800"
      },
      "message": "fix: reject partial formatted number parses (#1152) (#1162)\n\nSigned-off-by: liuhy \u003cliuhongyu@apache.org\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "f78295e40e1c959c834b55647d24fc29c6f59d43",
      "tree": "8af7066a66b97b17b2a52d547005c8cb6b6f7a26",
      "parents": [
        "5c4ee1f60619ca28e4b7282c16ec83711578704d"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Thu Oct 08 23:22:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:22:07 2026 +0800"
      },
      "message": "docs: re-add star-history charts (#1127)\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "5c4ee1f60619ca28e4b7282c16ec83711578704d",
      "tree": "a5e45ece47e19e2dff4acb0d27651a4f2e76ebc0",
      "parents": [
        "2c6f370bdb737e95df8d2205a2ec06ba4fc82b04"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Wed Oct 07 22:41:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 22:41:27 2026 +0800"
      },
      "message": "docs: add new PPMC blog post and update team and maturity pages (#1187)\n\n* docs(website): add new PPMC blog post and update team and maturity pages\n\n* Apply suggestion from @delei\n\n* Update PPMC-related information on the maturity pages\n\n---------\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "2c6f370bdb737e95df8d2205a2ec06ba4fc82b04",
      "tree": "7547df0a45699781b25106aedbbc6b581523835d",
      "parents": [
        "eb0ceeb5d6964c6e0fdc572197f7dcfa2c5ff46e"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Wed Oct 07 19:15:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:15:11 2026 +0800"
      },
      "message": "chore: update project revision and output timestamp (#1186)"
    },
    {
      "commit": "eb0ceeb5d6964c6e0fdc572197f7dcfa2c5ff46e",
      "tree": "640c4561f5308100f15128f9827beb2089d39c93",
      "parents": [
        "340e7b28650d5baccadb761b6ac26b71edb5cb9e"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Wed Oct 07 14:53:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 14:53:23 2026 +0800"
      },
      "message": "docs: add blog post for 2.1.0-incubating release (#1185)\n\n* docs: add blog post for 2.1.0-incubating release\n\n* docs: drop the FesodDoc highlight from the 2.1.0 release post\n\nThe fesod-doc module (PR #936) was merged into dev-word-branch, so the\n2.1.0-incubating release contains no fesod-doc path and no FesodDoc\nsymbol. Listing it as a highlight invites users to look for a module\nthey cannot download from the release.\n\n---------\n\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e"
    },
    {
      "commit": "340e7b28650d5baccadb761b6ac26b71edb5cb9e",
      "tree": "24f6a633da8fc1d74ff047bde30f763ede122fac",
      "parents": [
        "5a9a16b9e35060e9d80eede2d1a1dea63ebf9f3e"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Wed Oct 07 13:44:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 13:44:42 2026 +0800"
      },
      "message": "docs: update website for 2.1.0-incubating release (#1183)\n\n* docs: update website for 2.1.0-incubating release\n\n- Add 2.1.0-incubating as the latest stable release in download pages (EN/ZH)\n- Move 2.0.2/2.0.1/2.0.0 to archived releases with archive.apache.org links\n- Update quickstart guide and migration guide dependency versions to 2.1.0-incubating (EN/ZH)\n\n* docs: drop non-Apache versions from the guide compatibility table\n\nThe 1.x rows describe the legacy cn.idev FastExcel artifacts, which are\nnot Apache Fesod (Incubating) releases. The download page already links\nto them, so the guide table now lists Apache releases only.\n\n---------\n\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e"
    },
    {
      "commit": "5a9a16b9e35060e9d80eede2d1a1dea63ebf9f3e",
      "tree": "bb15da4bd364ab79f2585a56135cbe0fc8050df3",
      "parents": [
        "cce1a5e40cffa283085d897475f30568ac7f9680"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Tue Sep 29 18:29:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 18:29:39 2026 +0800"
      },
      "message": "docs: refactor the team page on the website (#1146)\n\n* docs: remove team page and related assets\n\n- Delete team page React component and related styles\n- Remove team JSON data and GitHub avatar data files\n- Remove team page SVG icon\n- Clean up package.json scripts by removing github-avatar command\n- Delete team page instructions from README.md\n\n* docs: remove GitHub avatar fetch script and icon\n\n- Delete github-avatar.js script responsible for fetching and processing GitHub avatars\n- Remove GitHub icon SVG from static images directory\n- Clean up related unused code and assets for team avatar handling\n\n* docs: update community team info"
    },
    {
      "commit": "cce1a5e40cffa283085d897475f30568ac7f9680",
      "tree": "27fb7f3e12151a0982d334650f7f86bdbd91973a",
      "parents": [
        "f51f135ed594bd0192ccca91c052f8c8e02111f8"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Tue Sep 29 17:31:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 17:31:00 2026 +0800"
      },
      "message": "chore: include DISCLAIMER in sources JAR META-INF (#1108) (#1145)\n\n* chore: include DISCLAIMER in sources JAR META-INF (#1108)\n\n* chore: include DISCLAIMER in sources JAR via inherited build resources (#1108)\n\n* chore: preserve default resources when adding DISCLAIMER (#1108)\n\n---------\n\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e"
    },
    {
      "commit": "f51f135ed594bd0192ccca91c052f8c8e02111f8",
      "tree": "9804d63013065bb1a9982cf4dd660a60e212c612",
      "parents": [
        "239555bb0d3ae147741e08f7d3ec4eda35904380"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 28 20:12:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:12:12 2026 +0800"
      },
      "message": "build: bump org.slf4j:log4j-over-slf4j from 2.0.19 to 2.0.20 (#1144)\n\n* build: bump org.slf4j:log4j-over-slf4j from 2.0.19 to 2.0.20\n\nBumps org.slf4j:log4j-over-slf4j from 2.0.19 to 2.0.20.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:log4j-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* fix: restore indentation of jcl-over-slf4j.version property in pom.xml\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: ian zhang \u003cian.zhangzhe@gmail.com\u003e\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e"
    },
    {
      "commit": "239555bb0d3ae147741e08f7d3ec4eda35904380",
      "tree": "5fe95a7c1439ad736fa94ca0dfc97bc6fb6730e1",
      "parents": [
        "d210de099c0fc3e89ad025b0d9123fbadbe52928"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 28 20:00:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 20:00:25 2026 +0800"
      },
      "message": "build: bump org.slf4j:jcl-over-slf4j from 2.0.19 to 2.0.20 (#1142)\n\nBumps org.slf4j:jcl-over-slf4j from 2.0.19 to 2.0.20.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:jcl-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d210de099c0fc3e89ad025b0d9123fbadbe52928",
      "tree": "10727e2a1a175d66541042897f2259db4c471ce4",
      "parents": [
        "fcead13d341d6f88cbdcb556fa28e7496822b6bc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 28 19:59:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 19:59:44 2026 +0800"
      },
      "message": "build: bump org.slf4j:slf4j-api from 2.0.19 to 2.0.20 (#1143)\n\nBumps org.slf4j:slf4j-api from 2.0.19 to 2.0.20.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-api\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: ian zhang \u003cian.zhangzhe@gmail.com\u003e"
    },
    {
      "commit": "fcead13d341d6f88cbdcb556fa28e7496822b6bc",
      "tree": "02a3623941116df4f9924cec4f627d85ad17fc68",
      "parents": [
        "4e3f3aa8e4a1a6f0ea017e46fc0dc7223717c18f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 28 19:53:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 28 19:53:17 2026 +0800"
      },
      "message": "build: bump org.slf4j:slf4j-simple from 2.0.19 to 2.0.20 (#1141)\n\nBumps org.slf4j:slf4j-simple from 2.0.19 to 2.0.20.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-simple\n  dependency-version: 2.0.20\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4e3f3aa8e4a1a6f0ea017e46fc0dc7223717c18f",
      "tree": "3066766642f904ac1320a757eae57c626099c62d",
      "parents": [
        "261b3ba73a885374456f509a241cd0ab0f8fe26c"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Sun Sep 20 22:00:57 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 20 21:00:57 2026 +0800"
      },
      "message": "chore: exclude website from source archives (#1123)\n\nCo-authored-by: Shuxin Pan \u003cpsxjoy@apache.org\u003e"
    },
    {
      "commit": "261b3ba73a885374456f509a241cd0ab0f8fe26c",
      "tree": "5f20095d3563b9a4eb958223bcad5aba6c2c50e4",
      "parents": [
        "09d36f3d69b8b421c1e4f964d91e17e096e37b6d"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Sun Sep 20 20:49:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 20 20:49:08 2026 +0800"
      },
      "message": "fix: remove deprecated unDraw SVG assets (#1112) (#1125)\n\n* fix: remove deprecated unDraw SVG assets (#1112)\n\nReplace the three unDraw (undraw.co) Category X SVG illustrations used\non the homepage feature cards with project-drawn, Apache-2.0 assets in\nthe Fesod brand palette, complying with ASF 3rd-party license policy.\n\n- add website/static/img/index/fesod_quick.svg (fast/performance)\n- add website/static/img/index/fesod_simple.svg (simple API)\n- add website/static/img/index/fesod_bigfile.svg (large files)\n- update HomepageFeatures/index.js requires\n- delete undraw_spreadsheet.svg, undraw_programming.svg, undraw_files.svg\n\n* refactor: unify homepage feature SVG style (#1112)\n\nApply one shared visual language to fesod_quick/simple/bigfile: uniform\nbrand disk + consistent primary(#14824B)/accent(#00B95F)/highlight(#69CD37)\ncolors, centered composition and top-right outlined emphasis element, so the\nthree cards look like one aligned set.\n\n---------\n\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e\nCo-authored-by: Shuxin Pan \u003cpsxjoy@apache.org\u003e"
    },
    {
      "commit": "09d36f3d69b8b421c1e4f964d91e17e096e37b6d",
      "tree": "815ed7be9427009c9c6932997ffe629e59ddd9b7",
      "parents": [
        "1935e6f525790e167b81ae2c5c45a9a2eeca3da8"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Sun Sep 20 20:35:17 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 20 20:35:17 2026 +0800"
      },
      "message": "chore: include DISCLAIMER in JAR META-INF (#1108) (#1124)\n\nCo-authored-by: Zhang Zhe \u003czhangzhe@apache.org\u003e"
    },
    {
      "commit": "1935e6f525790e167b81ae2c5c45a9a2eeca3da8",
      "tree": "d13637498f4a8cde4153156297f206454e2241ed",
      "parents": [
        "5c4595feb7f1d72fe7eae4095e849516a29fef41"
      ],
      "author": {
        "name": "Shuxin Pan",
        "email": "psxjoy@apache.org",
        "time": "Fri Sep 18 22:11:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 22:11:18 2026 +0800"
      },
      "message": "chore: remove outdated licensing information from pom.xml (#1122)"
    },
    {
      "commit": "5c4595feb7f1d72fe7eae4095e849516a29fef41",
      "tree": "05df97cb948b5b45ee101212e339a1c558028cf5",
      "parents": [
        "8f1e1e1272a61b8b0892dfebe270258626ca5d00"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Sat Sep 12 08:42:30 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 13:42:30 2026 +0800"
      },
      "message": "refactor: extract format-string date detection out of DateUtils (#1077)\n\n* refactor: extract format-string date detection out of DateUtils\n\n* fix: update tests to reflect extraction\n\n* chore: remove outdated copyright header\n\n* chore: update the comment\n\n* chore: update the comment\n\n---------\n\nCo-authored-by: Bengbengbalabalabeng \u003c70380092+bengbengbalabalabeng@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f1e1e1272a61b8b0892dfebe270258626ca5d00",
      "tree": "70a6a1f355f632ee53b222ee0c2e9ce9140c3724",
      "parents": [
        "3be8b48b2be8dcde7663d77d10220c5028d27762"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Fri Sep 11 15:53:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 15:53:43 2026 +0800"
      },
      "message": "build: drop repetitive comment on project.build.outputTimestamp (#1095)\n\n* build: drop repetitive comment on project.build.outputTimestamp\n\n* docs: trim reproducible-build note in release guides\n\n* docs: use official maven.apache.org link for reproducible builds"
    },
    {
      "commit": "3be8b48b2be8dcde7663d77d10220c5028d27762",
      "tree": "6bb64164d4e8cd740091414990e8560b27883647",
      "parents": [
        "acd4045e0811799445c3602b6f625edc8800b9ff"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Fri Sep 11 11:50:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 11:50:26 2026 +0800"
      },
      "message": "build: set fixed project.build.outputTimestamp for reproducible builds (#1094)"
    },
    {
      "commit": "acd4045e0811799445c3602b6f625edc8800b9ff",
      "tree": "8ac143c1eceb1c34d2f4fac0a59d71e6ef6331de",
      "parents": [
        "640dd3ca35b057bab3f874a4a125b822128bd9b4"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Tue Sep 08 22:11:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 22:11:49 2026 +0800"
      },
      "message": "chore: prepare 2.1.0-incubating release (#1084)"
    },
    {
      "commit": "640dd3ca35b057bab3f874a4a125b822128bd9b4",
      "tree": "2e54b9686f4bc2ece5d11f68d52c1cf6ff06c9a9",
      "parents": [
        "c54e356df0932374c573f6a6cd5136cec85f7dd9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 08 19:37:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 08 19:37:43 2026 +0800"
      },
      "message": "build: bump org.slf4j:slf4j-simple from 2.0.18 to 2.0.19 (#1081)\n\nBumps org.slf4j:slf4j-simple from 2.0.18 to 2.0.19.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-simple\n  dependency-version: 2.0.19\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c54e356df0932374c573f6a6cd5136cec85f7dd9",
      "tree": "e8a251bd0dc43c8606b7d03613d2974fc9ff7feb",
      "parents": [
        "38e6445ac3357726097d333cc02df8d1079b20a5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 07 20:59:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:59:07 2026 +0800"
      },
      "message": "build: bump com.alibaba.fastjson2:fastjson2 from 2.0.64 to 2.0.65 (#1074)\n\nBumps [com.alibaba.fastjson2:fastjson2](https://github.com/alibaba/fastjson2) from 2.0.64 to 2.0.65.\n- [Release notes](https://github.com/alibaba/fastjson2/releases)\n- [Commits](https://github.com/alibaba/fastjson2/compare/2.0.64...2.0.65)\n\n---\nupdated-dependencies:\n- dependency-name: com.alibaba.fastjson2:fastjson2\n  dependency-version: 2.0.65\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "38e6445ac3357726097d333cc02df8d1079b20a5",
      "tree": "0f75fcd9ffe01dc55f0ec5d84b4a5bcf65b3f40f",
      "parents": [
        "28d72dc71bea65ade3a8ba979c255c2d1d421775"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 07 20:50:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:50:36 2026 +0800"
      },
      "message": "build: bump org.slf4j:jcl-over-slf4j from 2.0.18 to 2.0.19 (#1073)\n\nBumps org.slf4j:jcl-over-slf4j from 2.0.18 to 2.0.19.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:jcl-over-slf4j\n  dependency-version: 2.0.19\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "28d72dc71bea65ade3a8ba979c255c2d1d421775",
      "tree": "e3e1c80afe4ec313305b57c61eb23f668637490c",
      "parents": [
        "a3ecd34160a6d5e379546d99f30f6c0d6a752ec5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 07 20:25:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:25:03 2026 +0800"
      },
      "message": "build: bump org.slf4j:log4j-over-slf4j from 2.0.18 to 2.0.19 (#1072)\n\nBumps org.slf4j:log4j-over-slf4j from 2.0.18 to 2.0.19.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:log4j-over-slf4j\n  dependency-version: 2.0.19\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "a3ecd34160a6d5e379546d99f30f6c0d6a752ec5",
      "tree": "ed0f0c2e2baff55ff1feb8c989f1153843048e71",
      "parents": [
        "c9e68133c583afa002bc6220aa9b94d85889ceca"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 07 20:13:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 20:13:16 2026 +0800"
      },
      "message": "build: bump org.slf4j:slf4j-api from 2.0.18 to 2.0.19 (#1071)\n\nBumps org.slf4j:slf4j-api from 2.0.18 to 2.0.19.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-api\n  dependency-version: 2.0.19\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c9e68133c583afa002bc6220aa9b94d85889ceca",
      "tree": "c8cf8c4cb32d042f72035fd812cab3e8741fff32",
      "parents": [
        "4ed185c07e7f839f9f7e04b38ae6fdb318472214"
      ],
      "author": {
        "name": "Minseok Song",
        "email": "99078115+skytin1004@users.noreply.github.com",
        "time": "Sun Sep 06 11:40:48 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 10:40:48 2026 +0800"
      },
      "message": "fix: make DataFormatter cache configuration-aware (#1068)"
    },
    {
      "commit": "4ed185c07e7f839f9f7e04b38ae6fdb318472214",
      "tree": "34b42e88d698615b92f2249ada5432694b12db8e",
      "parents": [
        "efabe23c35492b473f1f7d78b338daa1217684ef"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Sat Sep 05 16:03:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 16:03:38 2026 +0800"
      },
      "message": "chore: update gitattributes to exclude non-source files (#1067)"
    },
    {
      "commit": "efabe23c35492b473f1f7d78b338daa1217684ef",
      "tree": "c1f64547b548582d1dbc1a89cb8cf77bc4112ade",
      "parents": [
        "d93462b0d4fc71f2682bbf0b8f7a9acfe384095c"
      ],
      "author": {
        "name": "Mikkey-f",
        "email": "1647228132@qq.com",
        "time": "Sat Sep 05 12:02:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 12:02:22 2026 +0800"
      },
      "message": "fix: fall back to global 1904 windowing when @DateTimeFormat default is used (#1042) (#1054)"
    },
    {
      "commit": "d93462b0d4fc71f2682bbf0b8f7a9acfe384095c",
      "tree": "22b9928a25afc37808020eb6443a43522053b46a",
      "parents": [
        "b8adc73fd384155093c1769d6c53d312f9008cde"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Sat Sep 05 09:46:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 09:46:11 2026 +0800"
      },
      "message": "fix: bundle Incubating NOTICE with EasyExcel attribution in jars (#1066)\n\nThe apache-jar-resource-bundle NOTICE template only renders the module\nname and ASF boilerplate, so the jar NOTICE files lacked the\n\"(Incubating)\" marker and the Alibaba EasyExcel attribution. Module-\nlevel NOTICE files override the generated ones, mirroring the\nrepository root NOTICE and the existing fesod-shaded module.\n\nFixes #1064"
    },
    {
      "commit": "b8adc73fd384155093c1769d6c53d312f9008cde",
      "tree": "934513242bbb123b3e25aacea7d1001c3ad6f25c",
      "parents": [
        "187f903f2c8ad7e967c68bee3af43dc6ac5e3202"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Wed Sep 02 14:19:16 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 19:19:16 2026 +0800"
      },
      "message": "refactor: extract sanitisation part for improved readability (#1061)\n\n* refactor: extract `sanitizeString` method for improved readability\n\n* refactor: introduce `isEscapableChar` helper method"
    },
    {
      "commit": "187f903f2c8ad7e967c68bee3af43dc6ac5e3202",
      "tree": "6cd8d49da7737bd8f46f2da484d486a276817548",
      "parents": [
        "78f258640c6f7d2d13d77173208de3d30532bf32"
      ],
      "author": {
        "name": "Lance",
        "email": "leehaut@gmail.com",
        "time": "Mon Aug 31 12:40:35 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 12:40:35 2026 +0800"
      },
      "message": "remove unused mockserver-netty test dependency (#1060)"
    },
    {
      "commit": "78f258640c6f7d2d13d77173208de3d30532bf32",
      "tree": "5a5fc9e115b30d54158263bf6986b0bd81d3c6c5",
      "parents": [
        "0aa7922b699d874d3bc9f99e1d2a508a0a737a20"
      ],
      "author": {
        "name": "Mikkey-f",
        "email": "1647228132@qq.com",
        "time": "Sun Aug 30 11:02:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 11:02:28 2026 +0800"
      },
      "message": "feat: upgrade slf4j to 2.0.18 and replace logback with slf4j-simple (#905) (#1046)"
    },
    {
      "commit": "0aa7922b699d874d3bc9f99e1d2a508a0a737a20",
      "tree": "d48abf097d9edbe20a9b153fb96023791337e997",
      "parents": [
        "e0bfe8bd0853b9c96e51b28ee0baf42ab6420953"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Sat Aug 29 17:40:34 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 22:40:34 2026 +0800"
      },
      "message": "fix: copy sheet-level read params to sheet holder (#1052)\n\nlocale, useScientificFormat and filedCacheLocation were not carried\nfrom the parameter sheet to the actual sheet, so setting them on the\nsheet builder silently fell back to the workbook-level value."
    },
    {
      "commit": "e0bfe8bd0853b9c96e51b28ee0baf42ab6420953",
      "tree": "976a472d70d391d202b7175f7dc3c2823a07ae06",
      "parents": [
        "c1b7019119b7065925d42ca56329aa9749a8be84"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Sat Aug 29 19:10:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 19:10:24 2026 +0800"
      },
      "message": "docs: update brand logos and maturity model assessment (#1055)"
    },
    {
      "commit": "c1b7019119b7065925d42ca56329aa9749a8be84",
      "tree": "9cf24befaf6f5f37c02eb664f6c7c4a986a4dde5",
      "parents": [
        "026f216ea925ed6ed5515b05f2aca5d42abf6964"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Sat Aug 29 01:06:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 01:06:58 2026 +0800"
      },
      "message": "docs: upgrade admonition caution to warning (#1053)\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "026f216ea925ed6ed5515b05f2aca5d42abf6964",
      "tree": "26627c5557aedf40851a7973b02bfe834b565061",
      "parents": [
        "0805cbfec763fd3080cea8c4b91f33dd6c13892c"
      ],
      "author": {
        "name": "Mikkey-f",
        "email": "1647228132@qq.com",
        "time": "Sat Aug 29 00:37:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 00:37:18 2026 +0800"
      },
      "message": "docs: add class and module changes section to FastExcel migration guide (#857) (#1041)"
    },
    {
      "commit": "0805cbfec763fd3080cea8c4b91f33dd6c13892c",
      "tree": "6f05783dec2711eed7fa815f9934d0f570d5fb54",
      "parents": [
        "e20d2ba5407578938ae2ecbd58246f6b67dddc98"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Fri Aug 28 08:37:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 08:37:01 2026 +0800"
      },
      "message": "docs: maintain KEYS only in the release directory (#1050)"
    },
    {
      "commit": "e20d2ba5407578938ae2ecbd58246f6b67dddc98",
      "tree": "01995c95e21ad91fc73a36e532aff3c34f41bdec",
      "parents": [
        "c614183f576912756c553312b37dcaf61d6e14fa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Aug 27 23:26:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 23:26:58 2026 +0800"
      },
      "message": "build: bump actions/setup-java from 5 to 6 (#1047)"
    },
    {
      "commit": "c614183f576912756c553312b37dcaf61d6e14fa",
      "tree": "17c1dc85926a7ea1b2edc63df627237381946915",
      "parents": [
        "89bcccff6b44d53b484fa32d7609ba6dd0afe6a2"
      ],
      "author": {
        "name": "ian zhang",
        "email": "ian.zhangzhe@gmail.com",
        "time": "Thu Aug 27 19:36:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 19:36:41 2026 +0800"
      },
      "message": "fix: finding issues during 2.1.0 RC (#1049)\n\n* fix: harden release packaging against verification regressions\n\nPort release-hardening fixes onto main so future releases avoid the four\nissues found while verifying 2.1.0-incubating-RC1:\n\n- Add .gitattributes to enforce LF on wrapper/scripts and CRLF on Windows\n  cmd/bat files, keeping Unix mvnw executable inside the source package.\n- Dominate the parent apache POM\u0027s stale 2023 outputTimestamp so the JAR\n  NOTICE copyright range derives the correct end-year (was inverted, e.g.\n  \"2025-2023\") and use the canonical \"The Apache Software Foundation\" name.\n- Add ASF license headers to fesod-sheet test resources (logo svg and\n  junit-platform.properties) so the RAT gate passes for test resources.\n\n* refactor: make JAR NOTICE copyright year dynamic instead of hardcoded\n\nThe previous fix pinned project.build.outputTimestamp to 2026-08-27, which\ngoes stale every year. The parent apache:31 POM hardcodes a 2023 value that\notherwise produces an inverted \"2025-2023\" NOTICE range.\n\nOverride it with an empty value so apache-jar-resource-bundle falls back to\nthe current build year for the NOTICE end-year (verified: produces\n\"Copyright 2025-2026\"). A reproducible release can set a fixed ISO-8601 value\nat release pre, which also yields a correct end-year."
    },
    {
      "commit": "89bcccff6b44d53b484fa32d7609ba6dd0afe6a2",
      "tree": "39904602bb11dc88e89a14e3ec41b4f0eddd4299",
      "parents": [
        "af38701c34c7f62826ef57c18faa540d84f193de"
      ],
      "author": {
        "name": "Shuxin Pan",
        "email": "psxjoy@apache.org",
        "time": "Thu Aug 27 10:11:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 10:11:52 2026 +0800"
      },
      "message": "feat: implement remote URL image fetching policy with allowlist and security enhancements (#1035)"
    },
    {
      "commit": "af38701c34c7f62826ef57c18faa540d84f193de",
      "tree": "c4d8442d2905be8660f07218d146e0509253c3d5",
      "parents": [
        "cbe4d8ea4f19a73b2505ad69fb5eb49e7d3eaef7"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Thu Aug 27 09:59:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 09:59:02 2026 +0800"
      },
      "message": "feat: registered EscapeHexCellWriteHandler in DefaultWriteHandlerLoader for XLSX (#1044)\n\n* refactor: add EscapeHexCellWriteHandler for XLSX escape processing\n\n- Moved EscapeHexCellWriteHandler to handler.impl package\n- Registered EscapeHexCellWriteHandler in DefaultWriteHandlerLoader for XLSX format\n- Updated XlsxEscapeUtils documentation to link to EscapeHexCellWriteHandler\n- Improved handling of XLSX character escapes in cell writing process\n\n* test: add test for escaping hex sequence round trip\n\n- Add EscapeHexCellWriteHandlerRoundTripTest to verify hex escapes on write are read back literally\n- Remove redundant HexEscapeRoundTripTest which tested similar functionality\n- Import EscapeHexCellWriteHandler where necessary in write handler tests\n- Ensure round trip correctness for cells containing hexadecimal escape patterns in data fields\n\n* test: clean up imports in EscapeHexCellWriteHandlerRoundTripTest\n\n* refactor: code style\n\n* docs: update EscapeHexCellWriteHandler comments\n\n* feat: implement unique execution for EscapeHexCellWriteHandler\n\n* test: register EscapeHexCellWriteHandler in round-trip tests\n\n* fix: code style"
    },
    {
      "commit": "cbe4d8ea4f19a73b2505ad69fb5eb49e7d3eaef7",
      "tree": "87e2ae440db72b060d41b13f3812d626c318efaf",
      "parents": [
        "d5281e00f762109405fecb12b201ace92c757f31"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Wed Aug 26 10:43:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 10:43:21 2026 +0800"
      },
      "message": "docs: add License headers to website files and assets (#1043)\n\n* docs: add License headers to website files and assets\n\n* chore: bump license check action to v7\n\n* ci: correct license check action usage\n\n* ci: update license check action to use hawkeye v7\n\n* chore: update license configuration format and file patterns\n\n* chore: update license configuration\n\n* chore: update license header\n\n* chore: update license header"
    },
    {
      "commit": "d5281e00f762109405fecb12b201ace92c757f31",
      "tree": "82340d0e119fa27d384e561fcf72c2534d6d0b99",
      "parents": [
        "cdf48b7167e0c0012b520df142527305494b5d93"
      ],
      "author": {
        "name": "Nikita Kuprins",
        "email": "61872798+nkuprins@users.noreply.github.com",
        "time": "Tue Aug 25 06:53:57 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 11:53:57 2026 +0800"
      },
      "message": "fix: decode _xHHHH_ escapes when reading inline string cells (#991)"
    },
    {
      "commit": "cdf48b7167e0c0012b520df142527305494b5d93",
      "tree": "d3401b94f1a4cab85ec87a71cc2d6f9093fa62e9",
      "parents": [
        "239c4166b82bbb74cffac00b1efea2c35ebdabf6"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Tue Aug 25 08:13:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 08:13:01 2026 +0800"
      },
      "message": "refactor: remove fesod-sheet usage examples and related tests (#1028)"
    },
    {
      "commit": "239c4166b82bbb74cffac00b1efea2c35ebdabf6",
      "tree": "a6573edea466015e9cfb5639ed30b2af674b1c7d",
      "parents": [
        "2ea8ba61515aa262558ddc16c8f7fb166a6e7f05"
      ],
      "author": {
        "name": "Lance",
        "email": "li6151770@126.com",
        "time": "Mon Aug 24 21:54:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 21:54:27 2026 +0800"
      },
      "message": "feat: add java.time.LocalTime converters (#1032)\n\n* feat: add java.time.LocalTime converters\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\n\n* feat: add java.time.LocalTime converters\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* feat: add java.time.LocalTime converters\n\nSigned-off-by: lance \u003cli6151770@126.com\u003e\n\n* fix avoid using wildcard imports\n\nSigned-off-by: lance \u003cli6151770@126.com\u003e\n\n---------\n\nSigned-off-by: lance \u003cleehaut@gmail.com\u003e\nSigned-off-by: lance \u003cli6151770@126.com\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "2ea8ba61515aa262558ddc16c8f7fb166a6e7f05",
      "tree": "c93771ad3a2a75462dbedaecd70522c42d9fdcc9",
      "parents": [
        "6eeefda9bdec0350f95082c5c5083a2773fdc72f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 24 20:05:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 20:05:11 2026 +0800"
      },
      "message": "build: bump actions/cache from 4 to 6 (#1039)\n\nBumps [actions/cache](https://github.com/actions/cache) from 4 to 6.\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github.com/actions/cache/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/cache\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "6eeefda9bdec0350f95082c5c5083a2773fdc72f",
      "tree": "b8234a4e16b268f80c4aa1f643d1cbbd6bb1bd73",
      "parents": [
        "58bedc983a124f875dede173fb1a49b444d51aa2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 24 19:26:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 19:26:42 2026 +0800"
      },
      "message": "build: bump actions/stale from 10 to 11 (#1037)\n\nBumps [actions/stale](https://github.com/actions/stale) from 10 to 11.\n- [Release notes](https://github.com/actions/stale/releases)\n- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/stale/compare/v10...v11)\n\n---\nupdated-dependencies:\n- dependency-name: actions/stale\n  dependency-version: \u002711\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "58bedc983a124f875dede173fb1a49b444d51aa2",
      "tree": "33597169fda25b107fe91cc93bfe491999060cde",
      "parents": [
        "d973557ce2587d2e5fa43da2d5d73b4cf024d2a6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 24 19:12:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 19:12:19 2026 +0800"
      },
      "message": "build: bump actions/checkout from 5 to 7 (#1038)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 5 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v5...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d973557ce2587d2e5fa43da2d5d73b4cf024d2a6",
      "tree": "eccc9a0603d7669f0b5ee9d8f8a26c1ab051b419",
      "parents": [
        "a35624fc28f91889b107fc7e0bc121d3a69f115f"
      ],
      "author": {
        "name": "Mikkey-f",
        "email": "1647228132@qq.com",
        "time": "Mon Aug 24 12:51:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 12:51:11 2026 +0800"
      },
      "message": "fix: resolve Windows fill template copy failures (#1021) (#1034)\n\n* fix: close output stream when WriteWorkbookHolder init fails (#1021)\n\nThe constructor opens the output file stream before copying the template.\nIf initialization fails (e.g. missing template), the stream was never\nclosed, leaving the target file locked on Windows. Close streams opened\nby the holder on failure; caller-provided streams remain the caller\u0027s\nresponsibility.\n\n* fix: decode percent-encoded resource URLs in ExampleFileUtil (#1021)\n\nURL.getPath() returns the encoded path. On Windows, template file names\nbuilt with File.separator (\u0027\\\u0027) are percent-encoded as %5C in the\nresource URL, so the returned path pointed at a non-existent file and\nfill examples failed with \u0027Copy template failure\u0027. Decode via\nURL.toURI() instead.\n\n* fix: honor autoCloseStream when closing output stream on init failure (#1021)\n\n---------\n\nCo-authored-by: Mikkey-f \u003c178465103+Mikkey-f@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "a35624fc28f91889b107fc7e0bc121d3a69f115f",
      "tree": "7416354d715180c7236e9d2c5b5eadf57a653248",
      "parents": [
        "cf602d61a947df47bddfdf666991f30ca872a8ed"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Mon Aug 24 11:56:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 11:56:57 2026 +0800"
      },
      "message": "refactor: reuse Head#field in ModelBuildEventListener field-assignment fallback (#1031)"
    },
    {
      "commit": "cf602d61a947df47bddfdf666991f30ca872a8ed",
      "tree": "5882b61502eb653bde3d64fbaceacfd7ddb08631",
      "parents": [
        "72c6d5d70cf18294040e8f4fb37d3d835d07f908"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Mon Aug 24 11:32:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 11:32:29 2026 +0800"
      },
      "message": "refactor: replace includeColumnIndexes list lookup with ColumnIndexResolver (#1015)\n\n* refactor: replace includeColumnIndexes list lookup with ColumnIndexResolver\n\n* style: some renaming\n\n* fix: covers null element checks\n\n* refactor: replace columns list with ColumnIndexResolver in constructor\n\n---------\n\nCo-authored-by: ian zhang \u003cian.zhangzhe@gmail.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "72c6d5d70cf18294040e8f4fb37d3d835d07f908",
      "tree": "21f4dc045bdd0e9119e477e82d1d10b1af9745e7",
      "parents": [
        "0caeeb10087c2b5d1eea77b59f6db9aad05ca4f8"
      ],
      "author": {
        "name": "Bengbengbalabalabeng",
        "email": "70380092+bengbengbalabalabeng@users.noreply.github.com",
        "time": "Mon Aug 24 11:16:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 11:16:03 2026 +0800"
      },
      "message": "fix: prioritize subclass fields and ignore superclass annotations on field shadowing (#1007)\n\n* fix: prioritize subclass fields and ignore superclass annotations on field shadowing\n\n* refactor: simplify field skip condition\n\n* refactor: renaming methods and modifying methods to return mutable types\n\n---------\n\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "0caeeb10087c2b5d1eea77b59f6db9aad05ca4f8",
      "tree": "6ba553804354c5592d3adc6e50aecedae2aecdf5",
      "parents": [
        "3d367e09f697dac35feec0753e206b6341ea4dac"
      ],
      "author": {
        "name": "DeleiGuo",
        "email": "delei@apache.org",
        "time": "Sat Aug 22 18:53:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 22 18:53:10 2026 +0800"
      },
      "message": "chore: update pnpm/action-setup to specific commit (#1030)"
    },
    {
      "commit": "3d367e09f697dac35feec0753e206b6341ea4dac",
      "tree": "82c6ccc3a4eac893632b96cc0969127270e89718",
      "parents": [
        "bfaee0d6d6c56b02e7754b40820199eb72cc128d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Aug 21 21:52:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:52:44 2026 +0800"
      },
      "message": "build: bump github/codeql-action from 3 to 4 (#1027)\n\nBumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action\n  dependency-version: \u00274\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "bfaee0d6d6c56b02e7754b40820199eb72cc128d",
      "tree": "69a37cb9d04be4c0806c9cc71240e493abdeb1de",
      "parents": [
        "55c03c4d6ede0dda9ebb2e03012add451339dd8f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Aug 21 21:44:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:44:41 2026 +0800"
      },
      "message": "build: bump DavidAnson/markdownlint-cli2-action from 24.1.0 to 24.2.0 (#1026)\n\nBumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 24.1.0 to 24.2.0.\n- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)\n- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/6bf21b07787794f89a243495939cd651942aeabe...21c1be1b93ad9ed58fa840aacc3f279cde2a72ff)\n\n---\nupdated-dependencies:\n- dependency-name: DavidAnson/markdownlint-cli2-action\n  dependency-version: 24.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "55c03c4d6ede0dda9ebb2e03012add451339dd8f",
      "tree": "07771a9a035e0ac3e2b10cee0f070704265dcd5a",
      "parents": [
        "bd6b20de58f0f30fa80e9a7b61b66967365c1605"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Aug 21 21:14:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:14:05 2026 +0800"
      },
      "message": "build: bump nwtgck/actions-netlify from 3.0.0 to 4.0.0 (#1025)\n\nBumps [nwtgck/actions-netlify](https://github.com/nwtgck/actions-netlify) from 3.0.0 to 4.0.0.\n- [Release notes](https://github.com/nwtgck/actions-netlify/releases)\n- [Changelog](https://github.com/nwtgck/actions-netlify/blob/develop/CHANGELOG.md)\n- [Commits](https://github.com/nwtgck/actions-netlify/compare/4cbaf4c08f1a7bfa537d6113472ef4424e4eb654...d22a32a27c918fe470bbc562e984f80ec48c2668)\n\n---\nupdated-dependencies:\n- dependency-name: nwtgck/actions-netlify\n  dependency-version: 4.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "bd6b20de58f0f30fa80e9a7b61b66967365c1605",
      "tree": "4c1366e47ed09b056365897d0cdb58acb96e6992",
      "parents": [
        "67f5ebb19c55765ce9589635cad1b5e2b9517b3d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Aug 21 21:03:04 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:03:04 2026 +0800"
      },
      "message": "build: bump actions/upload-artifact from 4 to 7 (#1024)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: DeleiGuo \u003cdelei@apache.org\u003e"
    },
    {
      "commit": "67f5ebb19c55765ce9589635cad1b5e2b9517b3d",
      "tree": "4c1cca5926ce1c373893ee491f2c1e024193ffcb",
      "parents": [
        "8d5f3990f1a5010b6df9e1090d2481c091735e87"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Aug 21 19:40:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 19:40:22 2026 +0800"
      },
      "message": "build: bump actions/setup-node from 6 to 7 (#1023)\n\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "8d5f3990f1a5010b6df9e1090d2481c091735e87"
}
