qwen-code/docs/developers
XIQI 576689d073
Some checks failed
SDK Python / Classify PR (push) Has been cancelled
SDK Python / SDK Python (3.12) (push) Has been cancelled
SDK Python / SDK Python (3.10) (push) Has been cancelled
SDK Python / SDK Python (3.11) (push) Has been cancelled
Qwen Code CI / Classify PR (push) Waiting to run
Qwen Code CI / Test (ubuntu-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Lint & Static (ubuntu-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / web-shell E2E Smoke (ubuntu-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Test (macos-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Test (windows-latest, Node 22.x) (push) Blocked by required conditions
Qwen Code CI / Integration Tests (no-AK, No Sandbox) (push) Blocked by required conditions
Qwen Code CI / Integration Tests (CLI, No Sandbox) (push) Blocked by required conditions
Qwen Code CI / Desktop Shell (ubuntu-22.04) (push) Blocked by required conditions
Qwen Code CI / Desktop Shell (windows-2022) (push) Blocked by required conditions
E2E Tests / Build for E2E (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker - shard 1/1 (push) Blocked by required conditions
E2E Tests / E2E Test (Linux) - sandbox:none - shard 1/1 (push) Blocked by required conditions
E2E Tests / E2E Test - macOS - shard 1/2 (push) Blocked by required conditions
E2E Tests / E2E Test - macOS - shard 2/2 (push) Blocked by required conditions
E2E Tests / E2E Interactive - OpenTUI renderer (bun) (push) Blocked by required conditions
SDK Java / ubuntu-latest / Java 17 (push) Waiting to run
SDK Java / macos-latest / Java 21 (push) Waiting to run
SDK Java / ubuntu-latest / Java 21 (push) Waiting to run
SDK Java / windows-latest / Java 21 (push) Waiting to run
SDK Java / Flyway migration version uniqueness (push) Waiting to run
E2E Tests / channel-plugin E2E (nightly) (push) Blocked by required conditions
E2E Tests / cron-interactive E2E (nightly) (push) Blocked by required conditions
E2E Tests / web-shell Browser Regression (push) Waiting to run
Android Mobile Shell / Build, unit tests, and lint (push) Waiting to run
Android Mobile Shell / Keystore and profiles (API 26) (push) Waiting to run
Android Mobile Shell / Keystore and profiles (API 36) (push) Waiting to run
SDK Java / ubuntu-latest / Java 11 (push) Waiting to run
SDK Java / Runtime Broker and Managed Agent MariaDB / Java 21 (push) Waiting to run
Verify Landlock helper / Native Windows settings and streams (push) Waiting to run
SDK Java / Hosted process fault gates / MySQL 8.4 / Java 21 (push) Waiting to run
SDK Java / Real daemon E2E / Java 11 (push) Waiting to run
Verify Landlock helper / Native Linux CLI boundary (push) Waiting to run
Verify Landlock helper / arm64 (push) Waiting to run
Verify Landlock helper / x64 (push) Waiting to run
fix(channels): clean up owned workers after config loss (#11071)
* fix(channels): clean up owned workers after config loss

Addresses #11063 for a single missing-config owner. Preserve revision and runtime ownership checks and make absent settings removal idempotent.

* fix(channels): clarify missing-config ownership diagnostics

Address PR #11071 review with named ownership checks, distinct rejection diagnostics, and explicit passive-read assertions. Preserve the current deletion contract.

* fix(channels): gate missing-config delete convergence on persisted startup state

* fix(channels): harden missing-config delete convergence

- Re-read the merged channel config view after the worker stop window
  and fail closed with channel_settings_conflict when a configuration
  reappears at another scope mid-delete: the optimistic-concurrency
  token covers only the workspace's own scope files.
- Reject the convergence while the worker manager is mid-transition:
  a starting or reconciling manager reports the candidate selection as
  no workers and nothing committed, which reads as the silent shape
  without being it.
- Gate the "another scope" refusal on a record-valued merged entry so a
  legacy scalar entry in the workspace's own file converges instead of
  being misattributed to user or system settings.
- Pass pre-loaded settings with skipLoadEnvironment to the injected
  loadChannelsConfig so the gate read no longer writes the target
  workspace's .env into the daemon's process-global environment.
- Deduplicate the ownership invariant on the missing-config path:
  assertConvergeableRuntimeOwner now returns the confirmed owned-worker
  outcome instead of remove re-deriving it through a provably dead gate.
- Correct both doc pages: the channel_instance_not_found promise only
  holds when the selected workspace's resolved scope does not own the
  configuration, and a home-directory workspace resolves that scope to
  the shared user file.

* fix(channels): reject configured channel delete while runtime is mid-transition

The mid-transition guard lived only on the missing-config branch, so a
DELETE of a configured channel landing during the first-start window —
when committedChannelNames() still reports nothing — skipped both the
ownership check and the worker stop, deleted the configuration, and
answered 200 with runtime stopped while a worker for that name was
coming up. Hoist the settled check above the branch split so both
branches inherit it, and pin the configured shape with a test.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* fix(cli): narrow mid-transition channel delete guard to at-risk channels (#11071)

---------

Co-authored-by: 西岐 <fengqi.mfq@alibaba-inc.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev-bot@users.noreply.github.com>
Co-authored-by: qwen-code-ci-bot <qwen-code-ci-bot@users.noreply.github.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: qwen-code-dev-bot <qwen-code-dev@service.alibaba.com>
Co-authored-by: qwen-code-autofix <qwen-code-autofix[bot]@users.noreply.github.com>
Co-authored-by: qwen-code[bot] <qwen-code[bot]@users.noreply.github.com>
2026-10-03 12:08:38 +00:00
..
daemon fix(channels): clean up owned workers after config loss (#11071) 2026-10-03 12:08:38 +00:00
daemon-client-adapters refactor!: retire @qwen-code/webui (#9812) 2026-09-05 09:13:54 +00:00
daemon-ui feat(web-shell): make the product name and logo configurable (#11244) 2026-09-10 04:54:45 +00:00
development docs(developers): document CI and release repository variables (#11129) 2026-09-28 10:36:29 +00:00
examples docs(daemon): complete REST integration coverage (#12144) 2026-09-18 04:34:39 +00:00
tools docs(tools): sync shell.md with the shipped run_shell_command contract (#12841) 2026-09-27 12:18:21 +00:00
_meta.ts docs(daemon): publish the REST API reference (#11592) 2026-09-12 11:34:20 +00:00
architecture.md chore(desktop): rename packages/desktop-shell to packages/desktop (#12653) 2026-09-25 05:41:25 +00:00
channel-plugins.md refactor(channels): remove obsolete block streaming (#11381) 2026-09-09 04:41:31 +00:00
contributing.md docs: require bilingual design documents (#11419) 2026-09-09 03:41:56 +00:00
daemon-rest-api-reference.md feat(web-shell): prepare updates and restart from sidebar (#12734) 2026-09-26 12:15:18 +00:00
daemon-rest-api.openapi.json feat(serve): support model and reasoning selection at session creation (#12308) 2026-09-25 16:45:37 +00:00
qwen-serve-protocol.md fix(channels): clean up owned workers after config loss (#11071) 2026-10-03 12:08:38 +00:00
rest-api-integration.md feat(serve): support model and reasoning selection at session creation (#12308) 2026-09-25 16:45:37 +00:00
roadmap.md feat(core): enable the built-in web_search by default on ModelStudio Standard/Token Plan (#11348) 2026-09-09 04:08:29 +00:00
sdk-java.md fix(java): make SDK worker threads daemon (#9925) 2026-09-01 18:06:25 +00:00
sdk-python.md fix(sdk): support "auto" permission mode (#9003) 2026-08-22 14:25:40 +00:00
sdk-typescript.md fix(cli): honor --bare and --safe-mode in the cross-session messaging gate (#9845) 2026-09-28 10:48:12 +00:00