- Added a new state for managing search expansion and a ref for the search input.
- Implemented focus and selection behavior for the search input when expanded.
- Enhanced keyboard navigation to handle Escape key for collapsing the search.
- Updated the search input to be read-only until focused, allowing for a cleaner UI.
- Introduced a clear search button that resets the filter text and collapses the search when clicked.
- Introduced preventWindowControlMouseFocus to prevent focus shift on mouse down for window control buttons.
- Updated Header component to use this function on minimize, maximize, and close button mouse down events.
- Added tests for window control focus behavior to ensure expected functionality.
- Reduced the injection timeout from 30 seconds to 8 seconds for improved responsiveness.
- Introduced a new `SuppressionDiagnostics` struct to track and log suppression metrics.
- Updated the injection handling logic to incorporate the new diagnostics and timeout mechanisms.
- Refactored related functions for clarity and maintainability.
- Revised the English, Korean, Simplified Chinese, and Traditional Chinese translations for the reconnectRestoreCwdDesc key to clarify the behavior of reconnecting to the last known working directory in SSH sessions.
- Updated the default setting for reconnecting to the previous working directory from true to false across various components and settings.
- Adjusted related tests to reflect the new default behavior.
- Moved dynamic tab title components within LocalTerminal and SshForm for improved structure and consistency.
- Updated the layout to ensure proper alignment and spacing for better user experience.
- Retained functionality of dynamic tab title switches in both components.
- Added SSH feature to prune NyaTerm's Bash shell-integration commands from remote command history, including support for shells with cmdhist disabled.
- Restyled the built-in editor's search panel with theme-aware controls, focus rings, and checkbox accents.
- Ensured shell-integration injection lines comply with remote Linux PTY canonical-input limits.
- Enhanced the styling of the CodeMirror search panel by removing the light button gradient and implementing theme colors for buttons and inputs.
- Added focus ring and checkbox accent styles to improve accessibility and visual consistency.
- Updated tests to verify the new styling rules for the search panel.
- Introduced a mechanism to prune bash history entries within a defined range, enhancing the management of command history.
- Added a new constant for maximum history entries and updated the injection script to utilize this feature.
- Improved the script's logic to ensure proper handling of history entries, including marking the beginning and end of relevant history sections.
- Reformatted the injection script in `osc.rs` to enhance clarity and maintainability.
- Consolidated multiple lines into a single compound entry while ensuring compliance with remote PTY input limits.
- Updated function comments for better understanding of the script's purpose and functionality.
- Added new features including Ctrl+mouse-wheel font zoom in the editor, a context-menu action for quick commands, dynamic terminal tab titles, shared SFTP helpers, and improved AI event handling.
- Fixed issues related to file drop target detection, terminal selection preservation, tab scrolling behavior, and RDP connection editing.
- Updated the file drop logic in both useExternalFileDrop and useTerminalFileDrop hooks to utilize isDropPositionTopmostWithinElement, enhancing accuracy in determining if a drop event occurs over the intended target.
- Added unit tests for the new isDropPositionTopmostWithinElement function to ensure correct behavior in various scenarios, including covered elements and position validation.
- Added new localized strings for MCP unavailability errors in English, Korean, Simplified Chinese, and Traditional Chinese.
- Enhanced user experience by providing clear error messages related to Claude Code and Codex fallback scenarios.
- Introduced `classifyAIStreamControlEvent` to categorize AI stream events as "warning", "done", or "error", improving event management.
- Updated `AIAssistantPanel` to handle new event types, displaying appropriate warnings and error messages based on the event kind.
- Added localization for external agent MCP fallback and startup errors in multiple languages.
- Created tests for the new event classification logic and ensured proper handling of localized error messages.
When the terminal viewport is scrolled up and the user has a selection
over scrollback output, key presses were sent via terminal.input(data,
false) to preserve the selection (by design, it is only cleared on mouse
click). However, xterm.js gates both selection clearing and
scrollOnUserInput behind the same wasUserInput flag, so the viewport
never scrolled back to the cursor and the user could not see what they
typed.
Keep the selection-preservation behavior but explicitly scroll to the
bottom when the viewport is not at the cursor, replicating xterm's
scrollOnUserInput for every key path in the selection branch
(printable input, backspace/delete, enter, arrows, ctrl/alt combos).
Fixes#518
- Added a call to `focusOpenTabTerminal(tab)` in the `onTabChange` handler to ensure the terminal focuses on the active tab when changed, enhancing user experience.
- Added `list_dir_command` and `stat_command` functions to streamline the creation of shell commands for listing directories and retrieving file statistics with numeric owner and group information.
- Updated `stat_remote_properties` and `list_dir` methods to utilize the new command functions, improving code readability and maintainability.
- Enhanced unit tests to validate the new command functions and ensure correct parsing of directory entries.