This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+3 more
Affected surfaces
ReleasePort's take
Moderate signalThe v1.4.0 release centralizes reasoning‑effort configuration and adds several tooling improvements.
Why it matters: Centralized reasoning effort simplifies provider management; deprecates the legacy web/.env.local file, requiring removal after upgrade.
Summary
AI summaryUpdates What's New Since v1.4.0-beta, Tests, and Upgrade Notes across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Agentic engine normalizes reasoning effort across providers centrally. Agentic engine normalizes reasoning effort across providers centrally. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Feature | Medium |
`deeptutor chat` REPL aligns CLI config surface with public documentation, adding multi-line prompt support and richer /refs output. `deeptutor chat` REPL aligns CLI config surface with public documentation, adding multi-line prompt support and richer /refs output. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Feature | Medium |
`build_provider_extra_kwargs` resolves `reasoning_effort`, maps minimal/minimum, and routes thinking toggles per provider. `build_provider_extra_kwargs` resolves `reasoning_effort`, maps minimal/minimum, and routes thinking toggles per provider. Source: granite4.1:30b@2026-05-22-audit Confidence: high |
— |
| Feature | Medium |
`LLMClientConfig.reasoning_effort` is propagated through all four agentic pipelines (chat, question, research, solve). `LLMClientConfig.reasoning_effort` is propagated through all four agentic pipelines (chat, question, research, solve). Source: granite4.1:30b@2026-05-22-audit Confidence: high |
— |
| Feature | Medium |
Upgrade from v1.4.0‑beta is drop‑in; reasoning effort now read from `LLMConfig.reasoning_effort` with backward compatibility for manual flags. Upgrade from v1.4.0‑beta is drop‑in; reasoning effort now read from `LLMConfig.reasoning_effort` with backward compatibility for manual flags. Source: granite4.1:30b@2026-05-22-audit Confidence: high |
— |
| Feature | Medium |
`run_labeled_step` strips tools on strict providers and retries once with warning. `run_labeled_step` strips tools on strict providers and retries once with warning. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Feature | Medium |
TurnRuntimeManager detects orphaned turns after server restarts and marks them failed with a user message. TurnRuntimeManager detects orphaned turns after server restarts and marks them failed with a user message. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Feature | Medium |
`web/lib/api.ts` switches to substring token detection for NEXT_PUBLIC_API_BASE placeholder, removing unused auto-generated .env.local. `web/lib/api.ts` switches to substring token detection for NEXT_PUBLIC_API_BASE placeholder, removing unused auto-generated .env.local. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Feature | Medium |
/settings/llm probe adds explicit status line about basic completion and chat validation. /settings/llm probe adds explicit status line about basic completion and chat validation. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Feature | Medium |
New issue template, modernized AGENTS.md, and updated .gitignore for repo hygiene. New issue template, modernized AGENTS.md, and updated .gitignore for repo hygiene. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Feature | Low |
`web/lib/api.ts` removal of unused `web/.env.local` after placeholder detection change. `web/lib/api.ts` removal of unused `web/.env.local` after placeholder detection change. Source: granite4.1:30b@2026-05-22-audit Confidence: low |
— |
| Deprecation | Medium |
Legacy `web/.env.local` auto‑generated file is removed; no longer needed after placeholder refactor. Legacy `web/.env.local` auto‑generated file is removed; no longer needed after placeholder refactor. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Bugfix | Medium |
TurnRuntimeManager sweeps stale active turns before starting a new turn after restarts. TurnRuntimeManager sweeps stale active turns before starting a new turn after restarts. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
`run_labeled_step` retries once with stripped tools on strict providers, emitting a warning. `run_labeled_step` retries once with stripped tools on strict providers, emitting a warning. Source: llm_adapter@2026-05-22 Confidence: high |
— |
| Bugfix | Medium |
`subscribe_turn` synthesizes terminal error and done events for orphaned turns to close frontend streams cleanly. `subscribe_turn` synthesizes terminal error and done events for orphaned turns to close frontend streams cleanly. Source: granite4.1:30b@2026-05-22-audit Confidence: high |
— |
| Refactor | Medium |
Docker placeholder detection in `web/lib/api.ts` changed from exact to substring matching and removed unused .env.local. Docker placeholder detection in `web/lib/api.ts` changed from exact to substring matching and removed unused .env.local. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Medium |
Drop‑in upgrade from v1.4.0-beta to GA; reasoning effort config centralization recommended. Drop‑in upgrade from v1.4.0-beta to GA; reasoning effort config centralization recommended. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Medium |
New unit tests added for reasoning effort provider matrix, tool fallback retry, turn runtime orphan recovery, REPL config, and docs contract alignment. New unit tests added for reasoning effort provider matrix, tool fallback retry, turn runtime orphan recovery, REPL config, and docs contract alignment. Source: llm_adapter@2026-05-22 Confidence: low |
— |
| Other | Low |
Drop‑in upgrade notes clarify reasoning effort centralization and orphan turn recovery for existing databases. Drop‑in upgrade notes clarify reasoning effort centralization and orphan turn recovery for existing databases. Source: granite4.1:30b@2026-05-22-audit Confidence: low |
— |
Full changelog
DeepTutor v1.4.0 Release Notes
Release Date: 2026.05.22
v1.4.0 is the GA cut of the v1.4 line. It carries the full v1.4.0-beta scope
(Auto Mode, three-layer Memory workbench, agentic Deep Research / Deep Solve /
Question, LlamaIndex chat refactor, unified capabilities infrastructure +
i18n, Visualize/Animator merge, new chat tools, settings split, multi-user
isolation hardening, and the deeptutor start / deeptutor init launcher)
and adds a focused set of agent-engine and runtime hardening fixes on top.
For the full beta scope see v1.4.0-beta.
What's New Since v1.4.0-beta
Reasoning Effort + Provider Thinking Flags
The agentic engine now normalizes "reasoning effort" across providers in one
place, instead of each pipeline re-deriving it.
build_provider_extra_kwargsindeeptutor/core/agentic/client.py
resolvesreasoning_effortagainstprovider_registry, mapsminimal/
minimumto the right wire shape (DashScope usesminimum), and routes
the on/off intent through provider thinking-style toggles —
thinking_type(DeepSeek),enable_thinking(Qwen-style), or
reasoning_split. Known reasoning models default tohigh; the
deepseek-v4-flashshape gets thinking disabled by default.LLMClientConfig.reasoning_effortis plumbed end-to-end. All four
pipelines — agentic chat, question, research, solve — pass the binding +
effort intobuild_completion_kwargs, so a single user-level setting
controls reasoning behavior across capabilities.
Tool-Schema Fallback For Strict Providers
Some OpenAI-compatible providers reject native function-calling schemas with
a non-standard error. run_labeled_step now detects that case, strips
tools / tool_choice from the request, retries once, and emits a warning
progress event so the user knows the call ran in tool-less prose mode.
Behavior is unchanged for providers that accept tool schemas normally.
Restart-Safe Turn Runtime
A server or container restart used to leave the database row for an
in-flight turn stuck on running, blocking the next message in that
session and leaving the UI hanging on an event stream that would never
complete.
- Orphan detection —
TurnRuntimeManagernow checks whether this
process still owns the turn's in-memory runner. If not, the persisted
turn is markedfailedwith"Turn interrupted by server restart. Please retry your message." start_turnsweeps stale active turns for the session before
creating a new turn, so the user can immediately retry after a restart.subscribe_turnsynthesizes a terminalerror+doneevent for
the orphaned turn so the frontend cleanly closes its streaming state
instead of waiting indefinitely.
Frontend API Base — Docker Placeholder Hardening
web/lib/api.ts switched from exact-match to substring-token detection of
the NEXT_PUBLIC_API_BASE placeholder, and exposes isApiBasePlaceholder()
for reuse. This survives small changes to the Docker placeholder shape that
previously slipped through and produced a blank Settings page with no
visible error. The unused auto-generated web/.env.local shipped with the
beta is removed.
LLM Config Probe — Clearer Status Copy
The /settings/llm probe now emits an explicit "Basic LLM completion
succeeded. Chat additionally validates streaming and provider tool
compatibility at runtime." line after the smoke completion, so users know
the probe deliberately doesn't cover the streaming / tool-call paths that
chat exercises.
CLI Chat REPL — Config Surface Aligned With Docs
The deeptutor chat REPL surface was tightened so it matches the public
docs at deeptutor.info.
deeptutor chat --config key=valueand--config-json '<json>'seed
the initial config without entering the REPL first./config set key valueand/config set key=valueare both accepted;
JSON values ([…],{…}) are parsed correctly viashlex.- Backslash-continuation lets you send multi-line prompts in one turn.
/refsprints a structured state snapshot (session, capability, tools,
KB, history, notebooks, language, config) instead of a single dim line.deeptutor plugin info <name>now also returnscli_aliasesand the
capabilityavailabilityblock.
Repo & Docs Hygiene
- New issue template for the public docs site (
.github/ISSUE_TEMPLATE/docs.yml). AGENTS.mdmodernized to reflect Auto Mode, tool gating, and the
current capability stages..gitignorecovers.playwright-cli/; stale.playwright-cli/
captures,.env.example_CN, andDeepTutor.code-workspaceremoved.
Tests
- New
tests/core/test_agentic_client_provider_kwargs.pycovering the
reasoning-effort + provider thinking-style matrix. - New
tests/core/test_labeled_step_tool_fallback.pyexercising the
tool-schema retry path end-to-end against a scripted client. tests/services/session/test_turn_runtime_subscribe.pyadds coverage
for orphan-running-turn recovery on both subscribe and start_turn.tests/cli/test_chat_cli.pyadds REPL config/backslash tests and a
plugin-info contract check.- New
tests/cli/test_docs_contract.pykeeps the public site docs in
sync with the CLI surface (links +deeptutor …examples). tests/scripts/test_docker_compose.py+web/tests/api-resolve-base.test.ts
cover the new placeholder detection.
Upgrade Notes
- From v1.4.0-beta: drop-in. PyPI installs with
pip install -U deeptutor
(PyPI normalizes1.4.0over1.4.0b0). Docker users pull
ghcr.io/hkuds/deeptutor:latest. - Reasoning effort is now read from
LLMConfig.reasoning_effort. If
you previously set provider thinking flags manually inextra_body,
the agent will still respect them, but the recommended path is to set
reasoning_effortand let the engine map it. - Restart recovery is automatic. After upgrading, any existing
database rows stuck onrunningfrom previous crashes will be
finalized the next time their session is opened. - Beta artifact cleanup:
web/.env.localwas auto-generated by the
legacy launcher and is no longer needed. If you rebuilt the frontend
manually with that file, delete it before the next build.
Full Changelog: https://github.com/HKUDS/DeepTutor/compare/v1.4.0-beta...v1.4.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
Related context
Related tools
Earlier breaking changes
- v1.4.0-beta Deletes the legacy main.yaml capability copy; each capability now uses its own prompt files
- v1.4.0-beta Removes legacy main.yaml capability copy in favor of per-capability prompt files
- v1.4.0-beta Removes legacy agents/ and prompts/ directories for research, solve, question modes
Beta — feedback welcome: [email protected]