v0.7.1
Highlights
-
π§© One-click model & reasoning sync β the panel button scans the upstream
through the proxy, auto-creates the model provider in~/.dsh/settings.yaml
when none points at the local proxy (inline auth header included, so no API key
is ever asked for), adds every backend model that isn't declared yet, and
writesreasoningEffortsfor the models that accept the parameter. Fresh
installs: log in once, click Sync, restart DSH β nothing to type in Settings. -
π‘οΈ Credentials leave the plugin directory β the Open WebUI session token (a
live JWT) now lives in~/.dsh/dsh-owui-chat2api-token.json(via
DSH_OWUI_TOKEN_FILE), never inside the install folder; a stray bundle-side
token is migrated once and removed.token.json/usage.db/.chrome-profile
/__pycache__are hard-excluded from the package even when built from a
working copy. -
β‘ Effort scan that survives real backends β probes run concurrently
(8 workers, cache preserved) with a 20-minute host budget, so large model lists
are no longer killed mid-scan; a Force re-scan button re-probes everything. -
π§ Native reasoning levels in DSH β supported models show
Off / Low / Medium / High in DSH's own model picker via auto-written
reasoningEffortsentries. -
π Dependable browser login β the token read from Open WebUI is validated
before it's accepted; a stale token reopens the browser for a real sign-in
instead of silently breaking every request with 502s.
Changelog
Features
- β¨ sync: create the
llm-pi-ai > providerschain insettings.yamlwhen no
provider points at the local proxy β no manual "add provider + fill key" step - β¨ sync: auto-created provider carries an inline
Authorizationheader, so DSH
never prompts for a key (the proxy ignores incoming keys and uses its own token) - β¨ sync: declare missing backend models (
- id:+name:) in the matching
provider only; every other provider and byte of the file is untouched - β¨ sync: timestamped
.bak-reasoning-*backup before any write; re-runs are
idempotent - β¨ sync: Force re-scan re-probes every model, ignoring the cached results
- β¨ login: prefer a long-lived Open WebUI API key when authenticating
Bug Fixes
- π pack:
files-allowlist negations +.npmignore/.gitignoreβ a JWT can no
longer ride a tarball even if a login ran inside the repo copy - π scan: concurrency + explicit host timeout β large model lists aren't killed
at 90s any more; results are collected in one run - π scan: host-side busy guard + long panel busy window β two clicks can't start
a second concurrent scan that races the settings.yaml write - π settings: keep only the newest 4
.bak-reasoning-*files so~/.dshisn't
buried over years - π settings: verify-after-write β the patched file is re-read and re-checked
(provider exists / models present / efforts applied) and warns if not - π login: validate the saved token against the upstream instead of trusting
localStorageβ no more flash-and-close window followed by dead 502s - π login: keep the browser open until a valid token is stored; auto re-auth on
401/403 - π proxy: refuse oversized request bodies (>8 MiB) before reading
- π panel: effort-scan and Save results show inline under the buttons instead of
the top status banner - π panel: close/language controls respond to Enter/Space (keyboard a11y);
overlay warns once when falling back to the page body and pauses while hidden - π panel: save / sync results surface in the single sticky notice bar (one
notification language, consistent auto-clear)
Full Changelog: v0.5.1...v0.7.1