Skip to content

DeepTutor

v1.4.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai-agents ai-tutor clawdbot cli-tool deepresearch interactive-learning
+3 more
large-language-models multi-agent-systems llm

Affected surfaces

auth breaking_upgrade

ReleasePort's take

Moderate signal
editorial:auto 12d

The 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 summary

Updates What's New Since v1.4.0-beta, Tests, and Upgrade Notes across a mixed release.

Changes in this release

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_kwargs in deeptutor/core/agentic/client.py
    resolves reasoning_effort against provider_registry, maps minimal /
    minimum to the right wire shape (DashScope uses minimum), 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 to high; the
    deepseek-v4-flash shape gets thinking disabled by default.
  • LLMClientConfig.reasoning_effort is plumbed end-to-end. All four
    pipelines — agentic chat, question, research, solve — pass the binding +
    effort into build_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 detectionTurnRuntimeManager now checks whether this
    process still owns the turn's in-memory runner. If not, the persisted
    turn is marked failed with "Turn interrupted by server restart. Please retry your message."
  • start_turn sweeps stale active turns for the session before
    creating a new turn, so the user can immediately retry after a restart.
  • subscribe_turn synthesizes a terminal error + done event 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=value and --config-json '<json>' seed
    the initial config without entering the REPL first.
  • /config set key value and /config set key=value are both accepted;
    JSON values ([…], {…}) are parsed correctly via shlex.
  • Backslash-continuation lets you send multi-line prompts in one turn.
  • /refs prints a structured state snapshot (session, capability, tools,
    KB, history, notebooks, language, config) instead of a single dim line.
  • deeptutor plugin info <name> now also returns cli_aliases and the
    capability availability block.

Repo & Docs Hygiene

  • New issue template for the public docs site (.github/ISSUE_TEMPLATE/docs.yml).
  • AGENTS.md modernized to reflect Auto Mode, tool gating, and the
    current capability stages.
  • .gitignore covers .playwright-cli/; stale .playwright-cli/
    captures, .env.example_CN, and DeepTutor.code-workspace removed.

Tests

  • New tests/core/test_agentic_client_provider_kwargs.py covering the
    reasoning-effort + provider thinking-style matrix.
  • New tests/core/test_labeled_step_tool_fallback.py exercising the
    tool-schema retry path end-to-end against a scripted client.
  • tests/services/session/test_turn_runtime_subscribe.py adds coverage
    for orphan-running-turn recovery on both subscribe and start_turn.
  • tests/cli/test_chat_cli.py adds REPL config/backslash tests and a
    plugin-info contract check.
  • New tests/cli/test_docs_contract.py keeps 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 normalizes 1.4.0 over 1.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 in extra_body,
    the agent will still respect them, but the recommended path is to set
    reasoning_effort and let the engine map it.
  • Restart recovery is automatic. After upgrading, any existing
    database rows stuck on running from previous crashes will be
    finalized the next time their session is opened.
  • Beta artifact cleanup: web/.env.local was 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

Track DeepTutor

Get notified when new releases ship.

Sign up free

About DeepTutor

"DeepTutor: Agent-Native Personalized Learning Assistant"

All releases →

Related context

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]