Commit graph

567 commits

Author SHA1 Message Date
LaZzyMan
f64f08d8a1 feat: add mcp dialog 2026-02-13 14:38:54 +08:00
mingholy.lmh
54d9073cc0 feat(auth): enhance AuthDialog with error handling and update API key link 2026-02-11 16:48:54 +08:00
mingholy.lmh
a8a05188cb feat(coding-plan): implement Coding Plan configuration management and update prompts 2026-02-11 16:18:23 +08:00
mingholy.lmh
5f710b5f6f fix: ui 2026-02-11 11:58:34 +08:00
mingholy.lmh
b9dd080bd1 feat: add auth entry: coding plan 2026-02-11 11:58:33 +08:00
Mingholy
169ad2d030
Merge pull request #1756 from QwenLM/feat/mcp-progress-updates
feat: add MCP tool progress update support in TUI and SDK mode
2026-02-11 11:07:20 +08:00
tanzhenxin
d6a33dbe03
Merge pull request #1662 from QwenLM/fix/top-right-model-not-updating
fix(ui): resolve model not updating in top-right corner
2026-02-10 10:22:08 +08:00
tanzhenxin
4e89c99216 Merge remote-tracking branch 'origin/main' into feat/mcp-progress-updates 2026-02-09 10:18:35 +08:00
tanzhenxin
cc55d7831a
Merge pull request #1752 from QwenLM/fix/mcp-oauth-branding-updates
fix(mcp): improve MCP server management and authentication
2026-02-09 09:42:58 +08:00
tanzhenxin
5ebbceea65 feat: add MCP tool progress update support in TUI and SDK mode
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-08 15:48:13 +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
tanzhenxin
6a867ed4a4 refactor(cli): change auth hint to model hint in header
Update the header info panel hint from '/auth to change' to '/model to change'
to better reflect that this command switches models rather than authentication.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-08 09:40:57 +08:00
DennisYu07
281995e310 fix test 2026-02-06 03:01:53 -08:00
tanzhenxin
7f49ddede1
Merge pull request #1736 from QwenLM/fix/windows-tab-autocomplete-conflict-1728
fix(cli): prevent Tab key from cycling approval mode when autocomplete is active on Windows
2026-02-06 17:47:47 +08:00
pomelo
a6885ccb4d
Merge pull request #1713 from QwenLM/fix/enter-submit
feat(paste): add large paste placeholder and fix enter-submit on macOS
2026-02-06 17:44:14 +08:00
LaZzyMan
2fe9cbcd17 fix: remove conflicting suggestions visibility notifications
Remove duplicate useEffect that was causing suggestions visibility state
to diverge from the actual active completion. The original useEffect at
line 760 already correctly tracks activeCompletion.showSuggestions, which
dynamically selects the current active completion source (regular, reverse
search, or command search).

The removed useEffect used OR logic across all three completion sources,
which caused hasSuggestionsVisible in AppContainer to flip incorrectly
during command-search mode when background completion state changed.

This fix ensures Tab key blocking/unblocking happens at the correct times
on Windows.
2026-02-06 17:10:27 +08:00
tanzhenxin
3b4b5d874d fix(paste): move thresholds to module level and improve placeholder expansion
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-06 16:32:22 +08:00
LaZzyMan
9a6aafa721 fix(cli): prevent Tab key from cycling approval mode when autocomplete is active on Windows
Fixes #1728

When using @ to reference files/folders on Windows and pressing Tab for path completion, the Tab key was incorrectly triggering approval mode cycling instead of accepting the autocomplete suggestion.

This happened because Windows maps Tab to Shift+Tab functionality (due to Shift+Tab not working in some terminals), but this mapping didn't account for active autocomplete lists where Tab should be used for selection.

Changes:

- Add shouldBlockTab callback to useAutoAcceptIndicator hook to check if autocomplete is active

- Track autocomplete visibility state in AppContainer via hasSuggestionsVisible

- Add onSuggestionsVisibilityChange to UIActions interface

- Update InputPrompt to notify parent when suggestions visibility changes

- Update Composer to propagate suggestions visibility to AppContainer

