Back to Overview
Johannes Wachter
Johannes Wachter

Core Developer

Sulu Core Developer, open source enthusiast, always excited about the latest in technology, and instantly recognizable by a laugh you’ll hear before you see him.

Back to Overview

Sulu.ai 0.8: More control over everyday AI workflows

Running out of AI credits used to be something your editors discovered at the worst possible moment. Mid-sentence, in the middle of a page, from a banner that only showed up once the monthly quota was already spent. Nothing told them how much was left, and nothing told them who could fix it.

Sulu.ai 0.8 changes that. You get a plan and credit overview inside the admin interface, error states that tell you whether to try again or contact your administrator, and a documentation site you can link to instead of a support chat. The model lineup moves to the current provider generation at the same time, and you do not have to switch anything for it.

A lot of this release did not come from our roadmap. It came from your tickets.

Your plan and your credits, in the admin interface

This is the centre of the release. A new Sulu.ai navigation item puts the numbers where the work happens.

The first card is your plan: which one you are on, whether it runs as a bundle or pay as you go, a trial marker while you are in one, the status as a badge with its date, your start date, and a scheduled plan change if one is pending.

The second card is this month's credits. What is left of your included credits stands there as one large number, with a usage bar, what you have used so far, and the date the quota renews. The note underneath adapts to whether pay as you go is active for you.

A contact box below writes to the address you configured, so a question about the plan or the credits reaches the person responsible instead of a support chat. Without a configured address, the box stays hidden. If the platform cannot be reached, the page says so and offers another attempt.

None of this lives in your project. The page reads the numbers live from the platform.

Who gets to see them is up to you. The page sits behind a new security context, so you grant VIEW to the roles that should have it, in Settings under User roles. If you build for clients and would rather not put contract data in front of every editor, that switch is now yours.

Errors that tell you what to do

A failed AI request used to look identical to your editors no matter what went wrong. A rejected API key, an empty quota, and a provider under load all produced the same message. The difference matters, because in one case waiting helps and in the other only an administrator does. 0.8 splits this into two states:

Red, input locked, "Contact Admin". The key was rejected, the credits are used up, or the subscription is inactive. An editor cannot solve any of that. TThe button sends an email to the dedicated contact, the person responsible for the subscription, so the request reaches someone who can.

Yellow, input open, "Try Again". A rate limit or a temporary provider error. Trying again is the right answer, so the input stays open.

The platform tells the bundle which of the two cases applies, so the bundle stays provider neutral. The generate buttons in the form toolbar follow the same logic: they name the reason, offer another attempt when one makes sense, and let your editors dismiss them.

New models, nothing to switch

The full lineup now runs on the provider generation of August 2026:

  • The GPT-5.6 family (Sol, Terra, and Luna) replaces the 5.4 and 5.5 generation
  • Claude 5 Opus and Claude 5 Sonnet replace 4.7 Opus and 4.6 Sonnet
  • Gemini 3.7 Flash replaces 3.5 Flash
  • Mistral Medium 3.5 joins the lineup, with its own section below

The part that matters more than the list: in Sulu.ai you do not pick a model. You describe criteria and the platform matches the right model. Your existing experts pick up this update on their own, so there is nothing to migrate and no expert to rebuild.

A European option above the workhorse

Until now, "European" ended at Mistral Large 3. Large 3 is our affordable, solid workhorse, and it is not our strongest model. If your project or client required a European provider, you had no way up.

Mistral positions Medium above Large and calls it their agentic model: multimodal, 256k context, tool use, and structured outputs. With 0.8 it is part of the lineup, so there is a European option above the workhorse for the first time.

Medium takes no tier slot. Flagship and budget stay with Large 3 and Small 4, so an expert bound to a tier will not quietly end up on a much more expensive model. You choose Medium deliberately, by name or by criteria.

Whether "European" should point at Medium 3.5 instead of Large 3 in the future is still open. If you build for clients with a European-provider requirement, tell us what you need.

Writing assistant and translator, rebuilt

The assistant worked, but it read backwards: newest answer on top, layout jumping with every response, and the predefined prompts hidden in a dropdown. It reads forwards now. The newest answer sits at the bottom, the dialog scrolls there by itself, your selected text stays pinned above it, older entries collapse, and the height stays fixed so nothing jumps. Three predefined prompts sit next to the input field, the rest behind "more", and you pick your expert from a labelled selection.

The translator got the same pass: a wider overlay, and a language selection with a search field, suggested languages separated from all languages, and both source and target named.

Using the whole content as context now works in every tab, not just in the details tab. That helps most when you write SEO copy, which needs the page content behind it.

One page, one translation request

Translating a full page used to cost two requests, so every translated page showed up twice in your request list and was billed twice. From 0.8 on it is one request, labelled Content translation and filterable in the list. Same work, half the entries.

Copying a locale got more robust. One failed translation used to break the whole copy and leave your editors with a 500. Now the copy stays in place untranslated and the error is logged.

Two smaller fixes keep translation working on real project data. Language codes that are actually country codes get resolved instead of rejected, and empty fields no longer fail the whole request.

What real-world usage uncovered

Most of this section comes from concrete customer incidents.

  • Quotes in document titles. A single document with a " in its title aborted the entire search of a project, because titles are written into a strict JSON schema. Fixed, and the real title is restored for the response.
  • Meaningful stream errors. The SSE error event used to carry one constant, uninformative text. It now carries a cause and a code, so a rate limit, a provider timeout, an unreachable provider, an invalid response, and an internal error are told apart. The messages are curated by us, not passed through from the provider.
  • Idle timeouts on upstream calls. Provider and vector store calls had no timeout at all and ran into the same window as your clients, so a stalled provider always broke the client first. This is about inactivity, not total duration: a streamed response resets the clock with every chunk, and only silence gets cut. Both values are environment variables, adjustable without a deploy.
  • Tool calls without arguments. Providers rejected them, which broke every conversation that repeated a parameterless tool call. Fixed.

Breaking changes

0.8 asks for three changes to your integration. None of them are optional.

  1. contact_email is now required configuration. The "Contact Admin" button in the new error states writes to this address. Without it, you get a configuration error, and this is the first thing you will hit on upgrade.
  2. The Sulu minimum version goes up to ^2.6.26 or ^3.0.9. The rebuilt admin UI lives in Sulu core, so without the update you get neither the new dialogs nor the subscription page. Sulu 2.6 and Sulu 3.0 both work with 0.8, but both need the current patch level.
  3. Rebuild your admin assets after the update.

No translation keys renamed, no templates removed, no extension points changed.

One more step after the upgrade: the subscription page sits behind the new sulu.ai.subscription security context. Until you grant VIEW to a role, in Settings under User roles, nobody sees it.

Upgrade

The full list of steps is in the upgrade notes at bundle-docs.sulu.ai/upgrade/. This post covers what is new, the docs cover how to get there.

Keep the tickets coming

Much of this release exists because you took the time to write up what broke, often with a reproduction attached. That is what turned an out-of-credits banner into a page you can check, and a generic error into two clear states. Keep it coming: write us a mail, or bring it to us in Slack.

Johannes Wachter
Johannes Wachter

Core Developer

Sulu Core Developer, open source enthusiast, always excited about the latest in technology, and instantly recognizable by a laugh you’ll hear before you see him.