Persist server keys only after authenticated RA2 and RFB initialization, guarded against cancellation and stale generations. Preserve owner routing through creation, restoration, and reconnect, and clear resolved verification prompts.
Keep the compatible RSA range, honor the configured 8192-bit maximum, support both documented and TigerVNC random lengths, and add protocol, storage, and frontend regressions.
- Added support for reading and expanding Windows environment variables from the registry.
- Introduced `RegistryEnvValue` struct to manage registry values and their expandability.
- Implemented `reg_value_to_env` and `expand_environment_value` functions for converting registry values to environment variables and expanding them recursively.
- Enhanced `merge_windows_env` function to merge system and user environment variables, ensuring proper handling of expandable values.
- Updated the environment retrieval logic to utilize the new functions, improving compatibility with Windows environment management.
- Refactored `buildZmodemReceiveCommand` to include control escaping options for overwrite and skip modes.
- Introduced new tests for `buildZmodemReceiveCommand` to validate command generation.
- Updated ZMODEM header and transmission logic to support control escaping, ensuring proper handling of control characters during transmission.
- Added tests to verify control escaping functionality in the ZMODEM protocol.
- Updated the `create_gcc_blocks` function to change the attribute from `#[expect(single_use_lifetimes)]` to `#[allow(single_use_lifetimes)]`, addressing stability concerns with anonymous lifetimes in `impl Trait`.
- Added scripts to prepare and verify the Microsoft ConPTY package for Windows.
- Updated build workflows to include checks for bundled ConPTY in installers.
- Enhanced application support info to display ConPTY status and version.
- Modified the portable updater to handle ConPTY files during updates.
- Updated documentation to reflect changes in ConPTY usage and requirements.
- Introduced tests for ConPTY backend functionality to ensure reliability.
- Added state management for pane focus mode and native fullscreen in the App component.
- Introduced keyboard shortcuts to toggle pane focus and native fullscreen.
- Updated the AppLayout and PaneWorkspace components to support the new focus mode, ensuring inactive panes remain mounted but hidden.
- Enhanced the file transfer context to handle RDP events, allowing users to paste files after RDP transfers.
- Added translations for new clipboard options and updated relevant UI components to reflect these changes.
- Improved test coverage for pane focus behavior in the PaneWorkspace component.
- Deleted the entire `ironrdp-client` and `ironrdp-connector` directories, including all associated files such as Cargo.toml, Cargo.lock, and source code.
- This cleanup removes unused components from the project, streamlining the codebase.
- Enhanced the PropertiesDialog component to support editing symlink targets for remote files.
- Introduced a new state for symlink targets and updated the UI to include an input field for this attribute.
- Implemented validation to ensure symlink targets are provided when editing symlink properties.
- Updated the backend to handle symlink target updates, including new commands for remote symlink management.
- Adjusted file properties handling to include symlink target information in both local and remote contexts.
- Added a new `SessionNetworkSection` component to handle proxy and jump host configurations for RDP, SSH, and VNC session forms.
- Updated `RdpForm`, `SshForm`, and `VncForm` to include the new network section, allowing users to select proxies and jump hosts.
- Enhanced the `NewSessionPage` to support network configurations across different session types.
- Modified related tests to ensure proper functionality of the new network selection features.
- Added detailed logging for RDP TLS backend selection, improving traceability during connection setup.
- Refactored error classification functions to better categorize TLS and certificate-related errors, enhancing error handling.
- Introduced new utility functions to identify TLS errors and Nyaterm certificate rejections, streamlining error management.
- Added unit tests to validate the behavior of the new error classification logic and ensure robustness in handling various error scenarios.
- Updated the WebView2 SDK version to 1.0.1020.30 and adjusted related SHA256 checksums for improved compatibility with Windows 7.
- Added a new function to install the legacy WebView2 loader, ensuring proper handling of loader replacements and validation.
- Enhanced the CI workflow to include steps for enabling Win7-only Cargo patches and verifying the availability of 7-Zip, streamlining the build process for Windows 7 compatibility.
- Introduced a new documentation file to record Windows 7 compatibility vendor patches, detailing necessary adjustments for specific dependencies.
- 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.
- Added clipboard support in VNC sessions, allowing remote clipboard events to be written to the local clipboard when enabled.
- Implemented polling for local clipboard changes to send updates to the VNC server, ensuring synchronization between local and remote clipboard contents.
- Updated rendering logic in RemoteDesktopSurface to handle multiple frame patches efficiently using batch drawing.
- Enhanced tests for VNC clipboard functionality and rendering to ensure reliability and performance.
- Refactored related components to accommodate new clipboard features and improve code organization.
- Added VNC session handling with a new VncForm component for user input.
- Integrated VNC connection settings, including host, port, and password management.
- Enhanced RDP functionality with improved rendering and input handling.
- Introduced RemoteDesktopSurface for optimized frame rendering using WebGL and Canvas2D.
- Added tests for VNC and Remote Desktop components to ensure reliability and performance.
- Added conditional compilation for Unix environments in the SSH agent module.
- Removed an unused warning comment in the ironrdp-connector.
- Simplified import statements in the picky signature module.
- Streamlined the build script for zmodem2 by removing unnecessary warning messages.
- Introduced a new function to determine when to disable dynamic resizing based on connection state, improving responsiveness during reconnects and failures.
- Updated the RdpPaneHost component to utilize the new resizing logic, ensuring better handling of window resizing events.
- Added tests for the resizing logic to validate behavior under various conditions, including initial resize and dynamic disablement scenarios.
- Refactored canvas point calculations to improve accuracy in rendering.
- Introduced a new `RdpCertificateVerifyDialog` component to handle RDP certificate verification requests.
- Updated the `App` component to manage RDP certificate requests and integrate the new dialog.
- Enhanced the `AppLayout` to include the RDP certificate verification dialog in the modal structure.
- Implemented state management for RDP display settings and integrated RDP session handling in the application.
- Added utility functions for RDP display management and clipboard handling, improving overall RDP session experience.
- Updated localization strings to support new RDP features and settings.
- Added RDP session handling with new components for RDP pane management, including `RdpPaneHost` and `RdpForm`.
- Updated session type handling to include RDP, allowing users to create and manage RDP sessions alongside existing terminal types.
- Enhanced workspace functionality to support RDP sessions, ensuring seamless integration with existing terminal workflows.
- Introduced new utility functions for RDP frame handling and input mapping, improving performance and user experience during remote sessions.
- Added tests for RDP frame and input functionalities to ensure reliability and correctness.
- Added a new function to calculate the effective pipeline depth for SFTP directory downloads, considering session pool size and maximum open handles.
- Updated the download directory worker logic to utilize the new pipeline depth calculation for improved concurrency management.
- Implemented a new async function to handle the closure of remote files, ensuring proper error handling and resource management.
- Enhanced existing file transfer functions to ensure they respect the new pipeline depth and handle shutdowns correctly.
- Added comprehensive tests to validate the new pipeline depth logic and file transfer behaviors.
- Updated SFTP upload functions to utilize a new `wait_for_sftp_upload_io` helper for improved error handling and cancellation support.
- Adjusted concurrency settings for small file transfers to optimize performance.
- Introduced a `wait_for_transfer_cancelled` function to monitor and handle transfer cancellation events.
- Refactored the `PendingRequest` structure to manage timeouts and clean up pending requests effectively.
- Improved error handling in the SFTP client to ensure proper cleanup of pending requests on failure.
- Enhanced the ZMODEM upload functionality to include a `preserve_timestamps` option, allowing users to maintain original file timestamps during uploads.
- Updated related structures and functions across the ZMODEM transfer process to accommodate the new metadata handling.
- Added tests to verify the correct behavior of timestamp preservation in various scenarios.
- Introduced a new setting for SSH keep-alive mode in the TerminalTab component, allowing users to select between "compatible", "strict", and "disabled" modes.
- Updated the application state to include the keep-alive mode and its default value.
- Enhanced the SSH client configuration to apply keep-alive settings based on the selected mode, improving connection stability.
- Added tests to ensure correct behavior of keep-alive settings and their impact on SSH connection management.
- Introduced a new conflict mode for Zmodem uploads, allowing users to choose between "overwrite" and "skip" options when handling duplicate files.
- Updated the `TransferDuplicateDialog` to display different titles and descriptions based on the verification status of the upload request.
- Enhanced the backend logic to support conflict mode during file uploads, ensuring proper handling of user choices.
- Added new functions to resolve unverified uploads and manage conflict modes effectively.
- Enhanced DeleteDialog, MoveDialog, and PropertiesDialog to include rawPathToken in their respective data structures and operations.
- Updated FileExplorer to handle rawPathToken for directory loading and file operations.
- Introduced rawPathToken in the FileEntry type and adjusted related SFTP commands to support this new field.
- Added filename encoding settings in various session forms and updated translations for encoding settings in English, Korean, and Chinese locales.
- Added `crc32fast` as a dependency in the `zmodem2` package to enhance data integrity checks during transfers.
- Updated `Cargo.lock` files to reflect the new dependency and its versioning.
- Introduced `ZmodemUploadDrain` and `ZmodemDownloadOoDrain` to manage residual byte suppression during Zmodem transfers.
- Updated the SSH I/O loop and Telnet session task to utilize the new drain mechanisms for improved data handling.
- Enhanced Zmodem transfer logic to track upload and download states, ensuring efficient data processing and user feedback.
- Added tests for the new drain functionalities to validate their behavior and performance.
- Enhanced the `NameList` struct to accept trailing commas in encoded strings, allowing for cleaner input handling.
- Added tests to verify acceptance of trailing commas and rejection of invalid entries, including leading, middle, and double commas, as well as non-ASCII names.
- Updated existing tests for clarity and specificity in naming.
- Bumped `russh` version to `0.62.1` in `Cargo.lock` and updated dependencies including `rand`, `sha2`, and `thiserror`.
- Changed the path for `russh` in `Cargo.toml` to point to the vendor directory.
- Added new vendor files for `russh`, including `README.md`, `LICENSE.txt`, and various configuration files.
- Introduced a new `CryptoVec` struct for secure memory handling in the `cryptovec` module, enhancing security for cryptographic operations.
- Moved `russh-sftp` to the vendor directory and updated its path in `Cargo.toml`.
- Added new files for `russh-sftp`, including its `Cargo.toml`, `.gitignore`, and various source files for serialization, deserialization, and error handling.
- Implemented a basic structure for the SFTP client and server functionalities, enhancing the overall SSH file transfer capabilities.
- Introduced error handling and utility functions to support the new SFTP features.
- Added a new TransferDuplicateDialog component to handle duplicate transfer requests.
- Implemented backend support for transfer duplicate prompts in the App component.
- Updated DeleteDialog to use AlertDialog components for improved user experience.
- Enhanced FileTransfer component with selection and deletion capabilities for transfers.
- Introduced ExternalFileDropOverlay for better file drop handling in the FileExplorerView.
- Improved terminal file drop handling and added support for Zmodem upload notifications.