v0.19.0-alpha
A feature-and-fix release bundling a new skills capability with two fixes from issues filed by @3dyuval.
Added
Skill references/ — on-demand reference files (tier-3 progressive disclosure). A skill can now ship a references/ subdirectory of markdown files that the model loads only when a task needs them, keeping SKILL.md lean. use_skill gains an optional resource argument (use_skill(name, resource="freecad-gotchas")) that returns a reference file's contents, and a skill with references gets an auto-generated "Available references" manifest advertising each key and the exact call to load it. The model passes a key, never a path — looked up in a pre-scanned allowlist, so directory traversal is impossible by construction. Fully additive: skills without a references/ directory are unchanged. (#37 — thanks @3dyuval)
Fixed
Custom OpenAI-compatible providers no longer silently drop the tools array. The custom provider preset defaulted to supports_tools: False, and since the per-model tool-capability probe is Ollama-only, that flag was the sole source of truth for custom endpoints — silently disabling tool calling. The default is now True (most custom servers — vLLM, llama.cpp --jinja, SGLang — support tools); a genuinely tool-less endpoint opts out with tools_detected: false in config.json. (#38 — thanks @3dyuval)
Changed
execute_code now tells the model its state does not persist between calls. Each call runs in a fresh namespace, but nothing signalled that, so models chained variables/imports across calls, hit a NameError, and looped to the tool-turn limit. The tool description now states each call is self-contained. (#39 — thanks @3dyuval)
Full changelog: https://github.com/ghbalf/freecad-ai/blob/master/CHANGELOG.md