* Codex worktree snapshot: startup-cleanup
Co-authored-by: Codex
* Add Python SDK real smoke test
Adds a repository-only real E2E smoke script for the Python SDK, plus npm and developer documentation entry points.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): address review findings — bugs, type safety, and test coverage
- Fix prepare_spawn_info: JS files now use "node" instead of sys.executable
- Fix protocol.py: correct total=False misuse on 7 TypedDicts (required fields were optional)
- Fix query.py: add _closed guard in _ensure_started, suppress exceptions in close()
- Fix sync_query.py: prevent close() deadlock, add context manager, add timeouts
- Fix transport.py: handle malformed JSON lines, add _closed guard in start()
- Fix validation.py: use uuid.RFC_4122 instead of magic UUID
- Fix __init__.py: export TextBlock, widen query_sync signature
- Remove dead code: ensure_not_aborted, write_json_line, _thread_error
- Add 12 new tests (29 → 41): context managers, JSON skip, closed guards, spawn info, timeouts
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): address wenshao review — session_id, bool validation, debug stderr
- Fix continue_session=True generating a wrong random session_id
- Add _as_optional_bool helper for strict type validation on bool fields
- Default debug stderr to sys.stderr when no custom callback is provided
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): address remaining wenshao review feedback
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* test(cli): harden settings dialog restart prompt test
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): review fixes — UUID compat, stderr fallback, sync cleanup
- Remove UUID version restriction to support v6/v7/v8 (RFC 9562)
- Always write to sys.stderr when stderr callback raises (was silent when debug=False)
- Prevent duplicate _STOP sentinel in SyncQuery.close() via _stop_sent flag
- Add ruff format --check to CI workflow
- Fix smoke_real.py version guard: fail early before imports instead of NameError
- Apply ruff format to existing files
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): remaining review fixes — exit_code attr, guard strictness, sync timeout
- Add exit_code attribute to ProcessExitError for programmatic access
- Strengthen is_control_response/is_control_cancel guards to require
payload fields, preventing misrouting of malformed messages
- Expose control_request_timeout property on Query so SyncQuery uses
the configured timeout instead of a hardcoded 30s default
- Use dataclasses.replace() instead of direct mutation on frozen-style
QueryOptions in query() factory
- Add ResourceWarning in SyncQuery.__del__ when not properly closed
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): add exit_code default and guard __del__ against partial GC
- Give ProcessExitError.exit_code a default value (-1) so user code can
construct the exception with just a message string
- Wrap SyncQuery.__del__ in try/except AttributeError to prevent crashes
when the object is partially garbage-collected
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): review fixes — resource leak, type safety, CI matrix, docs
- Fix SyncQuery.__del__ to call close() on GC instead of only warning
- Replace hasattr duck-type check with isinstance(prompt, AsyncIterable)
- Type-validate permission_mode/auth_type in QueryOptions.from_mapping
- Use TypeGuard return types on all is_sdk_*/is_control_* predicates
- Add 5s margin to sync wrapper timeouts to prevent error type masking
- Expand CI matrix to test Python 3.10, 3.11, 3.12
- Change ProcessExitError.exit_code default from -1 to None
- Add stderr to docs QueryOptions listing
- Update README sync example to use context manager pattern
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): preserve iterator exhaustion state and suppress detached task warning
- Add _exhausted flag to Query.__anext__ and SyncQuery.__next__ so
repeated iteration after end-of-stream raises Stop(Async)Iteration
instead of blocking forever.
- Remove re-raise in _initialize() to prevent asyncio
"Task exception was never retrieved" warning on detached tasks;
the error is already surfaced via _finish_with_error().
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): reject mcp_servers at validation time and add iterator/init tests
- Reject mcp_servers in validate_query_options() with a clear error
instead of advertising MCP support to the CLI and then failing at
runtime when mcp_message arrives.
- Remove dead mcp_servers branch from _initialize().
- Add tests for async/sync iterator exhaustion, detached init task
warning suppression, and mcp_servers validation.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(sdk-python): fix ruff lint errors in new tests
- Use ControlRequestTimeoutError instead of bare Exception (B017)
- Fix import sorting for stdlib vs third-party (I001)
- Break long line to stay within 88-char limit (E501)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* style(sdk-python): apply ruff format to new tests
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
---------
Co-authored-by: jinye.djy <jinye.djy@alibaba-inc.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* docs: update authentication methods to reflect OAuth discontinuation
Remove deprecated Qwen OAuth references and update documentation to
direct users to valid authentication methods (API Key, Coding Plan,
or Local Inference) following the OAuth free tier discontinuation on
2026-04-15.
Closes#3316
* docs: fix quickstart auth description to match actual /auth UI
The /auth command shows three options: Alibaba Cloud Coding Plan,
API Key, and Qwen OAuth (discontinued). Updated quickstart.md to
accurately reflect this UI instead of splitting into Option A/B/C.
Also updated settings.md, commands.md, and troubleshooting.md with
minor OAuth-related cleanups.
* docs: update .qwen workspace description in quickstart
Remove reference to 'Qwen account' since OAuth is discontinued.
The .qwen directory is created by Qwen Code itself for storing
credentials, configuration, and session data.
* docs: fix warning block formatting in quickstart
- Add missing '>' continuation for the OAuth discontinuation warning block
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* docs: update README Qwen3.6-Plus description
- Remove mention of running Qwen3.6-Plus locally via Ollama/vLLM
- Keep only the Alibaba Cloud ModelStudio API key option
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* docs: address review feedback - remove Local Inference from auth, add dual-region links
- Local Inference removed from auth method lists, kept as separate
'Local Model Setup' section with detailed Ollama/vLLM config examples
- All links now provide dual-region URLs (Beijing + intl)
- .qwen workspace note restored to original meaning (cost tracking)
- Device auth flow error kept scoped to legacy OAuth
- API setup guide links updated with confirmed intl URL
---------
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* feat(auth): discontinue Qwen OAuth free tier (2026-04-15 cutoff)
The Qwen OAuth free tier has reached its end-of-life date. This updates
all client-side messaging, blocks new OAuth signups, and guides existing
users to alternative providers.
* fix(test): add getModelsConfig mock and update QWEN_OAUTH test expectations
- Add getModelsConfig() to Config mocks in gemini.test.tsx (3 failures)
- Update validateNonInterActiveAuth test to expect exit for QWEN_OAUTH
since validateAuthMethod now returns an error for discontinued free tier
* docs: update quota exceeded alternatives to OpenRouter and Fireworks
- Update README.md news section to recommend OpenRouter and Fireworks
as primary alternatives, with ModelStudio as third option
- Update retry.ts quota error message to include OpenRouter and
Fireworks URLs for users whose OAuth quota has been exhausted
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix(test): update retry test assertions to match new quota error message
* docs: update free tier quota to 100 req/day with sunset notice and alternatives
Update all references to reflect the Qwen OAuth free tier policy change:
- 1,000 → 100 requests/day across code, i18n, and docs
- Add 2026-04-15 sunset date everywhere
- Guide users to OpenRouter, Fireworks AI, or ModelStudio in docs
- Remove CHANGELOG.md
---------
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: tanzhenxin <tanzhenxing1987@gmail.com>
- Add Qwen3.6-Plus as the latest model in README news section
- Update model configurations to use qwen3.6-plus as default
- Update i18n translations for Qwen3.6-Plus description
- Update token limits patterns to support qwen3.x versions generically
- Remove default temperature from DashScope provider to use model defaults
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Changed all instances of "Bailian Coding Plan" to "ModelStudio Coding Plan" in README.md and related documentation.
- Updated localization files for multiple languages to reflect the new branding.
- Ensured consistency across all references to the API key and subscription requirements for the ModelStudio Coding Plan.
The previous Discord invite link was invalid. Updated to a permanent
invite link as reported in #2103.
Closes#2103
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Added three new third-party models to the Bailian Coding Plan China region template
- All models configured with thinking enabled (enable_thinking: true)
- Updated README.md with example configurations for new models
- Updated documentation to list all available Coding Plan models
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add qwen3.5-plus configuration for both China and Global regions
- Update README with qwen3.5-plus setup instructions
- Fix Coding Plan console URL for international users
- Update tests for new model count
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add news banner announcing Qwen3.5-Plus availability
- Include OAuth sign-in option and Alibaba Cloud ModelStudio link for API key access
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add comprehensive quick setup section with 3-step guide for settings.json
- Include multiple practical examples (Coding Plan, multi-provider, thinking mode)
- Update README with settings.json quick reference table
- Enhance auth.md with one-file setup recommendation
- Clarify field descriptions and priority order for API key configuration
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Add AionUi as a graphical interface option for Qwen Code users.
AionUi provides a modern GUI for command-line AI tools including
Qwen Code, offering an alternative to the terminal interface.
* feat: add yolo mode support to auto vision model switch
* feat: add cli args & env variables for switch behavoir
* fix: use dedicated model names and settings
* docs: add vision model instructions
* fix: failed test case
* fix: setModel failure