Skip to content

Remove the Available remote models list from Settings (closes #3696) - #3703

Merged
malibio merged 3 commits into
mainfrom
issue-3696-drop-remote-list
Oct 9, 2026
Merged

malibio merged 3 commits into
mainfrom
issue-3696-drop-remote-list

Conversation

@malibio

@malibio malibio commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Settings → AI Models listed every model each endpoint discovers (hundreds for OpenRouter), above the provider entries. A provider is one endpoint plus one model, and the Model field now suggests discovered models, so the list has no purpose. Removes the section, its refresh button, its state and its styles; discovery still feeds the Model field suggestions.

🤖 Generated with Claude Code

@malibio

malibio commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator Author

Added the ai-chat titler fix to this PR: the titling budget goes from 48 to 512 tokens (a reasoning model needed ~165 thinking tokens and returned no title at 48), and an empty or failed title attempt now logs a warning instead of nothing. New test simulates a reasoning model; it fails at 48 and passes at 512. Not merging yet, per the plan to fold in more fixes.

@malibio

malibio commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator Author

Code Review Summary

Net positive. Both commits are small and correct. Removing the "Available remote models" list matches issue #3696 (the selector and default dropdown are per-provider, discovered models are suggestions only). The titler change fixes a real silent failure, and the new test is a good invariant-style regression. Verdict: approve-equivalent, one small Improvement below.

Findings

Critical Issues

None.

Suggested Improvements

  • model-manager.svelte onMount/refreshRemoteModels: the removed finally { buildDefaultOptions(); } was also the fallback that populated the default-model dropdown when settingsStore.loadProviders() throws (the only other call sits inside the try, after the throwing await). On that failure path availableSelectionsForDefault is now never built, so the dropdown stays empty even for local models. It is a rare path, but cheap to keep: call buildDefaultOptions() after the try/catch in onMount (or in a finally there). Since the dropdown no longer depends on remote discovery, this is also the more honest place for it.
  • ai_chat_title.rs TITLE_MAX_TOKENS = 512: a model that rambles with no stop now has 10x the runaway budget on every titling call. The comment notes direct-answer models stop early, which holds for well-behaved models, but consider whether titling should also pass a stop sequence (newline) so a non-reasoning model cannot burn the budget. Not blocking.

Nitpicks

  • Nit: ai_chat_title.rs doc comment on TITLE_MAX_TOKENS now has two stacked rationales ("generous relative to six words" and the reasoning headroom); the first sentence reads slightly stale next to 512. Consider merging into one.
  • Nit: the removed empty-state hint ("local Ollama is reached at http://localhost:11434/v1") was useful onboarding text; confirm the provider form's Add flow still conveys it, or drop it intentionally.
  • Nit: tracing::warn! on an empty title is right; the engine-error path moving from debug to warn is also right. No prompt/content is logged, only chat_id and error, so no data-exposure concern.

Checklist

  • No backward-compat code, no lint suppression, no console.*, no issue numbers in comments, no new .md files: pass.
  • Dead CSS (.remote-list, .remote-item) removed; .refresh-btn and .spinning are still used by the local-models section: pass.
  • Test: ReasoningEngine simulates thinking against max_tokens; fails at 48 and passes at 512 per the author, which is the right way to pin it. No frontend test covers the removed section (nothing to assert on absence), acceptable.

@malibio malibio left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review posted above: net positive, no blockers. One small Improvement (restore buildDefaultOptions on the loadProviders failure path); the rest are nits. Fine to merge once addressed or consciously skipped.

@malibio

malibio commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator Author

Addressed review: moved buildDefaultOptions() after the try/catch in onMount so the default-model dropdown builds even if the provider read fails; merged the two rationales in the TITLE_MAX_TOKENS comment (1e62820). Skipped: newline stop sequence for the titler (a preamble line would cut the title off; the extra budget is only spent by models that think) and the Ollama URL hint (dropped on purpose with the list). Frontend tests: 5873 passed. Not merging yet.

malibio and others added 3 commits October 9, 2026 15:15
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…en it yields no title (refs #3696)

At 48 tokens a served reasoning model finished with no answer text, so the
chat stayed Untitled and the log said nothing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ad fails; tidy titler budget comment (refs #3696)

Skipped: newline stop sequence for the titler (a preamble line would cut the title off; the headroom is only spent by models that think), and the Ollama URL hint (dropped on purpose with the list).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@malibio
malibio force-pushed the issue-3696-drop-remote-list branch from 1e62820 to 131e9b9 Compare October 9, 2026 13:16
@malibio
malibio merged commit 1e4d7c0 into main Oct 9, 2026
@malibio
malibio deleted the issue-3696-drop-remote-list branch October 9, 2026 13:16
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