Commit graph

3801 commits

Author SHA1 Message Date
yiliang114
fc81fb285a Merge branch 'main' of https://github.com/QwenLM/qwen-code into fix/ide-connection-dns-lookup 2026-03-12 19:19:42 +08:00
tanzhenxin
e181cfc097
Merge pull request #2315 from xuewenjie123/fix/remove-qrcode-from-oauth-progress-v2
fix: remove QR code from OAuth authentication UI to prevent screen flickering
2026-03-12 18:53:25 +08:00
Mingholy
1d87675534
Merge pull request #2298 from QwenLM/mingholy/fix/vscode-acp-error
fix: improve ACP file operation error handling
2026-03-12 17:53:23 +08:00
顾盼
2ff9305b19
Merge pull request #2320 from QwenLM/fix/deepseek-array-content
fix(core): convert array content to string for DeepSeek API
2026-03-12 17:50:03 +08:00
tanzhenxin
182422ce2b
Merge pull request #2307 from QwenLM/release/v0.12.2
chore: Release v0.12.2
2026-03-12 17:45:40 +08:00
tanzhenxin
1da0c2bf30 refactor(ui): remove spinner from OAuth progress component
This simplifies the OAuth progress UI by removing the animated spinner,
resulting in a cleaner, more maintainable component.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 17:34:08 +08:00
tanzhenxin
603beb51e7 fix(core): convert array content to string for DeepSeek API
DeepSeek API requires message content to be a plain string, not an array
of content parts. This fix flattens text-part arrays into joined strings
and replaces non-text parts with placeholder text.

Fixes #2158, Fixes #2318

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 17:18:27 +08:00
tanzhenxin
4ee94715df feat(arena): improve cancellation handling and simplify to in-process mode
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

- Track user-initiated cancellation separately from failures

- Cancel round immediately when user denies a tool call

- Add message queue to handle input during streaming

- Add info messages during Arena operations (apply, stop, cleanup)

- Disable tmux/iTerm2 backends (only in-process mode supported)

- Polish UI: green tool count, updated warning prefix

This improves the Arena UX by providing clearer feedback and

properly handling user cancellations without treating them as failures.
2026-03-12 16:57:44 +08:00
xwj02155382
67089ed532 test: update OAuth progress and header tests for UI changes
- Update Header.test.tsx to expect single border (┌┐) instead of round (╭╯)
- Update QwenOAuthProgress.test.tsx:
  - Change cancel text expectation from '(Press ESC or CTRL+C to cancel)' to 'Esc to cancel'
  - Update loading state test to expect 'Qwen OAuth Authentication' title
  - Simplify animated dots test to avoid timing sensitivity
  - Rename 'gray border' test to 'single border' test

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 16:42:43 +08:00
xwj02155382
928701d688 refactor: simplify OAuth progress UI and use semantic colors
- Replace round border with single border style for consistency
- Use semantic-colors theme instead of Colors enum
- Add i18n translations for error messages and status text
- Simplify dots animation with fixed-width cycling patterns
- Consolidate into single bordered box layout
- Add Esc to cancel hint for better UX

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 16:23:05 +08:00
tanzhenxin
61fac4b15b test(cli): remove flaky tab navigation test
Remove the 'navigates between tabs with left/right arrows' test from
AskUserQuestionDialog.test.tsx due to timing-related flakiness.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 14:09:54 +08:00
xwj02155382
da7a0e8dbd fix: remove qrcode-terminal dependency and update tests
- Remove qrcode-terminal from packages/cli/package.json dependencies
- Remove @types/qrcode-terminal from root package.json devDependencies
- Update QwenOAuthProgress.test.tsx to remove QR code related tests
- Remove qrcode-terminal mock from qwenOAuth2.test.ts

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 13:42:59 +08:00
xuewenjie
74315a1aa4 fix: remove QR code from OAuth authentication UI to prevent screen flickering
Remove the terminal QR code display from the OAuth authentication progress
component. The QR code caused severe screen flickering on Windows PowerShell
due to Ink's full re-render cycle combined with the large character volume
of the QR code and high-frequency state updates (spinner + countdown timer).

The authorization URL link is preserved for users to complete authentication.

Changes:
- Remove qrcode-terminal import and QrCodeDisplay component
- Replace with simplified AuthUrlDisplay component (URL only)
- Remove qrCodeData state and QR code generation useEffect
- Remove unused createDebugLogger import and debugLogger instance
2026-03-12 13:42:58 +08:00
imossaidqadri
d708faa504 fix(webui): add Tab key support to CompletionMenu
Fixes #2293

