Skip to content

Commit e316699

Browse files
authored
Diverse Refactoring, error fixing and new features (#1849)
1 parent 4e91bb8 commit e316699

File tree

168 files changed

+8727
-6850
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

168 files changed

+8727
-6850
lines changed

Diff for: .github/workflows/qt5_6.yml

+14-4
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,25 @@ jobs:
146146
- name: 👷 Build ${{ env.HINT }}
147147
shell: bash
148148
run: |
149-
# Remove once issue with hombrew cache action is fixed
149+
# Remove once issue with Homebrew cache action is fixed
150150
brew reinstall --formula cmake
151+
151152
# Build
152153
cmake --preset macos-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }}
153154
cmake --build --preset macos-${{ env.BUILD_TYPE }}
154155
# CPack workaround for macOS 13
155-
echo killing...; sudo pkill -9 XProtect >/dev/null || true;
156-
echo waiting...; while pgrep XProtect; do sleep 3; done;
157-
cd build; cpack
156+
attempt=0
157+
max_attempts=5
158+
while [ $attempt -lt $max_attempts ]; do
159+
if cd build && cpack; then
160+
echo "Package created successfully"
161+
break
162+
else
163+
echo "Failed to create package, retrying..."
164+
sleep 10
165+
fi
166+
attempt=$((attempt + 1))
167+
done
158168
env:
159169
BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
160170
HINT: ${{ steps.dependencies.outputs.cmakeArgs != '' && '(with pre-built dependencies)' || '(full build)' }}

Diff for: .gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,7 @@ CMakeUserPresets.json
4848

4949
#Configurations created under config for testing
5050
/configs
51+
52+
#Config database & backups created for testing
53+
HyperionBackup_*
54+
hyperion.db

Diff for: .version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.0.17-beta.2
1+
2.0.17-beta.3

Diff for: CHANGELOG.md

+21-5
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- Support gaps on Matrix Layout (#1696)
2020
- Support a configurable grabber inactive detection time interval (#1740)
2121
- 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.
22-
22+
- Support to freely select source and target instances to be used by forwarder
2323
- Support to import, export and backup Hyperion's full configuration via the UI, JSON-API and commandline (`--importConfig, --exportConfig`) (#804)
2424
- Allow to force starting Hyperion in read-only mode (`--readonlyMode`)
25-
- JSON-API: Support to query for a dedicated set of configuration items for a set of instances
26-
- JSON-API: Support to save a dedicated set of configuration items for a set of instances
27-
- JSON-API: Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz)
2825
- Effects: Limit the maximum update rate to 200Hz
26+
- Systray: Support multiple instances
27+
- UI: Validate that key ports do not overlap across editors and pages
2928

3029
**JSON-API**
3130
- New subscription support for event updates, i.e. `Suspend, Resume, Idle, idleResume, Restart, Quit`.
3231
- Support direct or multiple instance addressing via single requests (#809)
3332
- Support of `serverinfo` subcommands: `getInfo, subscribe, unsubscribe, getSubscriptions, getSubscriptionCommands`
3433
- [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
34+
- Support to query for a dedicated set of configuration items for a set of instances
35+
- Support to save a dedicated set of configuration items for a set of instances
36+
- Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz)
3537
- Support for requesting instance-data via JSON-API. Implemented requesting the current image in different formats or led colors.
3638

3739
### Changed
3840

41+
- Removed hard dependency on the first instance. All instances can now be freely created/removed, started or stopped
3942
- Fixed: Cross Site Scripting Vulnerability (CVE-2024-4174, CVE-2024-4175)
4043
- Fixed: hyperion-v4l2 taking screenshot failed (#1722)
4144
- 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
4649
- Refactored: Database access layer
4750
- Refactored: Hyperion's configuration database is validated before start-up (and migrated, if required)
4851
- Refactored: Python to enable parallel effect processing under Python 3.12
52+
- Refactored: Forwarder
53+
- Refactored: Flatbuffer connection- and client handling
54+
- Refactored: Decouple Effect definitions from Instance
55+
- Refactored: Decouple WebServer and SSDPHandler
56+
- Refactored: Corrected thread affinity across various classes
57+
- Refactored: Improved code resilience and error handling
58+
- Standalone grabber do not capture screens when no connection to remote host
4959
- Fixed: Python 3.12 crashes (#1747)
5060
- osX Grabber: Use ScreenCaptureKit under macOS 15 and above
5161
- Removed maximum LED number constraint from Matrix layout schema which was not synced with the UI behaviour (#1804)
5262
- Fixed bespoke WebSocket implementation by using of QWebSockets (#1816, #1448, #1247, #1130)
63+
- Fixed mDNS Browser deadlock, plus run in own thread now
64+
- Fixed that LED Buffer and Layout might get out of sync.
65+
- Fixed Screen capture error (#1824)
66+
- Fixed Provide custom forwarding targets is not possible (#1713)
5367

5468
**JSON-API**
5569
- Refactored JSON-API to ensure consistent authorization behaviour across sessions and single requests with token authorization.
5670
- Provide additional error details with API responses, esp. on JSON parsing, validation or token errors.
5771
- Generate random TANs for every API request from the Hyperion UI
58-
- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections-
72+
- Configuration requests do not any longer require a running instance
73+
- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections
5974
- Fixed: Local Admin API Authentication rejects valid tokens (#1251)
75+
- Fixed: Create a proper API response, when Effects are not part of a build
6076

6177
### Removed
6278

Diff for: CMakePresets.json

+11-3
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,17 @@
9999
}
100100
},
101101
{
102-
"name": "clang",
102+
"name": "ninja-base",
103103
"hidden": true,
104104
"generator": "Ninja",
105+
"cacheVariables": {
106+
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
107+
}
108+
},
109+
{
110+
"name": "clang",
111+
"hidden": true,
112+
"inherits": [ "ninja-base" ],
105113
"cacheVariables": {
106114
"CMAKE_C_COMPILER": "/usr/bin/clang",
107115
"CMAKE_CXX_COMPILER": "/usr/bin/clang++"
@@ -110,7 +118,7 @@
110118
{
111119
"name": "msvc",
112120
"hidden": true,
113-
"generator": "Ninja",
121+
"inherits": [ "ninja-base" ],
114122
"cacheVariables": {
115123
"CMAKE_C_COMPILER": "cl.exe",
116124
"CMAKE_CXX_COMPILER": "cl.exe"
@@ -119,7 +127,7 @@
119127
{
120128
"name": "gcc",
121129
"hidden": true,
122-
"generator": "Ninja",
130+
"inherits": [ "ninja-base" ],
123131
"cacheVariables": {
124132
"CMAKE_C_COMPILER": "/usr/bin/gcc",
125133
"CMAKE_CXX_COMPILER": "/usr/bin/g++"

Diff for: LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2014-2024 Hyperion Project
3+
Copyright (c) 2014-2025 Hyperion Project
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Diff for: assets/webconfig/content/effects_configurator.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ <h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_me
1717

1818
<div id="intro_effc">
1919
</div>
20-
<div class="row">
20+
<div class="row" id="effect_table">
2121
<div class="col-lg-6">
2222
<div class="panel panel-default">
2323
<div class="panel-heading">
@@ -44,15 +44,15 @@ <h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_me
4444
</div>
4545
</div>
4646
</div>
47-
<div class="col-lg-6">
47+
<div class="col-lg-6" id="effect_delload">
4848
<div class="panel panel-default">
4949
<div class="panel-heading">
5050
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
5151
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
5252
</div>
5353
<div class="panel-body">
5454
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
55-
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
55+
<button class="btn btn-primary" id='btn_load' data-i18n="effectsconfigurator_button_loadeffect"></button>
5656
</div>
5757
</div>
5858
</div>

Diff for: assets/webconfig/content/remote.html

+11-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ <h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_me
3939
<div class="panel panel-default">
4040
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
4141
<div class="panel-body" id="color_intro">
42-
<table class="table borderless">
42+
<table class="table borderless" id="color_effect_table">
4343
<tbody>
4444
<tr>
4545
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
@@ -66,9 +66,18 @@ <h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_me
6666
</td>
6767
</tr>
6868
<tr>
69-
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
69+
<td style="vertical-align:middle">
70+
<label for="remote_duration" data-i18n="remote_input_duration"></label>
71+
</td>
7072
<td class="input-group">
7173
<input id="remote_duration" type="number" class="form-control" value="0" min="0" />
74+
<style>
75+
#remote_duration::placeholder {
76+
color: #000000;
77+
opacity: 1;
78+
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); /*Add subtle shadow */
79+
}
80+
</style>
7281
<span class="input-group-addon" data-i18n="edt_append_s"></span>
7382
</td>
7483
</tr>

0 commit comments

Comments
 (0)