DeepTutor v1.0.1 Release Notes
Release Date: 2026.04.10
Highlights
Visualize Capability with Chart.js/SVG Rendering Pipeline
Added a new Visualize capability that turns natural-language data descriptions into interactive Chart.js or inline SVG visualizations. The backend runs a three-stage agent pipeline (analysis → code generation → review) with bilingual prompt support (en/zh). The frontend ships two new components — VisualizeConfigPanel for request configuration and VisualizationViewer for rendering — wired into the workspace home page and chat composer.
Explicit Reference Picker in Chat Composer
Added an explicit Reference dropdown button to the chat composer toolbar, sitting alongside the existing Tools dropdown. Users can now directly click the @ Reference button to attach Notebook records or Chat History sessions as context — no need to discover the hidden @ trigger in the input field. The dropdown shows per-category selection counts and a total badge, making it clear at a glance how much context is attached. The original @ keyboard shortcut remains functional as a power-user alternative.
Quiz Duplicate Prevention & Generation History
Fixed repeated quiz questions by introducing a dedicated previous_questions parameter through the Generator pipeline, cleanly separated from conversation history_context. A MAX_PREVIOUS_QUESTIONS=20 cap keeps prompt size bounded, and language labels are moved into YAML templates to avoid language mixing across locales.
o4-mini & Future o-Series Model Support
Extended the o-series regex in LLM config to recognize o4-mini and future o-series model identifiers, ensuring max_completion_tokens is set correctly instead of the unsupported max_tokens parameter (closes #274).
Server Logging Improvements
- Suppressed noisy uvicorn WebSocket connection/disconnection logs that cluttered server output.
- Added selective HTTP access logging middleware that only logs non-200 responses, reducing log noise while preserving actionable error visibility.
- Added MiniMax model override (
supports_response_format: false) for providers that do not support structured output.
What's Changed
- fix:CoWriterEditor scroll sync by @Frant1cc in #175
- Fix/i18n improvement by @Frant1cc in #176
- Feature/llm hardening core slim (#52) by @scrrlt in #183
- docs: update ru translate by @oshliaer in #184
- feat: Add OpenRouter search provider by @infstellar in #194
- Restrict code execution scope and enforce import whitelist by @RinZ27 in #196
- feat/vision_slover by @kms9 in #191
- Let's meet DeepTutor 1.0.0! by @pancacake in #238
- update tag by @pancacake in #239
- fix(deps): gate oauth-cli-kit to Python 3.11+ by @2023Anita in #251
- fix(question-generator): support nested MinerU output in mimic mode by @2023Anita in #250
- fix: add missing imports for mimic websocket router by @YizukiAme in #253
- fix: invalidate runtime caches after settings changes by @YizukiAme in #254
- fix(start-tour): tolerate non-UTF-8 subprocess output by @2023Anita in #259
- fix: use parse_json_response for LLM outputs to handle markdown fences by @kagura-agent in #263
- Fix Windows compatibility for Math Animator renderer by @kevinmw in #256
- fix: Windows compatibility + Guided Learning improvements by @kevinmw in #266
- docs: clarify github copilot provider login semantics by @LocNguyenSGU in #262
- fix: use lowercased filename in mimetypes.guess_type() for consistent MIME validation by @kuishou68 in #272
- fix: extend o-series regex to cover o4-mini and future o-series models by @kuishou68 in #275
- Prevent duplicate quiz questions by removing duplicates and adding history by @Leadernelson in #281
New Contributors
- @Frant1cc made their first contribution in #175
- @infstellar made their first contribution in #194
- @kms9 made their first contribution in #191
- @2023Anita made their first contribution in #251
- @YizukiAme made their first contribution in #253
- @kagura-agent made their first contribution in #263
- @kevinmw made their first contribution in #256
- @LocNguyenSGU made their first contribution in #262
- @kuishou68 made their first contribution in #272
- @Leadernelson made their first contribution in #281