- Add Tab key handling in CompletionMenu component
- Tab now selects the highlighted completion item (same as Enter)
- Prevents default browser Tab focus behavior when menu is open
- Matches Claude Code UX pattern for slash command completion
2026-03-12 07:13:41 +05:00
tanzhenxin
9890625de7 chore: bump version to 0.12.2
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-12 10:02:48 +08:00
pomelo
2a8366390d
Merge pull request #2268 from QwenLM/fix/export-current-session
Some checks are pending
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
fix: export command should use current session ID instead of loadLastSession
2026-03-11 22:38:45 +08:00
mingholy.lmh
2cbd092835 fix(core): handle ENOENT from ACP readTextFileWithInfo gracefully
- Add readTextFileWithInfo implementation in AcpFileSystemService
- Convert RESOURCE_NOT_FOUND errors to ENOENT for consistent handling
- Strip UTF-8 BOM from ACP responses
- Treat ENOENT errors in write-file tool as new file creation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 22:37:03 +08:00
mingholy.lmh
bddce08750 refactor(vscode-ide-companion): unify error message handling across the codebase
- Extract getErrorMessage utility for consistent error-to-string conversion
- Replace scattered error handling logic with centralized function
- Simplify authentication error checks using isAuthenticationRequiredError
- Add unit tests for errorMessage utility

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 22:17:02 +08:00
Sakuranda
277b1d02df perf(core): cache Windows PATH normalization snapshot 2026-03-11 20:49:31 +08:00
Sakuranda
8b283a039b fix(core): merge Windows PATH-like env values 2026-03-11 20:48:06 +08:00
LaZzyMan
a525423672 fix windows test 2026-03-11 20:08:38 +08:00
tanzhenxin
150521d88e
Merge pull request #2291 from QwenLM/mingholy/fix/acp-edit-file
Some checks failed
Qwen Code CI / Lint (push) Has been cancelled
Qwen Code CI / CodeQL (push) Has been cancelled
Qwen Code CI / Post Coverage Comment (push) Has been cancelled
Qwen Code CI / Test (push) Has been cancelled
Qwen Code CI / Test-1 (push) Has been cancelled
Qwen Code CI / Test-2 (push) Has been cancelled
Qwen Code CI / Test-3 (push) Has been cancelled
Qwen Code CI / Test-4 (push) Has been cancelled
Qwen Code CI / Test-5 (push) Has been cancelled
Qwen Code CI / Test-6 (push) Has been cancelled
Qwen Code CI / Test-7 (push) Has been cancelled
Qwen Code CI / Test-8 (push) Has been cancelled
fix(vscode-ide-companion): map ENOENT errors to ACP RESOURCE_NOT_FOUND in readTextFile
2026-03-11 19:42:17 +08:00
mingholy.lmh
6c72503636 fix(vscode-ide-companion): map ENOENT errors to ACP RESOURCE_NOT_FOUND in readTextFile
- Add error handling in readTextFile to catch and map file system errors
- Convert ENOENT errors to RequestError with RESOURCE_NOT_FOUND code
- Add unit tests for the error mapping logic

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 19:14:55 +08:00
LaZzyMan
16ca92897e fix test 2026-03-11 19:13:14 +08:00
tanzhenxin
741aa436e3 fix(cli): suppress Windows pty resize race condition
Add global uncaught exception handler to suppress known race condition
in @lydell/node-pty where a deferred resize fires after the pty process
has already exited on Windows.

Tracking bug: https://github.com/microsoft/node-pty/issues/827

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 18:40:04 +08:00
LaZzyMan
31b43511f2 fix(extension): disable symlinks on Windows during git clone
On Windows, non-administrator users do not have permission to create
symlinks by default. Using core.symlinks=true during git clone causes
checkout to fail with 'Permission denied' errors when the repository
contains symlinks.

This fix dynamically sets core.symlinks based on the current platform:
- win32: core.symlinks=false (avoids permission errors)
- other platforms: core.symlinks=true (preserves existing behavior)

