Commit graph

134 commits

Author SHA1 Message Date
tanzhenxin
3a549419ba Merge branch 'main' into feat/sandbox-config-improvements 2026-03-06 14:38:39 +08:00
tanzhenxin
76650819f3
Merge pull request #2120 from QwenLM/refactor/message-components-and-themes
refactor(cli): consolidate message components and fix leading icon display issues
2026-03-06 14:05:21 +08:00
DennisYu07
79939e8ebe
Merge pull request #1988 from QwenLM/feat/hook-stop-implementation
Some checks are pending
Qwen Code CI / CodeQL (push) Waiting to run
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
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
feat(hooks): Implement hooks system infrastructure with CLI and UI management
2026-03-06 12:59:16 +08:00
tanzhenxin
076f4c9afa
Merge pull request #2037 from QwenLM/mingholy/refactor/settings-migration
Refactor settings migration to sequential framework with atomic file writes
2026-03-06 11:17:33 +08:00
tanzhenxin
01ed2a7b1f test(terminal-capture): add message-components scenario for PR #2120
Add test scenario to verify message component prefixes display correctly:
- Info message prefix (● filled circle)
- Error message prefix (✕)
- User message prefix (>)
- Assistant message prefix (✦)

Also refactors GIF generation to scenario-level for cleaner output.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-05 21:13:13 +08:00
tanzhenxin
06aeb8a6a2 add qc-code-review scenario 2026-03-05 19:41:32 +08:00
tanzhenxin
df20ec9871 feat(terminal-capture): add streaming-insight scenario and simplify GIF timing
- Add streaming-insight scenario for /insight command demo
- Add progress.sh script to test PTY carriage return handling
- Simplify generateGif with fixed frame durations (300ms normal, 1s edges)

This enhances terminal capture testing with a real-world streaming scenario
and cleaner GIF generation logic.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-05 19:13:28 +08:00
tanzhenxin
b8a7ac830d feat(terminal-capture): add streaming capture with GIF generation
Add ability to capture multiple screenshots at intervals during
long-running terminal output (e.g., progress bars). Optionally
generates animated GIFs from captured frames using ffmpeg.

