wren-v0.13.3
Canner/WrenAIwren-v0.13.3Aug 18, 2026by github-actions[bot]
AI Summary
This release focuses on bug fixes and stability improvements across multiple components, including context handling, memory management, and Spark integration. It introduces security hardening measures and performance optimizations like LRU caching.
Key Highlights
- Harden validation for MDL rows, relationships, and views to prevent errors from bad data
- Prevent context upgrade path traversal for security
- Preserve unconstrained PostgreSQL NUMERIC precision
- Optimize session-context cache with an LRU limit of 32 entries
- Improve database timeout error handling by classifying bare TimeoutError
Full Release Notes
## [0.13.3](https://github.com/Canner/WrenAI/compare/wren-v0.13.2...wren-v0.13.3) (2026-08-18) ### Bug Fixes * **context:** filter non-mapping entries in _load_views_v1 ([#2604](https://github.com/Canner/WrenAI/issues/2604)) ([9bdae39](https://github.com/Canner/WrenAI/commit/9bdae39c99a818faa91229bd4a3972c00643f041)) * **context:** harden description checks for bad MDL rows ([#2616](https://github.com/Canner/WrenAI/issues/2616)) ([b56d4da](https://github.com/Canner/WrenAI/commit/b56d4da16b5a05125448827d0154777c2c3692a4)) * **context:** harden relationships load + validate like views ([#2613](https://github.com/Canner/WrenAI/issues/2613)) ([d234608](https://github.com/Canner/WrenAI/commit/d23460893dfbda63097a5da889432230208eca79)) * **genbi:** harden non-dict apps.yml entries in list/get/register ([#2587](https://github.com/Canner/WrenAI/issues/2587)) ([dae7076](https://github.com/Canner/WrenAI/commit/dae7076ccc3335615b61e61cd938637f17146f5e)) * **genbi:** reject non-object Vercel API JSON ([#2582](https://github.com/Canner/WrenAI/issues/2582)) ([4cd4bf8](https://github.com/Canner/WrenAI/commit/4cd4bf8d7ee1e3f27c2deca4d9f1eabb799ae99a)) * **memory:** reject non-list relationship models in schema_indexer ([#2605](https://github.com/Canner/WrenAI/issues/2605)) ([73c1255](https://github.com/Canner/WrenAI/commit/73c1255439795ac9cf538b706ec4c208d6d3f25b)) * **memory:** skip non-dict rows in extract_schema_items/describe ([#2586](https://github.com/Canner/WrenAI/issues/2586)) ([32d76bf](https://github.com/Canner/WrenAI/commit/32d76bfdab57260e24ebb4cd12d22ab4111e090d)) * **memory:** skip unnamed cubes/measures/dimensions in schema_indexer ([#2665](https://github.com/Canner/WrenAI/issues/2665)) ([f29b5b0](https://github.com/Canner/WrenAI/commit/f29b5b0a01e31db07f7e1a4c0dbdc258d48deca3)) * **spark:** apply limit via DataFrame.limit before toPandas ([#2574](https://github.com/Canner/WrenAI/issues/2574)) ([4483ce8](https://github.com/Canner/WrenAI/commit/4483ce8c7eaccf7a8ebc454586884b4d4869f206)) * **wren-cli:** surface skipped non-mapping rows in parse/translate-types ([#2570](https://github.com/Canner/WrenAI/issues/2570)) ([fc4ebf0](https://github.com/Canner/WrenAI/commit/fc4ebf01130040623abaf2defc500e53a98baee1)) * **wren:** bound the session-context cache to 32 LRU entries ([#2628](https://github.com/Canner/WrenAI/issues/2628)) ([f92e681](https://github.com/Canner/WrenAI/commit/f92e681fd5731f477dadfed963b63397cf95a283)) * **wren:** classify bare TimeoutError as DatabaseTimeoutError in WrenEngine ([#2654](https://github.com/Canner/WrenAI/issues/2654)) ([7f7370e](https://github.com/Canner/WrenAI/commit/7f7370e4e9b05a51dbde918cd5c9ecbedafe3d20)) * **wren:** preserve unconstrained PostgreSQL NUMERIC precision ([#2655](https://github.com/Canner/WrenAI/issues/2655)) ([2c264e5](https://github.com/Canner/WrenAI/commit/2c264e56ee2409fe6d426380fbda6b56950c3ac4)) * **wren:** prevent context upgrade path traversal ([#2649](https://github.com/Canner/WrenAI/issues/2649)) ([6db8bed](https://github.com/Canner/WrenAI/commit/6db8bed56a9063944f149b3ff3dd6eb54b3c1897)) * **wren:** validate import paths before force cleanup ([#2580](https://github.com/Canner/WrenAI/issues/2580)) ([60ee894](https://github.com/Canner/WrenAI/commit/60ee8947670661e0a3faeafbb464e217921f7f6b))