DeepTutor v1.3.6 Release Notes
Release Date: 2026.05.03
v1.3.6 focuses on making model routing explicit across DeepTutor. Users can
choose configured LLM profiles from chat and TutorBot flows, runtime services
resolve those choices without leaking provider secrets, and RAG/knowledge-base
index handling is more defensive when persisted embeddings are invalid.
Highlights
Catalog-Based Model Selection
- Chat can target a configured model - unified chat turns now carry a
profile_idandmodel_idselection through the WebSocket payload, session
preferences, turn snapshots, and regenerate flows. - Settings exposes safe LLM options - the new settings options endpoint
returns display-ready provider/model choices while omitting credentials and
connection secrets from the response. - Runtime model overrides are scoped per turn - selected profiles are
resolved through the provider catalog for the active request without writing
temporary choices back to disk or changing global defaults. - Model-selector UI is shared - chat and TutorBot screens use the same
configured-model selector, with localized labels and system-default handling.
TutorBot Model Control
- Bots can persist model selections - TutorBot create/update flows now accept
llm_selection, validate it against the configured catalog, and store it with
each bot. - Running bots can reload their LLM - changing a bot's model updates the
active agent loop instead of requiring a full bot restart. - Recent bot history is steadier - TutorBot history assembly now sorts by
message timestamp with stable tie-breaking before taking the latest context. - Bot chat route changes are cleaner - the web chat page cancels in-flight
bot requests and resets transient reasoning state when switching bots.
RAG and Knowledge Reliability
- Invalid vectors trigger rebuilds - re-indexing no longer treats a matching
document signature as reusable when the existing vector store fails embedding
validation. - Full rebuilds use fresh version directories - complete knowledge-base
rebuilds write to a new flat index version while leaving failed old storage
available for inspection. - RAG tool logs can stream to clients - retrieval runs can forward captured
INFO-level process logs as raw tool events when an event sink is available. - Knowledge health checks recognize bad embeddings - invalid persisted
vectors are surfaced earlier instead of producing opaque search failures.
Provider and Launch Fixes
- OpenAI Responses token limits are normalized - Responses API calls now map
chat-stylemax_completion_tokensandmax_tokenstomax_output_tokens,
fixing the SDK error reported for newer OpenAI models in #437. - Azure and OpenAI-compatible paths share the mapping - both streaming and
non-streaming Responses API routes use the same conversion helper. - Launch ports come from
.envand environment variables - setup and launch
helpers now keep backend/frontend port behavior aligned around the project
.envfile instead of the older runtime settings JSON.
Web UX Polish
- Skill names validate before save - the Skills editor slugifies names,
flags invalid input inline, and prevents silent API failures for uppercase
letters, spaces, underscores, or other unsupported characters. - Skill editor modals are opaque across themes - the editor now uses the
page background token, avoiding text bleed-through in translucent themes. - Space navigation is easier to scan - Space mini-navigation, notebook,
question-bank, skills, and session-list spacing were tightened with clearer
card and divider treatment.
Tests
- Added model-selection service tests for safe option listing, active markers,
invalid profile/model rejection, and non-mutating catalog overrides. - Added unified WebSocket turn-runtime tests for persisted LLM selections,
invalid selections, model switching, snapshots, and regenerate behavior. - Added TutorBot API and manager tests for
llm_selectionpersistence,
validation, runtime reload, and default-model behavior. - Added settings, provider-runtime, and LLM-config tests for scoped catalog
selection and per-turn config precedence. - Added RAG and knowledge-router tests for invalid vector stores, re-index
rebuild decisions, and storage version resolution. - Added OpenAI Responses converter tests for token-limit aliases, precedence,
Nonefiltering, and input immutability. - Added frontend slug tests for skill-name normalization and validation.
Upgrade Notes
- Chat and TutorBot clients that want explicit model routing should send
llm_selectionas{ "profile_id": "...", "model_id": "..." }. Omitting it
continues to use the configured system default. - TutorBot configuration files may now contain
llm_selection. Existing bot
configs without that field continue to load, and legacymodelvalues remain
usable as model-name overrides. - Launch ports should be configured in
.envor process environment variables
(BACKEND_PORT/FRONTEND_PORT). The olddata/user/settings/env.json
port block is no longer used as a launch-port source. - Knowledge bases with stale or invalid persisted vectors may rebuild on the
next re-index even when document signatures have not changed. - Skill names are now normalized and validated as lowercase slugs of up to 64
characters using letters, numbers, and hyphens.
Full Changelog: v1.3.5...v1.3.6