You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A "Text classification" category in Models → Discover. Jev (NLI) and Laya models are both text classification
models, so one chip beside the sort menu now finds both, whichever chat engine is active. It lists only what
TurboLLM can run: a Laya bundle, or an NLI cross-encoder confirmed from its own config.json. Sentiment and
toxicity classifiers, and repos with no .safetensors weights, are left out. Each row shows the runtime it loads on
(Laya engine or vLLM).
GET /v1/models marks these models with "task": "text-classification". kind (jev or laya) is unchanged. GET /api/v1/status gains textClassification, beside jev and laya.
A Form view for the text classification playground's questions field, beside the existing JSON view, with a
toggle to switch between them. Form shows one card per question — an id, a type (Yes/no, Pick one, Scale),
instructions, and type-specific fields: an optional "what does yes look like" for Yes/no, an option list for Pick
one, and an ordered, reorderable level list for Scale. The JSON text stays the single source of truth; editing a
question through the form re-serializes the whole questions object, so an untouched question never disappears but
can still pick up a dropped criteria.false, an empty string for a null description, or (for a purely numeric id)
a different position in the object, JavaScript's own key order. Two questions sharing an id, or two options sharing
a name, are flagged right on the card and block Run, and are held back from the saved draft, instead of silently
dropping a question or option the moment the clash appears.
Changed
Desktop app on macOS and Linux: stopping the daemon from outside the app now closes the app.
For example, turbollm --stop in a terminal used to leave the window open with no daemon behind
it.
Jev and Laya are now presented as one thing, "text classification". The playground, the Models badge, the
ready toast, the switch-model menu and the error messages all say so. The playground moved to /workspace/text-classification; the old /workspace/jev address redirects to it. A Jev model still takes the
Workspace over while it is loaded, and a Laya model still loads beside your chat model.
The playground is a real Workspace tab. A Text classification tab sits under Chat, Code and Routines
whenever your library holds a text classification model, and stays after you eject it. This replaces the
"Open playground" link that used to sit under the tabs. The playground's left column has the same tabs and lists
your text classification models with Load and Eject; with none loaded it says so and lets you load one.
Fixed
Windows installer: closes a running TurboLLM itself (GitHub #250). Installing a new version while
TurboLLM was open could stop at "TurboLLM cannot be closed", and Retry did not help. The installer and
the uninstaller now close TurboLLM without asking first, and also stop any TurboLLM background process
still running from the install folder, which could outlive the window and keep its files locked. If
that still fails (for example when TurboLLM was started as administrator), the same message appears:
close TurboLLM yourself and click Retry, which runs the whole automatic close again.
Desktop app: quitting after a daemon restart now stops the daemon too. Restarting the daemon
from Settings used to start the new daemon as a separate background process the app lost track
of, so it kept running after you quit TurboLLM, holding port 6996 and files in the install
folder (a likely cause of the installer's "TurboLLM cannot be closed" message, #250). The app now starts the restarted
daemon itself and stops it when you quit. Restarting from a terminal (npx turbollm or a global
npm install) is unchanged.
A Laya model could be picked where a chat model is required. A routine and the create_routine tool refused a
Jev model but accepted a Laya one, turbollm launch (also with --model) offered a Laya model to a coding agent,
and list_models didn't mark it. All of them now treat both as text classification models.
The text classification playground's questions and state fields didn't reformat on their own. Leaving a
field now tidies valid JSON automatically, the same reformat the Format button already ran — except where that
reformat itself would change what's sent: a state field holding a bare number, boolean or null, or text with a
repeated object key, is left as typed until Format is clicked on purpose.
Tab, in either field, moved focus to the Format button instead of indenting. Tab now inserts an indent, as in
a code editor; Shift+Tab still moves focus backward.
An answer card didn't show which question it answered. Two yes/no questions read identically ("0.945
entailment probability") with nothing on screen to tell them apart. Every card now shows its question's id.
A Laya-shaped repo that actually names another runtime library was still offered as a Laya download. An MLX,
ONNX, CoreML or ggml port of a Laya checkpoint can match the same root file layout; it's now recognized from its
Hugging Face library_name and excluded, the same way other non-Laya libraries already were.