* Introduced an `ID` field to the `SysCommand` struct for better command identification.
* Updated command initialization in `Init` method to include unique IDs for each command.
* Modified context data handling to use `CommandID` instead of `CommandTitle` for command lookup.
* Enhanced error messages to reflect the use of command IDs.
* Added quick select mode to allow users to select items using number keys.
* Introduced `isQuickSelectMode` and related methods in `WoxLauncherController`.
* Updated `WoxListItem` to include `isShowQuickSelect` and `quickSelectNumber`.
* Enhanced UI components to display quick select numbers.
* Improved keyboard handling in `WoxQueryBoxView` for quick select actions.
* Changed the method signature in `emptyAPIImpl` and `mockAPI` to accept a callback that returns `definition.PluginSettingDefinitionItem`.
* This improves type safety and aligns with the updated plugin API requirements.
- Updated API interface to support dynamic settings returning PluginSettingDefinitionItem.
- Implemented MRU restore callback in both Node.js and Python plugin hosts.
- Added MRUData model for handling most recently used data.
- Enhanced setting models to include new types and helper functions for creating settings.
- Updated package dependencies for Node.js and Python plugins to the latest versions.
- Added MRU support to SysPlugin and UrlPlugin, allowing users to access recently used commands and URLs.
- Introduced new data structures for MRU items and context data.
- Updated the query methods to include MRU results based on user settings.
- Modified the settings management to accommodate the new query mode for MRU.
- Enhanced the UI to reflect the changes in query modes and added relevant translations.
- Created a dedicated MRU manager for handling MRU items in the database.
- Updated Flutter UI to support MRU queries and settings.
* Added checks to remove existing directories before extracting files for hosts, ui, others, and script_plugin_templates.
* Enhanced logging in `StartUIApp` to include the app path in the error message when the UI app does not exist.
* Added a check to ensure the extracted icon is not empty or fully transparent.
* This prevents issues with displaying icons that do not have valid visual content.
* Updated `GetAppExtensions` and `ParseAppInfo` methods to perform case-insensitive checks for `.lnk` and `.exe` file extensions.
* This change improves compatibility with file systems that are case-sensitive.
* Adjusted title checks to include "Search Google for" for better clarity.
* Updated expected titles in `TestWebSearchPlugin` to reflect accurate search queries.
* Enhanced test descriptions for improved understanding of test cases.
* Updated executable names for Windows, macOS, and Linux to `wox-ui`.
* Adjusted related paths in `CMakeLists.txt` and `Makefile`.
* Modified `AppInfo.xcconfig` to reflect the new product name.
* Eliminated the `SynableStore` interface from `SettingStore` to simplify the architecture.
* Removed the unused `syncStore` field from `SettingValue` struct and its related logic in the `Set` method.
* This change enhances code clarity and maintainability by reducing complexity.
- Configure SQLite with Write-Ahead Logging (WAL) mode for better concurrency.
- Set connection pool settings to optimize database access.
- Execute additional PRAGMA statements for optimal performance.
- Update logging to reflect new database initialization details.
feat(clipboard): migrate clipboard data handling to new settings storage
- Implement migration of clipboard data from legacy JSON to new database-backed storage.
- Introduce methods for managing favorite clipboard items in settings.
- Update clipboard plugin to utilize new favorite management functions.
refactor(setting): improve error logging for settings retrieval
- Replace direct logger calls with `util.GetLogger()` for consistency across settings management.
- Split Store into separate WoxSettingStore and PluginSettingStore with unified SettingStore interface
- Introduce SettingValue[T] and WoxSettingValue[T] generic wrappers for type-safe setting access
- Refactor PluginSetting to use PluginSettingValue[T] wrappers instead of direct field access
- Remove redundant plugin_setting_test.go and consolidate setting management logic
- Update plugin API, manager, and UI components to work with new setting architecture
- Simplify setting store operations and improve separation of concerns between core and plugin settings
This refactoring provides better type safety, cleaner separation between different setting types,
and a more maintainable architecture for future setting system enhancements.
- Introduced a new `Store` struct for managing Wox settings and plugin settings with GORM.
- Implemented migration logic to transfer settings from old JSON files to the new SQLite database.
- Updated the `Value` type to handle lazy loading and persistence of setting values.
- Refactored existing settings access in the UI and other components to utilize the new store.
- Added migration tests to ensure data integrity during the transition.
- Enhanced logging for better traceability during migration and settings updates.
Refactors the entire settings management system from JSON files to a more robust and scalable SQLite database using GORM. This architectural change lays the foundation for future features like cloud synchronization.
Key changes:
- Introduces a new `database` package with GORM models for all settings and app data.
- Implements a backward-compatible migration system that automatically moves existing users settings from `wox.setting.json` and `wox.app.data.json` to the new `wox.db` file on the first run.
- Moves the database location to `userDataDirectory` to align with the projects data storage conventions.
- Rewrites the `setting.Manager` to be fully database-driven, replacing all file I/O with GORM operations.
- Sacrifices `FavoriteResults` during migration due to the technical limitation of its one-way hash implementation.
This resolves the issue of having scattered JSON configuration and provides a centralized, transactional data store.
* Added logic to save the current window position immediately when the user switches to `last_location`.
* Implemented error handling to log any failures during the save operation.
* Added `SaveWindowPosition` method to `Manager` for saving last window coordinates.
* Introduced API endpoint `/setting/position` to handle window position save requests.
* Updated `getShowAppParams` to utilize saved window position if available.
* Implemented logic in `WoxLauncherController` to save window position after showing the window.
* Reduced `headingRowHeight` to 36 for consistency across tables.
* Set `dataRowMinHeight` and `dataRowMaxHeight` to 36 to enhance visual uniformity.
* Updated tooltip labels to use `tr("ui_operation")` for better localization.
* Updated backup tips to include a link to the backup folder.
* Added a new method `getBackupFolder` to retrieve the backup directory.
* Modified the `formField` to accept custom tips for better flexibility.
* Updated path handling in the `manager.go` file to use `filepath` instead of `path`.
* This change ensures better compatibility across different operating systems.
* Enhanced error logging for UWP icon retrieval failures.
* Added validation for cached icon paths to ensure they exist.
* Implemented fallback mechanism to search for alternative icon files if the primary icon path is invalid.
* Improved PowerShell command structure for better error handling and output management.
* Improved logging for autostart setting mismatches.
* Added functionality to attempt fixing autostart configuration when mismatches are detected.
* Updated registry access methods for better clarity and error handling.
* Introduced `setStartupApproved` and `removeStartupApproved` functions to manage startup approval status in Windows Settings.
* Implemented loading of Edge bookmarks for macOS, Windows, and Linux.
* Added functionality to remove duplicate bookmarks based on name and URL.
* Enhanced the bookmark loading process with a more robust regex pattern for both Chrome and Edge formats.
* Created unit tests to verify the loading and deduplication of bookmarks.
* Added a check for zero length in `puLen` to prevent unnecessary slice creation.
* Adjusted the slice length for UTF16 conversion to match the actual length needed.
* Enhanced clarity and safety in handling UTF16 strings.
* Implemented `removeDuplicateApps` function to filter out duplicate applications based on `Name` and `Path`.
* Updated `parseShortcut` and `parseExe` methods to utilize the display name from file version info, improving user experience.
* Added logging for removed duplicates and display name resolution for better debugging.
* Replaced the previous shortcut resolution method with a PowerShell-based approach for better Unicode support.
* Improved error handling for shortcut resolution.
* Cleaned up unused import statements.
* Introduced settings for custom executable paths for Python and Node.js.
* Implemented validation for the provided paths to ensure they are executable.
* Updated UI to allow users to browse and set custom paths.
* Added corresponding translations for new UI elements in English and Chinese.
* Introduced new settings for last query mode in the Wox settings UI.
* Added options to preserve the last query or start with an empty query.
* Updated relevant localization files for English, Portuguese, Russian, and Chinese.
- Implemented ClipboardPlugin to manage clipboard history including text and image data.
- Added functionality to keep track of clipboard history with options to retain text and image history.
- Introduced a SQLite database (ClipboardDB) to store clipboard records, including metadata such as file path, dimensions, and size for images.
- Implemented migration from legacy clipboard data to the new database structure.
- Added settings for managing clipboard history retention duration and primary action preferences.
- Enhanced query capabilities to retrieve recent and favorite clipboard records.
- Implemented periodic cleanup routine to remove expired records and orphaned cache files.
- Added localization support for new features in Chinese (zh_CN).
* Fixed memory leaks by ensuring proper deallocation of C-allocated strings in `ime_darwin.go` and `window_darwin.go`.
* Added error handling for nil pointers when retrieving current input methods and active window names.
* Updated language files to include new performance profiling options for memory.
* Updated version number and download URLs for all platforms.
* Enhanced error handling in `checkWoxVersion` to include specific update errors.
* Added new language strings for auto-update status in multiple languages.
* Refactored UI color handling in the about view for better theme support.
* Introduced a delay before reloading MCP servers to ensure the websocket server is ready.
* This change prevents potential race conditions during initialization.
* Added try-catch block to handle exceptions during data posting.
* Improved logging for successful and failed requests.
* Ensured robust error reporting for better debugging.
- Added `loadWoxSettingWithFallback` to handle various corrupted JSON scenarios.
- Introduced multiple strategies for loading settings, including normal decoding, JSON repair, and partial loading.
- Enhanced error handling to log issues and default to safe settings when loading fails.
- Created comprehensive tests for loading settings with various corrupted JSON files.
- Implemented unit tests for URL, system, and web search plugins in `plugin_test.go`.
- Created basic calculator tests and service initialization checks in `simple_test.go`.
- Established a test base with `TestSuite`, `QueryTest`, and utility functions in `test_base.go`.
- Introduced configuration management for tests in `test_config.go`, including environment variable loading.
- Developed environment setup and cleanup tests in `test_environment_test.go`.
- Created isolated test location management in `test_location.go`.
- Implemented a test logger to direct logs to test-specific directories in `test_logger.go`.
- Managed test execution lifecycle with `TestRunner` in `test_runner.go`.
- Added time-related tests for calculator functionality in `time_test.go`.
- Ensured all tests validate the test environment and configurations.
- Updated the Converter to prioritize math module for complex expressions.
- Improved conversion logic to allow all modules to attempt conversions, not just the original.
- Added user default currency retrieval based on locale settings.
- Enhanced handling of cryptocurrency conversions, including special cases for USD.
- Introduced a new MathModule to handle percentage calculations and related operations.
- Refactored locale detection to a dedicated utility for better maintainability.
- Updated icon references in the Converter plugin.
* Implemented a timeout mechanism for the `MCPListTools` function to prevent long-running operations.
* Utilized goroutines and channels to handle tool listing asynchronously.
* Enhanced error handling to manage potential panics during tool listing.
* Updated documentation to reflect the new timeout protection feature.
* Added "(Generated by AI)" to the titles of the Full-featured and Script Plugin Development Guides for clarity.
* This change helps users understand the origin of the documentation.
* Introduced `Script Plugin Development Guide` for lightweight plugin creation.
* Added `Full-featured Plugin Development Guide` detailing comprehensive plugin architecture and features.
* Updated `_sidebar.md` to include links to the new guides.
* Enhanced `plugin_summary.md` with new plugin categories and implementation types.
- Updated toolbar management to utilize new methods for emptying toolbar sides.
- Replaced direct instantiation of ToolbarInfo with emptyRightSide and emptyLeftSide methods for better clarity and maintainability.
- Introduced copyWith method in ToolbarInfo for easier updates to toolbar properties without full re-instantiation.
* Updated function signatures to include return types for better clarity and type checking.
* Enhanced maintainability and readability of the logger module.
* Ensured consistency across the codebase by applying type hints to all relevant functions.
* Added logic to reapply filters when updating an item if an active filter exists.
* Ensured items are updated directly when no filter is active.
* Updated `updateItems` method to filter items based on the current filter text after updating the original items.
* Added `MacOSUpdater` to handle DMG extraction and application updates on macOS.
* Introduced `LinuxUpdater` for managing application updates on Linux systems.
* Implemented `WindowsUpdater` for executing batch scripts to replace the application on Windows.
* Each updater utilizes a shell script or batch file to manage the update process seamlessly.
* Updated the input method switch logic to trigger when the query box gains focus.
* Improved user experience by providing clearer instructions in the UI language files.
* Added a new API endpoint for handling query box focus events.
* Implemented caching for image rendering to reduce flickering during refreshes.
- Increased notification display duration from 3 to 8 seconds in API implementation.
- Refactored script execution logic in host_script.go to improve error handling and streamline execution.
- Added checks for existing script plugins in WPM plugin creation process, providing options to open or overwrite.
- Enhanced user feedback with localized messages for plugin creation and actions.
- Updated script templates (JavaScript, Python, Bash) to include environment variable documentation and improved action handling.
- Improved UI responsiveness in Flutter by implementing AnimatedSwitcher for list view updates.
- Added validation for viewport height in WoxListController to prevent scrolling issues during initialization.