* Reorganizes the task header for cleanliness and in preparation for Cloud link
* More task ehader visual tweaks
* Translations for new task header
* Fixes TaskHeader color
* Removes stray string
* Fixes tests
* Iterates on visual details
* More visual tweaks
* Missing localization call
* Fixes tests
---------
Co-authored-by: Bruno Bergher <me@brunobergher.comexport>
* feat: add jump icon for newly created files
- Add jump icon to newFileCreated tool case in ChatRow.tsx
- Matches existing pattern from readFile case for consistent UX
- Allows users to quickly open newly created files
- Fixes issue #5736
* fix: remove duplicate file path display in newFileCreated case
- Removed redundant ToolUseBlock that was showing file path twice
- Added onJumpToFile prop to CodeAccordian component to support jump icon
- Jump icon now appears in CodeAccordian header for newFileCreated files
- Maintains consistent UX with existing file operations while avoiding duplication
Fixes feedback from @daniel-lxs about duplicate elements being shown
* fix: address PR feedback for jump icon on new files
- Fix openFile message to use correct path format with './' prefix
- Remove duplicate chevron icon when jump icon is present
- Add aria-label for accessibility
- Fix styling: use mr-1 to match progressStatus icon
- Remove redundant margin style from jump icon
---------
Co-authored-by: Roo Code <roo@roocode.com>
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
* add mermaid buttons
* feat: Add Modal, TabButton, and ZoomControls components
* feat: Add error handling messages for image operations and file opening
* mermaid: Add drag functionality and support contious zooming
* add active color for tabbutton
* refactor zoom controls
* refactor: Remove unused svgToPng prop and simplify handleCopy function
* Move zoom to constants and increase max zoom
* feat: add save image functionality and refactor image handling
* feat: add translations
---------
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
* feat: add MCP viewer and enhanced UI
- Add McpExecutionStatus type with discriminated union for execution states
- Implement McpExecution component with live status updates and collapsible output
- Replace inline MCP UI in ChatRow with dedicated McpExecution component
- Add comprehensive test coverage for useMcpToolTool
- Enhance CodeAccordian to support custom headers
- Improve combineCommandSequences to handle MCP execution flows
* refactor: merge loops in combineCommandSequences for better efficiency
- Reduced from 3 separate loops to 1 main processing loop
- Improved time complexity from O(n²) to O(n)
- Reduced total passes through array from 4 to 2
- Better memory access patterns and cache utilization
* feat: enhance JSON parsing and rendering in McpExecution component
* feat: add mock implementations for react-markdown and remark-gfm
* fix: remove unreachable return statement in ChatRowContent component
* feat(i18n): add execution status messages and error handling for invalid JSON arguments
* test: add parameter validation tests for missing server_name and tool_name
* Update McpExecution component to show server name in header and tool name in approval section
---------
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Implements a more robust bundling strategy for Mermaid diagrams to prevent
dynamic chunk loading at runtime, which was causing CSP violations.
Key changes:
- Added manualChunks function in vite.config.ts to consolidate all Mermaid
code and dependencies into a single bundle
- Added mermaid and dagre to optimizeDeps.include for pre-bundling
- Customized chunkFileNames to ensure predictable output
- Removed incorrect static imports in MermaidBlock.tsx
This resolves the CSP errors where Mermaid was attempting to dynamically
load chunks like chunk-RZ5BOZE2.js and channel.js from the webview origin.
Fixes: #3680
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
* Add missing telemetry types
* Give IconButton the pointer cursor when enabled
* Change context condensing to use a Lucide icon
* Mock Lucide icons globally
* fix: Missing or inconsistent syntax highlighting across UI components
- Change file listings to use 'shellsession' for terminal-like highlighting
- Use 'markdown' for code definitions and instructions
- Add file extension-based language detection for new files
- Ensure consistent 'diff' highlighting for all diff content
- Use 'xml' language for error messages
- Make language property required in CodeAccordian
- Set default fallback to 'txt' instead of undefined
Fixes: #3655
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
* chore: make language property required in CodeBlock
- Updated CodeBlockProps interface to make language property required
- Updated mock implementation to match the interface change
- Ensured CodeAccordian always provides a fallback language value
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
---------
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
feat: optimize code block rendering performance
Memoize CodeBlock components to prevent unnecessary re-renders:
- Add MemoizedCodeContent for syntax highlighted HTML
- Add MemoizedStyledPre for container element
- Properly type all component props
- Reduce React reconciliation work for complex code blocks
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
* feat: syntax highlighting terminal output with Shiki
Refactored CommandExecution.tsx to:
- Implement CodeBlock component for terminal display
- Use Shiki for syntax highlighting of shell commands and terminal output
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
* ui: present same compressed command output that the model will receive
Avoids rendering problems and performance regressions:
- Compresses output using BaseTerminal.compressTerminalOutput
- Eliminates need for Virtuoso by limiting output size
Ensures command output shown in UI matches the compressed format provided to the model:
- Applies same BaseTerminal.compressTerminalOutput processing
- Uses configured terminalOutputLineLimit for consistency
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
* test: update CommandExecution tests to use CodeBlock mock
- Replace virtuoso mock with CodeBlock mock to fix shiki import error
- Update CodeBlock mock to properly handle source prop
- Add proper empty output test case verification
- Keep original test values and structure
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
---------
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>