- Refactored WebSocketScanner to support both worker-based and in-process scanning, allowing for better performance based on the environment.
- Introduced a new WebSocketScannerWorker class to handle scanning tasks, improving modularity and separation of concerns.
- Added detailed event handling for service discovery and scan progress, enhancing real-time feedback during network scans.
- Implemented graceful shutdown and cleanup of workers, ensuring resource management and stability during scanning operations.
- Enhanced error handling and logging throughout the scanning process for better visibility and debugging.
- Updated the object retrieval logic to support multiple document objects, enhancing flexibility in handling document jobs.
- Introduced a new `templateData` structure to consolidate retrieved objects, improving the deployment process in the `deploy` method.
- Enhanced error handling and data management during the document printing workflow, ensuring more robust operations.
- Implemented a check in the `startScanSession` method to prevent starting a new scan session if one is already in progress for the same session ID.
- Added logging to inform when a duplicate scan session is ignored, enhancing visibility into scan session management.
- Updated callback behavior to indicate when a scan session is already running, improving user feedback during scan operations.
- Added a call to `handleScanNetworkStop` in the `handleDisconnect` method of `SocketClient` to ensure proper cleanup of network scanning sessions upon disconnection.
- Improved resource management by closing all connections in the printer and document printer managers during disconnection.
- Added support for multiple scan sessions in `SocketClient`, allowing concurrent network scans with unique session IDs.
- Enhanced `WebSocketScanner` to support continuous scanning with the option to stop scans gracefully.
- Introduced detailed event emissions for scan progress and completion, improving real-time feedback during network scans.
- Updated `handleScanNetworkStart` and `handleScanNetworkStop` methods to manage scan sessions effectively, including error handling and session cleanup.
- Improved logging for better visibility into scanning operations and results.
- Introduced a `getDocumentSizeId` utility function to streamline document size ID retrieval.
- Updated `DocumentPrinterClient` to manage subscriptions for current document sizes, ensuring accurate updates and handling of document size changes.
- Enhanced `DocumentPrinterManager` to handle document size updates and propagate changes to connected clients.
- Improved `CupsInterface` and `ReceiptInterface` to support document size resolution and default media application based on current document sizes.
- Added detailed logging for document size updates and error handling to improve debugging and user feedback.
- Introduced a dedicated `HostManager` class to encapsulate host-related logic, including authentication and event subscription.
- Enhanced authentication methods in `HostManager` to handle OTP and standard authentication processes.
- Updated `SocketClient` to delegate host-related actions to `HostManager`, streamlining the connection and event handling workflow.
- Improved logging and configuration management during host authentication and updates.
- Removed redundant code from `SocketClient`, enhancing maintainability and clarity.
- Introduced connection state management with `isConnecting` to prevent multiple concurrent connection attempts.
- Added `scheduleReconnect` method to handle reconnection logic with a delay.
- Improved error handling and logging during connection and reconnection processes.
- Updated `updateDocumentPrinterState` to optimize state updates and prevent unnecessary changes.
- Introduced job quantity handling in `DocumentPrinterClient` to manage multiple copies of print jobs.
- Added `resolvePrintQuantity` method to ensure valid print quantities.
- Updated `CupsInterface` and `ReceiptInterface` to accept a quantity parameter in the `print` method, allowing for multiple copies to be printed in a single call.
- Improved logging to reflect the number of copies being printed for better user feedback.
- Updated the `DocumentPrinterClient` to include detailed progress tracking during the deployment process, improving user feedback.
- Modified the `deploy` methods in `CupsInterface` and `ReceiptInterface` to accept an `onProgress` callback for real-time progress updates.
- Enhanced the `SocketClient` to support rendering templates with progress notifications, allowing for better handling of asynchronous rendering tasks.
- Modified the API request parameters in the `SocketClient` class to include a `padding` option set to `false` for both PDF and image type requests, enhancing control over response formatting.
- Introduced a `notify` parameter in the `editObject` method of `SocketClient` to control notification behavior during job state updates.
- Updated the `updateJobState` method in `DocumentPrinterClient` to conditionally set the `notify` parameter based on the job state type, improving the handling of job notifications.
- Updated the `ReceiptInterface` to await the `printImageBuffer` method for proper asynchronous handling.
- Modified the `renderTemplateJPG` method in `SocketClient` to accept an image type parameter and improved error handling for template download failures.
- Enhanced the response handling to correctly parse and return image data based on the content type.
- Added `rcedit` as a dependency in `package.json` and `bun.lock`.
- Implemented a new function to resolve the path of the `rcedit` package in the `patch-electrobun-src.mjs` script, enhancing project compatibility.
- Updated the CLI handling to utilize the patched `rcedit` path if available, improving error handling and user experience.
- Replaced references to `farmcontrol-server.exe` with `launcher.exe` in the NSIS installer script and build scripts for consistency with the new executable naming.
- Updated the icon path in the configuration to use a PNG file instead of ICO, enhancing visual fidelity.
- Removed the `prepare-windows-app-binaries.mjs` script to streamline the build process, as its functionality is now integrated into other scripts.
- Enhanced error handling in the build script to ensure the correct executable is present before proceeding.
- Changed the application source directory definition in the NSIS installer script to point to "app" for better clarity.
- Updated the file inclusion pattern to ensure all files are correctly packaged in the installer.
- Enhanced the build script to define a local installer name and manage the icon file more effectively, ensuring it is copied to the working directory if present.
- Improved error handling to provide clearer messages regarding the installer creation process.
- Added a new parameter for minimum installer size to ensure the generated NSIS installer meets the required threshold.
- Implemented a function to calculate the total size of staged application files, validating that the complete app bundle is present before proceeding with the installer creation.
- Improved error handling to provide clearer messages if the staged application or installer does not meet size requirements.
- Added a new script to embed icons into Windows executables, improving visual consistency across application binaries.
- Updated the NSIS installer script to conditionally embed an icon if provided, enhancing flexibility in icon management.
- Refactored the Windows app binary preparation process to utilize the new icon embedding functionality, ensuring icons are correctly applied to the launcher and runtime executables.
- Increased the DMG window dimensions to enhance the visual presentation during installation, adjusting the height and width values for better content accommodation.
- Adjusted the DMG window dimensions to enhance the visual presentation during installation, changing the height and width values for better content accommodation.
- Adjusted the DMG window dimensions to enhance the visual presentation during installation, changing the height and width values for better content accommodation.
- Increased the DMG window height from 380 to 410 pixels to enhance the visual presentation of the application during installation.
- This change aims to provide a better user experience by accommodating additional content within the window.
- Reformatted code for better readability by adjusting line breaks and indentation.
- Updated macOS DMG window dimensions for improved layout.
- Streamlined the build architecture retrieval process for clarity.
- Enhanced filtering logic in the canUseDirectDmgSourceFolder function for consistency.
- Updated the NSIS installer script to replace references from `launcher.exe` to `farmcontrol-server.exe`, ensuring consistency with the new executable naming.
- Removed the `apply-windows-launcher-icon.mjs` script and integrated its functionality into a new script, `prepare-windows-app-binaries.mjs`, which handles branding and icon embedding for Windows app binaries.
- Enhanced the finalization process of desktop artifacts to utilize the new script for preparing Windows app binaries, improving the overall build workflow.
- Added rcedit dependency in package.json and bun.lock for embedding icons in Windows executables.
- Introduced a new script to generate and apply the application icon for Windows launcher binaries, improving visual consistency.
- Updated the NSIS installer script to support dynamic icon paths, enhancing flexibility in icon management during installation.
- Integrated the icon application process into the finalization of desktop artifacts, ensuring the icon is embedded in the generated binaries.
- Introduced new background images for macOS DMG packaging, including standard and retina versions.
- Updated the finalize-desktop-artifacts.mjs script to check for the presence of these background images, enhancing error handling.
- Refactored the ensureMacDmgAssets function to improve asset validation and streamline the DMG building process.
- Added functionality to ensure the presence of DMG assets, including a volume icon and background image, using Jimp for image creation.
- Refactored the DMG building process to incorporate these assets, improving the visual presentation of the generated DMG.
- Updated the buildMacDmgWithCreateDmg function to accept additional parameters for app bundle name and DMG assets, enhancing flexibility.
- Replaced appdmg with create-dmg for macOS DMG generation in finalize-desktop-artifacts.mjs, enhancing compatibility and reliability.
- Updated electrobun.config.ts comments to reflect the new DMG creation method.
- Added Jimp dependency in package.json and bun.lock for image processing tasks, improving app icon handling.
- Refactored icon preparation script to utilize Jimp for resizing images, streamlining the icon generation process.
- Introduced a new msi-wrapped.wxs file containing the WiX configuration for the Farm Control Server MSI installer.
- Defined product properties, major upgrade settings, and installation conditions to ensure compatibility with Windows 7 and above.
- Added custom actions and directory structure to facilitate the installation process.
- Updated the build-windows-msi.ps1 script to improve the search for the WiX Toolset, ensuring proper tool availability for MSI generation.
- Introduced appdmg dependency in package.json and bun.lock for streamlined DMG generation.
- Updated finalize-desktop-artifacts.mjs to replace the previous create-dmg method with appdmg, enhancing the DMG building process.
- Modified comments in electrobun.config.ts to reflect the new DMG creation method using appdmg.
- Simplified database interaction by replacing InvokeMember calls with direct method invocations in the build-windows-msi.ps1 script.
- Enhanced handling of null values in database records to ensure proper insertion and management of data.
- Updated SQL commands to use null for optional fields, improving clarity and consistency in the database schema.
- Introduced a new script for preparing application icons, supporting macOS, Windows, and Linux formats.
- Updated electrobun.config.ts to specify paths for app icons in the build configuration.
- Added generated app icons to .gitignore to prevent tracking of build artifacts.
- Updated package.json and bun.lock to include the png-to-ico dependency for icon conversion.
- Added constants for Windows Installer OpenDatabase modes to clarify database access options.
- Improved error handling in the Set-InstallerBinaryStream function to gracefully handle cases where the Binary table is empty.
- Refactored the New-WrapperMsiDatabase function to ensure proper path handling and database creation, enhancing the robustness of the MSI generation process.
- Introduced build-windows-msi.ps1 script for generating MSI installers, enhancing the Windows packaging process.
- Updated finalize-desktop-artifacts.mjs to include a new function for building MSI packages, ensuring proper integration with existing artifact generation workflows.
- Enhanced error handling and logging during the MSI build process for better feedback on failures.
- Introduced a new script, codesign-macos-app.mjs, to handle the code signing of macOS application bundles.
- Replaced the existing resignMacAppBundle function in finalize-desktop-artifacts.mjs with a call to the new codesignMacAppBundle function for improved clarity and maintainability.
- Enhanced error handling and logging during the code signing process to provide better feedback on failures.
- Updated the logic for resolving the app bundle path to streamline the signing process.
- Deleted the msi-wrapped.wxs file, which contained the WiX configuration for MSI packaging.
- Removed the build-windows-msi.ps1 script, responsible for generating MSI installers, from the build process.
- Updated finalize-desktop-artifacts.mjs to eliminate the call to the now-removed MSI build function, streamlining the artifact generation process.
- Replaced cpSync with ditto for copying files in expand-macos-bundle.mjs to improve reliability and error handling.
- Introduced a new copyMacAppBundle function in finalize-desktop-artifacts.mjs to streamline app bundle copying and signing processes.
- Enhanced error handling for ditto and codesign commands to provide clearer feedback on failures.
- Updated DMG creation logic to conditionally use direct source folder, optimizing the build process.
- Updated farmcontrol-server.nsi to include desktop and Start Menu shortcut creation.
- Added new macros in installer.nsh for managing shortcuts during installation and uninstallation.
- Introduced build-windows-msi.ps1 script for generating MSI installers, integrating with existing build processes.
- Modified finalize-desktop-artifacts.mjs to call the new MSI build script, ensuring proper artifact generation.
- Modified electrobun.config.ts to clarify DMG creation status in comments.
- Replaced symlink with cpSync in finalize-desktop-artifacts.mjs to improve file handling during DMG creation, ensuring proper copying of application bundles.
- Introduced a new approach for finding zstd decompression commands, prioritizing a zig-zstd executable over the system zstd for improved compatibility.
- Enhanced error messages during decompression to include command details for better debugging.
- Streamlined the process of copying and decompressing archives, ensuring clearer path management and improved reliability on Windows platforms.
- Updated the findZstdDecompressCommand function to improve compatibility with Windows by adding shell options for command execution.
- Simplified candidate path resolution for zstd executables by utilizing a dedicated electrobun directory, enhancing clarity and maintainability.
- Improved error handling during decompression and extraction processes to ensure better reliability on Windows platforms.
- Updated ensure-electrobun-core.mjs to ensure core dependencies for both host and target architectures, improving compatibility.
- Modified patch-electrobun-src.mjs to enhance the handling of the Bun binary, ensuring the correct binary is used based on availability, which improves error reporting and execution reliability.
- Updated farmcontrol-server.nsi to simplify setup file handling by defining APP_SOURCE_DIR and removing unnecessary variables.
- Modified installer.nsh to reference the correct launcher executable path.
- Refactored build-windows-nsis.ps1 to accept APP_DIR instead of individual setup file parameters, streamlining the build process.
- Introduced expand-windows-installer.mjs for handling decompression and extraction of Windows app archives, improving artifact management.
- Enhanced finalize-desktop-artifacts.mjs to integrate the new expansion process and ensure proper cleanup of temporary files.
- Removed the dynamic search for `create-dmg` and replaced it with a fixed path for improved reliability.
- Updated the buildMacDmg function to handle staging directories more effectively and ensure cleanup after DMG creation.
- Simplified error handling for the DMG creation process, enhancing clarity and maintainability.