Fixes #2243
2026-03-11 18:07:49 +08:00
LaZzyMan
80452561c7 fix ask user question tool 2026-03-11 17:12:12 +08:00
LaZzyMan
7450067e37 Merge branch 'main' into feat/support-permission 2026-03-11 17:11:28 +08:00
qqqys
e65953de04
fix(core): skip openDiff in YOLO mode to prevent VS Code editor from opening (#2221)
* fix(core): skip openDiff in YOLO mode to prevent VS Code editor from opening

* test: add shouldConfirmExecute tests for AUTO_EDIT and YOLO in edit and write-file

* Update packages/core/src/tools/edit.ts

Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>

* Update packages/core/src/tools/write-file.ts

Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>

---------

Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>
2026-03-11 01:48:16 -07:00
LaZzyMan
6fee1ebeb8 fix workspace dirs 2026-03-11 15:24:08 +08:00
xwj02155382
d5eda197c2 refactor: extract HOOK_DEFINITION_ITEMS constant
Extract common hook definition items schema into a reusable constant
to avoid code duplication between UserPromptSubmit and Stop hooks.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 15:23:01 +08:00
xwj02155382
700806ce83 fix: correct hooks JSON schema type definition
The hooks array items were incorrectly typed as 'string' in the JSON
schema, causing VS Code to show type errors when users configure
HookDefinition objects. This fix adds proper schema support for complex
array item types.

- Add SettingItemDefinition interface for array item schema
- Add items schema for UserPromptSubmit and Stop hooks
- Update generate-settings-schema.ts to convert complex item types

Fixes #2246

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 15:09:49 +08:00
yiliang114
adc1445486 Merge branch 'main' of https://github.com/QwenLM/qwen-code into fix/ide-connection-dns-lookup 2026-03-11 14:49:08 +08:00
DennisYu07
68304c85b8 resolve comment 2026-03-10 22:51:25 -07:00
yiliang114
e1e0eb8631 fix(vscode-ide-companion): improve thinking message ordering and context-aware new chat
- Adjust thinking message timestamp to sort above assistant response
- Add context-aware new chat: sidebar resets in-place, editor tab opens new tab

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 13:44:25 +08:00
DennisYu07
91179fa6db resolve comment 2026-03-10 22:37:48 -07:00
tanzhenxin
3233d16b5c feat(arena): add system reminder and status file support for agent collaboration
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

Extract atomic file write utility into reusable module. Add arena system reminder injection so orchestrating agents can discover active arena sessions. Support in-process mode status file writing for external consumers.

This enables agent-to-agent collaboration where a parent agent can monitor and coordinate arena sessions via file-based status files.
2026-03-11 11:56:05 +08:00
DennisYu07
d5d7187479 move move notification auth_success from useAuth to config to support both interactive and non-interactive 2026-03-10 20:50:03 -07:00
LaZzyMan
715fc1a649 feat(permissions): prevent shell bypass of Read/Edit/WebFetch rules
Shell commands that are semantically equivalent to file/network tool
operations are now analyzed and matched against Read/Edit/Write/
WebFetch/ListFiles permission rules, preventing agents from bypassing
configured rules via the run_shell_command tool.

New file: packages/core/src/permissions/shell-semantics.ts
- extractShellOperations(cmd, cwd) => ShellOperation[]
- Covers 50+ commands: cat/head/tail/diff/grep/rg/ls/find/tree,
  touch/mkdir/cp/mv/rm/chmod/chown/sed/awk/dd/curl/wget + redirects
- Handles transparent prefixes: sudo (-u/-g flag values), env, timeout
  (skips DURATION), nohup, nice, time, etc.
- Tokenizer respects single/double quotes and backslash escapes
- Redirect extraction: >, >>, <, 2>, &>

Changes: packages/core/src/permissions/permission-manager.ts
- DECISION_PRIORITY constant for combining decisions
- evaluateSingle(): after base Bash-rule decision, evaluate virtual ops
  from shell semantics and return the most restrictive result
- evaluateShellVirtualOps(): evaluate ShellOperation list via evaluateSingle
- hasRelevantRules(): also check virtual ops so confirmation dialog appears
  when Read/Edit/etc. rules match equivalent shell commands

Changes: packages/core/src/permissions/index.ts
- Export extractShellOperations and ShellOperation

Tests: packages/core/src/permissions/shell-semantics.test.ts
- 52 unit tests: read/list/write/edit/web_fetch ops, redirections,
  prefix commands (sudo -u, timeout DURATION), quotes, variable filtering
2026-03-11 11:45:44 +08:00
yiliang114
40afc13e14 feat(vscode-ide-companion): refactor webview layout to mutual-exclusive sidebar pattern
Adopt Claude Code's approach for webview view registration:
- Use mutual-exclusive sidebar/secondary sidebar with `when` conditions
- Detect secondary sidebar support via VS Code version >= 1.106
- Share single ChatWebviewViewProvider instance across both view IDs
- Only set context key when secondary sidebar is NOT supported
- Pass supportsSecondarySidebar as closure variable to commands

Additional fixes:
- Fix WebViewContent.generate() to accept both Webview and WebviewPanel
- Fix permission handler leak (cancel old promise before new)
- Fix double diff command execution in resolve callback
- Add initializationPromise dedup for auth-restore races
- Add attachToView() for sidebar/secondary sidebar hosting
- Add missing AskUserQuestionResponseMessage import

Co-authored-by: buaoyezz <buaoyezz@users.noreply.github.com>
2026-03-11 11:20:25 +08:00
pomelo-nwu
f13a2fdf17 fix: export command should use current session ID instead of loadLastSession
The /export commands (html, md, json, jsonl) were incorrectly using
loadLastSession() which loads the last modified session from disk,
rather than the currently active session.

This fix uses config.getSessionId() to get the current session ID
and loads the correct session with loadSession(sessionId).

Fixes #2267

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 11:16:29 +08:00
tanzhenxin
cecc960254 feat(arena): improve agent UI with header info and simplify worktree branches
- Add AgentHeader component showing model, path, and git branch
- Separate modelId and modelName in RegisteredAgent for cleaner display
- Simplify worktree branch naming from worktrees/session/name to base-session-name
- Change loading text from "Agent is working…" to "Thinking…"
- Make agent footer always visible (not just when input is active)

This improves the agent collaboration UX by providing context about each
agent's environment and simplifies the git worktree management.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 11:04:46 +08:00
Shaojin Wen
01be4f6cf8 fix(core): remove duplicate exports in packages/core/src/index.ts
The index.ts barrel file had 30+ modules exported multiple times across
scattered sections. This consolidates all exports into a single
well-organized structure with clear section headers, removing 90 lines
of redundant export statements. No functional changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 10:59:10 +08:00
LaZzyMan
e793e82729 feat(permissions): add workspace directory management tab
- Add Workspace tab to PermissionsDialog with full directory management UI
  - Directory list view: initial (non-removable) dirs shown inline,
    runtime-added dirs selectable; "Add directory…" always first
  - Add directory input view: filesystem autocomplete with ↑/↓ navigation
    and Tab-to-complete; path validation (existence, type, duplicate,
    subdirectory checks)
  - Remove directory confirmation view
  - Save directly to project settings (SettingScope.Workspace), no scope
    selection step
- Add onTab/onUp/onDown props to TextInput to intercept keys before buffer
- Add removeDirectory() and isInitialDirectory() to WorkspaceContext
- Add --add-dir CLI alias for --include-directories
- Add /add-dir slash command (alias for /directory add)
- Add permissions.additionalDirectories settings field
- Add i18n keys for all workspace directory UI strings (en/zh/de/ja/pt/ru)"
2026-03-11 10:54:59 +08:00
yiliang114
e9f57e6689 Merge branch 'main' of https://github.com/QwenLM/qwen-code into feat/vscode-ide-companion-layout 2026-03-11 10:08:59 +08:00
tanzhenxin
d7aa98a0c0 refactor(arena): move arena-bridge to context and add reactive manager tracking
- Move useArenaInProcess from AppContainer to AgentViewProvider
- Replace polling with config.onArenaManagerChange() callback
- Add success-type progress messages when agents finish tasks
- Add isSuccessStatus helper for IDLE/COMPLETED status checks
- Reset input history position when arena session starts

This improves separation of concerns and eliminates the 500ms polling
interval in favor of immediate reactive updates when the arena manager
changes.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 21:45:30 +08:00
tanzhenxin
addbdcb0ef feat(arena): add info message for forwarded chat history
- Add info message when chatHistory is passed to spawned agents
- Add tests for info message presence and absence

This provides visibility to users when chat history context is included
in spawned agent sessions.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 20:37:08 +08:00
DennisYu07
5bd7488928 fix unit test 2026-03-10 05:10:18 -07:00
tanzhenxin
9f7e3e054f feat(arena): forward chat history to spawned agents
Add stripStartupContext to remove env-info from parent history and pass
chatHistory through ArenaManager → InProcessBackend → AgentInteractive →
AgentCore. This allows arena agents to start with conversational context
from the main session.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 19:45:14 +08:00
DennisYu07
f547785da7 add integration test for notification 2026-03-10 04:26:15 -07:00