This is a maintenance release with one headline fix and a packaging improvement.
Headline — shared headers and footers, once (#805)
A header or footer that is shared by several sections was being visited more
than once. The smart-tags postprocessor then found a tag it had already
unwrapped, and threw an IndexOutOfBoundsException: Index: -1.
The fix is small and lives in one place — a deduplication set plus an index guard:
// HookRemover — process each header/footer part exactly once
private final Set<CTSmartTagRun> seen =
Collections.newSetFromMap(new IdentityHashMap<>());
// A tag may have been unwrapped by a previous pass when the same
// part was visited more than once (a header shared by several sections).
if (index < 0) continue;
Document visitors now process each header/footer part exactly once, and a
regression test (HeaderInheritanceTest) pins the inherited-header case.
Dependency — asciidoc 3.10
The AsciiDoc module moves to v3.10, which brings the standalone [section]
marker for ending a document section explicitly.
Packaging — a portable Windows EXE
There is now an officestamper.exe you can run without an installer: a fat jar
wrapped in a 7-Zip self-extracting executable, built from the windows-portable
profile. The installer profile (windows-exe) remains for a proper jpackage
build.
mvn -pl :cli -am -P windows-portable -DskipTests package
mvn -pl :cli -am -P windows-exe -DskipTests package
Breaking changes
None. No migration notes are required; the change is invisible unless you were tripping over shared headers.
Related issues: #805.
3.8 — Release Summary
- Fix: shared header/footer parts are visited once (#805).
- Deps: asciidoc 3.10.
- Packaging: portable Windows EXE (fat jar + 7-Zip SFX).
- Breaking: none.