All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Image tags follow the pattern {LanguageTool_version}-{sequential_number} (e.g. 6.8-3).
- Upgrade base image to Alpine 3.24.1
- Upgrade Go to 1.26.5
- Bump entrypoint dependency
github.com/beevik/etreeto 1.7.0
- Correct
tzdatapin to 2026c-r0 (2026b-r0 was removed from the alpine_3_24 repository, breaking the build)
- Upgrade Go to 1.26.5, fixing CVE-2026-39822 (os.Root symlink escape outside the root on Unix) and CVE-2026-42505 (crypto/tls Encrypted Client Hello PSK identity leak in the outer ClientHello, CVSS 5.3 Medium)
- Patch Jackson to 2.18.9 via pom.xml, fixing GHSA-r7wm-3cxj-wff9 (jackson-core
StreamReadConstraintsbypass in the async parser via chunked digit accumulation, CVSS 5.3) and CVE-2026-54515 (jackson-databind case-insensitivity check reopened@JsonIgnoreProperties-excluded fields, CVSS 5.3 Medium) - Patch logback to 1.5.35 via pom.xml, fixing CVE-2025-11226 (arbitrary code execution via conditional logback configuration processing, requires Janino + Spring on the classpath, CVSS v4 5.9 Medium) and CVE-2026-10532 (
HardenedObjectInputStreamProxy-class deserialization whitelist bypass, CVSS v4 2.9 Low)
- Upgrade base image to Alpine 3.24.0
- Upgrade 7zip to 26.00
- Upgrade libstdc++ to 15.2.0-r5
- Upgrade fasttext to 0.9.2-r3
- Upgrade OpenSSL to 3.5.7s
- Patch lettuce 7.6.0.RELEASE via pom.xml
- Upgrade netty.io dependencies to 4.2.15.Final
- Upgrade Maven to 3.9.16
- Upgrade Go to 1.26.4
- Gate pom.xml CVE patches to LT_VERSION 6.8 only
- Remove direct netty JAR replacements from build
- Patch opennlp-tools 2.5.9, opentelemetry 1.62.0, lettuce 7.5.2 via pom.xml
- Add
linux/arm64build support - Select Java JDK per target architecture
- Cross-compile Go entrypoint per target architecture
- Apply
no-march-nativepatch to fasttext build for improved CPU compatibility
- Replace entrypoint shell script with a statically-linked Go binary to reduce the attack surface through package dependencies
- Upgrade to LanguageTool 6.8
- Upgrade Java to
jdk-21.0.11+10 - Upgrade Maven to 3.9.15
- Upgrade
netty.iodependencies to 4.2.13.Final
- Upgrade base image to Alpine 3.23.4
- Fix GHSA-72hv-8253-57qq (High) by upgrading
com.fasterxml.jackson.corefrom 2.18.0 to 2.18.6 - Upgrade
netty.iodependencies from 4.1.127.Final to 4.1.131.Final
- Replace
unzipwith7zipto remediate CVE-2008-0888
- Correctly apply the LanguageTool 6.7 memory leak fix (supersedes 6.7-4)
- Patch LanguageTool 6.7 memory leak
- Upgrade base image to Alpine 3.23.3
- Upgrade Java to
jdk-21.0.10+7
- Fix CVE-2026-1225 (Low) by updating
ch.qos.logbackto 1.5.25
- Refactor CVE upgrade mechanism for Java dependencies: patch
pom.xmlfor direct dependencies; replace transitive dependency JARs directly in/languagetool/libs/where the parent artifact cannot be upgraded viapom.xml
- Fix download extraction failure caused by
unzipin Alpine 3.22.2 (use edge package instead)
- Upgrade Java to
21.0.9+10
- Fix CVE-2025-11226 (Medium)
- Upgrade base image to Alpine 3.22.2
- Upgrade to LanguageTool 6.7
- Fix CVE-2025-49796 (Critical), CVE-2025-49794 (Critical), CVE-2025-49795 (High), CVE-2025-6021 (High), CVE-2025-6170 (Low)
- Correctly fix CVE-2025-58057 (Medium), superseding the incomplete fix in 6.6-6
- Fix use of local variables in entrypoint function
download_and_extract_ngram_language_model(thanks @walery!) - Switch image
HEALTHCHECKto/v2/healthcheck
- Fix CVE-2025-9230 (High), CVE-2025-9231 (Medium), CVE-2025-9232 (Medium)
- Partial fix for CVE-2025-58057 (Medium) — fully remediated in 6.6-7
- Build LanguageTool from GitHub tags instead of release ZIP files
- Fix CVE-2008-0888 by using the Alpine edge release of the
unzippackage
- Upgrade base image to Alpine 3.22.1
- Upgrade Java to
21.0.8+9
- Fix CVE-2025-48924 by replacing
org.apache.commons:commons-lang3:3.17.0with3.18.0
- Add
CONTAINER_MODEenvironment variable for Kubernetes users who manage ngram model downloads ininitContainers
- Fix JNA error (
Error loading shared library /tmp/jna*.tmp: Operation not permitted)
- Fix CVE-2025-32414 and CVE-2025-32415 in Alpine 3.21.3
- Fix read-only filesystem compatibility for Synology DSM 6.2 with aufs
- Replace CVE-affected
logback-coreandlogback-classicwith version 1.5.18
- Upgrade to LanguageTool 6.6
- Breaking: Change default
LISTEN_PORTfrom8010to8081 - Extend sanity checks and log output in entrypoint script
- Upgrade Java to
21.0.7+6
- Upgrade base image to Alpine 3.21.3
- Upgrade Java to
21.0.6+7
- Refactor entrypoint script
- Upgrade Java to
21.0.5+11
- Upgrade to LanguageTool 6.5
- Upgrade base image to Alpine 3.20.3
- Upgrade base image to Alpine 3.20.2
- Upgrade Java to
21.0.4+7
- Upgrade base image to Alpine 3.20.1
- Upgrade Java to
21.0.3+9
- Upgrade base image to Alpine 3.20.0
- Upgrade to LanguageTool 6.4
- Require
755(not777) permissions for ngrams and fasttext volume mounts
- Upgrade Java to
21.0.2+13 - Document
CAP_CHOWNcapability requirement inREADME.mdand compose file
- Fix entrypoint bug that prevented new users from downloading ngram models
- Upgrade base image to Alpine 3.19.1
- Replace compiled-from-source fasttext with the Alpine
fasttextpackage
- Create the
languagetooluser without a home directory - Update
uid:gidof thelanguagetooluser and group at startup when they differ from the requested mapping
- Upgrade base image to Alpine 3.18.6
- Upgrade Java to
17.0.10+7
- Upgrade to LanguageTool 6.3a
- Upgrade base image to Alpine 3.18.5
- Upgrade Java to
17.0.9+9
- Upgrade to LanguageTool 6.3
- Upgrade base image to Alpine 3.18.4
- Upgrade Java to
17.0.8.1+1
- Upgrade base image to Alpine 3.18.3
- Upgrade Java to
17.0.8+7
- Upgrade to LanguageTool 6.2
- Upgrade base image to Alpine 3.18.2
- Upgrade base image to Alpine 3.18.0
- Upgrade Java to
17.0.7+7
- Upgrade base image to Alpine 3.17.3
- Add configurable log level via environment variable
- Upgrade to LanguageTool 6.1
- Upgrade base image to Alpine 3.17.2
- Upgrade Java to Eclipse Temurin
17.0.6+10
- Upgrade base image to Alpine 3.17.1
- Add Alpine package
gcompatto satisfyld-linux-x86-64.so.2dependency (resolves crash introduced in 6.0-1)
- Upgrade to LanguageTool 6.0
Removed due to a
ClassPathexception at startup.
- Fix health check command
- Add
helpcommand to display available LanguageTool configuration keys for use withlanguagetool_*environment variables
- Add
tinias PID 1 to suppress spurious exit code 143 - Print Alpine and Eclipse Temurin version info at container startup
- Switch to a stripped-down Eclipse Temurin 17 JRE
- Remove JVM argument
-XX:+UseStringDeduplicationexcept when using G1GC - Replace
curlwithwget
- Upgrade base image to Alpine 3.17.0
- Add support for configuring the JVM garbage collector
- Add support for passing custom
JAVA_OPTS - Add JVM argument
-XX:+UseStringDeduplication
- Rename
Java_Xm?environment variables toJAVA_XM?
- Upgrade base image to Alpine 3.16.3
- Upgrade LanguageTool to 5.9
- Add user mapping support (
MAP_UID/MAP_GID)
- Initial release with Alpine 3.16.2 and LanguageTool 5.8