Skip to content

feat: store reasoning separately from content, show/hide UI#1094

Draft
AAClause wants to merge 11 commits intofeat/dynamicModelsfrom
feat/reasoning-storage
Draft

feat: store reasoning separately from content, show/hide UI#1094
AAClause wants to merge 11 commits intofeat/dynamicModelsfrom
feat/reasoning-storage

Conversation

@AAClause
Copy link
Member

  • feat(conversation): store reasoning separately from content, add show/hide UI
  • feat(messages): show/hide reasoning blocks with per-conversation toggle
  • test: add unit tests for DeepSeek reasoning chunk handling

@AAClause AAClause force-pushed the feat/reasoning-storage branch from 3c678ad to 3e37718 Compare March 14, 2026 19:08
- Replace hardcoded model lists with JSON from model-metadata URLs
- Add DynamicModelLoader; engines fetch models from provider metadata
- Add Responses API engine base; refactor OpenAI/Anthropic/xAI/Mistral/Gemini/DeepSeek
- Add image_output/audio model metadata (ProviderAIModel) for capability detection
- Block image-generation models in UI
- Add reasoning chunk handling and content_utils for legacy ```think
- Add web_search_mode migration and parameter visibility state
- Add reasoning_params_helper for view-to-block param extraction
@AAClause AAClause force-pushed the feat/dynamicModels branch from 0dc11ba to e34b0e6 Compare March 15, 2026 06:25
@AAClause AAClause force-pushed the feat/reasoning-storage branch from 3e37718 to cba94b7 Compare March 15, 2026 06:25
- Replace General group with Output, Reasoning, Tools
- Add create_settings_section() to share layout across tab, edit block, profile
- Move Apply profile to account row; Submit/Stop/Record after all settings
- Use model section (label + list) instead of Model group box
- Fix edit block dialog to load web_search_mode from block
- Advanced mode: only hide temperature and top_p; keep max tokens, web search, reasoning, stream visible
…d, top_k, stop)

- Add frequency_penalty, presence_penalty, seed, top_k, stop to MessageBlock,
  ConversationProfile, DB schema, and all provider engines
- Parse default_parameters from model JSON for UI defaults
- Add IntSpinCtrl (FloatSpin-based) and AccessibleWithHelp for screen-reader
  support on output controls
- Add "Reset to model defaults" context menu on Output group
- Reorder settings: reasoning, tools, output (output last before Submit)
@AAClause AAClause force-pushed the feat/reasoning-storage branch from cba94b7 to b580a15 Compare March 15, 2026 09:10
- Add "Refresh models" to model list context menu and F5 shortcut
- Add invalidate_model_cache() for dynamic model loader
- Add preferences SpinCtrl for cache TTL (1–168 hours)
- Extend config TTL: default 7h, min 1h, max 7 days
- Clamp legacy TTL values below 1h on config load
@AAClause AAClause force-pushed the feat/reasoning-storage branch from b580a15 to d045046 Compare March 15, 2026 13:20
- Add Message.reasoning field and DB persistence (save/load)
- Anthropic 4.6: adaptive effort (low/medium/high, max for Opus)
- Gemini 2.5/3: update thinkingBudget and thinkingLevel options
- OpenRouter: get_reasoning_ui_spec per provider (effort vs budget)
…elpers

- Add created, default_temperature, web_search_capable, default_parameters
- Use shared helpers from dynamic_model_loader (context_length, modality flags, etc.)
- Fix release date sort for OpenRouter models
- Sort by None/Name/Release date/Max output/Context window via context menu
- Reverse order toggle
- Preferences: default sort and reverse in Conversation group
- Account: override with Default (use preferences), None, or explicit sort
- Effective sort: account override > preference default
…s default

- Right-click account combo in conversation tab shows Edit account and Set as default
- Edit account opens EditAccountDialog; disabled for ENV_VAR accounts
- Set as default persists default account; disabled when already default
- Extract _refresh_account_combo() for reuse in ConversationTab
- Add context menu on account list in Manage accounts dialog
…/hide UI

- Add Message.reasoning field; content holds only the final response
- Add content_utils with START_BLOCK_REASONING, END_REASONING, split_reasoning_and_content
- DB: add reasoning column (migration 003), save/load, backward compat for legacy ```think...```
- Anthropic, DeepSeek: populate reasoning and content separately; streaming yields ("reasoning", chunk) or ("content", chunk)
- Completion handler: route structured chunks, wrap streaming reasoning with `<think>`, parse legacy format after stream
- Display: show reasoning when checkbox on, using `<think>` tags
- Config: default in Preferences, per-tab override in conversation panel (always visible)
- API: send only content
@AAClause AAClause force-pushed the feat/dynamicModels branch from 522adf4 to c04b481 Compare March 15, 2026 13:45
@AAClause AAClause force-pushed the feat/reasoning-storage branch from d045046 to 03572e2 Compare March 15, 2026 13:49
@AAClause AAClause force-pushed the feat/dynamicModels branch from c04b481 to 80ed292 Compare March 21, 2026 09:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant