diff --git a/.github/workflows/qt5_6.yml b/.github/workflows/qt5_6.yml index 367d05061..79390fd81 100644 --- a/.github/workflows/qt5_6.yml +++ b/.github/workflows/qt5_6.yml @@ -146,15 +146,25 @@ jobs: - name: 👷 Build ${{ env.HINT }} shell: bash run: | - # Remove once issue with hombrew cache action is fixed + # Remove once issue with Homebrew cache action is fixed brew reinstall --formula cmake + # Build cmake --preset macos-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }} cmake --build --preset macos-${{ env.BUILD_TYPE }} # CPack workaround for macOS 13 - echo killing...; sudo pkill -9 XProtect >/dev/null || true; - echo waiting...; while pgrep XProtect; do sleep 3; done; - cd build; cpack + attempt=0 + max_attempts=5 + while [ $attempt -lt $max_attempts ]; do + if cd build && cpack; then + echo "Package created successfully" + break + else + echo "Failed to create package, retrying..." + sleep 10 + fi + attempt=$((attempt + 1)) + done env: BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }} HINT: ${{ steps.dependencies.outputs.cmakeArgs != '' && '(with pre-built dependencies)' || '(full build)' }} diff --git a/.gitignore b/.gitignore index 5f263fc45..e8cde0dfc 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ CMakeUserPresets.json #Configurations created under config for testing /configs + +#Config database & backups created for testing +HyperionBackup_* +hyperion.db diff --git a/.version b/.version index 0f238926d..d123e8fe8 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.0.17-beta.2 +2.0.17-beta.3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d6650a4a..1ce2db672 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,23 +19,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Support gaps on Matrix Layout (#1696) - Support a configurable grabber inactive detection time interval (#1740) - Windows: Added a new grabber that uses the DXGI DDA (Desktop Duplication API). This has much better performance than the DX grabber as it does more of its work on the GPU. - +- Support to freely select source and target instances to be used by forwarder - Support to import, export and backup Hyperion's full configuration via the UI, JSON-API and commandline (`--importConfig, --exportConfig`) (#804) - Allow to force starting Hyperion in read-only mode (`--readonlyMode`) -- JSON-API: Support to query for a dedicated set of configuration items for a set of instances -- JSON-API: Support to save a dedicated set of configuration items for a set of instances -- JSON-API: Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz) - Effects: Limit the maximum update rate to 200Hz +- Systray: Support multiple instances +- UI: Validate that key ports do not overlap across editors and pages **JSON-API** - New subscription support for event updates, i.e. `Suspend, Resume, Idle, idleResume, Restart, Quit`. - Support direct or multiple instance addressing via single requests (#809) - Support of `serverinfo` subcommands: `getInfo, subscribe, unsubscribe, getSubscriptions, getSubscriptionCommands` - [Overview](https://github.com/hyperion-project/hyperion.ng/blob/API_Auth/doc/development/JSON-API%20_Commands_Overview.md) of API commands and subscription updates +- Support to query for a dedicated set of configuration items for a set of instances +- Support to save a dedicated set of configuration items for a set of instances +- Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz) - Support for requesting instance-data via JSON-API. Implemented requesting the current image in different formats or led colors. ### Changed +- Removed hard dependency on the first instance. All instances can now be freely created/removed, started or stopped - Fixed: Cross Site Scripting Vulnerability (CVE-2024-4174, CVE-2024-4175) - Fixed: hyperion-v4l2 taking screenshot failed (#1722) - Nanoleaf: Support new devices and do not restore ExtControl state @@ -46,17 +49,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactored: Database access layer - Refactored: Hyperion's configuration database is validated before start-up (and migrated, if required) - Refactored: Python to enable parallel effect processing under Python 3.12 +- Refactored: Forwarder +- Refactored: Flatbuffer connection- and client handling +- Refactored: Decouple Effect definitions from Instance +- Refactored: Decouple WebServer and SSDPHandler +- Refactored: Corrected thread affinity across various classes +- Refactored: Improved code resilience and error handling +- Standalone grabber do not capture screens when no connection to remote host - Fixed: Python 3.12 crashes (#1747) - osX Grabber: Use ScreenCaptureKit under macOS 15 and above - Removed maximum LED number constraint from Matrix layout schema which was not synced with the UI behaviour (#1804) - Fixed bespoke WebSocket implementation by using of QWebSockets (#1816, #1448, #1247, #1130) +- Fixed mDNS Browser deadlock, plus run in own thread now +- Fixed that LED Buffer and Layout might get out of sync. +- Fixed Screen capture error (#1824) +- Fixed Provide custom forwarding targets is not possible (#1713) **JSON-API** - Refactored JSON-API to ensure consistent authorization behaviour across sessions and single requests with token authorization. - Provide additional error details with API responses, esp. on JSON parsing, validation or token errors. - Generate random TANs for every API request from the Hyperion UI -- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections- +- Configuration requests do not any longer require a running instance +- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections - Fixed: Local Admin API Authentication rejects valid tokens (#1251) +- Fixed: Create a proper API response, when Effects are not part of a build ### Removed diff --git a/CMakePresets.json b/CMakePresets.json index fb2ff8b42..5a4fbe6d3 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -99,9 +99,17 @@ } }, { - "name": "clang", + "name": "ninja-base", "hidden": true, "generator": "Ninja", + "cacheVariables": { + "CMAKE_EXPORT_COMPILE_COMMANDS": "ON" + } + }, + { + "name": "clang", + "hidden": true, + "inherits": [ "ninja-base" ], "cacheVariables": { "CMAKE_C_COMPILER": "/usr/bin/clang", "CMAKE_CXX_COMPILER": "/usr/bin/clang++" @@ -110,7 +118,7 @@ { "name": "msvc", "hidden": true, - "generator": "Ninja", + "inherits": [ "ninja-base" ], "cacheVariables": { "CMAKE_C_COMPILER": "cl.exe", "CMAKE_CXX_COMPILER": "cl.exe" @@ -119,7 +127,7 @@ { "name": "gcc", "hidden": true, - "generator": "Ninja", + "inherits": [ "ninja-base" ], "cacheVariables": { "CMAKE_C_COMPILER": "/usr/bin/gcc", "CMAKE_CXX_COMPILER": "/usr/bin/g++" diff --git a/LICENSE b/LICENSE index 7f7a5bff5..cac427cec 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2014-2024 Hyperion Project +Copyright (c) 2014-2025 Hyperion Project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/assets/webconfig/content/effects_configurator.html b/assets/webconfig/content/effects_configurator.html index 05396e620..002717d3f 100644 --- a/assets/webconfig/content/effects_configurator.html +++ b/assets/webconfig/content/effects_configurator.html @@ -17,7 +17,7 @@