_
This release carries a license change, a meaningful fix to content type detection, and a restructured test suite.
License: GPLv2 → AGPLv3
DocWire SDK moves to the GNU Affero General Public License v3.0.
The core reason: AGPLv3 closes the SaaS loophole that GPLv2 left open. Under GPLv2, an organization could run DocWire as a networked service — serving requests, processing documents, building a product — without ever releasing their source code. The GPL's copyleft obligation only triggers on binary distribution, not on running software as a service. AGPLv3 extends that obligation to network use.
Beyond the loophole, AGPLv3 brings three concrete improvements over GPLv2:
- Explicit patent grants protecting users from litigation by contributors
- Apache License 2.0 compatibility enabling broader ecosystem integration
- More precise legal language for international enforceability
DocWire remains dual-licensed. A commercial license is available for deployments incompatible with AGPLv3 terms. For more on how DocWire fits into your stack: docwire.io
Content Type Detection
Content type detection breaks silently in the real world — wrong extensions, missing metadata, non-seekable network streams. This release introduces specialized heuristic detectors for images (BMP, WEBP) and ZIP-based containers (OOXML, ODF formats: DOCX, XLSX, PPTX). The detectors check local file headers in the first 4KB before falling back to deep inspection, specifically fixing detection failures on non-seekable streams with libmagic 5.47+.
Additional improvements:
-
MIME type normalization — legacy types from
libmagicare now standardized to modern standards (e.g.text/xml→application/xml) -
Performance — heuristic detectors for
ASPandHTMLnow usestd::string_view, reducing memory overhead - Deterministic tie-breaking — MIME results are now alphabetically consistent across platforms
SSL Server
httplib::SSLServer initialization has been refactored to use the recommended setup callback for certificate and key configuration, aligning with the latest library API.
Test Infrastructure
The monolithic api_tests.cpp has been split into focused files:
core_tests.cpp
error_tests.cpp
log_tests.cpp
...
All unit tests are now consolidated into a single docwire_tests binary. Process creation overhead under Valgrind is significantly reduced.
Fixes
- Regressions in
OOXMLandODFdetection on non-seekable streams resolved - Minor test suite issues and missing
#includedirectives addressed
Full release: github.com/docwire/docwire/releases/tag/2026.05.25
Top comments (0)