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>
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.
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
- 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>
- 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>
- 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>
- 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>
- 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
- 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>
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
- 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
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.
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>
- 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