Added
- Add support for Lini diagrams (
lini), withthemeandstaticoptions. Local image paths are refused unlessKROKI_SAFE_MODEisunsafe(#2169) - Add a
pageoption to TikZ diagrams to render only the specified page in SVG, PNG and JPEG output (#2167)
Changed
- BPMN and diagrams.net conversions are now capped (
KROKI_BPMN_MAX_CONCURRENCYandKROKI_DIAGRAMSNET_MAX_CONCURRENCY, default 6) to bound Chromium memory usage, and the BPMN, diagrams.net and Excalidraw wait queues are bounded like Mermaid's (KROKI_<SERVICE>_MAX_QUEUE_SIZE, default 100, andKROKI_<SERVICE>_QUEUE_TIMEOUT, default 30s): requests beyond these limits get a503.KROKI_<SERVICE>_MAX_QUEUE_SIZEcan be set to0to reject requests immediately when every slot is busy (#2182)
Fixed
- Fix the Mermaid service running out of memory after Chromium crashes: a failure while connecting to the browser or opening a page leaked a concurrency slot, until every request waited forever. The wait queue is now also bounded (
KROKI_MERMAID_MAX_QUEUE_SIZE, default 100, andKROKI_MERMAID_QUEUE_TIMEOUT, default 30s); rejected requests get a503(#2183) - Fix the Excalidraw container becoming unresponsive under load (
Runtime.callFunctionOn timed out,Target crashed): pages are now initialized once and reused instead of loading the Excalidraw library for every request, conversions are capped (KROKI_EXCALIDRAW_MAX_CONCURRENCY, default 4) and a render taking longer thanKROKI_EXCALIDRAW_CONVERT_TIMEOUT(default 15s) returns a408(#2182) - Fix the BPMN and diagrams.net services leaking their browser connection when opening a page failed (#2182)
- Fix the Mermaid, BPMN, diagrams.net and Excalidraw containers ignoring
SIGTERM: Chrome was closed but the Node.js process kept running (and relaunched Chrome on the next request), sodocker stophad to wait for its grace period and kill the container. They now stop accepting connections and exit once in-flight conversions are done, or after 8 seconds (#2182) - Reduce log noise in the Chromium-based companion containers (Mermaid, BPMN, Excalidraw, diagrams.net): Chromium output is no longer written unformatted before the JSON logger, harmless Chromium messages (D-Bus,
SharedImageManager, rejected IPC messages, crashpad dump collection) are logged at debug level, other Chromium output is logged aswarninstead oferror, and diagram syntax errors (already returned as a400) are logged at debug level instead oferror(#2184)
Diagram libraries
What's Changed
- Add page option to TikZ service by @bluelightspirit in #2167
- feat(docs): add ZopDay to hosting providers by @muskanbandta23 in #2168
- feat(docs): add Pethost to hosting providers by @sadfun in #2171
- Add Lini diagram support by @monfa-red in #2169
- Track D2, Graphviz and WireViz versions with Renovate by @ggrossetie in #2172
- chore(deps): update dependency buildx to v0.38.0 by @ggrossetie in #2175
- chore(deps): update dependency org.mockito:mockito-core to v5.24.0 by @ggrossetie in #2177
- chore(deps): update dependency bpmn-js to v18.31.0 by @ggrossetie in #2174
- chore(deps): update dependency maven to v3.10.0 by @ggrossetie in #2176
- chore(deps): update docker/dockerfile docker tag to v1.28 by @ggrossetie in #2179
- chore(deps): update mermaid by @ggrossetie in #2178
- chore(deps): update build tooling by @ggrossetie in #2173
- Fix Mermaid permit leak and bound the conversion queue by @ggrossetie in #2183
- chore(deps): update java dependencies by @ggrossetie in #2180
- Stabilize the Chromium companions: Excalidraw page pool, bounded queues and clean shutdown by @ggrossetie in #2182
- Reduce Chromium log noise in the companion containers by @ggrossetie in #2184
- Sync Mermaid and bpmn-js versions and add a maintainer guide by @ggrossetie in #2185
New Contributors
- @bluelightspirit made their first contribution in #2167
- @muskanbandta23 made their first contribution in #2168
- @sadfun made their first contribution in #2171
- @monfa-red made their first contribution in #2169
Full Changelog: v0.33.0...v0.34.0