Download Latest Version DevoxxGenie-1.14.0.zip (89.4 MB)
Email in envelope

Get an email when there's a new version of DevoxxGenie

Home / v1.12.0
Name Modified Size InfoDownloads / 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.buildAugmentedSystemPrompt resolves the active persona as the base system prompt, and changes broadcast on a new PERSONAS_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 string content, but langchain4j builds the assistant message as AssistantMessage.content(aiMessage.text()) and text() is null when the model returned only tool calls — so Jackson dropped the field entirely. Valid OpenAI, but exactly the reported required 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 new CloudflareCompatRequestNormalizer fills in an empty string and flattens text-only content arrays (arrays holding images are left alone so vision models keep working), applied through CloudflareCompatHttpClient on both the blocking and streaming paths — .httpClientBuilder() is the only seam langchain4j offers for touching the serialised request. Scoped to workers-ai/* ids, so other providers behind the same gateway are handed on byte for byte. The error was also unreadable: ProviderErrorTranslator only recognised the AiGatewayError envelope, so the AiError body 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 /compat endpoint addresses models as provider/model, but users copy Workers AI ids from the Cloudflare dashboard in their bare @cf/... form, which the gateway rejects with 400 AiGatewayError code 2008 ("Invalid provider") because @cf is 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 with workers-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 the provider/model format and the /compat URL 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 default User-Agent: node rather 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 no Access-Control-Allow-Origin). Every upstream failure mode falls back to baked-in figures rather than failing the build or rendering NaN, and deploy-docs.yml gains a cron plus workflow_dispatch since 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. LocalChatModelFactoryTest and OpenRouterChatModelFactoryTest were the only BasePlatformTestCase subclasses without a tearDown, so their fixture was never disposed — and BasePlatformTestCase points java.io.tmpdir at 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 and setUp() died with a FileSystemException, which is why three LocalChatModelFactoryTest methods 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
Source: README.md, updated 2026-08-09