apache / apache/fesod

Release Apache Fesod 2.1.0-incubating

Open
#1,083 3 comments 0 reactions 0 assignees View on GitHub
release-planning
Dominant language
Java
Stars
6.2k
Forks
532
Avg merge
1d 3h
Merged PRs (30d)
42

Description

## Release: Apache Fesod 2.1.0-incubating

**Release Manager:** Zhang Zhe
**Release train:** 2.x
**Base branch:** main
**Previous release:** [2.0.2-incubating](https://github.com/apache/fesod/releases/tag/2.0.2-incubating)

## In scope

95 merged PRs since `2.0.2-incubating` (2026-05-14).

### Features

- #916 feat: support freeze pane via @FreezePane or register WriteHandler on write ()
- #934 feat: split StringImageConverter into Pathname and Base64 ()
- #942 feat: add support for column index limit in ReadSheet ()
- #943 feat: add fluent header api for no-bean mode ()
- #948 feat: cache date and number formatters ()
- #981 feat: add support for column-based reading of XLS files ()
- #982 feat: add support for column-based reading of CSV files ()
- #1032 feat: add java.time.LocalTime converters ()
- #1035 feat: require an allowlist for remote URL images ()
- #1044 feat: registered EscapeHexCellWriteHandler in DefaultWriteHandlerLoader for XLSX ()
- #1046 feat: upgrade slf4j to 2.0.18 and replace logback with slf4j-simple (#905) ()

### Bug fixes

- #810 fix: fix error in using relativeHeadRowIndex for writing tables only ()
- #900 fix: correct SheetWriteHandler.afterSheetDispose to avoid repeated execution ()
- #911 fix: avoid recursive hashCode in write holder contexts ()
- #912 fix: support SQL date types in WriteCellData ()
- #954 fix: CsvCell crashes on java.sql.Date/Time due to unsupported toInstant() ()
- #957 fix: clone DataFormatData in WriteCellStyle.merge to avoid mutating cached annotation style ()
- #959 fix: XLS BIFF8 encryption not applied due to premature password clearing ()
- #961 fix: reset cached batch in PageReadListener between sheets to avoid duplicate rows ()
- #963 fix: remove redundant buffer copy in IoUtils.toByteArray(InputStream) ()
- #965 fix: descriptive error for unrecognized cell type attribute ()
- #972 fix: copy default read converter map to isolate per-reader custom converters ()
- #974 fix: mark CsvCell Calendar value as a date to avoid silent empty write ()
- #977 fix: remove indexFieldMap entry by field key, not running counter ()
- #990 fix: eliminate implicit numeric cast warning in date generation ()
- #991 fix: decode _xHHHH_ escapes when reading inline string cells ()
- #998 fix: remove the broken star history chart ()
- #1007 fix: prioritize subclass fields and ignore superclass annotations on field shadowing ()
- #1011 fix: read XLS literal error cells as errors instead of booleans ()
- #1034 fix: resolve Windows fill template copy failures (#1021) ()
- #1049 fix: finding issues during 2.1.0 RC ()
- #1052 fix: copy sheet-level read params to sheet holder ()
- #1054 fix: fall back to global 1904 windowing when @DateTimeFormat default is used (#1042) ()
- #1066 fix: bundle Incubating NOTICE with EasyExcel attribution in jars ()
- #1068 fix: make DataFormatter cache configuration-aware ()

### Documentation

- #910 docs(blog): add blog for migration with OpenRewrite ()
- #922 docs: update download page for release 2.0.2-incubating ()
- #933 docs(blog): add CVE-2026-49328 security advisory ()
- #958 docs: add Copilot repository and code review instructions ()
- #967 docs: Update the release version document ()
- #968 docs: upgrade website dependencies and CI ()
- #970 docs: update code-review instructions for HeadBuilder and wildcard imports ()
- #979 docs: expand the write/fill pages and replace their screenshots with grids ()
- #984 docs: bump npm dependencies to address component vulnerability risks ()
- #992 docs: remove redundant blank line ()
- #996 docs: remove redundant blank line in java code block ()
- #1008 docs: add both chinese and english versions of docs for the includeCo… ()
- #1041 docs: add class and module changes section to FastExcel migration guide (#857) ()
- #1043 docs: add License headers to website files and assets ()
- #1050 docs: maintain KEYS only in the release directory ()
- #1053 docs(website): upgrade admonition: caution to warning ()
- #1055 docs: update brand logos and maturity model assessment ()

### Other changes

- #901 [Test] Add testkit infrastructure and refactor unit tests with JUnit 5 parameterized patterns ()
- #928 refactor: manage password handling in Excel processing ()
- #930 chore: merge 2.0.2-incubating into main branch ()
- #938 chore(test): remove wildcard imports ()
- #939 chore: update copyright year to 2026 in footer and NOTICE files ()
- #945 test: Assert valid excel file with expected column count ()
- #949 Column Support Feat Docs ()
- #964 refactor: encapsulate xlsx boolean cell parsing in CellData ()
- #966 ci: add ASF allowlist check ()
- #983 style: redesign homepage hero as a spreadsheet grid ()
- #995 refactor: generate trivial accessors with Lombok ()
- #999 Test: expand unit coverage for scalar converters in ConverterTest ()
- #1001 test: add tests for EscapeHexCellWriteHandler ()
- #1003 refactor: simplify hex escape pattern scanning ()
- #1014 refactor: unify and overload readSheet methods for flexible usage ()
- #1015 refactor: replace includeColumnIndexes list lookup with ColumnIndexResolver ()
- #1022 Update dependabot configuration for GitHub Actions ()
- #1028 refactor: remove fesod-examples module ()
- #1030 chore: update pnpm action-setup to specific commit ()
- #1031 refactor: reuse Head#field in ModelBuildEventListener field-assignment fallback ()
- #1060 chore: remove unused mockserver-netty test dependency ()
- #1061 refactor: extract sanitisation part for improved readability ()
- #1067 chore: update gitattributes to exclude non-source files ()

### Dependencies

- #909 build: bump com.alibaba.fastjson2:fastjson2 from 2.0.61 to 2.0.62 ()
- #931 build: bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 ()
- #969 dependency: upgrade assertj-core to 3.27.7 to fix XXE vulnerability ()
- #980 build: bump com.alibaba.fastjson2:fastjson2 from 2.0.62 to 2.0.63 ()
- #987 build: bump com.alibaba.fastjson2:fastjson2 from 2.0.63 to 2.0.64 ()
- #1013 build: bump org.apache.maven.wrapper:maven-wrapper from 3.1.0 to 3.1.1 ()
- #1023 build: bump actions/setup-node from 6 to 7 ()
- #1024 build: bump actions/upload-artifact from 4 to 7 ()
- #1025 build: bump nwtgck/actions-netlify from 3.0.0 to 4.0.0 ()
- #1026 build: bump DavidAnson/markdownlint-cli2-action from 24.1.0 to 24.2.0 ()
- #1027 build: bump github/codeql-action from 3 to 4 ()
- #1037 build: bump actions/stale from 10 to 11 ()
- #1038 build: bump actions/checkout from 5 to 7 ()
- #1039 build: bump actions/cache from 4 to 6 ()
- #1047 build: bump actions/setup-java from 5 to 6 ()
- #1071 build: bump org.slf4j:slf4j-api from 2.0.18 to 2.0.19 ()
- #1072 build: bump org.slf4j:log4j-over-slf4j from 2.0.18 to 2.0.19 ()
- #1073 build: bump org.slf4j:jcl-over-slf4j from 2.0.18 to 2.0.19 ()
- #1074 build: bump com.alibaba.fastjson2:fastjson2 from 2.0.64 to 2.0.65 ()
- #1081 build: bump org.slf4j:slf4j-simple from 2.0.18 to 2.0.19 ()

## Steps

- [x] Step 1: Planning issue open ← this issue
- [x] Step 2: Prep PR open (`release-prepare prep 2.1.0-incubating`)
- [x] Step 3: KEYS reconciliation (`release-keys-sync`)
- [x] Step 4–5: RC cut + stage (`release-rc-cut 2.1.0-incubating rc5`)
- [x] Step 6: Pre-flight verify (`release-verify-rc 2.1.0-incubating-rc5`)
- [ ] Step 7: `[VOTE]` thread (`release-vote-draft 2.1.0-incubating-rc5`)
- [ ] Step 8: Voting window
- [ ] Step 9: Tally (`release-vote-tally 2.1.0-incubating-rc5`)
- [ ] Step 10: Promote (`release-promote 2.1.0-incubating-rc5`)
- [ ] Step 11: Announce + site bump (`release-announce-draft 2.1.0-incubating`)
- [ ] Step 12: Archive sweep (`release-archive-sweep`)
- [ ] Step 13: Audit log (`release-audit-report 2.1.0-incubating`)
- [ ] Step 14: Post-release bump (`release-prepare post 2.1.0-incubating`)

## Artefacts

- Staging URL: (TBD)
- Tag URL: (TBD)
- RC artefact list: (TBD)

## Timestamps

- Planning issue opened:
- Prep PR opened: (TBD)
- RC staged: (TBD)
- Vote opened: (TBD)
- Vote closed: (TBD)
- Promote commit: (TBD)
- [ANNOUNCE] sent: (TBD)

Contributor guide

Open the contributing guide

Research direction

Follow the checked release steps in this issue, starting with the pending [VOTE] thread and the 2.1.0-incubating-rc5 verification. Review the release procedures and generated artefacts after each command, then complete voting, tally, promotion, announcement, archive, audit, and post-release steps. Done means all checklist items are complete and the staging, tag, and artefact links are recorded.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.