0.2.0-M9
The platform-migration milestone. The whole stack moves to Spring AI 2.0, Spring Boot 4.1, Vaadin 25, Jackson 3, and Electron 42, and Agentic Chat gets a substantial overhaul - provider-aware options, a reasoning toggle, a Prompt Library, rich rendering, and a per-chat memory window with full local history.
Highlights
- Migrated to Spring AI 2.0 / Spring Boot 4.1 / Vaadin 25 - Spring Boot 3.5 -> 4.1, Spring AI 1.1 -> 2.0, Vaadin 24 -> 25 (25.1.8), Jackson 2 -> 3 (
tools.jackson), Spring Security 7, Electron 28 -> 42 (Chromium for the Vaadin 25 webview). APIs adapted: immutable builder chat options, theToolCallingAdvisor/.tools()surface, Jackson 3 unchecked exceptions (corrupt-file boot resilience restored), Vaadin 25 access control + explicit Lumo theming, theopenai(wasopenai-sdk) starter; the vendoredOllamaChatModelpatch is dropped. - Agentic Chat overhaul - provider-aware request options, a per-request reasoning/think toggle, system-prompt presets + a Prompt Library of
{{variable}}templates, a message hover toolbar and always-visible meta row (elapsed, tokens, model, tool/RAG chips), and rich rendering (code highlight, KaTeX, Mermaid) with a shared categorized tool selector. - Per-chat memory window with full local history -
LlmWindowChatMemoryfeeds the last N messages to the model while the full conversation stays on screen and disk; tunable globally and per chat. - Apple Silicon MLX auto-select - an
mlxSpring profile auto-selects MLX-quantized models for faster local inference; the Electron launcher maps MLX models.
Fixed
- Repaired dead built-in tools (
convertCurrency,getCountryInfo); oversized tool results capped and clipped before they overflow the model context. - Chat - exposed-tool combos repopulate on attach, restored-message timestamp null-guard, a provider-aware model-download gate, provider stop-sequence validation, preset-driven built-in MCP exposure, and the generating indicator kept alive across think / tool / RAG phases.
- Vector Database grid degrades to an empty state + toast when the embedding provider is unreachable, instead of aborting navigation; workspace header overflow.
- Electron download/launcher UX - per-task cancel, throttled progress, debounced window-fit, and
chmod 600on the persisted secrets file.
Build
- Docker image builds on Spring Boot 4 (
tools ... extract --layers --launcher, replacing the removedlayertoolsjarmode). - Dependency upgrade - Spring Boot 4.1.0, Spring AI 2.0.0, Vaadin 25.1.8, Electron 42, electron-builder 26.15.3.
Verification
Full unit suite 1282 / 0 failures / 0 errors + checkstyle clean. Production build green on Vaadin 25.1.8; frontend npm audit 0 vulnerabilities (react-router 7.17.0, dompurify 3.4.10, patched via the Vaadin bump). Live pre-release QA across all pages (Lumo rendering), chat end-to-end, markdown/charts, and mobile - release-ready.
See CHANGELOG.md for the complete list.
What's Changed
- 0.2.0-M8 - MCP safety, proxy, HITL, and integrity by @JM-Lab in #13
- 0.2.0-M9 - Spring AI 2.0 / Boot 4 / Vaadin 25 migration, agentic chat overhaul by @JM-Lab in #14
Full Changelog: 0.2.0-M8...v0.2.0-M9