mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-11-07 06:19:43 -10:00
* fix(web-shell): load models for fresh standalone sessions Co-authored-by: Qwen-Coder <[email protected]> * docs(serve): document standalone_session_options_v1 capability * fix(sdk): complete the standalone session-options surface - declare visionModelId on DaemonWorkspaceProviderCurrent (the validator already accepts it and the daemon emits it) - pin the remaining malformed-payload gates: acpChannelLive leakage, errors[] shape, status/approvalMode enums, current field types * fix(cli): harden the standalone options catalog edge cases - treat a non-positive contextWindowSize as unset so one misconfigured model cannot make the SDK reject the whole options payload - pin getOptions() failing closed when the runtime is quarantined mid-read * fix(web-shell): keep late standalone hydration from clobbering in-flight interactions - never publish the standalone options response over a session that was attached while the request was in flight (it previously reset sessionId/transcript state through the clear-state spread) - keep the model and approval-mode sync effects from overwriting a pending welcome selection when the options publish lands late (undefined -> value), while still hydrating when nothing is pending - share one isStandaloneModelPickerUnavailable predicate across the toolbar filter, the StatusBar entry, and the /model command so the picker gates cannot drift; the /model gate now also filters hidden catalog ids like the other entry points - document that the standalone create route applies modelServiceId best-effort instead of claiming a fail-closed guarantee * test(cli): expect standalone_session_options_v1 in the capabilities envelope The integration assertion snapshots the full conditional feature list; the new capability registered for the session-options route was missing from it. * fix(serve): surface the spawn-time model apply outcome as modelApplied The standalone create route applies modelServiceId best-effort: a failed unstable_setSessionModel leaves the session on the agent default model with only a model_switch_failed bus event, and the Web Shell skipped the post-attach setModel that used to observe such failures — a first prompt could run on a model the user did not select while the composer showed the selection. The spawn result now reports modelApplied (absent unless the create carried a modelServiceId), surfaced through the standalone create response and the SDK session type. The Web Shell treats a not-applied model like the workspace setModel failure: with a model-bound reasoning effort it rejects and releases the session; otherwise it warns and keeps the session, which stays operational per the existing #3889 contract. Tests pin every link: bridge (true/false/absent), service passthrough, SDK parse validation, and sessionPreparation acceptance cases that go red when the verification is removed. --------- Co-authored-by: Qwen-Coder <[email protected]>