release: v0.39.0 — agent profile editor, API key management, reasoning effort, embedded terminal New Features: - Agent Profile Config UI: editable model, provider, base_url, reasoning effort, max_turns, system_prompt, personality, and toolsets via new Settings tabs (General / Agent / API Keys) - Backend: GET/POST /api/profile/config endpoint reads/writes config.yaml sections and .env API keys - API Keys editor: masked display, inline edit with auto-save, add/remove keys per known provider environment variable - Reasoning effort: full integration across session creation, switching, and chat — clamp_reasoning_effort() validates against model metadata (supports xhigh/high/medium/low/minimal per provider) - Streaming: _ensure_final_response_message() for reliable message history, _persist_stream_error() for visible error persistence in sessions - Embedded terminal: iframe-based ttyd via nginx proxy with control key toolbar (Ctrl+C, Ctrl+D, Ctrl+L, etc.) and status indicator - Provider discovery: expanded model lists for Kimi, DeepSeek, Mistral, OpenAI Codex; dynamic OpenRouter free model list; provider sorting by configured credentials Bug Fixes: - Fix _write_env_changes boolean logic (and -> or) for env var removal - Updated model names to current API (gpt-5.3-codex, DeepSeek V3.2, etc.) Tests: - test_session_reasoning.py: reasoning effort validation - test_streaming_errors.py: stream error handling - test_model_resolver.py: +380 lines expanded coverage ~2,900 lines across 15 files (12 modified, 3 new) # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # Author: Pipo # # interactive rebase in progress; onto ac969e4 # Last command done (1 command done): # pick c64c58b release: v0.39.0 — agent profile editor, API key management, reasoning effort, embedded terminal # Next command to do (1 remaining command): # pick 12efe2f fix: sync WebUI default model from config.yaml, fix fallback_providers chain # You are currently rebasing branch 'master' on 'ac969e4'. # # Changes to be committed: # modified: api/config.py # modified: api/models.py # modified: api/routes.py # modified: api/streaming.py # modified: static/boot.js # modified: static/index.html # modified: static/messages.js # modified: static/panels.js # modified: static/sessions.js # modified: static/style.css # new file: static/terminal.js # modified: static/ui.js # modified: tests/test_model_resolver.py # new file: tests/test_session_reasoning.py # new file: tests/test_streaming_errors.py #