- Add tests to verify Tab key behavior with and without autocomplete
2026-02-06 11:04:15 +08:00
tanzhenxin
4abec5c055 Merge remote-tracking branch 'origin/main' into feat/debug-logging-refactor 2026-02-05 20:23:48 +08:00
tanzhenxin
21ae35b221 feat(paste): add large paste placeholder with ID reuse and atomic deletion
- Add placeholder mode for pastes >1000 chars OR >10 lines
- Show placeholder like '[Pasted Content 1500 chars]' instead of full content
- Store full content and expand on submit
- Support multiple placeholders with sequential IDs (#2, #3, etc.)
- Reuse freed IDs when placeholders are deleted
- Delete entire placeholder atomically on backspace
- Add 7 unit tests for placeholder functionality

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 19:31:40 +08:00
tanzhenxin
a31699ed73
Merge branch 'main' into mingholy/fix/acp-model-list 2026-02-05 19:01:17 +08:00
tanzhenxin
6324863008 Merge remote-tracking branch 'origin/main' into feat/remove-smart-edit-tool
# Conflicts:
#	packages/core/index.ts
#	packages/core/src/index.ts
2026-02-05 18:08:22 +08:00
tanzhenxin
ff0ba0cc4e Merge branch and resolve conflicts
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 13:41:37 +08:00
tanzhenxin
846cc75f10 refactor: streamline debug logging and remove Notifications component
- Remove verbose tool execution debug logs to reduce noise
- Add debug logging for config initialization phases
- Add comprehensive debug logging for skill loading/management
- Add rate limiting for QwenLogger network error logs
- Remove Notifications component from DefaultAppLayout
- Update tests to reflect UI changes and logging behavior

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-04 22:41:31 +08:00
tanzhenxin
9b524a59c1 Merge branch 'main' into feat/debug-logging-refactor
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-04 17:30:58 +08:00
tanzhenxin
c7b681ef5d feat(paste): add large paste placeholder and fix enter-submit on macOS
- Add large paste placeholder feature: when pasting text > 1000 chars,
  show a placeholder like '[Pasted Content 1500 chars]' instead of the
  full content. The full text is stored and expanded on submit.

- Fix enter-submit on macOS: only apply recentPasteTime protection when
  pasteWorkaround is enabled (Windows or Node < 20). On macOS/Linux with
  modern Node, bracketed paste markers work reliably so the protection is
  unnecessary and caused the first Enter after paste to be ignored.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-04 15:20:45 +08:00
LaZzyMan
86ba86e297 Merge branch 'main' into fix/shift-tab-windows-powershell 2026-02-02 19:51:32 +08:00
LaZzyMan
3296785b23 feat use tab on windows instead of shift+tab 2026-02-02 19:48:07 +08:00
mingholy.lmh
0137b316d0 feat: support runtime model selection for both interactive and ACP 2026-02-02 17:52:50 +08:00
tanzhenxin
89e3c2cd7a refactor(debug): replace ConsolePatcher with debugLogger and update error reporting
- Replace ConsolePatcher with centralized debugLogger utility
- Refactor errorReporting to use debugLogger instead of file-based reporting
- Remove user-facing console message components:
  - Delete ConsolePatcher.ts, useConsoleMessages.ts/hook
  - Delete ConsoleSummaryDisplay.tsx, DetailedMessagesDisplay.tsx
- Update all tests in packages/core and packages/cli:
  - Mock debugLogger where needed
  - Remove assertions for console output on non-critical errors
  - Keep debugLogger assertions for fatal/network errors
  - Use HOME directory mocking for hermetic file system tests

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-02 17:37:54 +08:00
tanzhenxin
135df54f27 Merge branch 'main' into feat/debug-logging-refactor
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-01 20:47:38 +08:00
mingholy.lmh
889c49f0f4 fix: provide available models of all configured authTypes 2026-02-01 19:54:31 +08:00
Alexander Farber
561fda297e Rename disable* settings to enable* and consolidated 1 setting 2026-02-01 16:04:49 +08:00
tanzhenxin
37ad24b0d9 feat: Remove Smart Edit tool and ClearcutLogger
- Remove SmartEditTool and its associated LLM edit fixer utilities
- Remove ClearcutLogger and related telemetry infrastructure
- Remove useSmartEdit configuration option from settings schema
- Add deprecation warning for users with existing useSmartEdit config
- Clean up all related tests and mocks

The Smart Edit tool was designed to provide flexible matching and LLM-based
correction for edit operations. However, current models are now capable
of effectively using the standard Edit tool without these optimizations,
and the Smart Edit tool lacked comprehensive testing coverage.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-01 14:39:54 +08:00
tanzhenxin
a41e946dcc test: fix Footer and tokenLimits test failures
- Footer.test.tsx: provide contextWindowSize in mock config to match
  Footer component's new requirement for displaying context usage
- tokenLimits.test.ts: consolidate Kimi K2 tests and update expectations
  to 256K for all variants to match the implementation
2026-01-29 21:13:12 +08:00
tanzhenxin
d67206819a fix(contextWindowSize): fix context window size update on model switch and ACP agent config priority
- Fix contextWindowSize not updating when switching models via setModel()
- Fix ACP agent to respect provider-configured contextWindowSize before auto-detection
- Simplify getTruncateToolOutputThreshold to use static threshold
- Add support for GLM-4.7, Kimi-2.5, and MiniMax-M2.1 models
- Update context usage display to require explicit contextWindowSize

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-29 20:51:03 +08:00
宇溯
438ae0bc0f remove useless comment 2026-01-29 04:19:49 -08:00
宇溯
2b91fdbc7f fix model info not updating on top right banner 2026-01-29 04:04:52 -08:00
tanzhenxin
1c5b74ebd9 Merge branch 'main' into pr-1539 2026-01-29 19:18:23 +08:00
tanzhenxin
68760287bd Merge branch 'main' into feat/multimodal-input-support 2026-01-29 11:44:27 +08:00
tanzhenxin
72480f7dd8
Merge pull request #1590 from QwenLM/refactor/refactor-user-feedback
feat: Implement temporary dismissal for feedback dialogs with persistent prompting
2026-01-26 17:15:00 +08:00
LaZzyMan
0eee42fa6a fix: correct schema field name for context.loadFromIncludeDirectories
The schema incorrectly defined the field as 'loadMemoryFromIncludeDirectories'
while the migration map and documentation specified 'loadFromIncludeDirectories'.
This caused user configurations to be ignored.

Changes:
- Rename schema field from loadMemoryFromIncludeDirectories to loadFromIncludeDirectories
- Update all references in config loading and UI components
- Update test cases to reflect the correct field name

Fixes #1603
2026-01-26 15:09:36 +08:00
tanzhenxin
7995c65571 feat(cli): migrate console calls to debugLogger and stdioHelpers (M3 Phase 7-9)
Route CLI console.* calls to structured logging:
- Debug/internal diagnostics → debugLogger (logfile)
- User-facing output → writeStdoutLine/writeStderrLine/clearScreen (stdioHelpers)
- Add stdioHelpers.ts with writeStdoutLine, writeStderrLine, clearScreen
- Migrate pre-session files (gemini.tsx, sandbox.ts, config.ts) to stdioHelpers
- Migrate extension/MCP commands to stdioHelpers
- Migrate non-interactive session/control to debugLogger
- Migrate UI hooks and components to debugLogger
2026-01-26 15:02:37 +08:00
xwj02155382
8725b91e11 refactor: remove unused model variable from Footer component 2026-01-26 10:49:44 +08:00
tanzhenxin
32cddc272f
Merge pull request #1561 from BlockHand/show-line-numbers
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
feat: make DiffRenderer respect ui.showLineNumbers setting
2026-01-26 10:37:04 +08:00
xwj02155382
f9db8d5a73 refactor: improve config consistency and token limits
- Remove legacy childKey field from settingsSchema

- Add contextWindowSize and maxOutputTokens to documentation

- Refactor ContextUsageDisplay to accept contextWindowSize directly instead of Config object

- Add useMemo optimization for contextWindowSize in Footer component

- Fix logic gaps in contentGenerator for contextWindowSize and maxOutputTokens initialization

- Increase DEFAULT_OUTPUT_TOKEN_LIMIT from 4K to 8K for better usability

- Add fallback to default values when model is not available
2026-01-26 10:26:44 +08:00
tanzhenxin
ba2824b0b0 feat(core,cli): add debug logging infrastructure (M0-M2)
Implement debug logfile foundation for routing internal diagnostics
to a per-session log file instead of polluting the terminal.

Core changes:
- Add DebugLogger interface and createDebugLogger() in debugLogger.ts
- Add Storage.getGlobalDebugDir() and getDebugLogPath() for log paths
- Add Config.getDebugLogger() method with session-scoped logger
- Track write failures via isDebugLoggingDegraded()

CLI changes:
- Add DebugModeNotification component for interactive startup notice
- Add non-interactive debug notice to stderr in gemini.tsx

Log files are written to ~/.qwen/debug/<sessionId>.txt with format:
2026-01-24T10:30:00.000Z [LEVEL] [TAG] message

Debug logging is always-on; debug mode only controls the startup notice.
2026-01-25 09:23:18 +08:00
DragonnZhang
6327e35a14 feat: implement persistent feedback prompting with temporary dismissal options
Add 'Fine' and 'Dismiss' options to feedback dialogs that allow temporary
dismissal without permanently closing the feedback request. Only numerical
ratings (0, 1, 2, 3) will permanently close feedback dialogs, while all
other inputs result in temporary dismissal with persistent re-prompting.

This ensures feedback collection reliability while respecting user workflow
by allowing users to temporarily dismiss prompts when busy and providing
feedback when ready.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 16:52:40 +08:00
xwj02155382
3bd460a9cc refactor: optimize token limit handling and simplify API
- Initialize contextWindowSize and maxOutputTokens in contentGeneratorConfig during config resolution
- Remove third parameter from tokenLimit() function for cleaner API
- Replace all tokenLimit() calls with direct config property access for better performance
- Add maxOutputTokens field to ContentGeneratorConfig type
- Update dashscope provider to use config.maxOutputTokens
- Auto-detect token limits from model during initialization if not user-configured
- Update settingsSchema: set contextWindowSize default to undefined and showInDialog to false

Benefits:
- Token limits calculated once during initialization instead of repeatedly
- Cleaner API with fewer parameters
- Better performance by caching computed values
- User configuration takes precedence over auto-detection
- All 72 unit tests passing
2026-01-23 16:27:10 +08:00
LaZzyMan
9af9ea259d feat: add select ui for claude marketplace 2026-01-23 16:23:30 +08:00