* feat(vscode-ide-companion): add image paste support
- Add clipboard image paste functionality with drag-and-drop support
- Implement image preview component with removal capability
- Support multimodal content in ACP session manager for text and images
- Save pasted images to temporary .gemini-clipboard directory
- Add image attachment display in user messages
- Update CSP to allow data: URIs for inline image display
- Add comprehensive image utilities with size validation (max 10MB)
- Include tests for image processing utilities
* refactor: simplify VS Code paste image implementation
- Remove dead code and redundant error handling
- Extract common isAuthError() helper function
- Simplify SessionMessageHandler methods (80% reduction)
- Change temp directory from .gemini-clipboard to clipboard (aligned with CLI)
- Keep multimodal image sending format (type: image + base64)
Stats:
- 6 files changed
- 367 insertions (+)
- 1176 deletions (-)
* refactor: align paste image handling
* chore: trim paste image diff
* refactor(vscode-ide-companion): remove unused attachments logic
- Remove unused ImageAttachment type imports
- Remove attachments field from TextMessage interface
- Remove attachments from message data sent to WebView
- Clean up debug console.log statements
- Simplify SessionMessageHandler handleSendMessage method
This removes dead code from the previous image paste implementation
that was no longer needed after switching to @path reference approach.
* refactor(vscode-ide-companion/webview): extract image handling into dedicated hooks and utils
- extract ImagePreview and ImageMessageRenderer components from App.tsx
- create useImageAttachments hook for managing image attachments
- create useImageResolution hook for image path resolution
- add imageAttachmentHandler for saving images to temp files
- add imageMessageUtils for message expansion and resolution
- add imagePathResolver for resolving image paths in webview
- integrate image resolution in useWebViewMessages
- extract shouldSendMessage utility from useMessageSubmit
- add getLocalResourceRoots in PanelManager for resource access
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* fix: harden vscode image handling and webview hosts
* fix: remove this alias in acp connection
* feat: add path escaping utility functions and tests
* feat: add support for image attachments and improve prompt handling
* refactor(webview): Optimize editing mode switching function
* refactor(vscode-ide-companion): move path escaping utilities to local module
- Move escapePath and unescapePath functions from qwen-code-core to local utils
- Add pathEscaping.ts with shell special characters handling
- Update imports in imageFormats.ts, imageAttachmentHandler.ts, and imageMessageUtils.ts
- Add unit tests for path escaping round-trip and browser bundle verification
- Fix browser bundling issue by avoiding node-only module dependencies in webview
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* refactor: consolidate image handling logic across vscode-ide-companion and webui
- Merge分散的 image hooks (useImageAttachments, useImageResolution, usePasteHandler) into unified useImage hook
- Replace image utils (imageMessageUtils, imagePathResolver, imageUtils) with imageHandler and imageSupport
- Remove clipboard image storage from core package
- Consolidate webui image components into ImageComponents.tsx
- Update imports and tests to reflect new structure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* chore: drop unrelated core tool changes
* test: fix webview provider mocks and drop unrelated core diffs
* fix(cli): resolve original prompt through standard path in no_command case
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
---------
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* feat(vscode-ide-companion): add Tab key fill-only behavior for completions
- Separate Tab and Enter key handling in CompletionMenu
- Tab now inserts completion text without executing (useful for slash commands)
- Enter/click continues to select and execute immediately
- Allow users to append arguments after Tab-filling slash commands
* feat(vscode-ide-companion): add Tab key fill-only behavior for completions
- Separate Tab and Enter key handling in CompletionMenu
- Tab now inserts completion text without executing (useful for slash commands)
- Enter/click continues to select and execute immediately
- Allow users to append arguments after Tab-filling slash commands
Co-authored-by: Mingholy <14246397+Mingholy@users.noreply.github.com>
* feat: add command selection behavior logic and tests
Co-developed-by: Aone Copilot <noreply@alibaba-inc.com>
* feat(vscode-ide-companion): add Tab key completion fill behavior with tests
- Add onCompletionFill prop to InputForm for Tab key handling
- Distinguish Tab (fill) and Enter (select) completion behaviors
- Add keyboard handling tests for completion items
- Remove 'skills' command from non-interactive CLI allowed list
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
* refactor: add itemId variable for command handling in App component
Co-developed-by: Aone Copilot <noreply@alibaba-inc.com>
* refactor: remove unused command selection behavior utils and tests
---------
Co-authored-by: Mingholy <14246397+Mingholy@users.noreply.github.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
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
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- In ACP mode: allow ask_user_question in YOLO mode (user must respond)
- In ACP mode: allow ask_user_question in plan mode for clarifications
- Hide footer when confirmation dialog is active
- Fix tab index overflow with functional state updates
- Fix ask_user_question detection in VSCode companion (use rawInput)
- Add cleanup for pending ACP promises on panel/provider dispose
- Use theme.text.accent consistently for highlighted elements
- Remove unused 'answers' param from AskUserQuestionParams
This ensures users can always respond to clarification questions
in ACP mode regardless of approval mode, and improves dialog UX.
- Introduced AskUserQuestionDialog component for displaying questions and collecting user responses in the WebView.
- Updated ACP integration to handle ask user question requests and responses.
- Enhanced session management to include raw input and answers for user questions.
- Modified existing tools and services to support new ask user question feature.
- Updated types and message handling to accommodate new question structure and responses.
- Remove duplicate webui build in vscode-ide-companion (fixes double build)
- Fix misleading [watch] log messages in esbuild.js (only show in watch mode)
- Update vite-plugin-dts to ^4.5.4 for TypeScript 5.8+ support
- Update baseline-browser-mapping to ^2.9.19 to silence outdated data warnings
- Fix vitest config to use @qwen-code/qwen-code-core instead of old gemini-cli-core
- Add resolve.alias in cli vitest.config.ts for source-based testing
- Add npm run dev script for running from TypeScript source without build
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit includes several updates:
- Updated eslint configuration with improved formatting and organization
- Added SaveMemoryToolCall support in vscode-ide-companion
- Translated Chinese comments and UI text to English in various components
- Made minor code formatting improvements across multiple files
- Add expand/collapse functionality to ThinkingMessage
- Support defaultExpanded prop to control initial state
- Add status prop (loading/default) with pulse animation
- Introduce ChevronIcon for expand/collapse toggle
- Update ThinkingMessage styles with timeline support
- Add stories for all states (default, expanded, loading)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add WebFetchToolCall component to display web fetch and search operations
- Support URL/query display with output card
- Add expand/collapse for long output content
- Export WebFetchToolCall from toolcalls index
- Integrate WebFetchToolCall in ChatViewer component
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Update ChatViewer to calculate and pass timeline positions (isFirst/isLast) to messages
- Enhance AssistantMessage with timeline connector visualization
- Add storybook stories for AssistantMessage component
- Update SearchToolCall and LayoutComponents for improved UI consistency
- Export new adapters in main index file
- Add timeline styling to components
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Implement ACPAdapter to convert ACP protocol messages to unified format
- Implement JSONLAdapter to convert JSONL format messages to unified format
- Define unified message types for consistent component rendering
- Add helper functions for timeline position calculation (isFirst/isLast)
- Enable cross-platform message format compatibility
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>