Files
wehub-resource-sync 7a0da7932b
OSV-Scanner (Scheduled) / scan-scheduled (push) Failing after 0s
Create Release / test-gate (push) Has been cancelled
Create Release / release-gate (push) Has been cancelled
Create Release / ci-gate (push) Has been cancelled
Create Release / version-check (push) Has been cancelled
Create Release / e2e-test-gate (push) Has been cancelled
Create Release / responsive-test-gate (push) Has been cancelled
Create Release / compat-test-gate (push) Has been cancelled
Create Release / compose-integration-gate (push) Has been cancelled
Create Release / vulture-gate (push) Has been cancelled
Create Release / build (push) Has been cancelled
Create Release / provenance (push) Has been cancelled
Create Release / prerelease-docker (push) Has been cancelled
Create Release / publish-docker (push) Has been cancelled
Create Release / create-release (push) Has been cancelled
Create Release / cleanup-changelog (push) Has been cancelled
Create Release / trigger-pypi (push) Has been cancelled
Create Release / monitor-pypi (push) Has been cancelled
Create Release / Clean up orphan prerelease tags and signatures (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-form] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-metrics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [research-workflow] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-core] (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [history-news] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [library] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [link-analytics] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-core] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [chat-lifecycle] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [error-benchmark] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [settings-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) (push) Has been cancelled
Docker Tests (Consolidated) / Accessibility Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Unit Tests (push) Has been cancelled
Docker Tests (Consolidated) / LLM Example Tests (push) Has been cancelled
Docker Tests (Consolidated) / Production Image Smoke Test (push) Has been cancelled
Docker Tests (Consolidated) / Infrastructure Tests (push) Has been cancelled
OSSF Scorecard / OSSF Security Scorecard Analysis (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [mobile] (push) Has been cancelled
Backwards Compatibility / Verify Encryption Constants (push) Has been cancelled
Backwards Compatibility / PyPI Version Compatibility (push) Has been cancelled
Backwards Compatibility / Database Migration Tests (push) Has been cancelled
CodeQL Advanced / Analyze (python) (push) Has been cancelled
Docker Tests (Consolidated) / detect-changes (push) Has been cancelled
Docker Tests (Consolidated) / Build Test Image (push) Has been cancelled
Docker Tests (Consolidated) / All Pytest Tests + Coverage (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [accessibility] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [api-crud] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-login] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-pages] (push) Has been cancelled
Docker Tests (Consolidated) / UI Tests (Puppeteer) [auth-register] (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:08:55 +08:00

4.5 KiB
Raw Permalink Blame History

1.6.3 — release notes

LLM provider rework shipped by #3670. 1.6.3 was tagged without release notes; this file documents its breaking changes retroactively.

BREAKING — llm.model no longer auto-fills gemma3:12b

Before this release, leaving the Language Model field empty in Settings caused fresh installs to silently download a 712 GB Ollama binary (gemma3:12b) the user had not asked for. The default is now an empty string (""), and get_llm() raises ValueError("LLM model not configured...") when the field is unset for any provider that requires a model name.

Impact

  • Fresh installs: open Settings → LLM, pick a provider, and choose a model name (e.g. llama3.1:8b for Ollama, gpt-4o-mini for OpenAI, claude-3-5-sonnet-20241022 for Anthropic). The model field shows a yellow inline warning while empty so the requirement is discoverable.
  • Existing installs: any user who already had llm.model saved (including gemma3:12b) keeps their value — import_settings(overwrite=False) at settings/manager.py:1129 preserves any non-None DB value, so only fresh DBs and never-written rows pick up the new empty default.
  • The corresponding HTTP endpoint /api/check/ollama_model now returns HTTP 400 with error_type: "model_not_configured" when neither the query parameter nor llm.model is set, instead of silently substituting gemma3:12b.

BREAKING — llamacpp provider switched to HTTP

The llamacpp provider no longer loads .gguf files in-process via langchain_community.llms.LlamaCpp. It now talks HTTP to llama.cpp's OpenAI-compatible llama-server, mirroring the LM Studio integration.

Migration steps for existing llamacpp users

  1. Install llama.cpp (https://github.com/ggerganov/llama.cpp) if you do not already have it.
  2. Start the server:
    llama-server -m /path/to/your/model.gguf
    
    Default port is 8080.
  3. Open Settings → LLM and confirm llm.llamacpp.url is http://localhost:8080/v1 (or wherever your server runs). Set llm.llamacpp.api_key only if your server is behind an auth proxy.
  4. Set llm.model to the model name llama-server is hosting (e.g. llama-3.1-8b-instruct).

Removed settings

The four old in-process settings are gone:

  • llm.llamacpp_model_path
  • llm.llamacpp_n_gpu_layers
  • llm.llamacpp_n_batch
  • llm.llamacpp_f16_kv

Existing rows for these keys remain in the per-user DB but are no longer read by any code path; they will be silently ignored. Tuning that previously lived in these settings now belongs to the llama-server command line.

New settings

  • llm.llamacpp.url — HTTP endpoint URL (default http://localhost:8080/v1).
  • llm.llamacpp.api_key — optional, only needed if you put an auth proxy in front of llama-server.

Cross-provider default-model cleanup

All built-in providers (anthropic, google, openrouter, xai, ionos, openai, ollama, lmstudio, llamacpp, openai_endpoint) now have default_model = "" and refuse to silently substitute. Where a user-specified model is missing, the central check in get_llm() raises a ValueError with an actionable message naming the offending setting key. 73 tests were updated to pass model_name=... explicitly rather than relying on the old defaults.

Better error message when local LLM servers are not running

When a user selects llamacpp, lmstudio, openai_endpoint (or another OpenAI-compatible provider) and the configured server is not reachable, the raw openai/httpx connection error is rewritten — by the friendly-error layer added in #4027 — into a message that names the provider and base URL, e.g. Cannot reach <provider> at <url>. Check that the server is running and the URL is correct. so the user sees something actionable instead of a stack trace.

Optional API keys for lmstudio and llamacpp

Both providers now support an optional api_key setting (llm.lmstudio.api_key, llm.llamacpp.api_key) for users who put their local server behind an auth proxy. If left blank, the providers use a placeholder key that bare llama-server / LM Studio ignore. No action required for default setups.

Settings UI

The LLM Provider dropdown now lists llama.cpp (Local) as a selectable option (it was reachable only by manual config-edit in 1.6.2). The empty-llm.model warning live-updates on both keystroke and dropdown selection, mirroring the API-key-not-configured pattern in openai_base.py.