* chore: add CI secrets management and local testing script
- Added ci-secrets.example.json to provide a template for CI secrets configuration.
- Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act.
- Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens.
* chore: enhance local testing and environment loading scripts
- Added scripts to load environment variables from .env and JSON files, improving local development setup.
- Introduced ci-event.json to simulate GitHub event payloads for local CI testing.
- Updated test-ci-local.sh to utilize the new event JSON for better integration with local testing workflows.
- Modified .gitignore to include ci-secrets.local.json for local secret management.
* chore: enhance environment loading and improve V8 memory management
- Updated load-env.sh to conditionally load ci-secrets.local.json and set APPLE_PASSWORD for notarization.
- Introduced a delay in auto-starting skills to prevent memory spikes during initialization.
- Adjusted V8 runtime memory settings to minimize initial heap allocation, reducing the risk of OOM errors.
* chore: update version bump workflow to modify tauri.conf.json
- Changed the version update process to reflect changes in tauri.conf.json instead of Cargo.toml.
- Adjusted the commit message to indicate the inclusion of tauri.conf.json in the version bump process.
* chore: migrate from V8 to QuickJS runtime and update related configurations
- Replaced V8 runtime references with QuickJS throughout the codebase, including updates to initialization and error handling.
- Modified package.json to change the build command for macOS to source environment variables correctly.
- Updated Cargo.toml to remove deno_core dependency and include rquickjs with appropriate features.
- Cleaned up unused V8-related code and comments in the runtime modules.
- Adjusted skill manifest checks to support QuickJS compatibility.
* refactor: implement QuickJS runtime and remove V8 references
- Replaced V8 engine with QuickJS in the runtime module, updating related imports and initialization logic.
- Introduced new `qjs_engine.rs` and `qjs_skill_instance.rs` files to handle QuickJS-specific functionality.
- Removed the deprecated `v8_skill_instance.rs` and associated V8-related code.
- Updated JavaScript bootstrap code to align with QuickJS operations and APIs.
- Adjusted documentation and comments to reflect the transition to QuickJS.
* refactor: update IdbStorage to use parking_lot::Mutex for improved concurrency
- Changed the connection management in IdbStorage from RwLock to parking_lot::Mutex for better performance.
- Updated related methods to reflect the new locking mechanism, enhancing the efficiency of database operations.
- Adjusted the IdbOpenResult struct to include serde::Serialize for potential serialization needs.
* refactor: update QuickJS skill instance and timer management
- Modified memory limit and stack size settings in QjsSkillInstance to be asynchronous, improving performance.
- Cleaned up imports in qjs_ops.rs by removing unused dependencies and enhancing function definitions for clarity.
- Refactored timer management functions for better readability and efficiency, including renaming and restructuring comments.
* chore: update package.json scripts and clean up build.rs
- Added a new script for running the Tauri app with environment variable loading.
- Simplified the macOS development command to use a dedicated build script.
- Removed unnecessary environment variable logging from build.rs to streamline the build process.
- Cleaned up commented-out sections in the GitHub Actions workflow for Android packaging.
- Updated the event handling in the Tauri application to use a match statement for better clarity and maintainability.
- Added graceful shutdown logic for TDLib during application exit to prevent crashes related to C++ destructors.
- Enhanced the TDLib manager to signal shutdown and exit the receive loop cleanly, improving application stability.
- Increased the default memory limit for skills from 64 MB to 256 MB, allowing for better performance and resource management.
- Enhanced the V8 runtime creation process to include memory limits, preventing out-of-memory crashes when multiple skills are active.
- Updated the package-and-publish.yml workflow to utilize Tauri's native bundling for TDLib on macOS, removing the need for post-build scripts.
- Modified build.rs to copy TDLib and its dependencies to the libraries/ directory, ensuring they are included in the app bundle.
- Updated tauri.conf.json to reference the newly bundled TDLib and its dependencies.
- Added entries to .gitignore for the new libraries directory.
- Reformatted the workflow_run and pull_request sections for clarity and consistency in the package-android.yml workflow, ensuring proper trigger conditions for CI processes.
- Updated quote styles in package-and-publish.yml for consistency by converting single quotes to double quotes.
- Introduced new scripts: recreate-dmg-macos.sh for DMG recreation after TDLib bundling and resign-macos.sh for re-signing the macOS app bundle, ensuring proper code signing after modifications.
- Adjusted the paths for locating the app bundle and original DMG in the package-and-publish.yml workflow to reflect the new directory structure introduced by Tauri v2, ensuring correct DMG recreation.
- Modified the condition for uploading AAB files to Google Play in package-android.yml to check for the GOOGLE_PLAY_UPLOAD_ENABLED variable instead of the GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret, ensuring proper configuration for the upload process.
- Fixed the conditional syntax in the package-android.yml workflow to ensure proper evaluation of the GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret before uploading the AAB to Google Play.
- Standardized quote styles in the package-android.yml workflow by converting single quotes to double quotes for consistency across descriptions and configuration options.
- Updated quote styles in the package-android.yml workflow for consistency, changing double quotes to single quotes in descriptions and configuration options.
- Added push and pull request triggers for the develop branch in package-android.yml to enhance CI automation.
- Standardized quote styles in the workflow configuration for consistency.
- Added support for caching node modules in the skills directory to improve build performance.
- Introduced steps to install and build skills dependencies within the Android CI workflow.
- Updated the package-and-publish.yml to improve macOS app re-signing by adding certificate handling and keychain management.
- Modified package-android.yml to transition from APK to AAB packaging, including updates to artifact handling and Google Play upload.
- Enhanced the bundle-tdlib-macos.sh script to fix binary rpaths, ensuring proper runtime behavior of bundled frameworks.
- Enhanced the version-bump.yml workflow to automatically update the version in package.json and Cargo.toml files.
- Implemented logic to compute the new minor version and create a single commit and tag for both npm and Cargo.
- Ensured the workflow prevents triggering itself by including [skip ci] in the commit message.
- Updated quote styles in package-and-publish.yml and package-android.yml for consistency.
- Introduced a new workflow to automatically update the changelog based on commits since the last version tag.
- Updated the package-and-publish.yml to support target-specific builds for macOS, including bundling and re-signing of TDLib.
- Added a new workflow for packaging and publishing Android APKs, triggered by version bumps and pull requests, ensuring independent build processes for Android and desktop platforms.
- Added a new build command in package.json for building the app with skills integration.
- Updated tauri.conf.json to use the new build command before building the app.
- Enhanced the RuntimeEngine to manage a resource directory for bundled skills in production, improving resource handling.
- Implemented logic to locate skills from various directories, including bundled resources, ensuring flexibility in both development and production environments.
- Added a push trigger for the develop branch in the package-and-publish.yml file to enable automated workflows on code changes.
- Included the develop branch in the pull request trigger to ensure CI checks are performed for both main and develop branches.
* Update application icons with new designs for various resolutions
* Update DMG creation script to use new icon and background paths; replace old assets with updated images for various resolutions.
- Updated the re-signing condition in the package-and-publish.yml file to always execute for macOS, regardless of the presence of a signing identity.
- Added a check to skip re-signing if no signing identity is provided, enhancing the robustness of the CI workflow.
- Modified the re-signing logic to iterate over all bundled dylibs, ensuring that all necessary files are signed correctly.
- Updated the condition for re-signing the macOS app in the package-and-publish.yml file to use the correct syntax for accessing secrets, ensuring proper functionality during the CI process.
- Added a new script to bundle TDLib dylib and its dependencies into the macOS app, addressing the "Library not loaded" crash.
- Updated package.json to include new build and dev commands that utilize the TDLib bundling script.
- Enhanced the CI workflow to include steps for bundling TDLib and re-signing the app after modifications, ensuring proper notarization.
- Updated package.json to include new scripts for bundling TDLib dylib during macOS builds.
- Enhanced CI workflow to automate the bundling and re-signing of the macOS app after TDLib integration, addressing "Library not loaded" issues.
- Introduced a new script for managing TDLib dependencies and ensuring proper installation paths within the app bundle.
- Added support for caching node modules in the skills directory to optimize build times.
- Included steps for installing and building skills dependencies within the CI workflow.
- Updated the MediaPipeLlmBridge.kt file to clarify supported parameters in the MediaPipe LLM Inference API, improving documentation and code clarity.
- Added a macOS deployment target of 10.15 in the package-and-publish.yml workflow to ensure compatibility with std::filesystem used by llama.cpp.
- Updated tauri.conf.json to set the minimum system version for macOS to 10.15, aligning with the new deployment requirements.
- Updated the pre-push hook to comment out formatting and lint checks for easier debugging.
- Simplified VSCode settings for default formatting across various file types.
- Introduced MediaPipe LLM Bridge for Android, enabling on-device LLM inference.
- Updated build scripts and dependencies to support MediaPipe integration.
- Refactored TDLib Bridge to indicate that TDLib is not available on Android, ensuring clarity in mobile platform capabilities.
- Enhanced model commands to include Android-specific functionality for LLM operations.
- Improved SocketManager to handle Android-specific socket connections and stubs.
- Updated documentation and comments to reflect changes in platform support and functionality.
- Integrated the @tauri-apps/plugin-os to detect mobile platforms (Android and iOS) in both ModelDownloadProgress and SkillsGrid components.
- Updated rendering logic to display mobile-specific messages, indicating that certain features are available only on desktop.
- Enhanced package.json and yarn.lock to include the new plugin dependency for platform detection.
- Adjusted capabilities configuration to support the new plugin across desktop and mobile platforms.
- Removed specific VSCode directory from .gitignore while retaining the extensions.json file for extension recommendations.
- Added Prettier as a recommended extension in extensions.json to standardize code formatting across the project.
- Introduced a new settings.json file to configure default formatting options for various file types, ensuring consistent code style in the development environment.