Features:
- Streaming capture at configurable intervals
- Early stop when output stabilizes (3 consecutive unchanged frames)
- Duplicate frame skipping
- Animated GIF generation via ffmpeg concat demuxer
- Auto-cleanup of output directory before each run
- Configurable delay before starting captures

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-05 17:46:09 +08:00
mingholy.lmh
33d65af79b fix(acp): add session/set_config_option method for mode and model configuration
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-03 17:16:01 +08:00
DennisYu07
4a44eb7a17 add more integration test for hooks 2026-03-02 23:32:10 -08:00
DennisYu07
7b0929d00c add integration test and --experimental-hooks 2026-03-02 19:05:28 -08:00
DennisYu07
3bf30d9684 add ut 2026-03-02 06:08:21 -08:00
mingholy.lmh
d38077423d refactor: use pre-defined utils 2026-03-02 12:38:26 +08:00
mingholy.lmh
d0c1547c60 test: add test fixtures 2026-03-02 11:54:54 +08:00
DennisYu07
4b18cfe3f3 Revert "implementation 10 hooks"
This reverts commit c9126e043f.
2026-03-01 17:58:11 -08:00
DennisYu07
c9126e043f implementation 10 hooks 2026-03-01 17:50:48 -08:00
mingholy.lmh
ae8c0d3d4e refactor(settings): sequential settings migration 2026-03-02 00:12:51 +08:00
DennisYu07
3c9fcf9749 add integration test for hook 2026-02-28 00:03:44 -08:00
mingholy.lmh
0b9164b649 fix: rename GEMINI_CLI_INTEGRATION_TEST to QWEN_CODE_INTEGRATION_TEST
- Update integration test environment variable name
- Ensure sandbox container naming works correctly with new variable

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 11:38:50 +08:00
tanzhenxin
179ce68e63 fix(test): keep plan mode active during ACP integration test
The test 'blocks write tools in plan mode' was failing because the model
would attempt to exit plan mode via exit_plan_mode tool. By cancelling
switch_mode tool calls in the permission handler, we ensure plan mode
stays active throughout the test.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-26 23:10:28 +08:00
tanzhenxin
a172696b86 Merge branch 'main' into feat/support-insight-command
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-26 21:05:41 +08:00
pomelo
bec8cbc575
Merge branch 'main' into feat/terminal-capture 2026-02-25 15:26:57 +08:00
pomelo
51fc0bf3fb
Merge pull request #1812 from QwenLM/fix/issue-1806-plan-mode-enforcement
fix: enforce plan mode restrictions in ACP sessions
2026-02-25 15:20:08 +08:00
pomelo-nwu
b2b30c4c5d feat(runner): support auth_type for model configuration
- Add ModelSpec dataclass to hold model name and optional auth_type
- Update RunConfig.models to use List[ModelSpec]
- Add auth_type field to RunRecord with serialization support
- Parse models from config as string or {name, auth_type} dict
- Pass --auth-type flag to qwen command when specified

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-19 11:55:42 +08:00
mingholy.lmh
ee5e47bb5f fix: sandbox user permission in integration tests
- Allow SANDBOX_SET_UID_GID to control user identity in integration tests
- Fix project naming from gemini-cli to qwen-code
- Use random UUID in tests to avoid conflicts

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-15 11:02:32 +08:00
pomelo-nwu
997fcbfaed feat: add terminal-capture for CLI screenshot automation
- Add terminal-capture engine using node-pty + xterm.js + Playwright
- Add scenario runner with TypeScript configuration
- Add pre-built scenarios (/about, /context, /export, /auth)
- Add Cursor skills for terminal-capture and pr-review workflow
- Add motivation documentation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-14 21:34:42 +08:00
mingholy.lmh
82dc79629c feat: enhance session ID handling and error propagation 2026-02-13 21:41:38 +08:00
mingholy.lmh
5d939fdb83 feat: add --session-id support for CLI and SDK
- Add --session-id flag to CLI for specifying custom session ID
- Add sessionId option to SDK QueryOptions
- Implement UUID validation for session IDs
- Pass session ID from SDK to CLI via --session-id argument
- Add integration tests for session-id functionality
- Update unit tests for ProcessTransport

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-13 21:40:57 +08:00
LaZzyMan
785d0ef5b7 fix: enforce plan mode restrictions in ACP sessions (issue #1806)
- Add plan mode enforcement in Session.runTool to block write tools
- Align ACP behavior with CoreToolScheduler plan mode logic
- Add test case to verify write tools are blocked in plan mode
- Fixes #1806
2026-02-12 11:29:02 +08:00
pomelo-nwu
8b3aeb4550 refactor: unify sandbox configuration naming and improve telemetry config
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-11 11:08:15 +08:00
mingholy.lmh
7311a01874 fix: sdk mcp tests 2026-02-09 11:54:20 +08:00
tanzhenxin
c71cc9ce0d fix(integration-tests): correct MCP tool name in simple-mcp-server test
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-09 10:07:00 +08:00
tanzhenxin
21e711469d fix(mcp): update OAuth client names and improve MCP commands
- Rename MCP OAuth client names from 'Gemini CLI' to 'Qwen Code'
- Update MCP add/remove/list commands with improved error handling
- Add comprehensive tests for OAuth provider
- Fix token storage test assertions
- Clean up unused i18n translation keys
- Update gemini-converter and window title references

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-08 10:46:48 +08:00
Mingholy
5c582e98c6
Merge pull request #1732 from QwenLM/mingholy/fix/sdk-release-workflow
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
Add CLI source selection for SDK releases and fix subagent output handler
2026-02-06 13:01:05 +08:00
Mingholy
d90b642564
Merge pull request #1733 from QwenLM/mingholy/test/fix-acp-tests
Some checks are pending
Qwen Code CI / CodeQL (push) Waiting to run
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
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: use openai model instead of index=0 in acp integration test
2026-02-05 22:04:51 +08:00
mingholy.lmh
972103e795 fix: use openai model instead of index=0 in acp integration test
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 21:17:07 +08:00
mingholy.lmh
1e05359881 ci(sdk-release): add CLI source selection for SDK releases
- Replace cli_ref input with cli_source choice (build_from_source or npm_latest)
- Add support for bundling latest stable CLI from npm
- Add bundle-cli-from-npm.js script for npm-based CLI bundling
- Fix property naming in nonInteractiveCli.ts (outputUpdateHandler)
- Improve integration tests for subagents
- Skip creating issue on failure during dry-run mode

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 20:57:01 +08:00
tanzhenxin
8434b89711
Merge pull request #1682 from QwenLM/fix/vscode-ide-compaion-ui-show-bugs
fix(vscode-ide-companion): Fix UI display issues with server-side timestamp and file path extraction
2026-02-05 20:17:30 +08:00
tanzhenxin
a31699ed73
Merge branch 'main' into mingholy/fix/acp-model-list 2026-02-05 19:01:17 +08:00
mingholy.lmh
06b37bd6bf fix(acp): add authMethods in set_model response errors 2026-02-01 21:20:20 +08:00
tanzhenxin
831d74dbfe feat: Preserve UTF-8 BOM when editing files (Fix #1672)
- Add FileEncoding constants (UTF8, UTF8_BOM)
- Add detectFileBOM() to detect existing file encoding
- Modify writeTextFile() to support BOM option
- Add defaultFileEncoding configuration option
- Preserve BOM when editing existing files
- Use configured encoding for new files
- Add comprehensive tests (unit, integration, e2e)
- Update documentation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-01 10:32:20 +08:00
yiliang114
9830c70061 feat(vscode-ide-companion): 支持使用 server-side timestamp 进行消息排序
- 在 SessionUpdateMeta 中添加 timestamp 字段
- 为 UserMessageChunkUpdate 和 ToolCallUpdate 添加 _meta 字段
- 在 QwenAgentManager 中使用 server timestamp 而非客户端时间
- 在 QwenSessionUpdateHandler 中解析并传递 tool call timestamp
- 在 useToolCalls 中改进 timestamp 解析逻辑
- 修正 App.tsx 中 timestamp 处理,使用 nullish-coalescing operator
- 为 ToolCallUpdateData 和 ToolCallUpdate 类型添加 timestamp 和 _meta

feat(integration-tests): add file location extraction for tool calls

feat(webui): enhance ReadToolCall component with content preview and expand/collapse

refactor(webui): simplify SaveMemoryToolCall component UI

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-01 00:22:29 +08:00
pomelo-nwu
2259943f85 feat: update export html 2026-01-29 13:27:18 +08:00
pomelo-nwu
021680cd70 feat: add html template 2026-01-28 19:56:20 +08:00
tanzhenxin
acf5824a65 fix: resolve worktree paths and load keep_worktree from config
- Resolve worktree_dir to absolute path before using as cwd and QWEN_CODE_ROOT
- Load keep_worktree option from JSON config in load_config()

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 17:25:29 +08:00
tanzhenxin
3f16948225 feat: remove npm install/build and add keep_worktree option
- Remove npm install and npm run build from worktree initialization
- Remove INITIALIZING status enum and related code
- Add keep_worktree config option (default: false)
- When keep_worktree is true, worktree is preserved for debugging
- Renumber execution steps after removing initialize step

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 16:43:50 +08:00
tanzhenxin
0c1848896a Revert: use text output format instead of JSON
- Remove --output-format json from CLI commands
- Change output filenames from output-{N}.json back to stdout-{N}.txt
- Keep outputs in outputs/ subdirectory for clean structure

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 15:47:14 +08:00
tanzhenxin
09d4627a3d feat: move output files to outputs/ subdirectory for cleaner structure
- Move output-{N}.json and stderr-{N}.txt to outputs/ subdirectory
- Fix typo in toy-config.json results_file path (rest-run -> test-run)
- Add --output-format json to CLI commands
- Update file extensions from .txt to .json for stdout captures

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 15:29:11 +08:00
tanzhenxin
f48eec9a02 feat: add git diff capture and session log collection to concurrent runner
- Add git diff capture after each run, saved as diff.patch
- Add session log collection from ~/.qwen/projects/{id}/chats/
- Store session logs in outputs/{run_id}/chats/ with original filename
- Add session_id field to track chat recording UUID
- Modify cwd in session logs to actual runner working directory
- Remove stdout_file/stderr_file from top-level, keep only in prompt_results
- Rename logs folder to openai-logs
- Add File Writer task example for testing file creation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 14:57:15 +08:00
tanzhenxin
66259aca29 feat: add git branch support for worktree creation
Add optional branch configuration to specify which git branch to use
for worktree creation.

Features:
- New branch config option to specify base branch (e.g., main, develop)
- Each worktree creates a unique branch based on the specified branch
  (format: branch-run-id)
- If branch is not specified, uses the repository default branch
- Falls back gracefully when branch already exists

Changes:
- Add branch field to RunConfig dataclass
- Update GitWorktreeManager.create() to accept branch parameter
- Create unique branches for each worktree to avoid conflicts
- Update load_config() to parse branch from config
- Update config.example.json with branch option
- Update README.md documentation

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-28 12:36:23 +08:00