| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| DevoxxGenie-1.12.0.zip | 2026-08-09 | 89.3 MB | |
| README.md | 2026-08-09 | 7.0 kB | |
| v1.12.0 source code.tar.gz | 2026-08-09 | 28.1 MB | |
| v1.12.0 source code.zip | 2026-08-09 | 29.2 MB | |
| Totals: 4 Items | 146.6 MB | 0 | |
The headline is Personas: named system prompts you pick from a dropdown in the tool window, so each role gets a clean prompt instead of one system prompt full of conditionals. Alongside that, agent mode works again on Cloudflare Workers AI models, and the landing-page stats finally refresh on every deploy.
Added
- feat(personas): Personas — named system prompts with a tool window dropdown. Selecting a persona replaces the system prompt for the conversation (it is not appended), so a Reviewer prompt is a reviewer prompt rather than your developer prompt with a review paragraph bolted on. Ships with four built-ins — Developer (your existing system prompt, unchanged and still the default), Reviewer, Architect and Test Engineer — and you can add, edit, remove or restore your own from a new Personas table in the prompt settings. The dropdown sits below the model selector and is only shown when "Show personas" is enabled; the selection is per tab and runtime-only, so every tab starts on the default persona after an IDE restart.
ChatMemoryManager.buildAugmentedSystemPromptresolves the active persona as the base system prompt, and changes broadcast on a newPERSONAS_CHANGED_TOPIC. A persona change applies to new conversations — an ongoing conversation keeps the persona it started with, since swapping the system prompt mid-conversation reliably confuses a model that has been answering as someone else (#1260)
Fixed
- fix(cloudflare): agent tool calls no longer rejected by the Workers AI schema. Agent mode was broken on every
workers-ai/*model: Workers AI's native message schema requires each message to carry a stringcontent, but langchain4j builds the assistant message asAssistantMessage.content(aiMessage.text())andtext()isnullwhen the model returned only tool calls — so Jackson dropped the field entirely. Valid OpenAI, but exactly the reportedrequired properties at '/messages/11' are 'role,content', and the reason the first round trip succeeded while the one replaying the tool call 400'd. A newCloudflareCompatRequestNormalizerfills in an empty string and flattens text-only content arrays (arrays holding images are left alone so vision models keep working), applied throughCloudflareCompatHttpClienton both the blocking and streaming paths —.httpClientBuilder()is the only seam langchain4j offers for touching the serialised request. Scoped toworkers-ai/*ids, so other providers behind the same gateway are handed on byte for byte. The error was also unreadable:ProviderErrorTranslatoronly recognised theAiGatewayErrorenvelope, so theAiErrorbody from this failure — schema validation dump and all — landed raw in the chat; internal code 5006 now translates to actionable guidance (#1256, [#1262]) - fix(cloudflare): route bare Workers AI model ids — the
/compatendpoint addresses models asprovider/model, but users copy Workers AI ids from the Cloudflare dashboard in their bare@cf/...form, which the gateway rejects with400 AiGatewayErrorcode 2008 ("Invalid provider") because@cfis parsed as the provider segment; ids with no prefix at all (e.g.kimi-k2.6) fail as unroutable with code 2005.CloudflareModelName.normalize()now deterministically prefixes@cf/...ids withworkers-ai/(that namespace is unambiguous) and never guesses a provider for other bare ids, applied on the chat and streaming paths and to the dropdown's model override. Code 2008 and unroutable-id errors now explain theprovider/modelformat and the/compatURL requirement, with a matching hint under the Cloudflare Model setting and a "Model naming" docs section (#1254, [#1255]) - fix(docs): landing-page stats never refreshed — every deploy since the stats band landed logged
[genie-stats] … unavailable (responded 403)and silently baked the hardcoded fallback figures into the page, so the active-user and download numbers never moved. The GitHub-stars fetch in the same builds succeeded, pinning the 403 on devoxx.com's WAF rejecting Node's defaultUser-Agent: noderather than on runner egress. All genie-stats fetches now send an explicit User-Agent, the download count comes from the JetBrains Marketplace public API (the authoritative source, no bot wall) with devoxx.com and the baked-in figure as fallbacks, and any fallback emits a GitHub Actions::warning::annotation so a stale stats band shows up in the run summary instead of being buried in a green build's log (#1258)
Changed
- feat(docs): the landing-page stats band is live rather than hardcoded — a build-time Docusaurus plugin (
genie-stats) reads the active-user and download figures from devoxx.com's GA4 + Marketplace-backed endpoint and publishes them as global data. Fetching at build time keeps the numbers in the static markup for crawlers, avoids a loading flash and sidesteps CORS (the endpoint sends noAccess-Control-Allow-Origin). Every upstream failure mode falls back to baked-in figures rather than failing the build or renderingNaN, anddeploy-docs.ymlgains a cron plusworkflow_dispatchsince a rebuild is now what refreshes the figures (#1252) - feat(docs): add a GitHub Stars card to the stats band, fetched from the GitHub API in the same build-time plugin, and move the docs deploy cron from weekly to daily so the count stays fresh. The GitHub and devoxx.com fetches run in parallel and fail independently to their own fallbacks, so one upstream being down never blanks the other (#1253)
Documentation
- docs(tips): five new tips covering the mid-task queue/steer feature from v1.11.0 — Enter queues a message as the next prompt, Steer injects it into the running agent loop, submit becomes Stop while a task runs, queued prompts each get their own answer in order, and stopping a run discards them. Added to the live tips feed and to
TipService.FALLBACK_TIPS, so cold-start installs see them before the first remote fetch (#1241, [#1250])
Tests
- fix(test): dispose the platform fixture in the two chat-model factory tests.
LocalChatModelFactoryTestandOpenRouterChatModelFactoryTestwere the onlyBasePlatformTestCasesubclasses without atearDown, so their fixture was never disposed — andBasePlatformTestCasepointsjava.io.tmpdirat the temp directory it creates. With the redirect never undone, each following test nested its temp directory inside the previous one (~40 characters deeper each time) until the path crossed the OS limit andsetUp()died with aFileSystemException, which is why threeLocalChatModelFactoryTestmethods failed on a full suite run but passed in isolation (#1261)
Dependencies
- chore(deps): upgrade Langchain4J 1.18.0 → 1.18.1 (beta modules 1.18.0-beta28 → 1.18.1-beta28), AWS SDK 2.49.5 → 2.50.3 and jsoup 1.22.2 → 1.23.1 (#1257)
- chore(deps): bump docs toolchain — fast-uri 3.1.4 → 3.1.5 (security) (#1259)
Contributors
- @stephanj