- 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.
- 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.
- 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.
- Added support for handling MCP session open requests, including the ability to respond to session creation with success or error messages.
- Introduced new permission modes for AI interactions, including "full_access", and updated the permission handling logic to accommodate these changes.
- Refactored the AiPermissionSelect component to manage permission modes more effectively and added corresponding tests to ensure functionality.
- Updated translations for new permission modes and improved the UI to reflect changes in session handling.
- Introduced unit tests for the `useTerminalRefreshEffects` hook to validate terminal repainting behavior and texture invalidation on DPI scale changes.
- Updated the `useTerminalRefreshEffects` hook to prevent unnecessary texture atlas clearing during active terminal refreshes.
- Added a new `shouldSuspendKeywordHighlighter` function to manage keyword highlighting based on terminal visibility and performance mode, with corresponding tests to ensure correct behavior.
- Enhanced the `useKeywordHighlighter` hook to support session-specific keyword highlighting and cache management.
- Refactored performance configurations for keyword highlighting to optimize refresh rates and decoration limits.
The builtin file editor rendered selections in a pale white that
obscured file content, unlike the terminal.
- Publish the terminal theme's selectionBackground as the
--df-terminal-selection CSS variable and use it (with !important)
for .cm-selectionBackground, so the editor selection matches the
terminal selection color instead of CodeMirror's #d7d4f0 default.
- Move the .cm-activeLine highlight onto a ::before pseudo-element
with z-index -3 (below the selection layer at -2) and clear the
element background, so the active line highlight no longer washes
out the selection on the cursor line (visible when selecting
upwards, where the top line holds the cursor).
Add regression tests for the published CSS variable and the compiled
selection/active-line rules.
- Introduced a new setting for terminal right-click actions, allowing users to choose between "none", "menu", and "paste" options.
- Updated the InteractionTab component to include a tabbed interface for selecting the right-click action.
- Refactored the TerminalContextMenu to handle the new right-click action logic, ensuring appropriate behavior based on user selection.
- Added tests for the terminal right-click action functionality to validate expected behaviors and interactions.
- Migrated legacy right-click paste settings to the new terminal right-click action configuration.
- Updated the `handleAssetMonitoringPatch` function to accept both source and target session IDs, ensuring patches are only recorded when they match.
- Improved the asset monitoring cache management by adding validation for session ownership, preventing mismatched session data from being retained.
- Refactored related hooks (`useRemoteGpuOverview`, `useRemoteNpuOverview`, and `useRemoteStats`) to align with the new session validation logic.
- Introduced unit tests for asset monitoring functionality, ensuring robust handling of session changes and patch recording.
- Added the McpApprovalHost component to handle external MCP approval requests, enhancing user interaction with external tools.
- Updated the App component to include the McpApprovalHost, ensuring it is rendered within the application layout.
- Introduced external MCP settings in the AiTab component, allowing users to configure MCP options such as enabling/disabling and permission modes.
- Implemented state management for MCP runtime status and client configurations, improving the overall functionality and user experience.
- Added default settings for external MCP in the AI settings module, ensuring a consistent initial configuration.
- Introduced the OutputAckCoordinator class to handle acknowledgment of output bytes in terminal sessions, allowing for better management of session state and error handling.
- Added comprehensive unit tests to validate the functionality of the OutputAckCoordinator, including scenarios for ACK handling, failure requeuing, and backoff strategies.
- Updated XTerminal and xterminalOutputController to integrate the new OutputAckCoordinator, enhancing output management capabilities.
- Refactored session command handling to utilize session_command_channel for improved command processing.
- Modified the terminal surface background variable to use "var(--df-bg-terminal)" instead of "transparent" for improved consistency with background image settings.
- Updated the test description to clarify the behavior of background-image transparency in xterm and terminal wrappers.
- Replaced the previous unlistener array with an `asyncUnlistenBag` for better management of event listeners in the XTerminal component.
- Updated the setup of wake listeners to utilize the new unlisten bag, improving code clarity and efficiency.
- Added a new utility for handling asynchronous unlisten operations, ensuring proper cleanup of listeners.
- Introduced tests for the async unlisten bag to validate its functionality and reliability.
- Added `createExternalLocalSession` function to facilitate the creation of local terminal sessions with specified working directories.
- Introduced `connectExternalLocalSession` in the `App` component to manage external local session connections.
- Enhanced `extract_external_open_urls` to support local session requests with optional working directory arguments.
- Updated `create_local_session` to handle explicit working directory inputs and validate their existence before session creation.
- Added tests for local session handling, including scenarios for missing directories and explicit working directory overrides.
- Improved `LocalSessionConfig` to include a flag for handling missing working directories during session initialization.
- Added new functions `resolveFileEditorOpenTarget` and `resolveInternalEditorDisplay` to determine the appropriate editor mode based on user settings.
- Introduced a test suite for the file editor open mode to validate the new resolution logic.
- Updated the `FileExplorer` component to utilize the new editor resolution functions, enhancing file handling capabilities.
- Modified the `TransferTab` and context providers to include `internal_editor_display` settings, defaulting to "workspace".
- Enhanced type definitions to support the new editor settings and ensure type safety across components.
- Introduced a new `FloatingPanel` component to support left and right floating panels, enhancing the user interface for better panel management.
- Added state management for floating panels in the `App` component, allowing users to open, close, and move panels between sides.
- Implemented logic to handle panel open modes, enabling users to switch between docked and floating modes seamlessly.
- Updated the `ActivityBar` and `AppLayout` components to integrate floating panel features, including context menu options for toggling panel modes.
- Enhanced tests to cover new floating panel functionalities and ensure robust behavior across different scenarios.
- Introduced new components for managing activity bar overlays, including `ActivityBarResetDialog` and `AppOverlayDialogs`.
- Added functionality to hide and show activity bar items, improving user control over the interface.
- Implemented reset layout functionality for the activity bar, allowing users to restore default settings.
- Updated the `ActivityBar` component to support hidden items and context menu interactions for better usability.
- Refactored related hooks and context providers to manage activity bar state effectively.
- Enhanced tests to cover new features and ensure robust functionality.
- Added support for SSH runtime modes ("standard" and "terminal") across various components, including session creation and external connection parsing.
- Updated the `ExternalOpenIntent` and related types to include runtime mode specifications.
- Enhanced the temporary link parsing to handle runtime modes, ensuring proper configuration for SSH connections.
- Implemented tests to validate runtime mode functionality and its integration with existing features.
- Refactored relevant functions to accommodate the new runtime mode logic, improving overall connection management.
- Added support for foreground frame fallback in the TerminalOutputDrain class to manage scenarios where animation frames are starved.
- Introduced a new interface, TerminalOutputForegroundFrameFallbackStats, to encapsulate statistics related to foreground fallbacks.
- Enhanced the onForegroundFrameFallback callback to provide detailed logging of fallback events.
- Implemented tests to validate the behavior of foreground frame fallback, including scenarios for cancellation and sustained backlog draining.
- Updated performance configuration to define the fallback delay for foreground operations.
- Added new utility functions to improve shell readiness checks, including `hasMountedShell` and `hasLayoutableShell`.
- Updated lifecycle emission logic to ensure proper handling of shell readiness based on layout conditions.
- Introduced comprehensive tests for shell readiness scenarios, including fallback handling and polling until the shell mounts.
- Improved test setup with real timers and manual animation frame management for better simulation of lifecycle events.
- Added support for selecting API formats in the AI settings, specifically for OpenAI and compatible providers.
- Implemented a new `supportsApiFormatSelection` function to determine if a provider allows API format selection.
- Updated the `AiProviderCredential` type to include an `api_format` field, defaulting to "chat_completions".
- Enhanced the UI to allow users to select between "chat_completions" and "responses" formats when configuring credentials.
- Updated schema version to 6 to reflect changes in the settings structure.
- Added tests to ensure proper handling of API format defaults and selection logic.
- Introduced a new interface `TerminalOutputBackgroundDrainStats` to encapsulate background drain statistics.
- Updated the `onBackgroundDrain` callback to utilize the new stats interface, improving data handling during background operations.
- Enhanced the `TerminalOutputDrain` class to manage background catch-up logic and scheduling more effectively.
- Added multiple tests to validate the behavior of background draining under various conditions, including catch-up scenarios and mode transitions.
- Refactored the hibernation controller to track output activity and prevent premature hibernation based on recent output events.
- Introduced a new CSS variable `--df-terminal-surface-bg` to manage terminal surface backgrounds more effectively.
- Updated various components to utilize the new background variable, ensuring consistent styling across the terminal interface.
- Added tests for the terminal surface background variables to validate behavior under different appearance settings, including transparency and custom themes.
- Refactored the `installRemoteColorOscGuard` function to support blocking default background OSCs based on session type and options.
- Changed the default base URL for the Ollama provider from the v1 path to the root URL.
- Added tests to ensure the Ollama provider uses the correct base URL and migrates legacy URLs appropriately.
- Introduced helper functions to manage Ollama provider settings and ensure compatibility with legacy configurations.
- Introduced a new function to detect hard reload shortcuts (Ctrl/Cmd + Shift + R) and prevent default behavior when triggered inside the terminal.
- Updated the preventReservedWebviewShortcut function to handle hard reloads separately from other reserved shortcuts, enhancing user experience in terminal contexts.
- Implemented AppOverlayDialogs component to manage various overlay dialogs including session quick switcher, temporary SSH link, external connection match, unsaved changes, and post-login confirmation.
- Created useFileDocumentCloseGuard hook to handle file document close requests, including saving and discarding unsaved changes.
- Developed useSessionRuntimeState hook to manage session recording statuses and live session information.
- Introduced appExternalDialogs module to define types for external connection choices and dialog states.
- Added appSessionFactory module to handle session creation logic for different connection types.
- Implemented appWorkspaceClose module to manage pending file document closures and tab management.
- Introduced a new function `getUploadFailureDescription` to provide user-friendly error messages for upload failures.
- Updated `failPendingZmodemUpload` to accept an options parameter for UI handling, improving error management.
- Implemented `isZmodemUploadErrorHandled` to check if upload errors have been addressed in the UI.
- Enhanced the `handleTerminalFileDrop` function to conditionally display error messages based on upload error handling.
- Added tests for Zmodem upload behavior, including handling of skipped files and overwrite conflicts.
- Removed the `signalChildWindowReady` function and replaced it with a loading shell in `ChildWindowRouter` to provide a better user experience during loading.
- Updated `FolderDialog` to prevent multiple submissions when pressing Enter and clicking Save simultaneously.
- Enhanced file handling in `FileDocumentEditor` and related components by adding `contentHash` and `mtimeNanos` properties for better file state management.
- Added tests for new functionality in `FolderDialog` and `FileDocumentEditor` to ensure reliability.
- Introduced `AlternateScreenStateTracker` and `Dec2026FrameGate` for improved terminal handling and performance metrics.
- Updated `ChildWindowCommandQueue` to manage command states using a status system (`loading`, `ready`, `failed`) instead of a boolean flag.
- Implemented methods to mark commands as failed, drop queued commands, and recover from failed states when new tokens are registered.
- Added tests to verify the behavior of failure handling and recovery scenarios in the command queue.
- Enhanced `windowManager` to close failed child windows and clear their lifecycle appropriately.
Split the main app provider from the lightweight child context, reveal child windows after a stable shell is rendered, and queue commands until listeners are ready.
- Added `AlternateScreenStateTracker` to manage and detect alternate screen states in terminal output.
- Introduced `TerminalOutputScheduler` to optimize write chunk sizes and manage foreground delays based on screen state.
- Enhanced `TerminalOutputDrain` to support low-latency flushing and improved performance during foreground operations.
- Added comprehensive tests for both the alternate screen state tracker and output scheduling functionalities.
- Updated `XTerminal` to integrate the new tracking and scheduling logic, ensuring consistent behavior across terminal operations.